Canorus  0.0
muselementfactory.h
Go to the documentation of this file.
1 
10 #ifndef MUSELEMENTFACTORY_H_
11 #define MUSELEMENTFACTORY_H_
12 #include "score/barline.h"
13 
14 #include "score/staff.h"
15 #include "score/muselement.h"
16 #include "score/clef.h"
17 #include "score/keysignature.h"
18 #include "score/timesignature.h"
19 #include "score/voice.h"
20 #include "score/rest.h"
21 #include "score/slur.h"
22 #include "score/figuredbassmark.h"
23 #include "score/functionmark.h"
24 #include "score/lyricscontext.h"
25 #include "score/syllable.h"
26 #include "score/mark.h"
27 #include "score/articulation.h"
28 #include "score/fermata.h"
29 #include "score/tempo.h"
30 #include "score/ritardando.h"
31 #include "score/crescendo.h"
32 #include "score/repeatmark.h"
33 #include "score/fingering.h"
34 #include "score/playablelength.h"
35 #include "score/diatonickey.h"
36 
37 class CAMusElement;
38 
40 public:
43 
45 
46  void removeMusElem( bool bReallyRemove = false );
47 
48  void configureMusElem( CAMusElement &roMusElement );
49 
50  inline CAMusElement *musElement() { return mpoMusElement; };
51  inline void setMusElement( CAMusElement *elt ) { mpoMusElement = elt; }
52 
54  inline void emptyMusElem() { mpoMusElement = mpoEmpty; }
55 
56  bool configureClef( CAStaff *staff,
57  CAMusElement *right );
58 
59  bool configureKeySignature( CAStaff *staff,
60  CAMusElement *right );
61 
62  bool configureTimeSignature( CAStaff *staff,
63  CAMusElement *right );
64 
65  bool configureBarline( CAStaff *staff,
66  CAMusElement *right );
67 
68  bool configureRest( CAVoice *voice,
69  CAMusElement *right );
70 
71 
72  bool configureNote( int pitch,
73  CAVoice *voice,
74  CAMusElement *right,
75  bool addToChord
76  );
77 
78  bool configureTuplet( QList<CAPlayable*> listOfNotes );
79 
80  bool configureSlur( CAStaff *staff,
81  CANote *noteStart, CANote *noteEnd );
82 
83  bool configureMark( CAMusElement *elt );
84 
86 
88  int timeStart, int timeLength );
89 
92 
94 
97 
98  void addPlayableDotted( int add, CAPlayableLength curLength );
99 
101 
103  { _eNoteStemDirection = eDir; }
104 
105  inline int noteAccs() { return _iNoteAccs; };
106 
107  inline void setNoteAccs( int iNoteAccs )
108  { _iNoteAccs = iNoteAccs; };
109 
110  inline void addNoteAccs( int iAdd )
111  { if (_iNoteAccs+iAdd < 3) _iNoteAccs+= iAdd; };
112 
113  inline void subNoteAccs( int iSub )
114  { if (_iNoteAccs-iSub > -3) _iNoteAccs-= iSub; };
115 
117  inline void setDiatonicKeyNumberOfAccs(int accs) { _diatonicKeyNumberOfAccs = accs; }
120 
121  inline int noteExtraAccs() { return _iNoteExtraAccs; };
122 
123  inline void setNoteExtraAccs( int iNoteExtraAccs )
124  { _iNoteExtraAccs = iNoteExtraAccs; };
125 
126  inline void addNoteExtraAccs( int iAdd )
127  { _iNoteExtraAccs += iAdd; };
128 
129  inline void subNoteExtraAccs( int iSub )
130  { _iNoteExtraAccs -= iSub; };
131 
133 
134  inline void setRestType(CARest::CARestType eType)
135  { _eRestType = eType; }
136 
137  inline int timeSigBeats() { return _iTimeSigBeats; }
138  inline void setTimeSigBeats( int iTimeSigBeats )
139  { _iTimeSigBeats = iTimeSigBeats; };
140 
141  inline int timeSigBeat() { return _iTimeSigBeat; }
142  inline void setTimeSigBeat( int iTimeSigBeat )
143  { _iTimeSigBeat = iTimeSigBeat; };
144 
146  inline void setClef( CAClef::CAPredefinedClefType eClefType )
147  { _eClef = eClefType; };
148 
149  inline int clefOffset() { return _iClefOffset; } // readable offset interval, not internal offset
150  inline void setClefOffset( int offset )
151  { _iClefOffset= offset; };
152 
155  { _eBarlineType = type; }
156 
157  inline int tupletNumber() { return _tupletNumber; }
158  inline void setTupletNumber( int number ) { _tupletNumber = number; }
159 
160  inline int tupletActualNumber() { return _tupletActualNumber; }
161  inline void setTupletActualNumber( int actualNumber ) { _tupletActualNumber = actualNumber; }
162 
164  inline void setSlurType( CASlur::CASlurType type ) { _eSlurType = type; }
165 
167  inline void setSlurStyle( CASlur::CASlurStyle style ) { _slurStyle = style; }
168 
169  inline CAMark::CAMarkType markType() { return _markType; }
170  inline void setMarkType( CAMark::CAMarkType t ) { _markType = t; }
171 
174 
175  inline int fbmNumber() { return _fbmNumber; }
176  inline void setFBMNumber( int n ) { _fbmNumber = n; }
177  inline int fbmAccs() { return _fbmAccs; }
178  inline void setFBMAccs( int n ) { _fbmAccs= n; }
179  inline bool fbmAccsVisible() { return _fbmAccsVisible; }
180  inline void setFBMAccsVisible( int n ) { _fbmAccsVisible = n; }
181 
184 
187 
190 
191  inline bool isFMFunctionMinor() { return _fmFunctionMinor; }
192  inline void setFMFunctionMinor( bool m ) { _fmFunctionMinor = m; }
193 
194  inline bool isFMTonicDegreeMinor() { return _fmTonicDegreeMinor; }
195  inline void setFMTonicDegreeMinor( bool m ) { _fmTonicDegreeMinor = m; }
196 
197  inline bool isFMChordAreaMinor() { return _fmChordAreaMinor; }
198  inline void setFMChordAreaMinor( bool m ) { _fmChordAreaMinor = m; }
199 
200  inline bool isFMEllipse() { return _fmEllipse; }
201  inline void setFMEllipse( bool e ) { _fmEllipse = e; }
202 
203  inline const QString dynamicText() { return _dynamicText; }
204  inline void setDynamicText( const QString t ) { _dynamicText = t; }
205 
206  inline const int dynamicVolume() { return _dynamicVolume; }
207  inline void setDynamicVolume( const int vol ) { _dynamicVolume = vol; }
208 
209  inline const int instrument() { return _instrument; }
210  inline void setInstrument( const int instrument ) { _instrument = instrument; }
211 
213  inline void setFermataType( const CAFermata::CAFermataType type ) { _fermataType = type; }
214 
215  inline const int tempoBpm() { return _tempoBpm; }
216  inline void setTempoBpm( const int tempoBpm ) { _tempoBpm = tempoBpm; }
217 
218  inline CAPlayableLength& tempoBeat() { return _tempoBeat; }
219  inline void setTempoBeat( CAPlayableLength& length ) { _tempoBeat = length; }
220 
223 
224  inline const int crescendoFinalVolume() { return _crescendoFinalVolume; }
225  inline void setCrescendoFinalVolume( const int v ) { _crescendoFinalVolume = v; }
226 
229 
232 
233  inline const int repeatMarkVoltaNumber() { return _repeatMarkVoltaNumber; }
234  inline void setRepeatMarkVoltaNumber( const int n ) { _repeatMarkVoltaNumber = n; }
235 
238 
239  inline const bool isFingeringOriginal() { return _fingeringOriginal; }
240  inline void setFingeringOriginal( const int o ) { _fingeringOriginal = o; }
241 private:
242  CAMusElement *mpoMusElement; // Newly created music element itself
243  CAMusElement *mpoEmpty; // An empty (dummy) element.
244 
246  // Element creation parameters //
249 
250  // Staff music elements
251  CAPlayableLength _playableLength; // Length of note/rest to be added
252  CANote::CAStemDirection _eNoteStemDirection; // Note stem direction to be inserted
253  CASlur::CASlurType _eSlurType; // Slur type to be placed
254  int _tupletNumber; // Tuplet number of notes
255  int _tupletActualNumber; // Tuplet actual number of notes
256  int _iPlayableDotted; // Number of dots to be inserted for the note/rest
257  int _iNoteExtraAccs; // Extra note accidentals for new notes which user adds/removes with +/- keys
258  int _iNoteAccs; // Note accidentals at specific coordinates updated regularily when in insert mode
259  CARest::CARestType _eRestType; // Hidden/Normal rest
260  int _diatonicKeyNumberOfAccs; // Key signature number of accidentals
261  CADiatonicKey::CAGender _diatonicKeyGender; // Major/Minor gender of the key signature
262  int _iTimeSigBeats; // Time signature number of beats to be inserted
263  int _iTimeSigBeat; // Time signature beat to be inserted
264  CAClef::CAPredefinedClefType _eClef; // Type of the clef to be inserted
265  int _iClefOffset; // Interval offset for the clef
266  CABarline::CABarlineType _eBarlineType; // Type of the barline
267  CAMark::CAMarkType _markType; // Type of the mark
268  CAArticulation::CAArticulationType _articulationType; // Type of the articulation mark
269  CASlur::CASlurStyle _slurStyle; // Style of the slur (solid, dotted)
270 
271  // Figured bass
272  int _fbmNumber; // Figured bass number
273  int _fbmAccs; // Figured bass accidentals
274  bool _fbmAccsVisible; // Are accidentals visible
275 
276  // Function Mark
278  CAFunctionMark::CAFunctionType _fmChordArea; // Chord area of the function
279  CAFunctionMark::CAFunctionType _fmTonicDegree; // Tonic degree of the function
284 
285  // Marks
286  QString _dynamicText;
299 };
300 #endif // MUSELEMENTFACTORY_H_
CAFunctionMark::CAFunctionType _fmTonicDegree
Definition: muselementfactory.h:279
void setFMFunction(CAFunctionMark::CAFunctionType f)
Definition: muselementfactory.h:183
bool isFMFunctionMinor()
Definition: muselementfactory.h:191
void setNoteStemDirection(CANote::CAStemDirection eDir)
Definition: muselementfactory.h:102
bool _fmEllipse
Definition: muselementfactory.h:283
CASlur::CASlurType slurType()
Definition: muselementfactory.h:163
CAMusElement * musElement()
Definition: muselementfactory.h:50
void setFMTonicDegree(CAFunctionMark::CAFunctionType td)
Definition: muselementfactory.h:189
CAFingering::CAFingerNumber _fingeringFinger
Definition: muselementfactory.h:297
int _diatonicKeyNumberOfAccs
Definition: muselementfactory.h:260
CAPlayableLength & playableLength()
Definition: muselementfactory.h:93
int _tempoBpm
Definition: muselementfactory.h:291
bool configureFiguredBassNumber(CAFiguredBassMark *fbm)
Definition: muselementfactory.cpp:466
const CACrescendo::CACrescendoType crescendoType()
Definition: muselementfactory.h:227
CAFermataType
Definition: fermata.h:18
void cloneMusElem()
Definition: muselementfactory.h:53
CASlurType
Definition: slur.h:33
void setTupletNumber(int number)
Definition: muselementfactory.h:158
CAStemDirection
Direction of the note's stem.
Definition: note.h:20
void setDynamicVolume(const int vol)
Definition: muselementfactory.h:207
void setCrescendoType(const CACrescendo::CACrescendoType t)
Definition: muselementfactory.h:228
int _iTimeSigBeats
Definition: muselementfactory.h:262
void setNoteExtraAccs(int iNoteExtraAccs)
Definition: muselementfactory.h:123
bool configureKeySignature(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:161
void setDynamicText(const QString t)
Definition: muselementfactory.h:204
void setRitardandoType(CARitardando::CARitardandoType t)
Definition: muselementfactory.h:222
CASlur::CASlurType _eSlurType
Definition: muselementfactory.h:253
int timeSigBeats()
Definition: muselementfactory.h:137
Definition: figuredbassmark.h:17
bool configureMark(CAMusElement *elt)
Definition: muselementfactory.cpp:329
const int instrument()
Definition: muselementfactory.h:209
CADiatonicKey::CAGender diatonicKeyGender()
Definition: muselementfactory.h:118
CARepeatMarkType
Definition: repeatmark.h:17
void setRepeatMarkType(const CARepeatMark::CARepeatMarkType t)
Definition: muselementfactory.h:231
bool _fbmAccsVisible
Definition: muselementfactory.h:274
void emptyMusElem()
Definition: muselementfactory.h:54
void configureMusElem(CAMusElement &roMusElement)
CARest::CARestType restType()
Definition: muselementfactory.h:132
CARepeatMark::CARepeatMarkType _repeatMarkType
Definition: muselementfactory.h:295
bool isFMTonicDegreeMinor()
Definition: muselementfactory.h:194
int _fingeringOriginal
Definition: muselementfactory.h:298
Class which represents a voice in the staff.
Definition: voice.h:23
int tupletNumber()
Definition: muselementfactory.h:157
int _tupletNumber
Definition: muselementfactory.h:254
CARestType
Definition: rest.h:17
void setClefOffset(int offset)
Definition: muselementfactory.h:150
CAArticulation::CAArticulationType articulationType()
Definition: muselementfactory.h:172
void setFermataType(const CAFermata::CAFermataType type)
Definition: muselementfactory.h:213
CAFunctionMark::CAFunctionType fmChordArea()
Definition: muselementfactory.h:185
bool configureNote(int pitch, CAVoice *voice, CAMusElement *right, bool addToChord)
Definition: muselementfactory.cpp:216
CAFunctionMark::CAFunctionType _fmFunction
Definition: muselementfactory.h:277
void setTimeSigBeat(int iTimeSigBeat)
Definition: muselementfactory.h:142
void setClef(CAClef::CAPredefinedClefType eClefType)
Definition: muselementfactory.h:146
CAMusElement::CAMusElementType musElementType()
Definition: muselementfactory.h:90
int noteAccs()
Definition: muselementfactory.h:105
CAMusElementFactory()
Definition: muselementfactory.cpp:57
bool _fmChordAreaMinor
Definition: muselementfactory.h:281
CAFunctionMark::CAFunctionType fmTonicDegree()
Definition: muselementfactory.h:188
Represents a note in the score.
Definition: note.h:18
const QString dynamicText()
Definition: muselementfactory.h:203
bool configureBarline(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:197
void setRestType(CARest::CARestType eType)
Definition: muselementfactory.h:134
void setSlurStyle(CASlur::CASlurStyle style)
Definition: muselementfactory.h:167
void subNoteExtraAccs(int iSub)
Definition: muselementfactory.h:129
CAPredefinedClefType
Definition: clef.h:20
void addPlayableDotted(int add, CAPlayableLength curLength)
Definition: muselementfactory.cpp:126
CAMusElement::CAMusElementType _musElementType
Definition: muselementfactory.h:248
void setMusElement(CAMusElement *elt)
Definition: muselementfactory.h:51
CANote::CAStemDirection noteStemDirection()
Definition: muselementfactory.h:100
void removeMusElem(bool bReallyRemove=false)
Definition: muselementfactory.cpp:119
void setCrescendoFinalVolume(const int v)
Definition: muselementfactory.h:225
bool isFMEllipse()
Definition: muselementfactory.h:200
void subNoteAccs(int iSub)
Definition: muselementfactory.h:113
const bool isFingeringOriginal()
Definition: muselementfactory.h:239
Musical length of notes and rests.
Definition: playablelength.h:16
CAMarkType
Definition: mark.h:17
void addNoteExtraAccs(int iAdd)
Definition: muselementfactory.h:126
int _fbmNumber
Definition: muselementfactory.h:272
CAMusElementType
Definition: muselement.h:23
void addNoteAccs(int iAdd)
Definition: muselementfactory.h:110
const int repeatMarkVoltaNumber()
Definition: muselementfactory.h:233
const int dynamicVolume()
Definition: muselementfactory.h:206
const CARitardando::CARitardandoType ritardandoType()
Definition: muselementfactory.h:221
const CAFingering::CAFingerNumber fingeringFinger()
Definition: muselementfactory.h:236
Context for function marks.
Definition: functionmarkcontext.h:19
CAFunctionType
Definition: functionmark.h:20
void setPlayableLength(CAPlayableLength &playableLength)
Definition: muselementfactory.h:95
void setFMFunctionMinor(bool m)
Definition: muselementfactory.h:192
void setArticulationType(CAArticulation::CAArticulationType t)
Definition: muselementfactory.h:173
CAFunctionMark::CAFunctionType fmFunction()
Definition: muselementfactory.h:182
int _dynamicVolume
Definition: muselementfactory.h:287
CABarline::CABarlineType barlineType()
Definition: muselementfactory.h:153
void setTempoBeat(CAPlayableLength &length)
Definition: muselementfactory.h:219
void setFBMAccsVisible(int n)
Definition: muselementfactory.h:180
CADiatonicKey::CAGender _diatonicKeyGender
Definition: muselementfactory.h:261
int noteExtraAccs()
Definition: muselementfactory.h:121
CAArticulationType
Definition: articulation.h:16
int _tupletActualNumber
Definition: muselementfactory.h:255
int _iPlayableDotted
Definition: muselementfactory.h:256
int _iNoteAccs
Definition: muselementfactory.h:258
void setFBMAccs(int n)
Definition: muselementfactory.h:178
int _iNoteExtraAccs
Definition: muselementfactory.h:257
CAClef::CAPredefinedClefType clef()
Definition: muselementfactory.h:145
void setTimeSigBeats(int iTimeSigBeats)
Definition: muselementfactory.h:138
bool configureClef(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:145
CAPlayableLength & tempoBeat()
Definition: muselementfactory.h:218
CASlurStyle
Definition: slur.h:27
An abstract class which represents every music element in the score.
Definition: muselement.h:21
CAMark::CAMarkType _markType
Definition: muselementfactory.h:267
void setTupletActualNumber(int actualNumber)
Definition: muselementfactory.h:161
CAMusElement * mpoMusElement
Definition: muselementfactory.h:242
void setFMEllipse(bool e)
Definition: muselementfactory.h:201
int fbmAccs()
Definition: muselementfactory.h:177
CARitardando::CARitardandoType _ritardandoType
Definition: muselementfactory.h:292
CASlur::CASlurStyle slurStyle()
Definition: muselementfactory.h:166
CAMusElement * mpoEmpty
Definition: muselementfactory.h:243
CASlur::CASlurStyle _slurStyle
Definition: muselementfactory.h:269
int fbmNumber()
Definition: muselementfactory.h:175
void setFingeringOriginal(const int o)
Definition: muselementfactory.h:240
bool isFMChordAreaMinor()
Definition: muselementfactory.h:197
void setFMChordArea(CAFunctionMark::CAFunctionType c)
Definition: muselementfactory.h:186
bool configureRest(CAVoice *voice, CAMusElement *right)
Definition: muselementfactory.cpp:442
bool _fmFunctionMinor
Definition: muselementfactory.h:280
CAMusElement * createMusElem()
void setDiatonicKeyNumberOfAccs(int accs)
Definition: muselementfactory.h:117
void setFBMNumber(int n)
Definition: muselementfactory.h:176
bool configureSlur(CAStaff *staff, CANote *noteStart, CANote *noteEnd)
Definition: muselementfactory.cpp:293
CABarlineType
Definition: barline.h:19
CABarline::CABarlineType _eBarlineType
Definition: muselementfactory.h:266
bool configureTimeSignature(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:179
CAPlayableLength _tempoBeat
Definition: muselementfactory.h:290
CAArticulation::CAArticulationType _articulationType
Definition: muselementfactory.h:268
Represents a staff in the sheet.
Definition: staff.h:25
CAFermata::CAFermataType _fermataType
Definition: muselementfactory.h:289
const CARepeatMark::CARepeatMarkType repeatMarkType()
Definition: muselementfactory.h:230
CANote::CAStemDirection _eNoteStemDirection
Definition: muselementfactory.h:252
void setRepeatMarkVoltaNumber(const int n)
Definition: muselementfactory.h:234
bool configureFunctionMark(CAFunctionMarkContext *fmc, int timeStart, int timeLength)
Definition: muselementfactory.cpp:484
CACrescendo::CACrescendoType _crescendoType
Definition: muselementfactory.h:294
CACrescendoType
Definition: crescendo.h:17
CAPlayableLength _playableLength
Definition: muselementfactory.h:251
void setBarlineType(CABarline::CABarlineType type)
Definition: muselementfactory.h:154
CAClef::CAPredefinedClefType _eClef
Definition: muselementfactory.h:264
int _fbmAccs
Definition: muselementfactory.h:273
bool _fmTonicDegreeMinor
Definition: muselementfactory.h:282
const int crescendoFinalVolume()
Definition: muselementfactory.h:224
void setMarkType(CAMark::CAMarkType t)
Definition: muselementfactory.h:170
void setNoteAccs(int iNoteAccs)
Definition: muselementfactory.h:107
void setMusElementType(CAMusElement::CAMusElementType eMEType)
Definition: muselementfactory.h:91
void setDiatonicKeyGender(CADiatonicKey::CAGender g)
Definition: muselementfactory.h:119
int _repeatMarkVoltaNumber
Definition: muselementfactory.h:296
int _crescendoFinalVolume
Definition: muselementfactory.h:293
bool fbmAccsVisible()
Definition: muselementfactory.h:179
int _iTimeSigBeat
Definition: muselementfactory.h:263
void setFingeringFinger(const CAFingering::CAFingerNumber f)
Definition: muselementfactory.h:237
QString _dynamicText
Definition: muselementfactory.h:286
int clefOffset()
Definition: muselementfactory.h:149
CAFunctionMark::CAFunctionType _fmChordArea
Definition: muselementfactory.h:278
int diatonicKeyNumberOfAccs()
Definition: muselementfactory.h:116
CAMark::CAMarkType markType()
Definition: muselementfactory.h:169
CARest::CARestType _eRestType
Definition: muselementfactory.h:259
virtual CAMusElement * clone(CAContext *context=0)=0
CAFingerNumber
Definition: fingering.h:18
void setTempoBpm(const int tempoBpm)
Definition: muselementfactory.h:216
creation, removal, configuration of music elements
Definition: muselementfactory.h:39
void setFMChordAreaMinor(bool m)
Definition: muselementfactory.h:198
const CAFermata::CAFermataType fermataType()
Definition: muselementfactory.h:212
CARitardandoType
Definition: ritardando.h:17
const int tempoBpm()
Definition: muselementfactory.h:215
int _instrument
Definition: muselementfactory.h:288
~CAMusElementFactory()
Definition: muselementfactory.cpp:110
void setFMTonicDegreeMinor(bool m)
Definition: muselementfactory.h:195
bool configureTuplet(QList< CAPlayable * > listOfNotes)
Definition: muselementfactory.cpp:504
int _iClefOffset
Definition: muselementfactory.h:265
void setInstrument(const int instrument)
Definition: muselementfactory.h:210
CAGender
Definition: diatonickey.h:17
int timeSigBeat()
Definition: muselementfactory.h:141
void setSlurType(CASlur::CASlurType type)
Definition: muselementfactory.h:164
int tupletActualNumber()
Definition: muselementfactory.h:160