]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/constrained-breaking.hh
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into...
[lilypond.git] / lily / include / constrained-breaking.hh
index ff60adf34cadea06f2726be8a1750d778268a153..8378a959e297777ed9ae612e4f85128504528b14 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2006--2008 Joe Neeman <joeneeman@gmail.com>
+  (c) 2006--2009 Joe Neeman <joeneeman@gmail.com>
 */
 
 #ifndef 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;
   }
 };