class Dynamic_engraver : public Engraver
{
TRANSLATOR_DECLARATIONS (Dynamic_engraver);
- DECLARE_ACKNOWLEDGER (note_column);
- DECLARE_TRANSLATOR_LISTENER (absolute_dynamic);
- DECLARE_TRANSLATOR_LISTENER (span_dynamic);
- DECLARE_TRANSLATOR_LISTENER (break_span);
+ void acknowledge_note_column (Grob_info);
+ void listen_absolute_dynamic (Stream_event *);
+ void listen_span_dynamic (Stream_event *);
+ void listen_break_span (Stream_event *);
protected:
virtual void process_music ();
bool end_new_spanner_;
};
-Dynamic_engraver::Dynamic_engraver ()
+Dynamic_engraver::Dynamic_engraver (Context *c)
+ : Engraver (c)
{
script_event_ = 0;
current_span_event_ = 0;
end_new_spanner_ = false;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, absolute_dynamic);
void
Dynamic_engraver::listen_absolute_dynamic (Stream_event *ev)
{
ASSIGN_EVENT_ONCE (script_event_, ev);
}
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, span_dynamic);
void
Dynamic_engraver::listen_span_dynamic (Stream_event *ev)
{
ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev);
}
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, break_span);
void
Dynamic_engraver::listen_break_span (Stream_event *event)
{
}
if (finished_spanner_)
{
- if (Hairpin::has_interface (finished_spanner_))
+ if (has_interface<Hairpin> (finished_spanner_))
Pointer_group_interface::add_grob (finished_spanner_,
ly_symbol2scm ("adjacent-spanners"),
current_spanner_);
- if (Hairpin::has_interface (current_spanner_))
+ if (has_interface<Hairpin> (current_spanner_))
Pointer_group_interface::add_grob (current_spanner_,
ly_symbol2scm ("adjacent-spanners"),
finished_spanner_);
if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT))
finished_spanner_
->set_bound (RIGHT,
- Grob::unsmob (get_property ("currentMusicalColumn")));
+ unsmob<Grob> (get_property ("currentMusicalColumn")));
if (current_spanner_ && !current_spanner_->get_bound (LEFT))
current_spanner_
->set_bound (LEFT,
- Grob::unsmob (get_property ("currentMusicalColumn")));
+ unsmob<Grob> (get_property ("currentMusicalColumn")));
script_ = 0;
script_event_ = 0;
accepted_spanevents_drul_.set (0, 0);
*/
Grob *x_parent = (heads.size ()
? info.grob ()
- : Grob::unsmob (info.grob ()->get_object ("rest")));
+ : unsmob<Grob> (info.grob ()->get_object ("rest")));
if (x_parent)
script_->set_parent (x_parent, X_AXIS);
}
finished_spanner_->set_bound (RIGHT, info.grob ());
}
-ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
+void
+Dynamic_engraver::boot ()
+{
+ ADD_LISTENER (Dynamic_engraver, absolute_dynamic);
+ ADD_LISTENER (Dynamic_engraver, span_dynamic);
+ ADD_LISTENER (Dynamic_engraver, break_span);
+ ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
+}
+
ADD_TRANSLATOR (Dynamic_engraver,
/* doc */
"Create hairpins, dynamic texts and dynamic text spanners.",