]> git.donarmstrong.com Git - lilypond.git/blob - lily/command-request.cc
release: 0.0.49
[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 << "stemdir " << stemdir_i_;
92 #endif
93 }
94
95 Group_feature_req::Group_feature_req()
96 {
97     stemdir_i_ = 0;
98 }
99
100 IMPLEMENT_STATIC_NAME(Group_change_req);
101
102 void
103 Group_change_req::do_print()const
104 {
105 #ifndef NPRINT
106     mtor << "id : " << newgroup_str_;
107 #endif
108 }
109 /* *************** */
110 IMPLEMENT_STATIC_NAME(Terminate_voice_req);
111
112 void
113 Terminate_voice_req::do_print()const
114 {
115 }
116
117 /* *************** */
118 IMPLEMENT_STATIC_NAME(Partial_measure_req);
119
120 void
121 Partial_measure_req::do_print() const
122 {
123     mtor << duration_;
124 }
125
126 IMPLEMENT_STATIC_NAME(Meter_change_req);
127
128 void
129 Meter_change_req::do_print() const
130 {
131     mtor << beats_i_ << "/" << one_beat_i_;
132 }
133
134 int
135 Meter_change_req::compare(Meter_change_req const &m)
136 {
137     return m.beats_i_ == beats_i_ && one_beat_i_ == m.one_beat_i_;
138 }
139
140 Meter_change_req::Meter_change_req()
141 {
142     beats_i_ = 0;
143     one_beat_i_ =0;
144 }
145
146 void
147 Meter_change_req::set(int b,int o)
148 {
149     beats_i_=b;
150     one_beat_i_=o;
151 }
152
153 /* *************** */
154
155 IMPLEMENT_STATIC_NAME(Measure_grouping_req);
156
157 void
158 Measure_grouping_req::do_print() const
159 {
160     for (int i=0; i < elt_length_arr_.size(); i++) {
161         mtor << beat_i_arr_[i] <<"*" << elt_length_arr_[i]<<" ";
162     }
163 }
164 /* *************** */
165
166 void
167 Key_change_req::transpose(Melodic_req const & d)const
168 {
169     WARN << "don't know how to transpose a key. \n";
170     for (int i=0; i < melodic_p_arr_.size(); i++) {
171         melodic_p_arr_[i]->transpose(d);
172     }
173 }
174
175 IMPLEMENT_STATIC_NAME(Key_change_req);
176 void
177 Key_change_req::squash_octaves()
178 {
179     for (int i=0; i < melodic_p_arr_.size(); i++) {
180         melodic_p_arr_[i]->octave_i_ = 0;
181     }
182 }
183
184 void
185 Key_change_req::do_print() const
186 {
187     for (int i=0; i < melodic_p_arr_.size(); i++) {
188         melodic_p_arr_[i]->print();
189     }
190 }
191
192 Key_change_req::Key_change_req()
193 {
194         minor_b_ = false;
195         multi_octave_b_= false;
196 }
197
198 Key_change_req::Key_change_req(Key_change_req const&c)
199 {
200         for (int i=0; i < c.melodic_p_arr_.size(); i++) 
201                 melodic_p_arr_.push( c.melodic_p_arr_[i]->clone()->melodic() );
202         minor_b_ = c.minor_b_;
203         multi_octave_b_ = c.multi_octave_b_;
204 }
205
206 Key_change_req::~Key_change_req()
207 {
208         for (int i=0; i < melodic_p_arr_.size(); i++)
209                 delete melodic_p_arr_[i];
210 }
211
212 int
213 Key_change_req::flats_i()
214 {
215         int flats_i = 0;
216         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
217                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
218                 assert( mel_l );
219                 if ( mel_l->accidental_i_ < 0 )
220                         flats_i -= mel_l->accidental_i_;
221         }
222         return flats_i;
223 }
224
225 int
226 Key_change_req::minor_b()
227 {
228         return minor_b_;        
229 }
230
231 int
232 Key_change_req::sharps_i()
233 {
234         int sharps_i = 0;
235         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
236                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
237                 assert( mel_l );
238                 if ( mel_l->accidental_i_ > 0 )
239                         sharps_i+= mel_l->accidental_i_;
240         }
241         return sharps_i;
242 }
243