]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/system.cc
ignore gcov
[lilypond.git] / lily / system.cc
index b8557a6f046f020dbdbf6c8502f044fb022b8a47..3ca397976b06c890094fdc2673deefc9fbc50833 100644 (file)
@@ -245,10 +245,7 @@ System::add_column (Paper_column *p)
       ga = unsmob_grob_array (scm_ga);
     }
 
-  p->rank_
-    = ga->size ()
-    ? Paper_column::get_rank (ga->array ().back ()) + 1
-    : 0;
+  p->rank_ = ga->size ();
 
   ga->add (p);
   Axis_group_interface::add_element (this, p);
@@ -445,17 +442,18 @@ System::broken_col_range (Item const *left, Item const *right) const
   left = left->get_column ();
   right = right->get_column ();
 
+  
   extract_grob_set (this, "columns", cols);
-  vsize i = 0;
-  while (i < cols.size ()
-        && cols[i] != left)
-    i++;
 
+  vsize i = binary_search (cols, (Grob *) left,
+                          Paper_column::less_than);
+
+  int end_rank = Paper_column::get_rank (right);
   if (i < cols.size ())
     i++;
 
   while (i < cols.size ()
-        && cols[i] != right)
+        && Paper_column::get_rank (cols[i]) < end_rank)
     {
       Paper_column *c = dynamic_cast<Paper_column *> (cols[i]);
       if (Paper_column::is_breakable (c) && !c->system_)
@@ -531,9 +529,10 @@ System::build_skylines ()
        boxes.push_back (Box (xiv, yiv));
     }
 
-  /* todo: make skyline slope configurable? */
-  skylines_[UP] = Skyline (boxes, 2, X_AXIS, UP);
-  skylines_[DOWN] = Skyline (boxes, 2, X_AXIS, DOWN);
+  SCM horizon_padding_scm = get_property ("skyline-horizontal-padding");
+  Real horizon_padding = robust_scm2double (horizon_padding_scm, 0);
+  skylines_[UP] = Skyline (boxes, horizon_padding, X_AXIS, UP);
+  skylines_[DOWN] = Skyline (boxes, horizon_padding, X_AXIS, DOWN);
 }
 
 
@@ -547,4 +546,5 @@ ADD_INTERFACE (System,
               "pure-Y-extent "
               "spaceable-staves "
               "skyline-distance "
+              "skyline-horizontal-padding "
               )