2 command-request.hh -- declare non-musical requests
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #ifndef COMMANDREQUEST_HH
11 #define COMMANDREQUEST_HH
15 #include "duration.hh"
16 #include "musical-pitch.hh"
18 class Break_req : public Request {
20 enum { DISALLOW = -10000, FORCE = 10000 };
24 VIRTUAL_COPY_CONS(Music);
27 class Mark_req : public Request {
32 virtual void do_print () const;
33 VIRTUAL_COPY_CONS(Music);
37 /** Baseclass for time_signature/partial req. It has to be handled by
38 Staff_{walker,column} baseclass. */
39 class Timing_req : public Request {
41 VIRTUAL_COPY_CONS(Music);
45 class Tempo_req : public Timing_req
53 virtual void do_print () const;
54 VIRTUAL_COPY_CONS(Music);
55 bool do_equal_b (Request *) const;
58 class Partial_measure_req : public Timing_req {
62 Partial_measure_req (Moment);
64 VIRTUAL_COPY_CONS(Music);
65 virtual void do_print () const;
66 bool do_equal_b (Request*) const;
70 todo: allow C time_signature
72 class Time_signature_change_req : public Timing_req {
77 Time_signature_change_req();
79 virtual void do_print () const;
80 bool do_equal_b (Request*) const;
81 VIRTUAL_COPY_CONS(Music);
84 /// toggle Cadenza mode
85 class Cadenza_req : public Timing_req {
91 virtual void do_print () const;
93 bool do_equal_b (Request*) const;
94 VIRTUAL_COPY_CONS(Music);
97 /// check if we're at start of a measure.
98 class Barcheck_req : public Timing_req {
100 bool do_equal_b (Request *) const;
101 VIRTUAL_COPY_CONS(Music);
104 class Measure_grouping_req : public Timing_req {
106 Array<int> beat_i_arr_;
107 Array<Moment> elt_length_arr_;
109 virtual void do_print () const;
110 bool do_equal_b (Request *) const;
111 VIRTUAL_COPY_CONS(Music);
114 /** draw a (repeat)-bar. This something different than #Barcheck_req#,
115 the latter should only happen at the start of a measure. */
116 class Bar_req : public Request {
121 virtual void do_print () const;
122 bool do_equal_b (Request*) const;
124 VIRTUAL_COPY_CONS(Music);
130 Routines for sharps and flats are separated,
131 so that caller may identify non-conventional keys.
133 class Key_change_req : public Request {
135 Array<Musical_pitch> pitch_arr_;
137 bool ordinary_key_b_;
141 /// squash the octaves to 1
142 void squash_octaves();
143 /// return number of flats in key
146 /// return number of sharps in key
148 bool minor_b() const;
151 VIRTUAL_COPY_CONS(Music);
152 void transpose (Musical_pitch d);
153 virtual void do_print () const;
156 class Clef_change_req : public Request {
159 Clef_change_req (String);
161 virtual void do_print () const;
162 VIRTUAL_COPY_CONS(Music);
166 #endif // COMMANDREQUEST_HH