lilypond-0.0.50
[lilypond.git] / lily / command-request.cc
blob55ccf54c27f25d015a292e71c372e205af8f31a5
1 /*
2 commandrequest.cc -- implement Nonmusical reqs
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
9 #include "command-request.hh"
10 #include "debug.hh"
11 #include "musical-request.hh"
14 IMPLEMENT_STATIC_NAME(Cadenza_req);
16 void
17 Cadenza_req::do_print()const
19 mtor << on_b_;
22 Cadenza_req::Cadenza_req(bool b)
24 on_b_ =b;
26 /* *************** */
29 int
30 Bar_req::compare(Bar_req const &c1)const
32 return type_str_ == c1.type_str_;
35 IMPLEMENT_STATIC_NAME(Bar_req);
37 void
38 Bar_req::do_print() const
40 mtor << type_str_;
43 Bar_req::Bar_req(String s)
45 type_str_ = s;
48 Partial_measure_req::Partial_measure_req(Moment m)
50 duration_ =m;
52 /* *************** */
54 IMPLEMENT_STATIC_NAME(Timing_req);
56 void
57 Timing_req::do_print()const{}
59 IMPLEMENT_STATIC_NAME(Command_req);
61 void
62 Command_req::do_print()const{}
63 /* *************** */
64 IMPLEMENT_STATIC_NAME(Barcheck_req);
66 void
67 Barcheck_req::do_print() const{}
69 /* *************** */
70 IMPLEMENT_STATIC_NAME(Clef_change_req);
72 void
73 Clef_change_req::do_print() const
75 #ifndef NPRINT
76 mtor << clef_str_ ;
77 #endif
80 Clef_change_req::Clef_change_req(String s)
82 clef_str_ = s;
84 /* *************** */
85 IMPLEMENT_STATIC_NAME(Group_feature_req);
87 void
88 Group_feature_req::do_print() const
90 #ifndef NPRINT
91 mtor << "stemdir " << stemdir_i_;
92 #endif
95 Group_feature_req::Group_feature_req()
97 stemdir_i_ = 0;
100 IMPLEMENT_STATIC_NAME(Group_change_req);
102 void
103 Group_change_req::do_print()const
105 #ifndef NPRINT
106 mtor << "id : " << newgroup_str_;
107 #endif
109 /* *************** */
110 IMPLEMENT_STATIC_NAME(Terminate_voice_req);
112 void
113 Terminate_voice_req::do_print()const
117 /* *************** */
118 IMPLEMENT_STATIC_NAME(Partial_measure_req);
120 void
121 Partial_measure_req::do_print() const
123 mtor << duration_;
126 IMPLEMENT_STATIC_NAME(Meter_change_req);
128 void
129 Meter_change_req::do_print() const
131 mtor << beats_i_ << "/" << one_beat_i_;
135 Meter_change_req::compare(Meter_change_req const &m)
137 return m.beats_i_ == beats_i_ && one_beat_i_ == m.one_beat_i_;
140 Meter_change_req::Meter_change_req()
142 beats_i_ = 0;
143 one_beat_i_ =0;
146 void
147 Meter_change_req::set(int b,int o)
149 beats_i_=b;
150 one_beat_i_=o;
153 /* *************** */
155 IMPLEMENT_STATIC_NAME(Measure_grouping_req);
157 void
158 Measure_grouping_req::do_print() const
160 for (int i=0; i < elt_length_arr_.size(); i++) {
161 mtor << beat_i_arr_[i] <<"*" << elt_length_arr_[i]<<" ";
164 /* *************** */
166 void
167 Key_change_req::transpose(Melodic_req const & d)const
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);
175 IMPLEMENT_STATIC_NAME(Key_change_req);
176 void
177 Key_change_req::squash_octaves()
179 for (int i=0; i < melodic_p_arr_.size(); i++) {
180 melodic_p_arr_[i]->octave_i_ = 0;
184 void
185 Key_change_req::do_print() const
187 for (int i=0; i < melodic_p_arr_.size(); i++) {
188 melodic_p_arr_[i]->print();
192 Key_change_req::Key_change_req()
194 minor_b_ = false;
195 multi_octave_b_= false;
198 Key_change_req::Key_change_req(Key_change_req const&c)
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_;
206 Key_change_req::~Key_change_req()
208 for (int i=0; i < melodic_p_arr_.size(); i++)
209 delete melodic_p_arr_[i];
213 Key_change_req::flats_i()
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_;
222 return flats_i;
226 Key_change_req::minor_b()
228 return minor_b_;
232 Key_change_req::sharps_i()
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_;
241 return sharps_i;