]> git.donarmstrong.com Git - lilypond.git/blob - lily/musical-request.cc
release: 1.3.103
[lilypond.git] / lily / musical-request.cc
1 /*
2   request.cc -- implement all musical requests.
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #include "musical-request.hh"
10 #include "misc.hh"
11 #include "debug.hh"
12 #include "music-list.hh"
13
14
15 Tremolo_req::Tremolo_req ()
16 {
17   type_i_ = 0;
18 }
19
20
21 void
22 Melodic_req::transpose (Musical_pitch delta)
23 {
24   pitch_.transpose (delta);
25   
26   if (abs (pitch_.accidental_i_) > 2)
27     {
28         warning (_f ("Transposition by %s makes accidental larger than two",
29           delta.str ()));
30     }
31 }
32
33 bool
34 Melodic_req::do_equal_b (Request const* r) const
35 {
36   Melodic_req const* m= dynamic_cast <Melodic_req const*> (r);
37   return m&& !compare (*m, *this);
38 }
39
40 int
41 Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2)
42 {
43   return Musical_pitch::compare (m1.pitch_, m2.pitch_);
44 }
45
46 int
47 Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2)
48 {
49   return (r1.length_mom () - r2.length_mom ());
50 }
51
52 bool
53 Rhythmic_req::do_equal_b (Request const* r) const
54 {
55   Rhythmic_req const* rh = dynamic_cast <Rhythmic_req const*> (r);
56
57   return rh && !compare (*this, *rh);
58 }
59
60
61
62 Moment
63 Rhythmic_req::length_mom () const
64 {
65   return duration_.length_mom ();
66 }
67
68 void
69 Rhythmic_req::compress (Moment m)
70 {
71   duration_.compress (m);
72 }
73
74
75
76 bool
77 Note_req::do_equal_b (Request const* r) const
78 {
79   Note_req const* n = dynamic_cast<Note_req const*> (r);
80   return n&& Rhythmic_req::do_equal_b (n) && Melodic_req::do_equal_b (n);
81 }
82
83
84 Note_req::Note_req ()
85 {
86   cautionary_b_ = false;
87   forceacc_b_ = false;
88 }
89
90
91
92
93
94 bool
95 Span_req::do_equal_b (Request const*r) const
96 {
97   Span_req const* s = dynamic_cast <Span_req const*> (r);
98   return s && get_span_dir () == s->get_span_dir ();
99 }
100
101 Span_req::Span_req ()
102 {
103 }
104
105
106 bool
107 Text_script_req::do_equal_b (Request const* r) const
108 {
109   Text_script_req const* t  = dynamic_cast<Text_script_req const*> (r);
110   return t && gh_equal_p (get_mus_property ("text"),
111                           t->get_mus_property ("text"));
112 }
113
114
115 bool
116 Articulation_req::do_equal_b (Request const* r) const
117 {
118   Articulation_req const* a = dynamic_cast<Articulation_req const*> (r);
119   
120   return a &&  articulation_str_ == a->articulation_str_;
121 }
122
123