X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fbeam-engraver.cc;h=9b4df64d9c9b9d1c055e1e1c6711f4d329be28b0;hb=f37b3926c57080a0dedf60727c3e8fb924112468;hp=e6ca4caf16d58586556a288fb7c915bb8e06659c;hpb=0b25807868f2e1f3372a8fb5e19d9036dec53ecc;p=lilypond.git diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index e6ca4caf16..9b4df64d9c 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -38,8 +38,9 @@ class Beam_engraver : public Engraver { public: - DECLARE_ACKNOWLEDGER (stem); - DECLARE_ACKNOWLEDGER (rest); + void acknowledge_stem (Grob_info); + void acknowledge_rest (Grob_info); + void listen_beam (Stream_event *); protected: Stream_event *start_ev_; @@ -77,7 +78,6 @@ protected: virtual bool valid_start_point (); virtual bool valid_end_point (); - DECLARE_TRANSLATOR_LISTENER (beam); public: TRANSLATOR_DECLARATIONS (Beam_engraver); }; @@ -112,7 +112,6 @@ Beam_engraver::Beam_engraver () prev_start_ev_ = 0; } -IMPLEMENT_TRANSLATOR_LISTENER (Beam_engraver, beam); void Beam_engraver::listen_beam (Stream_event *ev) { @@ -312,8 +311,14 @@ Beam_engraver::acknowledge_stem (Grob_info info) Beam::add_stem (beam_, stem); } -ADD_ACKNOWLEDGER (Beam_engraver, stem); -ADD_ACKNOWLEDGER (Beam_engraver, rest); + +void +Beam_engraver::boot () +{ + ADD_LISTENER (Beam_engraver, beam); + ADD_ACKNOWLEDGER (Beam_engraver, stem); + ADD_ACKNOWLEDGER (Beam_engraver, rest); +} ADD_TRANSLATOR (Beam_engraver, /* doc */ @@ -337,8 +342,7 @@ class Grace_beam_engraver : public Beam_engraver { public: TRANSLATOR_DECLARATIONS (Grace_beam_engraver); - - DECLARE_TRANSLATOR_LISTENER (beam); + TRANSLATOR_INHERIT (Beam_engraver); protected: virtual bool valid_start_point (); @@ -363,24 +367,14 @@ Grace_beam_engraver::valid_end_point () return beam_ && valid_start_point (); } -/* - Ugh, C&P code. - */ -IMPLEMENT_TRANSLATOR_LISTENER (Grace_beam_engraver, beam); void -Grace_beam_engraver::listen_beam (Stream_event *ev) +Grace_beam_engraver::boot () { - Direction d = to_dir (ev->get_property ("span-direction")); - - if (d == START && valid_start_point ()) - start_ev_ = ev; - else if (d == STOP && valid_end_point ()) - stop_ev_ = ev; + ADD_LISTENER (Grace_beam_engraver, beam); + ADD_ACKNOWLEDGER (Grace_beam_engraver, stem); + ADD_ACKNOWLEDGER (Grace_beam_engraver, rest); } -ADD_ACKNOWLEDGER (Grace_beam_engraver, stem); -ADD_ACKNOWLEDGER (Grace_beam_engraver, rest); - ADD_TRANSLATOR (Grace_beam_engraver, /* doc */ "Handle @code{Beam} events by engraving beams. If omitted,"