-/* Simplistic page interface */
-class Page
-{
-public:
- Paper_def *paper_;
- static int page_count_;
- int number_;
- int line_count_;
-
- Protected_scm lines_;
- Protected_scm header_;
- Protected_scm footer_;
- Protected_scm copyright_;
- Protected_scm tagline_;
-
- Stencil *get_header () { return unsmob_stencil (header_); }
- Stencil *get_copyright () { return unsmob_stencil (copyright_); }
- Stencil *get_tagline () { return unsmob_stencil (tagline_); }
- Stencil *get_footer () { return unsmob_stencil (footer_); }
-
- /* actual height filled with text. */
- Real height_;
-
- // HMMM all this size stuff to paper/paper-outputter?
- Real hsize_;
- Real vsize_;
- Real left_margin_;
- Real top_margin_;
- Real bottom_margin_;
- Real foot_sep_;
- Real head_sep_;
- Real text_width_;
-
- /* available area for text. */
- Real text_height ();
-
- Page (Paper_def*, int);
- void output (Paper_outputter*, bool);
-};
-
-int Page::page_count_ = 0;
-
-Page::Page (Paper_def *paper, int number)
-{
- paper_ = paper;
- number_ = number;
- page_count_++;
-
- height_ = 0;
- lines_ = SCM_EOL;
- line_count_ = 0;
-
- hsize_ = paper->get_realvar (ly_symbol2scm ("hsize"));
- vsize_ = paper->get_realvar (ly_symbol2scm ("vsize"));
- top_margin_ = paper->get_realvar (ly_symbol2scm ("top-margin"));
- bottom_margin_ = paper->get_realvar (ly_symbol2scm ("bottom-margin"));
- head_sep_ = paper->get_realvar (ly_symbol2scm ("head-sep"));
- foot_sep_ = paper->get_realvar (ly_symbol2scm ("foot-sep"));
- text_width_ = paper->get_realvar (ly_symbol2scm ("linewidth"));
- left_margin_ = (hsize_ - text_width_) / 2;
-
- copyright_ = SCM_EOL;
- tagline_ = SCM_EOL;
-
- SCM make_header = scm_primitive_eval (ly_symbol2scm ("make-header"));
- SCM make_footer = scm_primitive_eval (ly_symbol2scm ("make-footer"));
-
- header_ = scm_call_2 (make_header, paper_->self_scm (),
- scm_int2num (number_));
- // FIXME: why does this (generates Stencil) not trigger font load?
- if (get_header ())
- get_header ()->align_to (Y_AXIS, UP);
-
- footer_ = scm_call_2 (make_footer, paper_->self_scm (),
- scm_int2num (number_));
- if (get_footer ())
- get_footer ()->align_to (Y_AXIS, UP);