LibMusicXML 3.18
msrLigatures.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 ___msrLigatures___
14#define ___msrLigatures___
15
16#include "msrElements.h"
17
18#include "msrBasicTypes.h"
19
20
21namespace MusicXML2
22{
23
24//______________________________________________________________________________
25class msrLigature;
26typedef SMARTP<msrLigature> S_msrLigature;
27
28class msrLigature : public msrElement
29{
30 public:
31
32 // data types
33 // ------------------------------------------------------
34
35 enum msrLigatureKind {
36 kLigatureNone,
37 kLigatureStart, kLigatureContinue, kLigatureStop};
38
39 static string ligatureKindAsString (
40 msrLigatureKind ligatureKind);
41
42 enum msrLigatureLineEndKind {
43 kLigatureLineEndNone,
44 kLigatureLineEndUp, kLigatureLineEndDown,
45 kLigatureLineEndBoth, kLigatureLineEndArrow };
46
47 static string ligatureLineEndKindAsString (
48 msrLigatureLineEndKind ligatureLineEndKind);
49
50 // creation from MusicXML
51 // ------------------------------------------------------
52
53 static SMARTP<msrLigature> create (
54 int inputLineNumber,
55 int ligatureNumber,
56 msrLigatureKind ligatureKind,
57 msrLigatureLineEndKind ligatureLineEndKind,
58 msrLineTypeKind ligatureLineTypeKind,
59 msrPlacementKind ligaturePlacementKind);
60
61 protected:
62
63 // constructors/destructor
64 // ------------------------------------------------------
65
67 int inputLineNumber,
68 int ligatureNumber,
69 msrLigatureKind ligatureKind,
70 msrLigatureLineEndKind ligatureLineEndKind,
71 msrLineTypeKind ligatureLineTypeKind,
72 msrPlacementKind ligaturePlacementKind);
73
74 virtual ~msrLigature ();
75
76 public:
77
78 // set and get
79 // ------------------------------------------------------
80
81 // sideLinks
82 void setLigatureOtherEndSideLink (
83 S_msrLigature otherEndSideLink);
84
85 S_msrLigature getLigatureOtherEndSideLink () const
86 { return fLigatureOtherEndSideLink; }
87
88 int getLigatureNumber () const
89 { return fLigatureNumber; }
90
91 msrLigatureKind getLigatureKind () const
92 { return fLigatureKind; }
93
94 msrLigatureLineEndKind
95 getLigatureLineEndKind () const
96 { return fLigatureLineEndKind; }
97
98 msrLineTypeKind getLigatureLineTypeKind () const
99 { return fLigatureLineTypeKind; }
100
101 msrPlacementKind getLigaturePlacementKind () const
102 { return fLigaturePlacementKind; }
103
104 void setLigaturePlacementKind (
105 msrPlacementKind placementKind)
106 { fLigaturePlacementKind = placementKind; }
107
108 // services
109 // ------------------------------------------------------
110
111 public:
112
113 // visitors
114 // ------------------------------------------------------
115
116 virtual void acceptIn (basevisitor* v);
117 virtual void acceptOut (basevisitor* v);
118
119 virtual void browseData (basevisitor* v);
120
121 public:
122
123 // print
124 // ------------------------------------------------------
125
126 string ligatureKindAsString () const;
127
128 virtual void print (ostream& os) const;
129
130 private:
131
132 // sideLinks
133 // ------------------------------------------------------
134 S_msrLigature fLigatureOtherEndSideLink; // two-way
135
136 // fields
137 // ------------------------------------------------------
138
139 int fLigatureNumber;
140
141 msrLigatureKind fLigatureKind;
142
143 msrLigatureLineEndKind
144 fLigatureLineEndKind;
145
146 msrLineTypeKind fLigatureLineTypeKind;
147
148 msrPlacementKind fLigaturePlacementKind;
149};
151EXP ostream& operator<< (ostream& os, const S_msrLigature& elt);
152
153
154} // namespace MusicXML2
155
156
157#endif
Definition: basevisitor.h:25
Definition: msrElements.h:26
Definition: msrLigatures.h:29