]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/completion-note-heads-engraver.cc
* scm/define-markup-commands.scm (fill-line): use
[lilypond.git] / lily / completion-note-heads-engraver.cc
index 4c52d88ae454560a16f5af6b6b3eee2489f1c5f6..08a6737c2b3bede4bf2a9b315604cc105385b91a 100644 (file)
@@ -4,10 +4,10 @@
   (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include <ctype.h>
+#include <cctype>
 
 #include "rhythmic-head.hh"
-#include "paper-def.hh"
+#include "output-def.hh"
 #include "event.hh"
 #include "dots.hh"
 #include "dot-column.hh"
@@ -50,7 +50,7 @@ class Completion_heads_engraver : public Engraver
   Link_array<Music> scratch_note_reqs_;
 
   Moment note_end_mom_;
-  bool first_b_;
+  bool is_first_;
   Rational left_to_do_;
   Rational do_nothing_until_;
   
@@ -71,7 +71,7 @@ protected:
 void
 Completion_heads_engraver::initialize ()
 {
-  first_b_ = false;
+  is_first_ = false;
 }
 
 bool
@@ -81,7 +81,7 @@ Completion_heads_engraver::try_music (Music *m)
     {
       note_reqs_.push (m);
 
-      first_b_ = true;
+      is_first_ = true;
       Moment musiclen = m->get_length ();
       Moment now = now_mom ();
 
@@ -97,7 +97,7 @@ Completion_heads_engraver::try_music (Music *m)
     }
   else if  (m->is_mus_type ("busy-playing-event"))
     {
-      return note_reqs_.size ();
+      return note_reqs_.size() && is_first_;
     }
   
   return false;
@@ -159,10 +159,10 @@ Completion_heads_engraver::find_nearest_duration (Rational length)
 void
 Completion_heads_engraver::process_music ()
 {
-  if (!first_b_ && !left_to_do_)
+  if (!is_first_ && !left_to_do_)
     return ;
   
-  first_b_ = false;
+  is_first_ = false;
 
   Moment now =  now_mom ();
   if (do_nothing_until_ > now.main_part_)
@@ -210,8 +210,6 @@ Completion_heads_engraver::process_music ()
   for (int i = 0;
        left_to_do_ && i < note_reqs_.size (); i++)
     {
-      Item *note  = make_item ("NoteHead");
-      
       Music * req =  note_reqs_[i];
       if (scratch_note_reqs_.size ())
        {
@@ -221,23 +219,24 @@ Completion_heads_engraver::process_music ()
        }
       
       req->set_property ("duration", note_dur.smobbed_copy ());
+
+      Item *note  = make_item ("NoteHead", req->self_scm ());
       note->set_property ("duration-log",
-                                scm_int2num (note_dur.duration_log ()));
+                         scm_int2num (note_dur.duration_log ()));
       
       int dots= note_dur.dot_count ();
       if (dots)
        {
-         Item * d = make_item ("Dots");
+         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 != ly_scm2int (d->get_property ("dot-count")))
+         if (dots != scm_to_int (d->get_property ("dot-count")))
            d->set_property ("dot-count", scm_int2num (dots));
 
          d->set_parent (note, Y_AXIS);
-         announce_grob (d, SCM_EOL);
          dots_.push (d);
        }
 
@@ -245,11 +244,10 @@ Completion_heads_engraver::process_music ()
 
       int pos = pit->steps ();
       SCM c0 = get_property ("middleCPosition");
-      if (ly_c_number_p (c0))
-       pos += ly_scm2int (c0);
+      if (scm_is_number (c0))
+       pos += scm_to_int (c0);
 
       note->set_property ("staff-position",   scm_int2num (pos));
-      announce_grob (note,req->self_scm ());
       notes_.push (note);
     }
   
@@ -257,14 +255,14 @@ Completion_heads_engraver::process_music ()
     {
       for (int i= 0; i < notes_.size (); i++)
        {
-         Grob * p = make_spanner ("Tie");
+         Grob * p = make_spanner ("Tie", SCM_EOL);
          Tie::set_interface (p); // cannot remove yet!
          
          Tie::set_head (p, LEFT, prev_notes_[i]);
          Tie::set_head (p, RIGHT, notes_[i]);
          
          ties_.push (p);
-         announce_grob (p, SCM_EOL);
+         
        }
     }
 
@@ -283,22 +281,12 @@ Completion_heads_engraver::process_music ()
 void
 Completion_heads_engraver::stop_translation_timestep ()
 {
-  for (int i = ties_.size (); i--;)
-    typeset_grob (ties_[i]); 
   ties_.clear ();
   
-  for (int i=0; i < notes_.size (); i++)
-    {
-      typeset_grob (notes_[i]);
-    }
   if (notes_.size ())
     prev_notes_ = notes_;
   notes_.clear ();
   
-  for (int i=0; i < dots_.size (); i++)
-    {
-      typeset_grob (dots_[i]);
-    }
   dots_.clear ();
 
   for (int i = scratch_note_reqs_.size (); i--;)