X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftime-scaled-music-iterator.cc;h=7406d884697f6508e9e09a231dbfea7b50917e35;hb=5d1d077e3d4f49fd822d3c04e785eee4be06a7fc;hp=6230181c884b04482408c15f11fc4285361dfec4;hpb=9661ba1fb275f3e14f8a69f2cee2f02a2f893e48;p=lilypond.git diff --git a/lily/time-scaled-music-iterator.cc b/lily/time-scaled-music-iterator.cc index 6230181c88..7406d88469 100644 --- a/lily/time-scaled-music-iterator.cc +++ b/lily/time-scaled-music-iterator.cc @@ -1,29 +1,46 @@ -/* +/* time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator - + source file of the GNU LilyPond music typesetter - - (c) 1998--2000 Han-Wen Nienhuys - - */ + + (c) 1998--2006 Han-Wen Nienhuys , + Erik Sandberg +*/ #include "time-scaled-music-iterator.hh" -#include "time-scaled-music.hh" -#include "musical-request.hh" -#include "translator-group.hh" -#include "command-request.hh" -void -Time_scaled_music_iterator::do_process_and_next (Moment m) +#include "context.hh" +#include "input.hh" +#include "international.hh" +#include "music.hh" + +Time_scaled_music_iterator::Time_scaled_music_iterator () +{ +} + +SCM +Time_scaled_music_iterator::get_music_list () const { - if (!m) - { - Music_iterator *yeah = try_music (music_l_); - if (yeah) - set_translator (yeah->report_to_l ()); - else - music_l_->origin ()->warning ( _("no one to print a tuplet start bracket")); - } - - Music_wrapper_iterator::do_process_and_next (m); + 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);