X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftime-scaled-music-iterator.cc;h=7406d884697f6508e9e09a231dbfea7b50917e35;hb=5d1d077e3d4f49fd822d3c04e785eee4be06a7fc;hp=7bd174bc02f27903ed00bd658558777d6ef494b1;hpb=7e72a1e50e94a7f9738d62599de79fe7745f600c;p=lilypond.git diff --git a/lily/time-scaled-music-iterator.cc b/lily/time-scaled-music-iterator.cc index 7bd174bc02..7406d88469 100644 --- a/lily/time-scaled-music-iterator.cc +++ b/lily/time-scaled-music-iterator.cc @@ -1,31 +1,46 @@ -/* +/* time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator - + source file of the GNU LilyPond music typesetter - - (c) 1998--2004 Han-Wen Nienhuys - - */ + + (c) 1998--2006 Han-Wen Nienhuys , + Erik Sandberg +*/ #include "time-scaled-music-iterator.hh" -#include "time-scaled-music.hh" -#include "event.hh" -#include "translator-group.hh" +#include "context.hh" +#include "input.hh" +#include "international.hh" +#include "music.hh" -void -Time_scaled_music_iterator::process (Moment m) +Time_scaled_music_iterator::Time_scaled_music_iterator () { - if (!m.to_bool ()) - { - Music_iterator *yeah = try_music (get_music ()); - if (yeah) - set_translator (yeah->get_outlet ()); - else - get_music ()->origin ()->warning (_ ("no one to print a tuplet start bracket")); - } - - Music_wrapper_iterator::process (m); } - + +SCM +Time_scaled_music_iterator::get_music_list () const +{ + Music *mus = get_music (); + Input *origin = mus->origin (); + Music *child = unsmob_music (mus->get_property ("element")); + + /* Create tuplet start/stop span events before/after the music */ + SCM tuplet_symbol = ly_symbol2scm ("TupletEvent"); + SCM start_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (START)); + Music *start = unsmob_music (start_event); + start->set_spot (*origin); + start->set_property ("numerator", mus->get_property ("numerator")); + start->set_property ("denominator", mus->get_property ("denominator")); + start_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (start_event)); + unsmob_music (start_event)->set_spot (*origin); + + SCM stop_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP)); + unsmob_music (stop_event)->set_spot (*origin); + stop_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (stop_event)); + unsmob_music (stop_event)->set_spot (*origin); + + return scm_list_3 (start_event, child->self_scm (), stop_event); +} + IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);