LibMusicXML  3.18
msrStavesDetails.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 ___msrStavesDetails___
14 #define ___msrStavesDetails___
15 
16 #include <list>
17 
18 #include "msrMeasureElements.h"
19 
20 #include "msrBasicTypes.h"
21 
22 
23 namespace MusicXML2
24 {
25 
26 //______________________________________________________________________________
27 class msrStaffTuning : public msrElement
28 {
29  public:
30 
31  // creation from MusicXML
32  // ------------------------------------------------------
33 
34  static SMARTP<msrStaffTuning> create (
35  int inputLineNumber,
36  int staffTuningLineNumber,
37  msrQuarterTonesPitchKind quarterTonesPitchKind,
38  int staffTuningOctave);
39 
40  SMARTP<msrStaffTuning> createStaffTuningNewbornClone ();
41 
42  SMARTP<msrStaffTuning> createStaffTuningDeepCopy ();
43 
44  protected:
45 
46  // constructors/destructor
47  // ------------------------------------------------------
48 
50  int inputLineNumber,
51  int staffTuningLineNumber,
52  msrQuarterTonesPitchKind quarterTonesPitchKind,
53  int staffTuningOctave);
54 
55  ~ msrStaffTuning ();
56 
57  public:
58 
59  // set and get
60  // ------------------------------------------------------
61 
62  int getStaffTuningLineNumber () const
63  { return fStaffTuningLineNumber; }
64 
65  msrQuarterTonesPitchKind
66  getStaffTuningQuarterTonesPitchKind () const
67  { return fStaffTuningQuarterTonesPitchKind; }
68 
69  int getStaffTuningOctave () const
70  { return fStaffTuningOctave; }
71 
72  // services
73  // ------------------------------------------------------
74 
75  public:
76 
77  // visitors
78  // ------------------------------------------------------
79 
80  virtual void acceptIn (basevisitor* v);
81  virtual void acceptOut (basevisitor* v);
82 
83  virtual void browseData (basevisitor* v);
84 
85  public:
86 
87  // print
88  // ------------------------------------------------------
89 
90  string asString () const;
91 
92  virtual void print (ostream& os) const;
93 
94  public:
95 
96  // fields
97  // ------------------------------------------------------
98 
99  int fStaffTuningLineNumber;
100 
101  msrQuarterTonesPitchKind
102  fStaffTuningQuarterTonesPitchKind;
103  int fStaffTuningOctave;
104 };
106 EXP ostream& operator<< (ostream& os, const S_msrStaffTuning& elt);
107 
108 //______________________________________________________________________________
110 {
111  public:
112 
113 
114  // data types
115  // ------------------------------------------------------
116 
117  enum msrStaffTypeKind {
118  kRegularStaffType,
119  kOssiaStaffType, kCueStaffType, kEditorialStaffType,
120  kAlternateStaffType};
121 
122  static string staffTypeKindAsString (
123  msrStaffTypeKind staffTypeKind);
124 
125  enum msrShowFretsKind {
126  kShowFretsNumbers, kShowFretsLetters};
127 
128  static string showFretsKindAsString (
129  msrShowFretsKind showFretsKind);
130 
131  enum msrPrintSpacingKind {
132  kPrintSpacingYes, kPrintSpacingNo};
133 
134  static string printSpacingKindAsString (
135  msrPrintSpacingKind printSpacingKind);
136 
137  // creation from MusicXML
138  // ------------------------------------------------------
139 
140  static SMARTP<msrStaffDetails> create (
141  int inputLineNumber,
142  msrStaffTypeKind staffTypeKind,
143  msrShowFretsKind showFretsKind,
144  msrPrintObjectKind printObjectKind,
145  msrPrintSpacingKind printSpacingKin);
146 
147  protected:
148 
149  // constructors/destructor
150  // ------------------------------------------------------
151 
153  int inputLineNumber,
154  msrStaffTypeKind staffTypeKind,
155  msrShowFretsKind showFretsKind,
156  msrPrintObjectKind printObjectKind,
157  msrPrintSpacingKind printSpacingKin);
158 
159  virtual ~msrStaffDetails ();
160 
161  public:
162 
163  // set and get
164  // ------------------------------------------------------
165 
166  msrStaffTypeKind getStaffTypeKind () const
167  { return fStaffTypeKind; }
168 
169  void setStaffLinesNumber (
170  int staffLinesNumber)
171  { fStaffLinesNumber = staffLinesNumber; }
172 
173  int getStaffLinesNumber () const
174  { return fStaffLinesNumber; }
175 
176  const list<S_msrStaffTuning>&
177  getStaffTuningsList () const
178  { return fStaffTuningsList; }
179 
180  msrShowFretsKind getShowFretsKind () const
181  { return fShowFretsKind; }
182 
183  msrPrintObjectKind getPrintObjectKind () const
184  { return fPrintObjectKind; }
185 
186  msrPrintSpacingKind getPrintSpacingKind () const
187  { return fPrintSpacingKind; }
188 
189  // services
190  // ------------------------------------------------------
191 
192  void addStaffTuningToStaffDetails (
193  S_msrStaffTuning staffTuning)
194  {
195  fStaffTuningsList.push_back (staffTuning);
196  }
197 
198  string asShortString () const;
199 
200  public:
201 
202  // visitors
203  // ------------------------------------------------------
204 
205  virtual void acceptIn (basevisitor* v);
206  virtual void acceptOut (basevisitor* v);
207 
208  virtual void browseData (basevisitor* v);
209 
210  public:
211 
212  // print
213  // ------------------------------------------------------
214 
215  virtual void print (ostream& os) const;
216 
217  private:
218 
219  // fields
220  // ------------------------------------------------------
221 
222  msrStaffTypeKind fStaffTypeKind;
223 
224  int fStaffLinesNumber;
225  list<S_msrStaffTuning>
226  fStaffTuningsList;
227 
228  msrShowFretsKind fShowFretsKind;
229 
230  msrPrintObjectKind fPrintObjectKind;
231  msrPrintSpacingKind fPrintSpacingKind;
232 };
234 EXP ostream& operator<< (ostream& os, const S_msrStaffDetails& elt);
235 
236 
237 } // namespace MusicXML2
238 
239 
240 #endif
MusicXML2::msrStaffTuning
Definition: msrStavesDetails.h:28
MusicXML2::msrMeasureElement
Definition: msrMeasureElements.h:24
MusicXML2::SMARTP< msrStaffTuning >
MusicXML2::basevisitor
Definition: basevisitor.h:25
MusicXML2::msrElement
Definition: msrElements.h:26
MusicXML2::msrStaffDetails
Definition: msrStavesDetails.h:110