]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/simple-spacer.cc
''
[lilypond.git] / lily / simple-spacer.cc
index fa75e433a7cdcbb8ad96607461db8b2922ae04e5..60e710d68ebbb6343dde5e6d52311633c752bec9 100644 (file)
@@ -262,8 +262,6 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
        {
          programming_error ("Insane spring found. Setting to unit spring.");
 
-         cout << "columns " << Paper_column::rank_i (cols[i])
-              << " " << Paper_column::rank_i (cols[i+1]) << endl;
          desc.hooke_f_ = 1.0;
          desc.ideal_f_ = 1.0;
        }
@@ -314,12 +312,18 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
 #include <stdio.h>
 
 void
-Simple_spacer::solve (Column_x_positions *positions) const
+Simple_spacer::solve (Column_x_positions *positions, bool ragged) const
 {
   positions->force_f_ = force_f_;
   if ((force_f_ < 0))
     {
-      positions->force_f_ *= 1.3; 
+
+      /*
+       We used to have a penalty for compression, no matter what, but that
+       fucked up wtk1-fugue2 (taking 3 full pages.)
+
+       maybe this should be tunable?
+       */
       if (compression_penalty_b_)
        positions->force_f_ *= 2; //  hmm.
     }
@@ -327,7 +331,15 @@ Simple_spacer::solve (Column_x_positions *positions) const
   positions->config_.push (indent_f_);
   for (int i=0; i <springs_.size (); i++)
     {
-      positions->config_.push (positions->config_.top () + springs_[i].length (force_f_));
+      if (ragged)
+        {
+         // ragged right operation: do not apply any force
+         positions->config_.push (positions->config_.top () + springs_[i].length (0.0));
+       }
+      else
+        {
+         positions->config_.push (positions->config_.top () + springs_[i].length (force_f_));
+       }
     }
   positions->cols_ = spaced_cols_;
   positions->loose_cols_ = loose_cols_;