]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/volta-engraver.cc
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / lily / volta-engraver.cc
index 7e7e65cb04d2fff7d3e15d70dc6f7884dbabe387..8d6a16f1ee6f4d8d3f8f953ef4119103db988b05 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--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
@@ -43,7 +43,7 @@ public:
   TRANSLATOR_DECLARATIONS (Volta_engraver);
 protected:
 
-  DECLARE_ACKNOWLEDGER (bar_line);
+  void acknowledge_bar_line (Grob_info);
 
   virtual void derived_mark () const;
   void stop_translation_timestep ();
@@ -62,7 +62,8 @@ Volta_engraver::derived_mark () const
   scm_gc_mark (start_string_);
 }
 
-Volta_engraver::Volta_engraver ()
+Volta_engraver::Volta_engraver (Context *c)
+  : Engraver (c)
 {
   start_string_ = SCM_EOL;
   volta_bracket_ = 0;
@@ -82,10 +83,10 @@ Volta_engraver::process_music ()
       SCM c = scm_car (cs);
 
       if (scm_is_pair (c)
-          && scm_car (c) == ly_symbol2scm ("volta")
+          && scm_is_eq (scm_car (c), ly_symbol2scm ("volta"))
           && scm_is_pair (scm_cdr (c)))
         {
-          if (scm_cadr (c) == SCM_BOOL_F)
+          if (scm_is_false (scm_cadr (c)))
             end = true;
           else
             start_string_ = scm_cadr (c);
@@ -99,8 +100,8 @@ Volta_engraver::process_music ()
       SCM l (get_property ("voltaSpannerDuration"));
       Moment now = now_mom ();
 
-      bool early_stop = Moment::is_smob (l)
-                        && *Moment::unsmob (l) <= now - started_mom_;
+      bool early_stop = unsmob<Moment> (l)
+                        && *unsmob<Moment> (l) <= now - started_mom_;
 
       end = end || early_stop;
     }
@@ -161,7 +162,7 @@ Volta_engraver::acknowledge_bar_line (Grob_info i)
 void
 Volta_engraver::stop_translation_timestep ()
 {
-  Grob *cc = Grob::unsmob (get_property ("currentCommandColumn"));
+  Grob *cc = unsmob<Grob> (get_property ("currentCommandColumn"));
   Item *ci = dynamic_cast<Item *> (cc);
 
   if (end_volta_bracket_ && !end_volta_bracket_->get_bound (RIGHT))
@@ -173,7 +174,7 @@ Volta_engraver::stop_translation_timestep ()
   if (end_volta_bracket_ && !volta_bracket_)
     {
       for (SCM s = get_property ("stavesFound"); scm_is_pair (s); s = scm_cdr (s))
-        Side_position_interface::add_support (volta_spanner_, Grob::unsmob (scm_car (s)));
+        Side_position_interface::add_support (volta_spanner_, unsmob<Grob> (scm_car (s)));
       volta_spanner_ = 0;
     }
 
@@ -189,7 +190,12 @@ Volta_engraver::stop_translation_timestep ()
 /*
   TODO: should attach volta to paper-column if no bar is found.
 */
-ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
+void
+Volta_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
+}
+
 ADD_TRANSLATOR (Volta_engraver,
                 /* doc */
                 "Make volta brackets.",