2 music-list.cc -- implement Music_list, Chord, Voice
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
13 #include "music-list.hh"
14 #include "musical-pitch.hh"
16 #include "musical-request.hh"
18 Music_list::Music_list (Music_list const&s)
21 multi_level_i_ = s.multi_level_i_;
22 for (iter (s.music_p_list_.top(), i); i.ok (); i++)
26 IMPLEMENT_IS_TYPE_B1(Music_list, Music);
27 IMPLEMENT_IS_TYPE_B1(Voice,Music_list);
28 IMPLEMENT_IS_TYPE_B1(Chord,Music_list);
31 Chord::time_int() const
34 for (iter (music_p_list_.top(), i); i.ok (); i++)
35 m.unite (i->time_int());
41 Chord::translate (Moment m)
43 for (iter (music_p_list_.top(), i); i.ok (); i++)
58 Voice::time_int() const
61 for (iter (music_p_list_.top(), i); i.ok (); i++)
63 MInterval interval = i->time_int();
68 if (!interval.empty_b())
69 last += interval.length();
71 return offset_mom_ + MInterval (0,last);
75 Voice::to_relative_octave (Musical_pitch p)
77 return do_relative_octave (p, false);
81 Chord::to_relative_octave (Musical_pitch p)
83 return do_relative_octave (p, true);
87 Voice::translate (Moment dt)
93 Music_list::Music_list()
99 Music_list::add (Music*m_p)
104 m_p->parent_music_l_ = this;
105 music_p_list_.bottom().add (m_p);
109 Music_list::transpose (Musical_pitch rq)
111 for (iter (music_p_list_.top(),i); i.ok (); i++)
116 Music_list::do_print() const
119 for (iter (music_p_list_.top(),i); i.ok (); i++)
124 IMPLEMENT_IS_TYPE_B1(Request_chord, Chord);
127 Request_chord::Request_chord()
134 Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
137 Musical_pitch retval;
139 for (iter (music_p_list_.top(),i); i.ok (); i++)
141 last = i->to_relative_octave (last);
151 Request_chord::to_relative_octave (Musical_pitch last)
153 for (iter (music_p_list_.top(),i); i.ok (); i++)
155 Musical_req *m =((Request*)i.ptr ())->musical ();
156 if (m && m->melodic ())
158 Musical_pitch &pit = m->melodic()->pitch_;
159 pit.to_relative_octave (last);