- progress_indication ("[" + to_string (number_));
- out->output_scheme (scm_list_1 (ly_symbol2scm ("start-page")));
- Offset o (left_margin_, top_margin_);
- Real vfill = line_count_ > 1 ? (text_height () - height_) / (line_count_ - 1)
- : 0;
-
- Real coverage = height_ / text_height ();
- if (coverage < MIN_COVERAGE)
- /* Do not space out a badly filled page. This is too simplistic
- (ie broken), because this should not vary too much between
- (subsequent?) pages in a book. */
- vfill = 0;
-
- if (get_header ())
- {
- out->output_line (stencil2line (get_header ()), &o, false);
- o[Y_AXIS] += head_sep_;
- }
- for (SCM s = lines_; s != SCM_EOL; s = ly_cdr (s))
- {
- SCM line = ly_car (s);
- out->output_line (line, &o,
- is_last && ly_cdr (s) != SCM_EOL && !get_copyright ()
- && !get_tagline () && !get_footer ());
-
- /* Do not put vfill between title and its music, */
- if (scm_pair_p (ly_cdr (s))
- && (!unsmob_paper_line (line)->is_title () || vfill < 0))
- o[Y_AXIS] += vfill;
- /* rather put extra just before the title. */
- if (ly_cdr (s) != SCM_EOL
- && (unsmob_paper_line (ly_cadr (s))->is_title () && vfill > 0))
- o[Y_AXIS] += vfill;
- }
-
- o[Y_AXIS] = vsize_ - bottom_margin_;
- if (get_copyright ())
- o[Y_AXIS] -= get_copyright ()->extent (Y_AXIS).length ();
- if (get_tagline ())
- o[Y_AXIS] -= get_tagline ()->extent (Y_AXIS).length ();
- if (get_footer ())
- o[Y_AXIS] -= get_footer ()->extent (Y_AXIS).length ();
-
- if (get_copyright ())
- out->output_line (stencil2line (get_copyright ()), &o,
- is_last && !get_tagline () && !get_footer ());
- if (get_tagline ())
- out->output_line (stencil2line (get_tagline ()), &o,
- is_last && !get_footer ());
- if (get_footer ())
- out->output_line (stencil2line (get_footer ()), &o, is_last);
- out->output_scheme (scm_list_2 (ly_symbol2scm ("stop-page"),
- ly_bool2scm (is_last && !get_footer ())));
- progress_indication ("]");