X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fcompletion-note-heads-engraver.cc;h=18b51cd4ec9440217301156565d22dc11addf128;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=27d950b690ecbd4f8aff608bc0f3aa33946df4aa;hpb=59a6d1a06432fc0ca88c3023c646182f389ec1b5;p=lilypond.git diff --git a/lily/completion-note-heads-engraver.cc b/lily/completion-note-heads-engraver.cc index 27d950b690..18b51cd4ec 100644 --- a/lily/completion-note-heads-engraver.cc +++ b/lily/completion-note-heads-engraver.cc @@ -18,6 +18,7 @@ */ #include +using namespace std; #include "dot-column.hh" #include "dots.hh" @@ -38,8 +39,6 @@ #include "translator.icc" -using std::vector; - /* How does this work? @@ -81,7 +80,7 @@ protected: void start_translation_timestep (); void process_music (); void stop_translation_timestep (); - DECLARE_TRANSLATOR_LISTENER (note); + void listen_note (Stream_event *); }; void @@ -90,7 +89,6 @@ Completion_heads_engraver::initialize () is_first_ = false; } -IMPLEMENT_TRANSLATOR_LISTENER (Completion_heads_engraver, note); void Completion_heads_engraver::listen_note (Stream_event *ev) { @@ -100,7 +98,7 @@ Completion_heads_engraver::listen_note (Stream_event *ev) Moment now = now_mom (); Moment musiclen = get_event_length (ev, now); - note_end_mom_ = std::max (note_end_mom_, (now + musiclen)); + note_end_mom_ = max (note_end_mom_, (now + musiclen)); do_nothing_until_ = Rational (0, 0); } @@ -165,7 +163,7 @@ Completion_heads_engraver::make_note_head (Stream_event *ev) Item *note = make_item ("NoteHead", ev->self_scm ()); Pitch *pit = unsmob (ev->get_property ("pitch")); - int pos = pit->steps (); + int pos = pit ? pit->steps () : 0; SCM c0 = get_property ("middleCPosition"); if (scm_is_number (c0)) pos += scm_to_int (c0); @@ -303,11 +301,18 @@ Completion_heads_engraver::start_translation_timestep () ly_bool2scm (note_events_.size ())); } -Completion_heads_engraver::Completion_heads_engraver () +Completion_heads_engraver::Completion_heads_engraver (Context *c) + : Engraver (c) { tie_column_ = 0; } +void +Completion_heads_engraver::boot () +{ + ADD_LISTENER (Completion_heads_engraver, note); +} + ADD_TRANSLATOR (Completion_heads_engraver, /* doc */ "This engraver replaces @code{Note_heads_engraver}. It plays"