#include "misc.hh"
#include "percent-repeat-iterator.hh"
#include "repeated-music.hh"
+#include "score-context.hh"
#include "side-position-interface.hh"
#include "spanner.hh"
-#include "stream-event.hh"
#include "warn.hh"
#include "translator.icc"
TRANSLATOR_DECLARATIONS (Percent_repeat_engraver);
protected:
- Stream_event *percent_event_;
+ Music *percent_event_;
/// moment (global time) where percent started.
Moment stop_mom_;
protected:
virtual void finalize ();
- DECLARE_TRANSLATOR_LISTENER (percent);
+ virtual bool try_music (Music *);
void stop_translation_timestep ();
void start_translation_timestep ();
percent_event_ = 0;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Percent_repeat_engraver, percent);
-void
-Percent_repeat_engraver::listen_percent (Stream_event *ev)
+bool
+Percent_repeat_engraver::try_music (Music *m)
{
- if (!percent_event_)
+ if (m->is_mus_type ("percent-event")
+ && !percent_event_)
{
- Moment body_length = get_event_length (ev);
+ Moment body_length = m->get_length ();
Moment meas_len (robust_scm2moment (get_property ("measureLength"),
Moment (1)));
get_global_context ()->add_moment_to_process (start_mom_);
}
else
- return;
+ return false;
+
+ percent_event_ = m;
- percent_event_ = ev;
+ return true;
}
+
+ return false;
}
void