X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fconstrained-breaking.hh;h=c461859f7c92e6a549ddeb5d8bc8bb4602f1dab8;hb=d7c0f4263534307616c82d9b2ce6fdef9472456f;hp=e6d898e6a0903e7623143a508c17bfe880aab1ce;hpb=bc95f4434f760d41191341ab4508b2064eb19025;p=lilypond.git diff --git a/lily/include/constrained-breaking.hh b/lily/include/constrained-breaking.hh index e6d898e6a0..c461859f7c 100644 --- a/lily/include/constrained-breaking.hh +++ b/lily/include/constrained-breaking.hh @@ -24,14 +24,33 @@ #include "matrix.hh" #include "prob.hh" +/* + * Begin/rest-of-line hack. This geometrical shape is a crude approximation + * of Skyline, but it is better than a rectangle. + */ +struct Line_shape +{ + Interval begin_; + Interval rest_; + + Line_shape () + { + } + Line_shape (Interval begin, Interval rest); + Line_shape piggyback (Line_shape mount, Real padding) const; +}; + struct Line_details { Grob *last_column_; Real force_; - Interval extent_; /* Y-extent of the system */ + Line_shape shape_; + Real tallness_; /* Y-extent, adjusted according to begin/rest-of-line*/ Real padding_; /* compulsory space after this system (if we're not last on a page) */ Real title_padding_; + Real min_distance_; + Real title_min_distance_; Real bottom_padding_; Real space_; /* spring length */ Real inverse_hooke_; @@ -54,6 +73,8 @@ struct Line_details { int compressed_nontitle_lines_count_; bool last_markup_line_; bool first_markup_line_; + bool tight_spacing_; + Real first_refpoint_offset_; Line_details () { @@ -62,8 +83,11 @@ struct Line_details { padding_ = 0; title_padding_ = 0; bottom_padding_ = 0; + min_distance_ = 0; + title_min_distance_ = 0; space_ = 0; inverse_hooke_ = 1; + tight_spacing_ = false; break_permission_ = ly_symbol2scm ("allow"); page_permission_ = ly_symbol2scm ("allow"); turn_permission_ = ly_symbol2scm ("allow"); @@ -75,9 +99,13 @@ struct Line_details { compressed_nontitle_lines_count_ = 1; last_markup_line_ = false; first_markup_line_ = false; + tallness_ = 0; + first_refpoint_offset_ = 0; } Line_details (Prob *pb, Output_def *paper); + Real full_height () const; + Real tallness () const; }; /* @@ -128,9 +156,14 @@ private: vsize systems_; bool ragged_right_; bool ragged_last_; + + Real between_system_min_distance_; + Real between_system_padding_; Real between_system_space_; + Real between_scores_system_min_distance_; + Real between_scores_system_padding_; + Real before_title_min_distance_; Real before_title_padding_; - Real between_system_padding_; /* the (i,j)th entry is the configuration for breaking between columns i and j */