]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-column-engraver.cc
Doc-es: various updates.
[lilypond.git] / lily / paper-column-engraver.cc
index 68c4882904f3cd78c09a63351adfa91e4114dce3..6dd29300130878be798fc0bfb9670035874d02a7 100644 (file)
@@ -18,7 +18,6 @@
 */
 
 #include "paper-column-engraver.hh"
-#include "system.hh"
 #include "international.hh"
 #include "accidental-placement.hh"
 #include "accidental-interface.hh"
@@ -35,7 +34,8 @@
 
 #include "translator.icc"
 
-Paper_column_engraver::Paper_column_engraver ()
+Paper_column_engraver::Paper_column_engraver (Context *c)
+  : Engraver (c)
 {
   last_moment_.main_part_ = Rational (-1, 1);
   command_column_ = 0;
@@ -98,7 +98,7 @@ Paper_column_engraver::make_columns ()
 void
 Paper_column_engraver::initialize ()
 {
-  system_ = dynamic_cast<System *> (Grob::unsmob (get_property ("rootSystem")));
+  system_ = unsmob<System> (get_property ("rootSystem"));
   make_columns ();
 
   system_->set_bound (LEFT, command_column_);
@@ -143,14 +143,12 @@ Paper_column_engraver::set_columns (Paper_column *new_command,
   system_->add_column (musical_column_);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, break);
 void
 Paper_column_engraver::listen_break (Stream_event *ev)
 {
   break_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, label);
 void
 Paper_column_engraver::listen_label (Stream_event *ev)
 {
@@ -214,7 +212,7 @@ Paper_column_engraver::process_music ()
   if (start_of_measure)
     {
       Moment mlen = Moment (measure_length (context ()));
-      Grob *column = Grob::unsmob (get_property ("currentCommandColumn"));
+      Grob *column = unsmob<Grob> (get_property ("currentCommandColumn"));
       if (column)
         column->set_property ("measure-length", mlen.smobbed_copy ());
       else
@@ -232,6 +230,18 @@ Paper_column_engraver::stop_translation_timestep ()
   command_column_->set_property ("when", m);
   musical_column_->set_property ("when", m);
 
+  SCM mpos = get_property ("measurePosition");
+  SCM barnum = get_property ("internalBarNumber");
+  if (unsmob<Moment> (mpos)
+      && scm_is_integer (barnum))
+    {
+      SCM where = scm_cons (barnum,
+                            mpos);
+
+      command_column_->set_property ("rhythmic-location", where);
+      musical_column_->set_property ("rhythmic-location", where);
+    }
+
   for (vsize i = 0; i < items_.size (); i++)
     {
       Item *elem = items_[i];
@@ -239,13 +249,13 @@ Paper_column_engraver::stop_translation_timestep ()
 
       if (!elem->get_parent (X_AXIS))
         elem->set_parent (col, X_AXIS);
-      if (!Grob::is_smob (elem->get_object ("axis-group-parent-X")))
+      if (!unsmob<Grob> (elem->get_object ("axis-group-parent-X")))
         elem->set_object ("axis-group-parent-X", col->self_scm ());
 
-      if (Accidental_placement::has_interface (elem)
-          || Arpeggio::has_interface (elem))
+      if (has_interface<Accidental_placement> (elem)
+          || has_interface<Arpeggio> (elem))
         Separation_item::add_conditional_item (col, elem);
-      else if (!Accidental_interface::has_interface (elem))
+      else if (!has_interface<Accidental_interface> (elem))
         Separation_item::add_item (col, elem);
     }
   items_.clear ();
@@ -259,7 +269,8 @@ Paper_column_engraver::stop_translation_timestep ()
       for (vsize i = 0; i < break_events_.size (); i++)
         {
           SCM perm = break_events_[i]->get_property ("break-permission");
-          if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow"))
+          if (scm_is_eq (perm, ly_symbol2scm ("force"))
+              || scm_is_eq (perm, ly_symbol2scm ("allow")))
             warning (_ ("forced break was overridden by some other event, "
                         "should you be using bar checks?"));
         }
@@ -276,18 +287,6 @@ Paper_column_engraver::stop_translation_timestep ()
 
   first_ = false;
   label_events_.clear ();
-
-  SCM mpos = get_property ("measurePosition");
-  SCM barnum = get_property ("internalBarNumber");
-  if (Moment::is_smob (mpos)
-      && scm_is_integer (barnum))
-    {
-      SCM where = scm_cons (barnum,
-                            mpos);
-
-      command_column_->set_property ("rhythmic-location", where);
-      musical_column_->set_property ("rhythmic-location", where);
-    }
 }
 
 void
@@ -301,9 +300,16 @@ Paper_column_engraver::start_translation_timestep ()
     }
 }
 
-ADD_ACKNOWLEDGER (Paper_column_engraver, item);
-ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
-ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+
+void
+Paper_column_engraver::boot ()
+{
+  ADD_LISTENER (Paper_column_engraver, break);
+  ADD_LISTENER (Paper_column_engraver, label);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, item);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+}
 
 ADD_TRANSLATOR (Paper_column_engraver,
                 /* doc */