X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fconstrained-breaking.hh;h=8378a959e297777ed9ae612e4f85128504528b14;hb=794dcbdb52faf4292036cd1b0270a956cf4316a3;hp=157411a83c60f3545d818a56277922685111f55c;hpb=8cab78caa0db1ba14f2e52e4c1ddbb541ea0e5cb;p=lilypond.git diff --git a/lily/include/constrained-breaking.hh b/lily/include/constrained-breaking.hh index 157411a83c..8378a959e2 100644 --- a/lily/include/constrained-breaking.hh +++ b/lily/include/constrained-breaking.hh @@ -15,6 +15,7 @@ #include "prob.hh" struct Line_details { + Grob *last_column_; Real force_; Interval extent_; /* Y-extent of the system */ @@ -33,8 +34,17 @@ struct Line_details { bool title_; + /* The page-breaker deals with forbidden page breaks by "compressing" + two Line_detailses into one. The following fields are used by the + page-breaker to keep track of this. If the number of fields needed + by the page-breaker grows, it might be a good idea to create a separate + class. */ + int compressed_lines_count_; + int compressed_nontitle_lines_count_; + Line_details () { + last_column_ = 0; force_ = infinity_f; padding_ = 0; bottom_padding_ = 0; @@ -47,10 +57,13 @@ struct Line_details { page_penalty_ = 0; turn_penalty_ = 0; title_ = false; + compressed_lines_count_ = 1; + compressed_nontitle_lines_count_ = 1; } Line_details (Prob *pb) { + last_column_ = 0; force_ = 0; extent_ = unsmob_stencil (pb->get_property ("stencil")) ->extent (Y_AXIS); padding_ = robust_scm2double (pb->get_property ("next-padding"), 0); @@ -64,6 +77,8 @@ struct Line_details { page_penalty_ = robust_scm2double (pb->get_property ("page-break-penalty"), 0); turn_penalty_ = robust_scm2double (pb->get_property ("page-turn-penalty"), 0); title_ = to_boolean (pb->get_property ("is-title")); + compressed_lines_count_ = 1; + compressed_nontitle_lines_count_ = title_ ? 0 : 1; } };