LibMusicXML  3.18
msrDynamics.h
1 /*
2  MusicXML Library
3  Copyright (C) Grame 2006-2013
4 
5  This Source Code Form is subject to the terms of the Mozilla Public
6  License, v. 2.0. If a copy of the MPL was not distributed with this
7  file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10  research@grame.fr
11 */
12 
13 #ifndef ___msrDynamics___
14 #define ___msrDynamics___
15 
16 #include "msrElements.h"
17 
18 #include "msrBasicTypes.h"
19 
20 
21 namespace MusicXML2
22 {
23 
24 //______________________________________________________________________________
25 class msrDynamics : public msrElement
26 {
27  public:
28 
29  // data types
30  // ------------------------------------------------------
31 
32  enum msrDynamicsKind {
33  kF, kFF, kFFF, kFFFF, kFFFFF, kFFFFFF,
34  kP, kPP, kPPP, kPPPP, kPPPPP, kPPPPPP,
35  kMF, kMP, kFP, kFZ, kRF, kSF, kRFZ, kSFZ, kSFP, kSFPP, kSFFZ,
36  k_NoDynamics };
37 
38  static string dynamicsKindAsString (
39  msrDynamicsKind dynamicsKind);
40 
41  // creation from MusicXML
42  // ------------------------------------------------------
43 
44  static SMARTP<msrDynamics> create (
45  int inputLineNumber,
46  msrDynamicsKind dynamicsKind,
47  msrPlacementKind dynamicsPlacementKind);
48 
49  protected:
50 
51  // constructors/destructor
52  // ------------------------------------------------------
53 
54  msrDynamics (
55  int inputLineNumber,
56  msrDynamicsKind dynamicsKind,
57  msrPlacementKind dynamicsPlacementKind);
58 
59  virtual ~msrDynamics ();
60 
61  public:
62 
63  // set and get
64  // ------------------------------------------------------
65 
66  msrDynamicsKind getDynamicsKind () const
67  { return fDynamicsKind; }
68 
69  msrPlacementKind getDynamicsPlacementKind () const
70  { return fDynamicsPlacementKind; }
71 
72  public:
73 
74  // public services
75  // ------------------------------------------------------
76 
77  public:
78 
79  // visitors
80  // ------------------------------------------------------
81 
82  virtual void acceptIn (basevisitor* v);
83  virtual void acceptOut (basevisitor* v);
84 
85  virtual void browseData (basevisitor* v);
86 
87  public:
88 
89  // print
90  // ------------------------------------------------------
91 
92  string dynamicsKindAsString () const;
93 
94  string dynamicsPlacementKindAsString () const;
95 
96  virtual void print (ostream& os) const;
97 
98  private:
99 
100  // fields
101  // ------------------------------------------------------
102 
103  msrDynamicsKind fDynamicsKind;
104 
105  msrPlacementKind fDynamicsPlacementKind;
106 };
108 EXP ostream& operator<< (ostream& os, const S_msrDynamics& elt);
109 
110 //______________________________________________________________________________
112 {
113  public:
114 
115  // creation from MusicXML
116  // ------------------------------------------------------
117 
118  static SMARTP<msrOtherDynamics> create (
119  int inputLineNumber,
120  string otherDynamicsString,
121  msrPlacementKind otherDynamicsPlacementKind);
122 
123  protected:
124 
125  // constructors/destructor
126  // ------------------------------------------------------
127 
129  int inputLineNumber,
130  string otherDynamicsString,
131  msrPlacementKind otherDynamicsPlacementKind);
132 
133  virtual ~msrOtherDynamics ();
134 
135  public:
136 
137  // set and get
138  // ------------------------------------------------------
139 
140  string getOtherDynamicsString () const
141  { return fOtherDynamicsString; }
142 
143  msrPlacementKind getOtherDynamicsPlacementKind () const
144  { return fOtherDynamicsPlacementKind; }
145 
146  // services
147  // ------------------------------------------------------
148 
149  public:
150 
151  // visitors
152  // ------------------------------------------------------
153 
154  virtual void acceptIn (basevisitor* v);
155  virtual void acceptOut (basevisitor* v);
156 
157  virtual void browseData (basevisitor* v);
158 
159  public:
160 
161  // print
162  // ------------------------------------------------------
163 
164  string otherDynamicsPlacementKindAsString () const;
165 
166  string asString () const;
167 
168  virtual void print (ostream& os) const;
169 
170  private:
171 
172  // fields
173  // ------------------------------------------------------
174 
175  string fOtherDynamicsString;
176 
177  msrPlacementKind fOtherDynamicsPlacementKind;
178 };
180 EXP ostream& operator<< (ostream& os, const S_msrOtherDynamics& elt);
181 
182 //______________________________________________________________________________
183 class msrWedge : public msrElement
184 {
185  public:
186 
187  // data types
188  // ------------------------------------------------------
189 
190  enum msrWedgeKind {
191  kWedgeKindNone,
192  kWedgeCrescendo, kWedgeDecrescendo, kWedgeStop };
193 
194  static string wedgeKindAsString (
195  msrWedgeKind wedgeKind);
196 
197  enum msrWedgeNienteKind {
198  kWedgeNienteYes, kWedgeNienteNo };
199 
200  static string wedgeNienteKindAsString (
201  msrWedgeNienteKind wedgeNienteKind);
202 
203  // creation from MusicXML
204  // ------------------------------------------------------
205 
206  static SMARTP<msrWedge> create (
207  int inputLineNumber,
208  msrWedgeKind wedgeKind,
209  msrWedgeNienteKind wedgeNienteKind,
210  msrLineTypeKind wedgeLineTypeKind,
211  msrPlacementKind wedgePlacementKind);
212 
213  protected:
214 
215  // constructors/destructor
216  // ------------------------------------------------------
217 
218  msrWedge (
219  int inputLineNumber,
220  msrWedgeKind wedgeKind,
221  msrWedgeNienteKind wedgeNienteKind,
222  msrLineTypeKind wedgeLineTypeKind,
223  msrPlacementKind wedgePlacementKind);
224 
225  virtual ~msrWedge ();
226 
227  public:
228 
229  // set and get
230  // ------------------------------------------------------
231 
232  msrWedgeKind getWedgeKind () const
233  { return fWedgeKind; }
234 
235  msrWedgeNienteKind getWedgeNienteKind () const
236  { return fWedgeNienteKind; }
237 
238  msrLineTypeKind getWedgeLineTypeKind () const
239  { return fWedgeLineTypeKind; }
240 
241  msrPlacementKind getWedgePlacementKind () const
242  { return fWedgePlacementKind; }
243 
244  // services
245  // ------------------------------------------------------
246 
247  public:
248 
249  // visitors
250  // ------------------------------------------------------
251 
252  virtual void acceptIn (basevisitor* v);
253  virtual void acceptOut (basevisitor* v);
254 
255  virtual void browseData (basevisitor* v);
256 
257  public:
258 
259  // print
260  // ------------------------------------------------------
261 
262  string wedgeKindAsString () const;
263 
264  virtual void print (ostream& os) const;
265 
266  private:
267 
268  // fields
269  // ------------------------------------------------------
270 
271  msrWedgeKind fWedgeKind;
272 
273  msrWedgeNienteKind fWedgeNienteKind;
274 
275  msrLineTypeKind fWedgeLineTypeKind;
276 
277  msrPlacementKind fWedgePlacementKind;
278 };
280 EXP ostream& operator<< (ostream& os, const S_msrWedge& elt);
281 
282 
283 } // namespace MusicXML2
284 
285 
286 #endif
the smart pointer implementation
Definition: smartpointer.h:58
Definition: basevisitor.h:25
Definition: msrDynamics.h:26
Definition: msrElements.h:26
Definition: msrDynamics.h:112
Definition: msrDynamics.h:184