LibMusicXML  3.18
msrClefs.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 ___msrClefs___
14 #define ___msrClefs___
15 
16 #include "msrMeasureElements.h"
17 
18 #include "msrBasicTypes.h"
19 
20 
21 namespace MusicXML2
22 {
23 
24 //______________________________________________________________________________
25 class msrClef;
26 typedef SMARTP<msrClef> S_msrClef;
27 
28 //______________________________________________________________________________
29 class msrClef : public msrMeasureElement
30 {
31  public:
32 
33  // data types
34  // ------------------------------------------------------
35 
36  enum msrClefKind {
37  k_NoClef,
38  kTrebleClef,
39  kSopranoClef, kMezzoSopranoClef, kAltoClef, kTenorClef, kBaritoneClef,
40  kBassClef,
41  kTrebleLine1Clef,
42  kTrebleMinus15Clef, kTrebleMinus8Clef,
43  kTreblePlus8Clef, kTreblePlus15Clef,
44  kBassMinus15Clef, kBassMinus8Clef,
45  kBassPlus8Clef, kBassPlus15Clef,
46  kVarbaritoneClef,
47  kTablature4Clef, kTablature5Clef, kTablature6Clef, kTablature7Clef,
48  kPercussionClef,
49  kJianpuClef};
50 
51  static string clefKindAsString (
52  msrClefKind clefKind);
53 
54  // creation from MusicXML
55  // ------------------------------------------------------
56 
57  static SMARTP<msrClef> create (
58  int inputLineNumber,
59  msrClefKind clefKind);
60 
61  protected:
62 
63  // constructors/destructor
64  // ------------------------------------------------------
65 
66  msrClef (
67  int inputLineNumber,
68  msrClefKind clefKind);
69 
70  virtual ~msrClef ();
71 
72  public:
73 
74  // set and get
75  // ------------------------------------------------------
76 
77  msrClefKind getClefKind () const
78  { return fClefKind; }
79 
80  // services
81  // ------------------------------------------------------
82 
83  bool isEqualTo (S_msrClef otherClef) const;
84 
85  bool clefIsATablatureClef () const;
86 
87  bool clefIsAPercussionClef () const;
88 
89  public:
90 
91  // visitors
92  // ------------------------------------------------------
93 
94  virtual void acceptIn (basevisitor* v);
95  virtual void acceptOut (basevisitor* v);
96 
97  virtual void browseData (basevisitor* v);
98 
99  public:
100 
101  // services
102  // ------------------------------------------------------
103 
104  static msrClefKind clefKindFromString (
105  string theString);
106 
107  public:
108 
109  // print
110  // ------------------------------------------------------
111 
112  string asString () const;
113 
114  virtual void print (ostream& os) const;
115 
116  private:
117 
118  // fields
119  // ------------------------------------------------------
120 
121  msrClefKind fClefKind;
122 };
123 typedef SMARTP<msrClef> S_msrClef;
124 EXP ostream& operator<< (ostream& os, const S_msrClef& elt);
125 
126 
127 } // namespace MusicXML2
128 
129 
130 #endif
MusicXML2::msrMeasureElement
Definition: msrMeasureElements.h:24
MusicXML2::SMARTP< msrClef >
MusicXML2::basevisitor
Definition: basevisitor.h:25
MusicXML2::msrClef
Definition: msrClefs.h:30