From 42bd142680a127b608851b5fa1b2145bb42dcd7a Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 1 Dec 2006 14:44:13 +0100 Subject: [PATCH] use skyline for spacing rods, store smobs directly, avoiding marshaling penalties. --- .../regression/spacing-horizontal-skyline.ly | 24 +++++++++++++++++++ lily/separation-item.cc | 15 ++++-------- 2 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 input/regression/spacing-horizontal-skyline.ly diff --git a/input/regression/spacing-horizontal-skyline.ly b/input/regression/spacing-horizontal-skyline.ly new file mode 100644 index 0000000000..554c17da3f --- /dev/null +++ b/input/regression/spacing-horizontal-skyline.ly @@ -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,! + +} + diff --git a/lily/separation-item.cc b/lily/separation-item.cc index f4271c3898..dec77f5eaf 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -31,20 +31,17 @@ void Separation_item::set_skyline_distance (Drul_array items, Real padding) { - Drul_array lines; + Drul_array 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 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); -- 2.39.5