2 commandrequest.cc -- implement Nonmusical reqs
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "command-request.hh"
11 #include "musical-request.hh"
14 Command_script_req::do_print() const
16 Command_script_req::Command_script_req(){}
17 Command_script_req::~Command_script_req(){}
19 IMPLEMENT_IS_TYPE_B1(Command_script_req
,Command_req
);
22 IMPLEMENT_IS_TYPE_B1(Cadenza_req
, Timing_req
);
25 Cadenza_req::do_print() const
33 Cadenza_req::do_equal_b (Request
*r
) const
35 Cadenza_req
*cad
= r
->command()->timing ()->cadenza ();
37 return cad
->on_b_
== on_b_
;
40 Cadenza_req::Cadenza_req (bool b
)
48 Bar_req::do_equal_b (Request
*r
) const
50 Bar_req
* b
= r
->command()->bar ();
51 return type_str_
== b
->type_str_
;
55 IMPLEMENT_IS_TYPE_B1(Bar_req
,Command_req
);
58 Bar_req::do_print() const
63 Bar_req::Bar_req (String s
)
68 Partial_measure_req::Partial_measure_req (Moment m
)
74 Partial_measure_req::do_equal_b (Request
* r
) const
76 Partial_measure_req
*p
= r
->command()->timing ()->partial ();
78 return p
->duration_
== duration_
;
82 IMPLEMENT_IS_TYPE_B1(Timing_req
,Command_req
);
85 Timing_req::do_print() const{}
88 IMPLEMENT_IS_TYPE_B1(Command_req
,Request
);
91 Command_req::do_print() const{}
93 IMPLEMENT_IS_TYPE_B1(Disallow_break_req
,Command_req
);
96 Disallow_break_req::do_print() const
101 IMPLEMENT_IS_TYPE_B1(Barcheck_req
,Timing_req
);
104 Barcheck_req::do_print() const{}
107 Barcheck_req::do_equal_b (Request
*) const
111 /* *************** */
113 IMPLEMENT_IS_TYPE_B1(Clef_change_req
,Command_req
);
116 Clef_change_req::do_print() const
123 Clef_change_req::Clef_change_req (String s
)
128 /* *************** */
131 IMPLEMENT_IS_TYPE_B1(Partial_measure_req
,Timing_req
);
134 Partial_measure_req::do_print() const
140 IMPLEMENT_IS_TYPE_B1(Meter_change_req
,Timing_req
);
143 Meter_change_req::do_print() const
146 DOUT
<< beats_i_
<< "/" << one_beat_i_
;
151 Meter_change_req::do_equal_b (Request
* r
) const
153 Meter_change_req
* m
= r
->command()->timing ()->meterchange ();
155 return m
->beats_i_
== beats_i_
156 && one_beat_i_
== m
->one_beat_i_
;
159 Meter_change_req::Meter_change_req()
166 Meter_change_req::set (int b
,int o
)
173 Tempo_req::Tempo_req()
180 Tempo_req::do_print() const
182 DOUT
<< dur_
.str() << " = " <<metronome_i_
;
184 IMPLEMENT_IS_TYPE_B1(Tempo_req
, Timing_req
);
187 Tempo_req::do_equal_b (Request
*r
) const
189 Tempo_req
*t
= r
->command()->timing ()->tempo ();
191 return t
->dur_
.length()== dur_
.length () && metronome_i_
== t
->metronome_i_
;
194 /* *************** */
197 IMPLEMENT_IS_TYPE_B1(Measure_grouping_req
,Timing_req
);
200 Measure_grouping_req::do_print() const
202 for (int i
=0; i
< elt_length_arr_
.size(); i
++)
204 DOUT
<< beat_i_arr_
[i
] <<"*" << elt_length_arr_
[i
]<<" ";
210 Measure_grouping_req::do_equal_b (Request
*) const
212 return false; // todo
215 /* *************** */
218 Key_change_req::transpose (Melodic_req
const * d
) const
220 WARN
<< _("don't know how to transpose a key. \n");
221 for (int i
=0; i
< melodic_p_arr_
.size(); i
++)
223 melodic_p_arr_
[i
]->transpose (d
);
228 IMPLEMENT_IS_TYPE_B1(Key_change_req
,Command_req
);
230 Key_change_req::squash_octaves()
232 for (int i
=0; i
< melodic_p_arr_
.size(); i
++)
234 melodic_p_arr_
[i
]->octave_i_
= 0;
239 Key_change_req::do_print() const
242 for (int i
=0; i
< melodic_p_arr_
.size(); i
++)
244 melodic_p_arr_
[i
]->print();
249 Key_change_req::Key_change_req()
252 multi_octave_b_
= false;
256 Break_force_req::do_print () const
260 IMPLEMENT_IS_TYPE_B1(Break_force_req
, Command_req
);
262 Key_change_req::Key_change_req (Key_change_req
const&c
)
265 for (int i
=0; i
< c
.melodic_p_arr_
.size(); i
++)
266 melodic_p_arr_
.push (c
.melodic_p_arr_
[i
]->clone()->musical ()->melodic ());
267 minor_b_
= c
.minor_b_
;
268 multi_octave_b_
= c
.multi_octave_b_
;
271 Key_change_req::~Key_change_req()
273 for (int i
=0; i
< melodic_p_arr_
.size(); i
++)
274 delete melodic_p_arr_
[i
];
278 Key_change_req::flats_i()
281 for (int i
= 0; i
< melodic_p_arr_
.size(); i
++)
283 Melodic_req
* mel_l
= melodic_p_arr_
[i
]->melodic();
285 if (mel_l
->accidental_i_
< 0)
286 flats_i
-= mel_l
->accidental_i_
;
292 Key_change_req::minor_b()
298 Key_change_req::sharps_i()
301 for (int i
= 0; i
< melodic_p_arr_
.size(); i
++)
303 Melodic_req
* mel_l
= melodic_p_arr_
[i
]->melodic();
305 if (mel_l
->accidental_i_
> 0)
306 sharps_i
+= mel_l
->accidental_i_
;