2 time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator
4 source file of the GNU LilyPond music typesetter
6 (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>,
7 Erik Sandberg <mandolaerik@gmail.com>
10 #include "time-scaled-music-iterator.hh"
14 #include "international.hh"
17 Time_scaled_music_iterator::Time_scaled_music_iterator ()
22 Time_scaled_music_iterator::get_music_list () const
24 Music *mus = get_music ();
25 Input *origin = mus->origin ();
26 Music *child = unsmob_music (mus->get_property ("element"));
28 /* Create tuplet start/stop span events before/after the music */
29 SCM tuplet_symbol = ly_symbol2scm ("TupletEvent");
30 SCM start_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (START));
31 Music *start = unsmob_music (start_event);
32 start->set_spot (*origin);
33 start->set_property ("numerator", mus->get_property ("numerator"));
34 start->set_property ("denominator", mus->get_property ("denominator"));
35 start_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (start_event));
36 unsmob_music (start_event)->set_spot (*origin);
38 SCM stop_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP));
39 unsmob_music (stop_event)->set_spot (*origin);
40 stop_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (stop_event));
41 unsmob_music (stop_event)->set_spot (*origin);
43 return scm_list_3 (start_event, child->self_scm (), stop_event);
46 IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);