X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftuplet-engraver.cc;h=66930ce6bd892abff022f6ebfd1462b52c347e55;hb=56aefa92ec9b3ab9ab1076a5338413ef519c54d9;hp=a160d0e4440ec2dc44e216787965c460e4f39192;hpb=c4c0ba811cd526f047de3f4d3c77abcc32a3e076;p=lilypond.git diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index a160d0e444..66930ce6bd 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -6,12 +6,15 @@ (c) 1998--2006 Han-Wen Nienhuys */ -#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 tuplets_; + vector new_tuplets_; vector stopped_tuplets_; vector last_tuplets_; + DECLARE_ACKNOWLEDGER (note_column); DECLARE_TRANSLATOR_LISTENER (tuplet_span); virtual void finalize (); @@ -59,13 +64,16 @@ 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) + else if (dir == STOP && tuplets_.size ()) { stopped_tuplets_.push_back (tuplets_.back ()); tuplets_.pop_back (); } + else + programming_error (_f ("direction of %s invalid: %d", + "tuplet-span-event", int (dir))); } void @@ -100,6 +108,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 +175,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 */ "");