/*
- 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>
*/
#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?
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 ())
{
}
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);
}
{
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);
+
}
}
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--;)
/* creats*/ "NoteHead Dots Tie",
/* accepts */ "busy-playing-event note-event",
/* acks */ "",
-/* reads */ "centralCPosition measurePosition measureLength",
+/* reads */ "middleCPosition measurePosition measureLength",
/* write */ "");