/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2012 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
#include "engraver.hh"
#include "axis-group-interface.hh"
-#include "bar-line.hh"
#include "context.hh"
#include "grob-array.hh"
#include "international.hh"
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 ()
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"));
}
}
-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 */