X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fconstrained-breaking.hh;h=fbe12eb05be5e6a81f018a9844911649a30326e2;hb=436440663fe93a8bb94776a3363376ee5c7c57af;hp=f36ab74df55e88477afc5294c862b426d567316e;hpb=f03e58bb0d24330204ce7c8b70904707ef07ecca;p=lilypond.git diff --git a/lily/include/constrained-breaking.hh b/lily/include/constrained-breaking.hh index f36ab74df5..fbe12eb05b 100644 --- a/lily/include/constrained-breaking.hh +++ b/lily/include/constrained-breaking.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2009 Joe Neeman + Copyright (C) 2006--2010 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 @@ -24,10 +24,27 @@ #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) */ @@ -54,6 +71,7 @@ struct Line_details { int compressed_nontitle_lines_count_; bool last_markup_line_; bool first_markup_line_; + bool tight_spacing_; Line_details () { @@ -64,6 +82,7 @@ struct Line_details { bottom_padding_ = 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 +94,12 @@ struct Line_details { compressed_nontitle_lines_count_ = 1; last_markup_line_ = false; first_markup_line_ = false; + tallness_ = 0; } Line_details (Prob *pb, Output_def *paper); + Real full_height () const; + Real tallness () const; }; /*