/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
+ Copyright (C) 1998--2015 Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
void stop_translation_timestep ();
virtual void finalize ();
- DECLARE_TRANSLATOR_LISTENER (mark);
- DECLARE_ACKNOWLEDGER (break_alignment);
+ void listen_mark (Stream_event *);
+ void acknowledge_break_alignment (Grob_info);
};
-Mark_engraver::Mark_engraver ()
+Mark_engraver::Mark_engraver (Context *c)
+ : Engraver (c)
{
text_ = 0;
final_text_ = 0;
text_ = make_item ("RehearsalMark", ev->self_scm ());
}
-IMPLEMENT_TRANSLATOR_LISTENER (Mark_engraver, mark);
void
Mark_engraver::listen_mark (Stream_event *ev)
{
if (!scm_is_number (m))
m = get_property ("rehearsalMark");
- if (scm_integer_p (m) == SCM_BOOL_T
- && scm_exact_p (m) == SCM_BOOL_T)
+ if (scm_is_number (m))
{
- int mark_count = scm_to_int (m);
- mark_count++;
- context ()->set_property ("rehearsalMark",
- scm_from_int (mark_count));
+ context ()->set_property ("rehearsalMark", scm_oneplus (m));
+ m = scm_call_2 (proc, m, context ()->self_scm ());
}
-
- if (scm_is_number (m))
- m = scm_call_2 (proc, m, context ()->self_scm ());
else
- /* FIXME: constant error message. */
- warning (_ ("rehearsalMark must have integer value"));
+ /* Score.rehearsalMark is initialized to #1 so we
+ never should see this case without user error */
+ mark_ev_->origin ()->warning
+ (_ ("rehearsalMark must have integer value"));
}
if (Text_interface::is_markup (m))
text_->set_property ("text", m);
else
- warning (_ ("mark label must be a markup object"));
+ mark_ev_->origin ()->warning (_ ("mark label must be a markup object"));
}
}
-ADD_ACKNOWLEDGER (Mark_engraver, break_alignment);
+
+void
+Mark_engraver::boot ()
+{
+ ADD_LISTENER (Mark_engraver, mark);
+ ADD_ACKNOWLEDGER (Mark_engraver, break_alignment);
+}
ADD_TRANSLATOR (Mark_engraver,
/* doc */