X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstem-engraver.cc;h=199d9fd17ea735d1a1c2308324938d694268e208;hb=330a2873ed46f66d5abcefda22a633d1137cfb0e;hp=5337a0aeddfe164a89ed0a0d2afd9109cfa8b77e;hpb=f127e14af04f474d20406ca0e0f76f05061ee103;p=lilypond.git diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index 5337a0aedd..199d9fd17e 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -34,8 +34,6 @@ #include "translator.icc" -using std::vector; - class Stem_engraver : public Engraver { Grob *stem_; @@ -50,15 +48,16 @@ class Stem_engraver : public Engraver protected: void make_stem (Grob_info, bool); - DECLARE_TRANSLATOR_LISTENER (tremolo); - DECLARE_TRANSLATOR_LISTENER (tuplet_span); - DECLARE_ACKNOWLEDGER (rhythmic_head); + void listen_tremolo (Stream_event *); + void listen_tuplet_span (Stream_event *); + void acknowledge_rhythmic_head (Grob_info); void stop_translation_timestep (); void finalize (); void kill_unused_flags (); }; -Stem_engraver::Stem_engraver () +Stem_engraver::Stem_engraver (Context *c) + : Engraver (c) { tremolo_ev_ = 0; stem_ = 0; @@ -160,7 +159,8 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi) Stem::add_head (stem_, gi.grob ()); if (Stem::is_normal_stem (stem_) - && Stem::duration_log (stem_) > 2) + && Stem::duration_log (stem_) > 2 + && !(unsmob (stem_->get_object ("flag")))) { Item *flag = make_item ("Flag", stem_->self_scm ()); flag->set_parent (stem_, X_AXIS); @@ -213,7 +213,6 @@ Stem_engraver::stop_translation_timestep () tremolo_ev_ = 0; } -IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tuplet_span); void Stem_engraver::listen_tuplet_span (Stream_event *ev) { @@ -227,14 +226,20 @@ Stem_engraver::listen_tuplet_span (Stream_event *ev) } } -IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tremolo); void Stem_engraver::listen_tremolo (Stream_event *ev) { ASSIGN_EVENT_ONCE (tremolo_ev_, ev); } -ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head); + +void +Stem_engraver::boot () +{ + ADD_LISTENER (Stem_engraver, tuplet_span); + ADD_LISTENER (Stem_engraver, tremolo); + ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head); +} ADD_TRANSLATOR (Stem_engraver, /* doc */