]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/constrained-breaking.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / constrained-breaking.cc
index c9753b1a0a750c5daa0a3903a217e384c72c0af0..3996856cbd4769d21d2aba9a66399d5550c3587a 100644 (file)
@@ -147,9 +147,9 @@ Constrained_breaking::resize (vsize systems)
   if (!breaks_.size () && pscore_)
     {
       Output_def *l = pscore_->layout ();
-      System *sys = pscore_->root_system ();
-      Real padding = robust_scm2double (l->c_variable ("between-system-padding"), 0);
-      Real space = robust_scm2double (l->c_variable ("ideal-system-space"), 0);
+      Real extent = scm_to_double (l->c_variable ("system-height"));
+      Real padding = scm_to_double (l->c_variable ("between-system-padding"));
+      Real space = scm_to_double (l->c_variable ("between-system-space"));
       bool ragged_right = to_boolean (pscore_->layout ()->c_variable ("ragged-right"));
       bool ragged_last = to_boolean (pscore_->layout ()->c_variable ("ragged-last"));
 
@@ -167,12 +167,8 @@ Constrained_breaking::resize (vsize systems)
                                             ragged_right);
       for (vsize i = 0; i < breaks_.size () - 1; i++)
        {
-         Real max_ext = 0;
           for (vsize j = i + 1; j < breaks_.size (); j++)
             {
-             int start = Paper_column::get_rank (all_[breaks_[i]]);
-             int end = Paper_column::get_rank (all_[breaks_[j]]);
-             Interval extent = sys->pure_height (sys, start, end);
              bool last = j == breaks_.size () - 1;
              bool ragged = ragged_right || (last && ragged_last);
               int k = i*lines_rank_ + j;
@@ -180,12 +176,11 @@ Constrained_breaking::resize (vsize systems)
              if (scm_is_number (pen))
                lines_[k].break_penalty_ = scm_to_double (pen);
 
-             max_ext = max (max_ext, extent.length ());
               lines_[k].force_ = forces[k];
-              lines_[k].extent_ = extent.length ();
+              lines_[k].extent_ = extent;
               lines_[k].padding_ = padding;
               lines_[k].space_ = space;
-              lines_[k].inverse_hooke_ = 1;
+              lines_[k].inverse_hooke_ = 3; // FIXME: somewhat arbitrary
              if (ragged && lines_[k].force_ < 0)
                lines_[k].force_ = infinity_f;
               if (isinf (lines_[k].force_))
@@ -340,6 +335,6 @@ Constrained_breaking::Constrained_breaking (vector<vsize> const &start)
 Real
 Constrained_breaking::combine_demerits (Real force, Real prev_force)
 {
-  return force * force + (prev_force - force) * (prev_force - force);
+  return force * force + fabs (prev_force - force);
 }