/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1999--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1999--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
TRANSLATOR_DECLARATIONS (Spacing_engraver);
protected:
- DECLARE_ACKNOWLEDGER (staff_spacing);
- DECLARE_ACKNOWLEDGER (note_spacing);
- DECLARE_ACKNOWLEDGER (rhythmic_head);
- DECLARE_ACKNOWLEDGER (rhythmic_grob);
- DECLARE_TRANSLATOR_LISTENER (spacing_section);
+ void acknowledge_staff_spacing (Grob_info);
+ void acknowledge_note_spacing (Grob_info);
+ void acknowledge_rhythmic_head (Grob_info);
+ void acknowledge_rhythmic_grob (Grob_info);
+ void listen_spacing_section (Stream_event *);
void start_translation_timestep ();
void stop_translation_timestep ();
void stop_spanner ();
};
-Spacing_engraver::Spacing_engraver ()
+Spacing_engraver::Spacing_engraver (Context *c)
+ : Engraver (c)
{
spacing_ = 0;
start_section_ = 0;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Spacing_engraver, spacing_section);
void
Spacing_engraver::listen_spacing_section (Stream_event *ev)
{
spacing_ = make_spanner ("SpacingSpanner", SCM_EOL);
spacing_->set_bound (LEFT,
- unsmob_grob (get_property ("currentCommandColumn")));
+ unsmob<Grob> (get_property ("currentCommandColumn")));
}
void
{
if (spacing_)
{
- Grob *p = unsmob_grob (get_property ("currentCommandColumn"));
+ Grob *p = unsmob<Grob> (get_property ("currentCommandColumn"));
spacing_->set_bound (RIGHT, p);
spacing_ = 0;
Spacing_engraver::stop_translation_timestep ()
{
Paper_column *musical_column
- = dynamic_cast<Paper_column *> (unsmob_grob (get_property ("currentMusicalColumn")));
+ = unsmob<Paper_column> (get_property ("currentMusicalColumn"));
if (!spacing_)
start_spanner ();
musical_column->set_object ("spacing", spacing_->self_scm ());
- unsmob_grob (get_property ("currentCommandColumn"))
+ unsmob<Grob> (get_property ("currentCommandColumn"))
->set_object ("spacing", spacing_->self_scm ());
SCM proportional = get_property ("proportionalNotationDuration");
- if (unsmob_moment (proportional))
+ if (unsmob<Moment> (proportional))
{
musical_column->set_property ("shortest-playing-duration", proportional);
musical_column->set_property ("shortest-starter-duration", proportional);
stopped_durations_.push_back (playing_durations_.get ());
}
-ADD_ACKNOWLEDGER (Spacing_engraver, staff_spacing);
-ADD_ACKNOWLEDGER (Spacing_engraver, note_spacing);
-ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob);
+
+void
+Spacing_engraver::boot ()
+{
+ ADD_LISTENER (Spacing_engraver, spacing_section);
+ ADD_ACKNOWLEDGER (Spacing_engraver, staff_spacing);
+ ADD_ACKNOWLEDGER (Spacing_engraver, note_spacing);
+ ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head);
+ ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob);
+}
ADD_TRANSLATOR (Spacing_engraver,
/* doc */