]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tuplet-engraver.cc
Run `make grand-replace'.
[lilypond.git] / lily / tuplet-engraver.cc
index 888f5ccb81a133c148966d84d39689f59e016c4f..772b8db124e855b6d6a951d9a69a4ed02c5295c6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1998--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include "beam.hh"
@@ -78,7 +78,7 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
        {
          /*
            discard duplicates.
-          */
+         */
          if (new_tuplets_[i].stop_moment_ == d.stop_moment_)
            return;
        }
@@ -87,13 +87,13 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
     }
   else if (dir == STOP)
     {
-    if (tuplets_.size ())
-    {
-      stopped_tuplets_.push_back (tuplets_.back ());
-      tuplets_.pop_back ();
-    }
-    else
-      ev->origin ()->warning (_f ("No tuplet to end"));
+      if (tuplets_.size ())
+       {
+         stopped_tuplets_.push_back (tuplets_.back ());
+         tuplets_.pop_back ();
+       }
+      else if (!to_boolean (get_property ("skipTypesetting"))) 
+       ev->origin ()->warning (_ ("No tuplet to end"));
     }
   else 
     ev->origin ()->programming_error ("direction tuplet-span-event_ invalid.");
@@ -133,12 +133,16 @@ Tuplet_engraver::process_music ()
            }
          else if (!bracket->get_bound (RIGHT))
            {
-             bracket->set_bound (RIGHT,
-                                 bracket->get_bound (LEFT));
-             number->set_bound (RIGHT,
-                                stopped_tuplets_[i].bracket_->get_bound (LEFT));
-           }
-         
+             if (bracket->get_bound (LEFT))
+               {
+                 bracket->set_bound (RIGHT,
+                                     bracket->get_bound (LEFT));
+                 number->set_bound (RIGHT,
+                                    stopped_tuplets_[i].bracket_->get_bound (LEFT));
+               }
+             else
+               programming_error ("stopped tuplet bracket has left nor right bound.");
+           }     
          // todo: scrap last_tuplets_, use stopped_tuplets_ only.
          // clear stopped_tuplets_ at start_translation_timestep
          last_tuplets_.push_back (bracket);
@@ -196,6 +200,10 @@ void
 Tuplet_engraver::start_translation_timestep ()
 {
   last_tuplets_.clear ();
+  /*
+    May seem superfluous, but necessary for skipTypesetting.
+   */
+  new_tuplets_.clear ();       
 }
 
 void
@@ -215,14 +223,17 @@ Tuplet_engraver::Tuplet_engraver ()
 
 ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
 ADD_TRANSLATOR (Tuplet_engraver,
-
                /* doc */
                "Catch tuplet events and generate appropriate bracket.",
                
                /* create */
                "TupletBracket "
                "TupletNumber ",
+
                /* read */
                "tupletFullLength "
                "tupletFullLengthNote ",
-               /* write */ "");
+
+               /* write */
+               ""
+               );