]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/completion-note-heads-engraver.cc
* lily/open-type-font.cc (load_scheme_table): new function
[lilypond.git] / lily / completion-note-heads-engraver.cc
index 229eadd4937062ae4a6ed63797887827a3248566..f1d2170087d2f456283954a931666cf8eec123d3 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;
@@ -124,7 +124,7 @@ Completion_heads_engraver::next_barline_moment ( )
 Duration  
 Completion_heads_engraver::find_nearest_duration (Rational length)
 {
-  int log_limit= 6;
+  int log_limit = 6;
 
   Duration d (0,0);
 
@@ -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,9 +210,7 @@ Completion_heads_engraver::process_music ()
   for (int i = 0;
        left_to_do_ && i < note_reqs_.size (); i++)
     {
-      
       Music * req =  note_reqs_[i];
-      Item *note  = make_item ("NoteHead", req->self_scm ());
       if (scratch_note_reqs_.size ())
        {
          req = scratch_note_reqs_[i];
@@ -221,10 +219,12 @@ 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 ();
+      int dots = note_dur.dot_count ();
       if (dots)
        {
          Item * d = make_item ("Dots", SCM_EOL);
@@ -233,19 +233,19 @@ Completion_heads_engraver::process_music ()
          /*
           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);
          dots_.push (d);
        }
 
-      Pitch *pit =unsmob_pitch (req->get_property ("pitch"));
+      Pitch *pit = unsmob_pitch (req->get_property ("pitch"));
 
       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));
       notes_.push (note);
@@ -253,7 +253,7 @@ Completion_heads_engraver::process_music ()
   
   if (prev_notes_.size () == notes_.size ())
     {
-      for (int i= 0; i < notes_.size (); i++)
+      for (int i = 0; i < notes_.size (); i++)
        {
          Grob * p = make_spanner ("Tie", SCM_EOL);
          Tie::set_interface (p); // cannot remove yet!
@@ -281,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--;)
@@ -322,7 +312,7 @@ Completion_heads_engraver::Completion_heads_engraver ()
 {
 }
 
-ENTER_DESCRIPTION (Completion_heads_engraver,
+ADD_TRANSLATOR (Completion_heads_engraver,
 /* descr */       "This engraver replaces "
 "@code{Note_heads_engraver}. It plays some trickery to "
 "break long notes and automatically tie them into the next measure.",