2 request.cc -- implement all musical requests.
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "musical-request.hh"
13 #include "music-list.hh"
16 Span_req::do_print () const
23 Abbreviation_req::Abbreviation_req ()
29 Abbreviation_req::do_print () const
32 DOUT << "type " << type_i_ << '\n';
40 Melodic_req::transpose (Musical_pitch delta)
42 pitch_.transpose (delta);
44 if (abs (pitch_.accidental_i_) > 2)
46 warning (_f ("transposition by %s makes accidental larger than two",
54 Melodic_req::do_equal_b (Request*r) const
56 Melodic_req* m= dynamic_cast <Melodic_req *> (r);
57 return m&& !compare (*m, *this);
61 Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2)
63 return Musical_pitch::compare (m1.pitch_, m2.pitch_);
67 Melodic_req::do_print () const
76 Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2)
78 return (r1.length_mom () - r2.length_mom ());
82 Rhythmic_req::do_equal_b (Request*r) const
84 Rhythmic_req* rh = dynamic_cast <Rhythmic_req *> (r);
86 return rh && !compare (*this, *rh);
90 Rhythmic_req::do_print () const
93 DOUT << "duration { " <<duration_.str () << "}";
99 Rhythmic_req::length_mom () const
101 return duration_.length_mom ();
105 Rhythmic_req::compress (Moment m)
107 duration_.compress (m);
111 Lyric_req::do_print () const
113 Rhythmic_req::do_print ();
118 Note_req::do_equal_b (Request*r) const
120 Note_req *n = dynamic_cast<Note_req*> (r);
121 return n&& Rhythmic_req::do_equal_b (n) && Melodic_req::do_equal_b (n);
125 Note_req::Note_req ()
127 cautionary_b_ = false;
134 Note_req::do_print () const
137 Melodic_req::do_print ();
140 DOUT << " force cautionary accidental\n";
142 else if (forceacc_b_)
144 DOUT << " force accidental\n";
146 Rhythmic_req::do_print ();
151 Abbreviation_beam_req::Abbreviation_beam_req ()
157 Span_req::do_equal_b (Request*r) const
159 Span_req * s = dynamic_cast <Span_req *> (r);
160 return s && spantype_ == s->spantype_;
163 Span_req::Span_req ()
170 Absolute_dynamic_req::do_print () const
173 DOUT << " loudness " <<loudness_str_ ;
178 Absolute_dynamic_req::do_equal_b (Request *r) const
180 Absolute_dynamic_req *a = dynamic_cast <Absolute_dynamic_req *> (r);
181 return a&& loudness_str_ == a->loudness_str_;
184 Absolute_dynamic_req::Absolute_dynamic_req ()
186 loudness_str_ = "fm"; // yes, "illegal" on purpose.
192 Span_dynamic_req::do_equal_b (Request *req) const
194 Span_dynamic_req * s = dynamic_cast <Span_dynamic_req *> (req);
196 return s&& Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
199 Span_dynamic_req::Span_dynamic_req ()
201 dynamic_dir_ = CENTER;
205 Span_dynamic_req::do_print () const
208 Span_req::do_print ();
209 DOUT << "softer/louder: " << dynamic_dir_;
214 Text_script_req::do_print () const
216 DOUT << "text" << text_str_
217 << ", style = " << style_str_;
221 Articulation_req::do_print () const
223 DOUT << articulation_str_;