]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tuplet-engraver.cc
Merge branch 'jneeman' of git+ssh://jneem@git.sv.gnu.org/srv/git/lilypond into jneeman
[lilypond.git] / lily / tuplet-engraver.cc
index 971d1e703a03e5df5fd5dc7feb710d0dd6a6acef..441fdd7610783a45c8644aa662bf96fca5cb72aa 100644 (file)
@@ -6,12 +6,15 @@
   (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
-#include "tuplet-bracket.hh"
-#include "note-column.hh"
 #include "beam.hh"
 #include "engraver.hh"
+#include "international.hh"
+#include "note-column.hh"
 #include "spanner.hh"
 #include "stream-event.hh"
+#include "tuplet-bracket.hh"
+#include "warn.hh"
+#include "item.hh"
 
 #include "translator.icc"
 
@@ -41,8 +44,10 @@ public:
 
 protected:
   vector<Tuplet_description> tuplets_;
+  vector<Tuplet_description> new_tuplets_;
   vector<Tuplet_description> stopped_tuplets_;
   vector<Spanner*> last_tuplets_;
+  
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_TRANSLATOR_LISTENER (tuplet_span);
   virtual void finalize ();
@@ -59,13 +64,15 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
     {
       Tuplet_description d;
       d.event_ = ev;
-      tuplets_.push_back (d);
+      new_tuplets_.push_back (d);
     }
-  if (dir == STOP && tuplets_.size ())
+  else if (dir == STOP && tuplets_.size ())
     {
       stopped_tuplets_.push_back (tuplets_.back ());
       tuplets_.pop_back ();
     }
+  else 
+    programming_error (_ ("invalid direction of tuplet-span-event"));
 }
 
 void
@@ -100,6 +107,8 @@ Tuplet_engraver::process_music ()
     }
   stopped_tuplets_.clear ();
 
+  concat (tuplets_, new_tuplets_);
+  new_tuplets_.clear ();
   for (vsize j = tuplets_.size (); j > 0; j--)
     {
       /* i goes from size-1 downto 0, inclusively */
@@ -165,7 +174,10 @@ Tuplet_engraver::Tuplet_engraver ()
 ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
 ADD_TRANSLATOR (Tuplet_engraver,
                /* doc */ "Catch TupletSpannerEvent and generate appropriate bracket  ",
-               /* create */ "TupletBracket TupletNumber ",
-               /* accept */ "tuplet-span-event",
-               /* read */ "tupletFullLength ",
+               /* create */
+               "TupletBracket "
+               "TupletNumber ",
+               /* read */
+               "tupletFullLength "
+               "tupletFullLengthNote ",
                /* write */ "");