]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/completion-note-heads-engraver.cc
Update texinfo.tex from Texinfo CVS
[lilypond.git] / lily / completion-note-heads-engraver.cc
index 69cd4b0785c90350a3707f1a103b727ba8d875fc..f514f7d37febd3c1e774216c3fa3f93ec9633826 100644 (file)
@@ -1,7 +1,7 @@
 /*
   completion-note-heads-engraver.cc -- Completion_heads_engraver
 
-  (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include <cctype>
@@ -85,14 +85,8 @@ Completion_heads_engraver::listen_note (Stream_event *ev)
   note_events_.push_back (ev);
   
   is_first_ = true;
-  Moment musiclen = get_event_length (ev);
   Moment now = now_mom ();
-
-  if (now_mom ().grace_part_)
-    {
-      musiclen.grace_part_ = musiclen.main_part_;
-      musiclen.main_part_ = Rational (0, 1);
-    }
+  Moment musiclen = get_event_length (ev, now);
 
   note_end_mom_ = max (note_end_mom_, (now + musiclen));
   do_nothing_until_ = Rational (0, 0);
@@ -193,7 +187,15 @@ Completion_heads_engraver::process_music ()
            scratch_note_events_.push_back (m);
          }
     }
-
+  else
+    {
+      for (vsize i = 0; i < note_events_.size (); i++)
+       {
+         Stream_event *c =  note_events_[i]->clone ();
+         scratch_note_events_.push_back (c);
+       }
+    }
+  
   for (vsize i = 0; left_to_do_ && i < note_events_.size (); i++)
     {
       Stream_event *event = note_events_[i];
@@ -216,11 +218,7 @@ Completion_heads_engraver::process_music ()
          Item *d = make_item ("Dots", SCM_EOL);
          Rhythmic_head::set_dots (note, d);
 
-         /*
-           measly attempt to save an eeny-weenie bit of memory.
-         */
-         if (dots != scm_to_int (d->get_property ("dot-count")))
-           d->set_property ("dot-count", scm_from_int (dots));
+         d->set_property ("dot-count", scm_from_int (dots));
 
          d->set_parent (note, Y_AXIS);
          dots_.push_back (d);
@@ -295,7 +293,13 @@ ADD_TRANSLATOR (Completion_heads_engraver,
                /* doc */ "This engraver replaces "
                "@code{Note_heads_engraver}. It plays some trickery to "
                "break long notes and automatically tie them into the next measure.",
-               /* create */ "NoteHead Dots Tie",
-               /* accept */ "note-event",
-               /* read */ "middleCPosition measurePosition measureLength",
+               /* create */
+               "NoteHead "
+               "Dots "
+               "Tie",
+               /* read */
+               "middleCPosition "
+               "measurePosition "
+               "measureLength",
+
                /* write */ "");