]> git.donarmstrong.com Git - lilypond.git/commitdiff
Enable separation-item skyline spacing and fix performance bug.
authorJoe Neeman <joeneeman@gmail.com>
Fri, 1 Dec 2006 21:07:38 +0000 (23:07 +0200)
committerJoe Neeman <joeneeman@gmail.com>
Fri, 1 Dec 2006 21:16:09 +0000 (23:16 +0200)
lily/include/separation-item.hh
lily/separating-group-spanner.cc
lily/separation-item.cc
scm/define-grobs.scm

index 5750716c7247aa919dd6ac1b60e38aadfb388616..ca63294852c86626712be3d2cf31209ee7fcbfc3 100644 (file)
@@ -23,7 +23,7 @@ struct Separation_item
   static Interval width (Grob *);
   static Interval relative_width (Grob *, Grob *);
   static Grob *extremal_break_aligned_grob (Grob *, Direction, Interval *);
-  static void set_distance (Drul_array<Item *>, Real);
+  static bool set_distance (Drul_array<Item *>, Real);
   static void set_skyline_distance (Drul_array<Item*>, Real);
   static void add_item (Grob *, Item *);
   static void add_conditional_item (Grob *, Grob *);
index bf02d7a564fcbd87c94fc833f1b612c36c0c86c8..fb8cce00226d91ec9171f54cca78be2e907cb2da 100644 (file)
@@ -37,7 +37,8 @@ Separating_group_spanner::find_rods (Item *r,
          Separation_item::set_distance (Drul_array<Item*> (lb, r), padding);
        }
 
-      Separation_item::set_distance (Drul_array<Item *> (l, r), padding);
+      if (Separation_item::set_distance (Drul_array<Item *> (l, r), padding))
+       break;
 
       /*
        this grob doesn't cause a constraint. We look further until we
index dec77f5eaf6284ae243cdc878186ccd333e4de37..79f1f81caa224fb5e424df0227e24b2a71c52e79 100644 (file)
@@ -53,7 +53,7 @@ Separation_item::set_skyline_distance (Drul_array<Item *> items,
     }  
 }
 
-void
+bool
 Separation_item::set_distance (Drul_array<Item *> items,
                               Real padding)
 {
@@ -61,7 +61,7 @@ Separation_item::set_distance (Drul_array<Item *> items,
       && !Item::is_non_musical (items[RIGHT]))
     {
       set_skyline_distance (items, padding);
-      return;
+      return true;
     }
   
   Interval li (Separation_item::width (items[LEFT]));
@@ -76,7 +76,9 @@ Separation_item::set_distance (Drul_array<Item *> items,
 
       if (rod.distance_  > 0)
        rod.add_to_cols ();
+      return true;
     }
+  return false;
 }
 
 /*
index 8916c634409380e1b905968ded41b2bfdf1ee456..4b70e8428ac49f59c8dcaf300a5ba1970e870145 100644 (file)
        (avoid-slur . inside)
        (X-extent . ,ly:axis-group-interface::width)
        (Y-extent . ,ly:axis-group-interface::height)
+       (skylines . ,ly:separation-item::calc-skylines)
        (meta . ((class . Item)
                 (interfaces . (spacing-interface
                                separation-item-interface))))))