From 5c97db609cbb07df08fc91b8df903aabefbc8bc2 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 2 Jan 2007 03:13:35 +0100 Subject: [PATCH] Fix #210 & #211. Add break points for cluster at end of array. Don't reverse order of points. Fixes coverage of cluster.cc --- input/regression/cluster-break.ly | 21 +++++++++++++++++++ input/regression/cluster-style.ly | 34 +++++++++++++++++++++++++++++++ input/regression/cluster.ly | 2 +- lily/cluster.cc | 32 ++++++++++------------------- 4 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 input/regression/cluster-break.ly create mode 100644 input/regression/cluster-style.ly diff --git a/input/regression/cluster-break.ly b/input/regression/cluster-break.ly new file mode 100644 index 0000000000..9b42b923c0 --- /dev/null +++ b/input/regression/cluster-break.ly @@ -0,0 +1,21 @@ + +\version "2.10.7" +\header { + texidoc = "Clusters behave well across line breaks." +} + +\layout { ragged-right = ##t } + +fragment = \relative c' { + \time 2/4 + 4 + 4 | \break + + +} + +<< \new Staff \makeClusters \fragment + \new Staff \fragment +>> + + diff --git a/input/regression/cluster-style.ly b/input/regression/cluster-style.ly new file mode 100644 index 0000000000..9d4dfc8236 --- /dev/null +++ b/input/regression/cluster-style.ly @@ -0,0 +1,34 @@ + + +\version "2.10.7" +\header { + texidoc = "Clusters behave well across line breaks." +} + +\layout { ragged-right = ##t } + +fragment = \relative c' { + 4 + 4 + 4 +} + +<< + \time 2/4 + \new Staff { + \override ClusterSpanner #'style = #'ramp + \makeClusters \fragment + r4 + \override ClusterSpanner #'style = #'leftsided-stairs + \makeClusters \fragment + r4 + \override ClusterSpanner #'style = #'rightsided-stairs + \makeClusters \fragment + r4 + \override ClusterSpanner #'style = #'centered-stairs + \makeClusters \fragment + } + +>> + + diff --git a/input/regression/cluster.ly b/input/regression/cluster.ly index 289c1f8984..a05f2ac73d 100644 --- a/input/regression/cluster.ly +++ b/input/regression/cluster.ly @@ -15,7 +15,7 @@ fragment = \relative c' { << \new Staff \fragment - \new Staff \applyMusic #notes-to-clusters \fragment + \new Staff \makeClusters \fragment >> diff --git a/lily/cluster.cc b/lily/cluster.cc index 27ef9dd08a..4e2ee163fa 100644 --- a/lily/cluster.cc +++ b/lily/cluster.cc @@ -164,32 +164,22 @@ Cluster::print (SCM smob) /* Across a line break we anticipate on the next pitches. */ - if (spanner->original ()) + if (Spanner *next = spanner->broken_neighbor (RIGHT)) { - Spanner *orig = dynamic_cast (spanner->original ()); - - if (spanner->get_break_index () < orig->broken_intos_.size () - 1) + extract_grob_set (next, "columns", next_cols); + if (next_cols.size () > 0) { - Spanner *next = orig->broken_intos_[spanner->get_break_index () + 1]; - vector const &next_cols = extract_grob_array (next, "columns"); - if (next_cols.size () > 0) - { - Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS); - Grob *col = next_cols[0]; - - Interval v = col->extent (next_commony, Y_AXIS); - Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord; - - bottom_points.insert (bottom_points.begin (), - Offset (x, v[DOWN])); - top_points.insert (top_points.begin (), Offset (x, v[UP])); - } + Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS); + Grob *col = next_cols[0]; + + Interval v = col->extent (next_commony, Y_AXIS); + Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord; + + bottom_points.push_back (Offset (x, v[DOWN])); + top_points.push_back (Offset (x, v[UP])); } } - reverse (bottom_points); - reverse (top_points); - Stencil out = brew_cluster_piece (me, bottom_points, top_points); out.translate_axis (- me->relative_coordinate (commony, Y_AXIS), Y_AXIS); return out.smobbed_copy (); -- 2.39.2