]> git.donarmstrong.com Git - lilypond.git/blob - lily/time-scaled-music-iterator.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / time-scaled-music-iterator.cc
1 /*
2   time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>,
7                  Erik Sandberg <mandolaerik@gmail.com>
8 */
9
10 #include "time-scaled-music-iterator.hh"
11
12 #include "context.hh"
13 #include "input.hh"
14 #include "international.hh"
15 #include "music.hh"
16
17 Time_scaled_music_iterator::Time_scaled_music_iterator ()
18 {
19 }
20
21 SCM
22 Time_scaled_music_iterator::get_music_list () const
23 {
24   Music *mus = get_music ();
25   Input *origin = mus->origin ();
26   Music *child = unsmob_music (mus->get_property ("element"));
27
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);
37
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);
42
43   return scm_list_3 (start_event, child->self_scm (), stop_event);
44 }
45
46 IMPLEMENT_CTOR_CALLBACK (Time_scaled_music_iterator);