]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/mark-engraver.cc
Imported Upstream version 2.19.45
[lilypond.git] / lily / mark-engraver.cc
index 25b19bd18a607b2ae34e50e9c7e677242dbcb922..a849ec11ce0dddd77f57c586efc0db2c8a68a3f7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   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
@@ -54,8 +54,8 @@ protected:
   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 ()
@@ -111,7 +111,6 @@ Mark_engraver::create_items (Stream_event *ev)
   text_ = make_item ("RehearsalMark", ev->self_scm ());
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Mark_engraver, mark);
 void
 Mark_engraver::listen_mark (Stream_event *ev)
 {
@@ -140,17 +139,11 @@ Mark_engraver::process_music ()
           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"));
@@ -163,7 +156,13 @@ Mark_engraver::process_music ()
     }
 }
 
-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 */