]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/extender-engraver.cc
Issue 4870: [midi2ly] Delay import of 'midi' module.
[lilypond.git] / lily / extender-engraver.cc
index 49fcbcaf3f598d6a55895c1238cb46685dcacd75..2d96c400b637df2b13104ad352f3fc09bbcb47c2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2011 Glen Prideaux <glenprideaux@iname.com>,
+  Copyright (C) 1999--2015 Glen Prideaux <glenprideaux@iname.com>,
   Han-Wen Nienhuys <hanwen@xs4all.nl>,
   Jan Nieuwenhuizen <janneke@gnu.org>
 
@@ -60,21 +60,18 @@ Extender_engraver::Extender_engraver ()
   ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Extender_engraver, extender);
 void
 Extender_engraver::listen_extender (Stream_event *ev)
 {
   ASSIGN_EVENT_ONCE (ev_, ev);
 }
 
-
 /*
   A CompletizeExtenderEvent is sent at the end of each lyrics block
   to ensure any pending extender can be correctly terminated if the lyrics
   end before the associated voice (this prevents the right bound being extended
   to the next note-column if no lyric follows the extender)
 */
-IMPLEMENT_TRANSLATOR_LISTENER (Extender_engraver, completize_extender);
 void
 Extender_engraver::listen_completize_extender (Stream_event * /* ev */)
 {
@@ -113,36 +110,36 @@ Extender_engraver::stop_translation_timestep ()
   if (extender_ || pending_extender_)
     {
       Context *voice = get_voice_to_lyrics (context ());
-      Grob *h = voice ? get_current_note_head (voice, to_boolean (get_property ("includeGraceNotes"))) : 0;
+      Grob *h = voice ? get_current_note_head (voice) : 0;
 
       if (h)
-       {
-         if (extender_)
-           {
-             Pointer_group_interface::add_grob (extender_,
-                                                ly_symbol2scm ("heads"), h);
-           }
-
-         if (pending_extender_)
-           {
-             Pointer_group_interface::add_grob (pending_extender_,
-                                                ly_symbol2scm ("heads"), h);
-           }
-       }
+        {
+          if (extender_)
+            {
+              Pointer_group_interface::add_grob (extender_,
+                                                 ly_symbol2scm ("heads"), h);
+            }
+
+          if (pending_extender_)
+            {
+              Pointer_group_interface::add_grob (pending_extender_,
+                                                 ly_symbol2scm ("heads"), h);
+            }
+        }
       else
-       {
-         if (pending_extender_
-             && !get_property ("extendersOverRests"))
-           {
-             completize_extender (pending_extender_);
-             pending_extender_ = 0;
-           }
-       }
+        {
+          if (pending_extender_
+              && !get_property ("extendersOverRests"))
+            {
+              completize_extender (pending_extender_);
+              pending_extender_ = 0;
+            }
+        }
       if (extender_)
-       {
-         pending_extender_ = extender_;
-         extender_ = 0;
-       }
+        {
+          pending_extender_ = extender_;
+          extender_ = 0;
+        }
     }
 
   ev_ = 0;
@@ -155,7 +152,7 @@ completize_extender (Spanner *sp)
     {
       extract_item_set (sp, "heads", heads);
       if (heads.size ())
-       sp->set_bound (RIGHT, heads.back ());
+        sp->set_bound (RIGHT, heads.back ());
     }
 }
 
@@ -167,7 +164,7 @@ Extender_engraver::finalize ()
       completize_extender (extender_);
 
       if (!extender_->get_bound (RIGHT))
-       extender_->warning (_ ("unterminated extender"));
+        extender_->warning (_ ("unterminated extender"));
       extender_ = 0;
     }
 
@@ -176,23 +173,29 @@ Extender_engraver::finalize ()
       completize_extender (pending_extender_);
 
       if (!pending_extender_->get_bound (RIGHT))
-       pending_extender_->warning (_ ("unterminated extender"));
+        pending_extender_->warning (_ ("unterminated extender"));
       pending_extender_ = 0;
     }
 }
 
-ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
+void
+Extender_engraver::boot ()
+{
+  ADD_LISTENER (Extender_engraver, extender);
+  ADD_LISTENER (Extender_engraver, completize_extender);
+  ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
+}
+
 ADD_TRANSLATOR (Extender_engraver,
-               /* doc */
-               "Create lyric extenders.",
+                /* doc */
+                "Create lyric extenders.",
 
-               /* create */
-               "LyricExtender ",
+                /* create */
+                "LyricExtender ",
 
-               /* read */
-               "extendersOverRests "
-               "includeGraceNotes ",
+                /* read */
+                "extendersOverRests ",
 
-               /* write */
-               ""
-               );
+                /* write */
+                ""
+               );