X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpage-spacing.cc;h=97c68a5e29ebae8d1ca48151568843940ea0d8b6;hb=3b82c8ac19e5d6825cc8f84e5dc9289d2e8d98de;hp=9434fb910aab7705be46630374f25a5bc4e51cd6;hpb=d61cf3bbdb1c6670a127ba3baddf2f04d3e34fd3;p=lilypond.git diff --git a/lily/page-spacing.cc b/lily/page-spacing.cc index 9434fb910a..97c68a5e29 100644 --- a/lily/page-spacing.cc +++ b/lily/page-spacing.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2012 Joe Neeman + Copyright (C) 2006--2015 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -102,8 +102,8 @@ Page_spacing::account_for_footnotes (Line_details const &line) : 0.0)) + (footnote_height - - (has_footnotes_ - ? breaker_->footnote_padding () + breaker_->footnote_footer_padding () + + (has_footnotes_ + ? - breaker_->footnote_padding () + breaker_->footnote_footer_padding () : 0.0)); } @@ -155,6 +155,9 @@ Page_spacer::solve () } Page_spacing_result ret; + if (simple_state_.empty ()) + return ret; + ret.penalty_ = simple_state_.back ().penalty_ + lines_.back ().page_penalty_ + lines_.back ().turn_penalty_; ret.system_count_status_ = simple_state_.back ().system_count_status_; @@ -326,7 +329,7 @@ Page_spacer::calc_subproblem (vsize page, vsize line) space.prepend_system (lines_[page_start]); bool overfull = (space.rod_height_ > paper_height - || (ragged + || (ragged_ && (space.rod_height_ + space.spring_len_ > paper_height))); // This 'if' statement is a little hard to parse. It won't consider this configuration // if it is overfull unless the current configuration is the first one with this start @@ -385,7 +388,8 @@ Page_spacer::calc_subproblem (vsize page, vsize line) } if (page_start > 0 - && lines_[page_start - 1].page_permission_ == ly_symbol2scm ("force")) + && scm_is_eq (lines_[page_start - 1].page_permission_, + ly_symbol2scm ("force"))) break; } return !isinf (cur.demerits_);