]> git.donarmstrong.com Git - lilypond.git/commitdiff
use skyline for spacing rods, store smobs directly, avoiding
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 1 Dec 2006 13:44:13 +0000 (14:44 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 1 Dec 2006 13:44:13 +0000 (14:44 +0100)
marshaling penalties.

input/regression/spacing-horizontal-skyline.ly [new file with mode: 0644]
lily/separation-item.cc

diff --git a/input/regression/spacing-horizontal-skyline.ly b/input/regression/spacing-horizontal-skyline.ly
new file mode 100644 (file)
index 0000000..554c17d
--- /dev/null
@@ -0,0 +1,24 @@
+
+\header {
+
+  texidoc = "accidentals may be folded under preceding notes."
+  }
+\version "2.11.1"
+
+\paper {
+  ragged-right = ##t
+  }
+
+\relative {
+  \stemUp c''4...*1/2
+
+  ceses,,!
+  eses!
+  ceses!
+  feses!
+  ceses!
+  geses'!
+  ceses,!
+  
+}
+  
index f4271c389804e1c1084b214303d4839accbfd48c..dec77f5eaf6284ae243cdc878186ccd333e4de37 100644 (file)
@@ -31,20 +31,17 @@ void
 Separation_item::set_skyline_distance (Drul_array<Item *> items,
                                       Real padding)
 {
-  Drul_array<Skyline> lines;
+  Drul_array<Skyline*> lines;
   Direction d = LEFT;
 
   do
     {
       SCM prop = items[d]->get_property ("skylines");
-      lines[d] =
-       Skyline (ly_scm2offsets (index_get_cell (prop, -d)),
-                2.0,
-                -d);
+      lines[d] = Skyline::unsmob (index_get_cell (prop, -d));
     }
   while (flip (&d) != LEFT);
 
-  Real dist = padding + lines[LEFT].distance (lines[RIGHT]);
+  Real dist = padding + lines[LEFT]->distance (*lines[RIGHT]);
   if (dist > 0)
     {
       Rod rod;
@@ -60,14 +57,12 @@ void
 Separation_item::set_distance (Drul_array<Item *> items,
                               Real padding)
 {
-#if 0
-  if (0 && !Item::is_non_musical (items[LEFT])
+  if (!Item::is_non_musical (items[LEFT])
       && !Item::is_non_musical (items[RIGHT]))
     {
       set_skyline_distance (items, padding);
       return;
     }
-#endif
   
   Interval li (Separation_item::width (items[LEFT]));
   Interval ri (Separation_item::conditional_width (items[RIGHT], items[LEFT]));
@@ -132,7 +127,7 @@ Separation_item::calc_skylines (SCM smob)
   do
     {
       Skyline l (bs, Y_AXIS, d);
-      index_set_cell (lines, d, ly_offsets2scm (l.to_points ()));
+      index_set_cell (lines, d, l.smobbed_copy ());
     }
   while (flip (&d) != LEFT);