]> git.donarmstrong.com Git - lilypond.git/blob - lily/command-request.cc
release: 0.0.52
[lilypond.git] / lily / command-request.cc
1 /*
2   commandrequest.cc -- implement Nonmusical reqs
3
4   source file of the LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "command-request.hh"
10 #include "debug.hh"
11 #include "musical-request.hh"
12
13
14 IMPLEMENT_STATIC_NAME(Cadenza_req);
15
16 void
17 Cadenza_req::do_print()const
18 {
19     mtor << on_b_;
20 }
21
22 Cadenza_req::Cadenza_req(bool b)
23 {
24     on_b_ =b;
25 }
26 /* *************** */
27
28
29 int
30 Bar_req::compare(Bar_req const &c1)const
31 {
32     return type_str_ == c1.type_str_;
33 }
34
35 IMPLEMENT_STATIC_NAME(Bar_req);
36
37 void
38 Bar_req::do_print() const
39 {
40     mtor << type_str_;
41 }
42
43 Bar_req::Bar_req(String s)
44 {
45     type_str_ = s;
46 }
47
48 Partial_measure_req::Partial_measure_req(Moment m)
49 {
50     duration_ =m;
51 }
52 /* *************** */
53
54 IMPLEMENT_STATIC_NAME(Timing_req);
55
56 void
57 Timing_req::do_print()const{}
58
59 IMPLEMENT_STATIC_NAME(Command_req);
60
61 void
62 Command_req::do_print()const{}
63 /* *************** */
64 IMPLEMENT_STATIC_NAME(Barcheck_req);
65
66 void
67 Barcheck_req::do_print() const{}
68
69 /* *************** */
70 IMPLEMENT_STATIC_NAME(Clef_change_req);
71
72 void
73 Clef_change_req::do_print() const
74 {
75 #ifndef NPRINT
76     mtor << clef_str_ ;
77 #endif
78 }
79
80 Clef_change_req::Clef_change_req(String s)
81 {
82     clef_str_ = s;
83 }
84 /* *************** */
85 IMPLEMENT_STATIC_NAME(Group_feature_req);
86
87 void
88 Group_feature_req::do_print() const
89 {
90 #ifndef NPRINT
91     mtor << type_str_ << "=" << value_str_;
92 #endif
93 }
94
95 IMPLEMENT_STATIC_NAME(Group_change_req);
96
97 void
98 Group_change_req::do_print()const
99 {
100 #ifndef NPRINT
101     mtor << "id : " << newgroup_str_;
102 #endif
103 }
104 /* *************** */
105 IMPLEMENT_STATIC_NAME(Terminate_voice_req);
106
107 void
108 Terminate_voice_req::do_print()const
109 {
110 }
111
112 /* *************** */
113 IMPLEMENT_STATIC_NAME(Partial_measure_req);
114
115 void
116 Partial_measure_req::do_print() const
117 {
118     mtor << duration_;
119 }
120
121 IMPLEMENT_STATIC_NAME(Meter_change_req);
122
123 void
124 Meter_change_req::do_print() const
125 {
126     mtor << beats_i_ << "/" << one_beat_i_;
127 }
128
129 int
130 Meter_change_req::compare(Meter_change_req const &m)
131 {
132     return m.beats_i_ == beats_i_ && one_beat_i_ == m.one_beat_i_;
133 }
134
135 Meter_change_req::Meter_change_req()
136 {
137     beats_i_ = 0;
138     one_beat_i_ =0;
139 }
140
141 void
142 Meter_change_req::set(int b,int o)
143 {
144     beats_i_=b;
145     one_beat_i_=o;
146 }
147
148 /* *************** */
149
150 IMPLEMENT_STATIC_NAME(Measure_grouping_req);
151
152 void
153 Measure_grouping_req::do_print() const
154 {
155     for (int i=0; i < elt_length_arr_.size(); i++) {
156         mtor << beat_i_arr_[i] <<"*" << elt_length_arr_[i]<<" ";
157     }
158 }
159 /* *************** */
160
161 void
162 Key_change_req::transpose(Melodic_req const & d)const
163 {
164     WARN << "don't know how to transpose a key. \n";
165     for (int i=0; i < melodic_p_arr_.size(); i++) {
166         melodic_p_arr_[i]->transpose(d);
167     }
168 }
169
170 IMPLEMENT_STATIC_NAME(Key_change_req);
171 void
172 Key_change_req::squash_octaves()
173 {
174     for (int i=0; i < melodic_p_arr_.size(); i++) {
175         melodic_p_arr_[i]->octave_i_ = 0;
176     }
177 }
178
179 void
180 Key_change_req::do_print() const
181 {
182     for (int i=0; i < melodic_p_arr_.size(); i++) {
183         melodic_p_arr_[i]->print();
184     }
185 }
186
187 Key_change_req::Key_change_req()
188 {
189         minor_b_ = false;
190         multi_octave_b_= false;
191 }
192
193 Key_change_req::Key_change_req(Key_change_req const&c)
194 {
195         for (int i=0; i < c.melodic_p_arr_.size(); i++) 
196                 melodic_p_arr_.push( c.melodic_p_arr_[i]->clone()->melodic() );
197         minor_b_ = c.minor_b_;
198         multi_octave_b_ = c.multi_octave_b_;
199 }
200
201 Key_change_req::~Key_change_req()
202 {
203         for (int i=0; i < melodic_p_arr_.size(); i++)
204                 delete melodic_p_arr_[i];
205 }
206
207 int
208 Key_change_req::flats_i()
209 {
210         int flats_i = 0;
211         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
212                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
213                 assert( mel_l );
214                 if ( mel_l->accidental_i_ < 0 )
215                         flats_i -= mel_l->accidental_i_;
216         }
217         return flats_i;
218 }
219
220 int
221 Key_change_req::minor_b()
222 {
223         return minor_b_;        
224 }
225
226 int
227 Key_change_req::sharps_i()
228 {
229         int sharps_i = 0;
230         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
231                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
232                 assert( mel_l );
233                 if ( mel_l->accidental_i_ > 0 )
234                         sharps_i+= mel_l->accidental_i_;
235         }
236         return sharps_i;
237 }
238