From 3847662bf0b0e54f9bc9e0fc7910d8ff844c7e09 Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Mon, 7 Jun 2010 22:51:30 +0100 Subject: [PATCH] Let DynamicTextSpanner end alignment early if line is hidden. * lily/dynamic-align-engraver.cc (acknowledge_dynamic): if acknowledged spanner is a DynamicTextSpanner and its line style = 'none, break alignment spanner --- input/regression/dynamics-alignment-no-line.ly | 16 ++++++++++++++++ lily/dynamic-align-engraver.cc | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 input/regression/dynamics-alignment-no-line.ly diff --git a/input/regression/dynamics-alignment-no-line.ly b/input/regression/dynamics-alignment-no-line.ly new file mode 100644 index 0000000000..625724463b --- /dev/null +++ b/input/regression/dynamics-alignment-no-line.ly @@ -0,0 +1,16 @@ +\version "2.13.24" + +\header { + texidoc = "If the line for a @code{DynamicTextSpanner} is hidden, the +alignment spanner for dynamics is ended early. This allows consecutive +dynamics to be unlinked." +} + +\relative g' { + g4\p\cresc g g g + g,1\f + + \override DynamicTextSpanner #'style = #'none + g'4\p\cresc g g g + g,1\f +} diff --git a/lily/dynamic-align-engraver.cc b/lily/dynamic-align-engraver.cc index 96d19b7ded..8e82b83474 100644 --- a/lily/dynamic-align-engraver.cc +++ b/lily/dynamic-align-engraver.cc @@ -100,7 +100,17 @@ Dynamic_align_engraver::acknowledge_dynamic (Grob_info info) Stream_event *cause = info.event_cause (); create_line_spanner (cause); if (Spanner::has_interface (info.grob ())) - started_.push_back (info.spanner ()); + { + started_.push_back (info.spanner ()); + /* + If we are using text spans instead of hairpins and the line + is hidden, end the alignment spanner early: this allows dynamics + to be spaced individually instead of being linked together. + */ + if (info.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-text-spanner-interface")) + && (info.grob ()->get_property ("style") == ly_symbol2scm ("none"))) + early_end_ = true; + } else if (info.item ()) scripts_.push_back (info.item ()); else -- 2.39.2