]> git.donarmstrong.com Git - lilypond.git/commitdiff
Let DynamicTextSpanner end alignment early if line is hidden.
authorNeil Puttock <n.puttock@gmail.com>
Mon, 7 Jun 2010 21:51:30 +0000 (22:51 +0100)
committerNeil Puttock <n.puttock@gmail.com>
Mon, 7 Jun 2010 21:51:30 +0000 (22:51 +0100)
* 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 [new file with mode: 0644]
lily/dynamic-align-engraver.cc

diff --git a/input/regression/dynamics-alignment-no-line.ly b/input/regression/dynamics-alignment-no-line.ly
new file mode 100644 (file)
index 0000000..6257244
--- /dev/null
@@ -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  
+}
index 96d19b7ded506402fa17323bbf69fdd79004f474..8e82b834748720e8748140fe6badc4fe7b643511 100644 (file)
@@ -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