]> git.donarmstrong.com Git - lilypond.git/commitdiff
Completion_heads_engraver: retain note shape for non-tuplets. Fixes #1532.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 21 Feb 2011 20:04:52 +0000 (21:04 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 21 Feb 2011 20:04:52 +0000 (21:04 +0100)
input/regression/completion-heads-factor.ly [new file with mode: 0644]
lily/completion-note-heads-engraver.cc

diff --git a/input/regression/completion-heads-factor.ly b/input/regression/completion-heads-factor.ly
new file mode 100644 (file)
index 0000000..a065a37
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.12.0"
+
+\header{
+texidoc="
+
+If the @code{Note_heads_engraver} is replaced by the @code{Completion_heads_engraver},
+notes with a duration factor still keep their requested appearance.
+
+"
+}
+
+#(set-paper-size "a6")
+
+\layout { ragged-right= ##t }
+
+
+\new Voice \with {
+    \remove "Note_heads_engraver"
+    \consists "Completion_heads_engraver"
+} \relative c'{
+
+  c\breve |
+  c1*2 |
+  c2*4 |
+}
index 0b1a0565ba6e3af8938019b7c7fa6164350be9d1..59b47ab5252a244e6c715cbbcc51ea8827fbed06 100644 (file)
@@ -218,11 +218,14 @@ Completion_heads_engraver::process_music ()
        event = event->clone ();
 
       SCM pits = note_events_[i]->get_property ("pitch");
+      Duration appearance = note_dur;
+      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
+       appearance = Duration (note_dur.get_length (), false);
 
       event->set_property ("pitch", pits);
-      event->set_property ("duration", note_dur.smobbed_copy ());
-      event->set_property ("length", Moment (note_dur.get_length ()).smobbed_copy ());
-      event->set_property ("duration-log", scm_from_int (note_dur.duration_log ()));
+      event->set_property ("duration", appearance.smobbed_copy ());
+      event->set_property ("length", Moment (appearance.get_length ()).smobbed_copy ());
+      event->set_property ("duration-log", scm_from_int (appearance.duration_log ()));
 
       Item *note = make_note_head (event);
       if (need_clone)