X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffall-engraver.cc;h=08ca8e15e8c3c94c6b5d6975717a6fc6e6cc9841;hb=45e73c21395bfa26f928c216fc6ee72fc9fa68d9;hp=41a904f2422961688516ca927ddfecf1ab957cd7;hpb=af0801e09f8952dd4b20b8543d00279394b9fb3a;p=lilypond.git diff --git a/lily/fall-engraver.cc b/lily/fall-engraver.cc index 41a904f242..08ca8e15e8 100644 --- a/lily/fall-engraver.cc +++ b/lily/fall-engraver.cc @@ -1,5 +1,5 @@ /* - fall-engraver.cc -- implement Fall_engraver + fall-engraver.cc -- implement Bend_after_engraver (c) 2006 Han-Wen Nienhuys @@ -8,16 +8,20 @@ #include "engraver.hh" #include "item.hh" +#include "moment.hh" #include "spanner.hh" +#include "stream-event.hh" -class Fall_engraver : public Engraver +#include "translator.icc" + +class Bend_after_engraver : public Engraver { public: - TRANSLATOR_DECLARATIONS (Fall_engraver); + TRANSLATOR_DECLARATIONS (Bend_after_engraver); DECLARE_ACKNOWLEDGER (note_head); protected: - virtual bool try_music (Music *event); + DECLARE_TRANSLATOR_LISTENER (bend_after); void process_music (); void stop_translation_timestep (); void start_translation_timestep (); @@ -25,19 +29,18 @@ protected: private: Moment stop_moment_; - Music *fall_event_; + Stream_event *fall_event_; Spanner *fall_; Grob *note_head_; }; void -Fall_engraver::stop_fall () +Bend_after_engraver::stop_fall () { bool bar = scm_is_string (get_property ("whichBar")); - fall_->set_bound (RIGHT, unsmob_grob ( - bar + fall_->set_bound (RIGHT, unsmob_grob (bar ? get_property ("currentCommandColumn") : get_property ("currentMusicalColumn"))); fall_ = 0; @@ -46,7 +49,7 @@ Fall_engraver::stop_fall () } void -Fall_engraver::stop_translation_timestep () +Bend_after_engraver::stop_translation_timestep () { if (fall_ && !fall_->get_bound (LEFT)) { @@ -56,7 +59,7 @@ Fall_engraver::stop_translation_timestep () } void -Fall_engraver::start_translation_timestep () +Bend_after_engraver::start_translation_timestep () { if (fall_ && now_mom ().main_part_ >= stop_moment_.main_part_) { @@ -65,7 +68,7 @@ Fall_engraver::start_translation_timestep () } void -Fall_engraver::acknowledge_note_head (Grob_info info) +Bend_after_engraver::acknowledge_note_head (Grob_info info) { if (!fall_event_) return; @@ -76,43 +79,38 @@ Fall_engraver::acknowledge_note_head (Grob_info info) } note_head_ = info.grob (); - stop_moment_ = now_mom () + info.music_cause ()->get_length (); + stop_moment_ = now_mom () + get_event_length (info.event_cause ()); } -Fall_engraver::Fall_engraver () +Bend_after_engraver::Bend_after_engraver () { fall_ = 0; note_head_ = 0; fall_event_ = 0; } -bool -Fall_engraver::try_music (Music *r) +IMPLEMENT_TRANSLATOR_LISTENER (Bend_after_engraver, bend_after); +void +Bend_after_engraver::listen_bend_after (Stream_event *ev) { - fall_event_ = r; - return true; + ASSIGN_EVENT_ONCE (fall_event_, ev); } void -Fall_engraver::process_music () +Bend_after_engraver::process_music () { if (fall_event_ && !fall_) { fall_ = make_spanner ("BendAfter", fall_event_->self_scm ()); - fall_->set_property ("delta-step", - scm_from_double (robust_scm2double (fall_event_->get_property ("delta-pitch"), 0) * 0.5)); + fall_->set_property ("delta-position", + scm_from_double (robust_scm2double (fall_event_->get_property ("delta-step"), 0))); } } -#include "translator.icc" - - -ADD_ACKNOWLEDGER (Fall_engraver, note_head); - +ADD_ACKNOWLEDGER (Bend_after_engraver, note_head); -ADD_TRANSLATOR (Fall_engraver, +ADD_TRANSLATOR (Bend_after_engraver, /* doc */ "Create fall spanners.", /* create */ "BendAfter", - /* accept */ "bend-after-event", /* read */ "", /* write */ "");