]> git.donarmstrong.com Git - lilypond.git/blob - lily/command-request.cc
release: 0.0.46.jcn1
[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
177 void
178 Key_change_req::do_print() const
179 {
180     for (int i=0; i < melodic_p_arr_.size(); i++) {
181         melodic_p_arr_[i]->print();
182     }
183 }
184
185 Key_change_req::Key_change_req()
186 {
187         minor_b_ = false;
188 }
189
190 Key_change_req::Key_change_req(Key_change_req const&c)
191 {
192         for (int i=0; i < c.melodic_p_arr_.size(); i++) 
193                 melodic_p_arr_.push( c.melodic_p_arr_[i]->clone()->melodic() );
194         minor_b_ = c.minor_b_;
195 }
196
197 Key_change_req::~Key_change_req()
198 {
199         for (int i=0; i < melodic_p_arr_.size(); i++)
200                 delete melodic_p_arr_[i];
201 }
202
203 int
204 Key_change_req::flats_i()
205 {
206         int flats_i = 0;
207         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
208                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
209                 assert( mel_l );
210                 if ( mel_l->accidental_i_ < 0 )
211                         flats_i++;
212         }
213         return flats_i;
214 }
215
216 int
217 Key_change_req::minor_b()
218 {
219         return minor_b_;        
220 }
221
222 int
223 Key_change_req::sharps_i()
224 {
225         int sharps_i = 0;
226         for ( int i = 0; i < melodic_p_arr_.size(); i++ ) {
227                 Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
228                 assert( mel_l );
229                 if ( mel_l->accidental_i_ > 0 )
230                         sharps_i++;
231         }
232         return sharps_i;
233 }
234