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