]> git.donarmstrong.com Git - lilypond.git/blob - lily/music-list.cc
release: 0.0.77.jcn1
[lilypond.git] / lily / music-list.cc
1 /*
2   music-list.cc -- implement Music_list, Chord, Voice
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #include "music.hh"
11 #include "debug.hh"
12 #include "music-list.hh"
13
14 Music_list::Music_list(Music_list const&s)
15 {
16     multi_level_i_ = s.multi_level_i_;   
17     for (iter(s.music_p_list_.top(), i); i.ok(); i++)
18         add(i->clone());
19 }
20
21
22
23
24 IMPLEMENT_IS_TYPE_B1(Music_list, Music);
25 IMPLEMENT_IS_TYPE_B1(Voice,Music_list);
26 IMPLEMENT_IS_TYPE_B1(Chord,Music_list);
27
28 MInterval
29 Chord::time_int()const
30 {
31     MInterval m;
32     for (iter(music_p_list_.top(), i); i.ok(); i++)
33         m.unite(i->time_int());
34     return m;
35 }
36 void
37 Chord::translate(Moment m)
38 {
39     for (iter(music_p_list_.top(), i); i.ok(); i++)
40         i->translate(m); 
41 }
42
43 Chord::Chord()
44 {
45
46 }
47
48 Voice::Voice()
49 {
50     offset_mom_ =0;
51 }
52
53 MInterval
54 Voice::time_int() const
55 {
56     Moment last=0;
57     for (iter(music_p_list_.top(), i); i.ok(); i++)
58         last += i->time_int().length();
59     return  offset_mom_ + MInterval(0,last);
60 }
61
62 void
63 Voice::translate(Moment dt)
64 {
65     offset_mom_ += dt;
66 }
67
68
69 Music_list::Music_list()
70 {
71     multi_level_i_ = 0;
72 }
73
74 void
75 Music_list::add(Music*m_p)
76 {
77     if (!m_p)
78         return;
79
80     m_p->parent_music_l_ = this;
81     music_p_list_.bottom().add(m_p);
82 }
83
84 void
85 Music_list::transpose(Melodic_req const*rq)
86 {
87     for (iter(music_p_list_.top(),i); i.ok(); i++)
88         i->transpose(rq);    
89 }
90
91 void
92 Music_list::do_print()const
93 {
94 #ifndef NPRINT
95     for (iter(music_p_list_.top(),i); i.ok(); i++)
96         i->print();
97 #endif 
98 }
99
100 IMPLEMENT_IS_TYPE_B1(Request_chord, Chord);
101
102
103 Request_chord::Request_chord()
104 {
105     multi_level_i_ =0;
106 }