/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--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
protected:
void start_translation_timestep ();
void process_music ();
- DECLARE_TRANSLATOR_LISTENER (rest);
+ void listen_rest (Stream_event *);
public:
TRANSLATOR_DECLARATIONS (Rest_engraver);
};
/*
Should merge with Note_head_engraver
*/
-Rest_engraver::Rest_engraver ()
+Rest_engraver::Rest_engraver (Context *c)
+ : Engraver (c)
{
rest_event_ = 0;
rest_ = 0;
if (rest_event_ && !rest_)
{
rest_ = make_item ("Rest", rest_event_->self_scm ());
- Pitch *p = unsmob_pitch (rest_event_->get_property ("pitch"));
+ Pitch *p = unsmob<Pitch> (rest_event_->get_property ("pitch"));
if (p)
- {
- int pos = p->steps ();
- SCM c0 = get_property ("middleCPosition");
- if (scm_is_number (c0))
- pos += scm_to_int (c0);
-
- rest_->set_property ("staff-position", scm_from_int (pos));
- }
+ {
+ int pos = p->steps ();
+ SCM c0 = get_property ("middleCPosition");
+ if (scm_is_number (c0))
+ pos += scm_to_int (c0);
+
+ rest_->set_property ("staff-position", scm_from_int (pos));
+ }
}
}
-IMPLEMENT_TRANSLATOR_LISTENER (Rest_engraver, rest);
void
Rest_engraver::listen_rest (Stream_event *ev)
{
ASSIGN_EVENT_ONCE (rest_event_, ev);
}
+void
+Rest_engraver::boot ()
+{
+ ADD_LISTENER (Rest_engraver, rest);
+}
+
ADD_TRANSLATOR (Rest_engraver,
- /* doc */
- "Engrave rests.",
+ /* doc */
+ "Engrave rests.",
- /* create */
- "Rest ",
+ /* create */
+ "Rest ",
- /* read */
- "middleCPosition ",
+ /* read */
+ "middleCPosition ",
- /* write */
- ""
- );
+ /* write */
+ ""
+ );