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
21namespace MusicXML2
22{
23
24//______________________________________________________________________________
25class msrClef;
26typedef SMARTP<msrClef> S_msrClef;
27
28//______________________________________________________________________________
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};
124EXP ostream& operator<< (ostream& os, const S_msrClef& elt);
125
126
127} // namespace MusicXML2
128
129
130#endif
Definition: basevisitor.h:25
Definition: msrClefs.h:30
Definition: msrMeasureElements.h:24