LibMusicXML 3.18
msrTuplets_MUT_DEP.h
1/*
2 This file is to be included only by msrMutualDependencies.h,
3 to satisfy declarations mutual dependencies.
4*/
5
6//______________________________________________________________________________
7class msrTuplet : public msrTupletElement
8{
9 public:
10
11 // data types
12 // ------------------------------------------------------
13
14 enum msrTupletTypeKind {
15 kTupletTypeNone,
16 kTupletTypeStart, kTupletTypeContinue, kTupletTypeStop,
17 kTupletTypeStartAndStopInARow };
18
19 static string tupletTypeKindAsString (
20 msrTupletTypeKind tupletTypeKind);
21
22 enum msrTupletBracketKind {
23 kTupletBracketYes, kTupletBracketNo};
24
25 static string tupletBracketKindAsString (
26 msrTupletBracketKind tupletBracketKind);
27
28 enum msrTupletLineShapeKind {
29 kTupletLineShapeStraight, kTupletLineShapeCurved};
30
31 static string tupletLineShapeKindAsString (
32 msrTupletLineShapeKind tupletLineShapeKind);
33
34 enum msrTupletShowNumberKind {
35 kTupletShowNumberActual, kTupletShowNumberBoth, kTupletShowNumberNone };
36
37 static string tupletShowNumberKindAsString (
38 msrTupletShowNumberKind tupletShowNumberKind);
39
40 enum msrTupletShowTypeKind {
41 kTupletShowTypeActual, kTupletShowTypeBoth, kTupletShowTypeNone };
42
43 static string tupletShowTypeKindAsString (
44 msrTupletShowTypeKind tupletShowTypeKind);
45
46 // creation from MusicXML
47 // ------------------------------------------------------
48
49 static SMARTP<msrTuplet> create (
50 int inputLineNumber,
51 string tupletMeasureNumber,
52 int tupletNumber,
53 msrTupletBracketKind tupletBracketKind,
54 msrTupletLineShapeKind tupletLineShapeKind,
55 msrTupletShowNumberKind tupletShowNumberKind,
56 msrTupletShowTypeKind tupletShowTypeKind,
57 msrTupletFactor tupletFactor,
58 rational memberNotesSoundingWholeNotes,
59 rational memberNotesDisplayWholeNotes);
60
61 SMARTP<msrTuplet> createTupletNewbornClone ();
62
63 SMARTP<msrTuplet> createTupletDeepCopy ();
64
65 protected:
66
67 // constructors/destructor
68 // ------------------------------------------------------
69
70 msrTuplet (
71 int inputLineNumber,
72 string tupletMeasureNumber,
73 int tupletNumber,
74 msrTupletBracketKind tupletBracketKind,
75 msrTupletLineShapeKind tupletLineShapeKind,
76 msrTupletShowNumberKind tupletShowNumberKind,
77 msrTupletShowTypeKind tupletShowTypeKind,
78 msrTupletFactor tupletFactor,
79 rational memberNotesSoundingWholeNotes,
80 rational memberNotesDisplayWholeNotes);
81
82 virtual ~msrTuplet ();
83
84 public:
85
86 // set and get
87 // ------------------------------------------------------
88
89 // tuplet uplink
90 void setTupletTupletUpLink (
91 const S_msrTuplet& tuplet)
92 { fTupletTupletUpLink = tuplet; }
93
94 S_msrTuplet getTupletTupletUpLink () const
95 { return fTupletTupletUpLink; }
96
97 // measure upLink
98 void setTupletMeasureUpLink (
99 const S_msrMeasure& measure)
100 { fTupletMeasureUpLink = measure; }
101
102 S_msrMeasure getTupletMeasureUpLink () const
103 { return fTupletMeasureUpLink; }
104
105 // positions in measures
106 rational setTupletMembersPositionInMeasure (
107 S_msrMeasure measure,
108 rational positionInMeasure);
109 // returns the position after the tuplet JMI ???
110
111 int getTupletNumber () const
112 { return fTupletNumber; }
113
114 msrTupletBracketKind getTupletBracketKind () const
115 { return fTupletBracketKind; }
116
117 msrTupletLineShapeKind
118 getTupletLineShapeKind () const
119 { return fTupletLineShapeKind; }
120
121 msrTupletShowNumberKind
122 getTupletShowNumberKind () const
123 { return fTupletShowNumberKind; }
124
125 msrTupletShowTypeKind getTupletShowTypeKind () const
126 { return fTupletShowTypeKind; }
127
128 const msrTupletFactor&
129 getTupletFactor ()
130 { return fTupletFactor; }
131
132 rational getMemberNotesSoundingWholeNotes () const
133 { return fMemberNotesSoundingWholeNotes; }
134 rational getMemberNotesDisplayWholeNotes () const
135 { return fMemberNotesDisplayWholeNotes; }
136
137/* JMI
138 const list<S_msrTupletElement>&
139 getTupletElementsList () const
140 { return fTupletElementsList; }
141 */
142
143 rational getTupletSoundingWholeNotes () const
144 // JMI { return fTupletSoundingWholeNotes; }
145 { return fMeasureElementSoundingWholeNotes; }
146
147 rational getTupletDisplayWholeNotes () const
148 { return fTupletDisplayWholeNotes; }
149
150 // services
151 // ------------------------------------------------------
152
153 void addNoteToTuplet (
154 S_msrNote note,
155 S_msrVoice voice);
156
157 void addChordToTuplet (S_msrChord chord);
158
159 void addTupletToTuplet (S_msrTuplet tuplet);
160
161 void addTupletToTupletClone (S_msrTuplet tuplet);
162
163 S_msrNote fetchTupletFirstNonGraceNote () const;
164
165 S_msrNote removeFirstNoteFromTuplet ( // JMI
166 int inputLineNumber);
167 S_msrNote removeLastNoteFromTuplet (
168 int inputLineNumber);
169
170 // JMI void applyDisplayFactorToTupletMembers ();
171
172 void unapplySoundingFactorToTupletMembers (
173 const msrTupletFactor& containingTupletFactor);
174
175/* JMI
176 // finalization
177 void finalizeTuplet (
178 int inputLineNumber);
179*/
180
181 public:
182
183 // visitors
184 // ------------------------------------------------------
185
186 virtual void acceptIn (basevisitor* v);
187 virtual void acceptOut (basevisitor* v);
188
189 virtual void browseData (basevisitor* v);
190
191 public:
192
193 // print
194 // ------------------------------------------------------
195
196 string asString () const;
197
198 virtual void print (ostream& os) const;
199
200 virtual void printShort (indentedOstream& os);
201
202 private:
203
204 // fields
205 // ------------------------------------------------------
206
207 // upLink
208 S_msrMeasure fTupletMeasureUpLink;
209 S_msrTuplet fTupletTupletUpLink;
210
211 int fTupletNumber;
212
213 // appearance
214 msrTupletBracketKind fTupletBracketKind;
215
216 msrTupletLineShapeKind
217 fTupletLineShapeKind;
218
219 msrTupletShowNumberKind
220 fTupletShowNumberKind;
221
222 msrTupletShowTypeKind fTupletShowTypeKind;
223
224 // factor
225 msrTupletFactor fTupletFactor;
226
227 // member notes
228 rational fMemberNotesSoundingWholeNotes;
229 rational fMemberNotesDisplayWholeNotes;
230
231// JMI rational fTupletSoundingWholeNotes;
232 // display whole notes
233 rational fTupletDisplayWholeNotes;
234
235 list<S_msrTupletElement>
236 fTupletElementsList;
237};
238typedef SMARTP<msrTuplet> S_msrTuplet;
239EXP ostream& operator<< (ostream& os, const S_msrTuplet& elt);
240
Definition: msrTuplets_MUT_DEP.h:8
Rational number representation.
Definition: rational.h:25