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 ()
19 child_list_ = SCM_EOL;
23 Time_scaled_music_iterator::construct_children ()
25 Music *mus = get_music ();
26 Input *origin = mus->origin ();
27 Music *child = unsmob_music (mus->get_property ("element"));
29 /* Create tuplet start/stop span events before/after the music */
30 SCM tuplet_symbol = ly_symbol2scm ("TupletEvent");
31 SCM start_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (START));
32 Music *start = unsmob_music (start_event);
33 start->set_spot (*origin);
34 start->set_property ("numerator", mus->get_property ("numerator"));
35 start->set_property ("denominator", mus->get_property ("denominator"));
36 start_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (start_event));
37 unsmob_music (start_event)->set_spot (*origin);
39 SCM stop_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP));
40 unsmob_music (stop_event)->set_spot (*origin);
41 stop_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (stop_event));
42 unsmob_music (stop_event)->set_spot (*origin);
44 child_list_ = scm_list_3 (start_event, child->self_scm (), stop_event);
46 Sequential_iterator::construct_children ();
50 Time_scaled_music_iterator::get_music_list () const
56 Time_scaled_music_iterator::derived_mark () const
58 scm_gc_mark (child_list_);
59 Sequential_iterator::derived_mark ();
62 IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);