X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fchord-name-engraver.cc;h=3d989ccfb14de07ee33cf981f0e5e67ed338a3cb;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=10420273ab645bd8e8c56dd90fe937b72ddbd909;hpb=e0af94bb8939bc6f4998db6294010baa77139092;p=lilypond.git diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 10420273ab..3d989ccfb1 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -39,8 +39,8 @@ protected: void stop_translation_timestep (); void process_music (); virtual void finalize (); - DECLARE_TRANSLATOR_LISTENER (note); - DECLARE_TRANSLATOR_LISTENER (rest); + void listen_note (Stream_event *); + void listen_rest (Stream_event *); private: vector notes_; @@ -52,7 +52,8 @@ Chord_name_engraver::finalize () { } -Chord_name_engraver::Chord_name_engraver () +Chord_name_engraver::Chord_name_engraver (Context *c) + : Engraver (c) { rest_event_ = 0; } @@ -96,7 +97,7 @@ Chord_name_engraver::process_music () { Stream_event *n = notes_[i]; SCM p = n->get_property ("pitch"); - if (!Pitch::is_smob (p)) + if (!unsmob (p)) continue; if (to_boolean (n->get_property ("bass"))) @@ -106,7 +107,7 @@ Chord_name_engraver::process_music () SCM oct = n->get_property ("octavation"); if (scm_is_number (oct)) { - Pitch orig = Pitch::unsmob (p)->transposed (Pitch (-scm_to_int (oct), 0)); + Pitch orig = unsmob (p)->transposed (Pitch (-scm_to_int (oct), 0)); pitches = scm_cons (orig.smobbed_copy (), pitches); } else @@ -143,14 +144,12 @@ Chord_name_engraver::process_music () context ()->set_property ("lastChord", markup); } -IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, note); void Chord_name_engraver::listen_note (Stream_event *ev) { notes_.push_back (ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, rest); void Chord_name_engraver::listen_rest (Stream_event *ev) { @@ -168,6 +167,13 @@ Chord_name_engraver::stop_translation_timestep () The READs description is not strictly accurate: which properties are read depend on the chord naming function active. */ +void +Chord_name_engraver::boot () +{ + ADD_LISTENER (Chord_name_engraver, note); + ADD_LISTENER (Chord_name_engraver, rest); +} + ADD_TRANSLATOR (Chord_name_engraver, /* doc */ "Catch note and rest events and generate the appropriate chordname.",