]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/completion-note-heads-engraver.cc
* lily/beam.cc (set_minimum_dy): new function. Round non-zero
[lilypond.git] / lily / completion-note-heads-engraver.cc
index c4afba07d6a336d1c0f33f00224f685403fc62c2..71d2abdf4da9c2722b600aaf3cbdc0440c32da71 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  head-grav.cc -- part of GNU LilyPond
+  completion-note-heads-engraver.cc -- Completion_heads_engraver
 
   (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
@@ -7,7 +7,7 @@
 #include <ctype.h>
 
 #include "rhythmic-head.hh"
-#include "paper-def.hh"
+#include "output-def.hh"
 #include "event.hh"
 #include "dots.hh"
 #include "dot-column.hh"
 #include "tie.hh"
 #include "global-context.hh"
 
+/*
+TODO: make matching rest engraver.
+*/
+
 /*
 
   How does this work?
@@ -206,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 ())
        {
@@ -217,35 +219,35 @@ 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",
-                                gh_int2scm (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 != gh_scm2int (d->get_property ("dot-count")))
-           d->set_property ("dot-count", gh_int2scm (dots));
+         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);
        }
 
       Pitch *pit =unsmob_pitch (req->get_property ("pitch"));
 
       int pos = pit->steps ();
-      SCM c0 = get_property ("centralCPosition");
-      if (gh_number_p (c0))
-       pos += gh_scm2int (c0);
+      SCM c0 = get_property ("middleCPosition");
+      if (scm_is_number (c0))
+       pos += scm_to_int (c0);
 
-      note->set_property ("staff-position",   gh_int2scm (pos));
-      announce_grob (note,req->self_scm ());
+      note->set_property ("staff-position",   scm_int2num (pos));
       notes_.push (note);
     }
   
@@ -253,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);
+         
        }
     }
 
@@ -279,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--;)
@@ -327,5 +319,5 @@ ENTER_DESCRIPTION (Completion_heads_engraver,
 /* creats*/       "NoteHead Dots Tie",
 /* accepts */     "busy-playing-event note-event",
 /* acks  */      "",
-/* reads */       "centralCPosition measurePosition measureLength",
+/* reads */       "middleCPosition measurePosition measureLength",
 /* write */       "");