13 #ifndef __PLUGIN_API_ELEMENTS_H__
14 #define __PLUGIN_API_ELEMENTS_H__
16 #include "scoreelement.h"
17 #include "libmscore/element.h"
18 #include "libmscore/chord.h"
19 #include "libmscore/lyrics.h"
20 #include "libmscore/measure.h"
22 #include "libmscore/notedot.h"
23 #include "libmscore/segment.h"
24 #include "libmscore/accidental.h"
35 extern Element* wrap(Ms::Element* se, Ownership own = Ownership::SCORE);
38 #define API_PROPERTY(name, pid) \
39 Q_PROPERTY(QVariant name READ get_##name WRITE set_##name) \
40 QVariant get_##name() const { return get(Ms::Pid::pid); } \
41 void set_##name(QVariant val) { set(Ms::Pid::pid, val); }
49 #define API_PROPERTY_T(type, name, pid) \
50 Q_PROPERTY(type name READ get_##name WRITE set_##name) \
51 type get_##name() const { return get(Ms::Pid::pid).value<type>(); } \
52 void set_##name(type val) { set(Ms::Pid::pid, QVariant::fromValue(val)); }
54 #define API_PROPERTY_READ_ONLY(name, pid) \
55 Q_PROPERTY(QVariant name READ get_##name) \
56 QVariant get_##name() const { return get(Ms::Pid::pid); }
59 #define API_PROPERTY_READ_ONLY_T(type, name, pid) \
60 Q_PROPERTY(type name READ get_##name) \
61 type get_##name() const { return get(Ms::Pid::pid).value<type>(); } \
82 API_PROPERTY( subtype, SUBTYPE )
83 API_PROPERTY_READ_ONLY_T(
bool, selected, SELECTED )
84 API_PROPERTY_READ_ONLY_T(
bool, generated, GENERATED )
89 API_PROPERTY_T( QColor,
color, COLOR )
90 API_PROPERTY_T(
bool, visible, VISIBLE )
92 API_PROPERTY_T(
int,
z, Z )
93 API_PROPERTY( small, SMALL )
94 API_PROPERTY( showCourtesy, SHOW_COURTESY )
95 API_PROPERTY( lineType, LINE_TYPE )
96 API_PROPERTY( line, LINE )
97 API_PROPERTY( fixed, FIXED )
98 API_PROPERTY( fixedLine, FIXED_LINE )
103 API_PROPERTY( articulationAnchor, ARTICULATION_ANCHOR )
104 API_PROPERTY( direction, DIRECTION )
105 API_PROPERTY( stemDirection, STEM_DIRECTION )
106 API_PROPERTY( noStem, NO_STEM )
107 API_PROPERTY( slurDirection, SLUR_DIRECTION )
108 API_PROPERTY( leadingSpace, LEADING_SPACE )
109 API_PROPERTY( distribute, DISTRIBUTE )
110 API_PROPERTY( mirrorHead, MIRROR_HEAD )
111 API_PROPERTY( dotPosition, DOT_POSITION )
112 API_PROPERTY( tuning, TUNING )
113 API_PROPERTY( pause, PAUSE )
114 API_PROPERTY( barlineType, BARLINE_TYPE )
115 API_PROPERTY( barlineSpan, BARLINE_SPAN )
116 API_PROPERTY( barlineSpanFrom, BARLINE_SPAN_FROM )
117 API_PROPERTY( barlineSpanTo, BARLINE_SPAN_TO )
125 API_PROPERTY_T( QPointF,
offset, OFFSET )
126 API_PROPERTY( fret, FRET )
127 API_PROPERTY(
string, STRING )
128 API_PROPERTY( ghost, GHOST )
129 API_PROPERTY( play, PLAY )
130 API_PROPERTY( timesigNominal, TIMESIG_NOMINAL )
131 API_PROPERTY( timesigActual, TIMESIG_ACTUAL )
132 API_PROPERTY( numberType, NUMBER_TYPE )
133 API_PROPERTY( bracketType, BRACKET_TYPE )
134 API_PROPERTY( normalNotes, NORMAL_NOTES )
135 API_PROPERTY( actualNotes, ACTUAL_NOTES )
136 API_PROPERTY( p1, P1 )
137 API_PROPERTY( p2, P2 )
138 API_PROPERTY( growLeft, GROW_LEFT )
139 API_PROPERTY( growRight, GROW_RIGHT )
140 API_PROPERTY( boxHeight, BOX_HEIGHT )
141 API_PROPERTY( boxWidth, BOX_WIDTH )
142 API_PROPERTY( topGap, TOP_GAP )
143 API_PROPERTY( bottomGap, BOTTOM_GAP )
144 API_PROPERTY( leftMargin, LEFT_MARGIN )
145 API_PROPERTY( rightMargin, RIGHT_MARGIN )
146 API_PROPERTY( topMargin, TOP_MARGIN )
147 API_PROPERTY( bottomMargin, BOTTOM_MARGIN )
148 API_PROPERTY( layoutBreakType, LAYOUT_BREAK )
149 API_PROPERTY( autoscale, AUTOSCALE )
150 API_PROPERTY( size, SIZE )
151 API_PROPERTY( scale, SCALE )
152 API_PROPERTY( lockAspectRatio, LOCK_ASPECT_RATIO )
153 API_PROPERTY( sizeIsSpatium, SIZE_IS_SPATIUM )
154 API_PROPERTY( text, TEXT )
155 API_PROPERTY( beamPos, BEAM_POS )
156 API_PROPERTY( beamMode, BEAM_MODE )
157 API_PROPERTY( beamNoSlope, BEAM_NO_SLOPE )
158 API_PROPERTY( userLen, USER_LEN )
159 API_PROPERTY( space, SPACE )
160 API_PROPERTY( tempo, TEMPO )
161 API_PROPERTY( tempoFollowText, TEMPO_FOLLOW_TEXT )
162 API_PROPERTY( accidentalBracket, ACCIDENTAL_BRACKET )
163 API_PROPERTY( numeratorString, NUMERATOR_STRING )
164 API_PROPERTY( denominatorString, DENOMINATOR_STRING )
165 API_PROPERTY( fbprefix, FBPREFIX )
166 API_PROPERTY( fbdigit, FBDIGIT )
167 API_PROPERTY( fbsuffix, FBSUFFIX )
168 API_PROPERTY( fbcontinuationline, FBCONTINUATIONLINE )
169 API_PROPERTY( ottavaType, OTTAVA_TYPE )
170 API_PROPERTY( numbersOnly, NUMBERS_ONLY )
171 API_PROPERTY( trillType, TRILL_TYPE )
172 API_PROPERTY( vibratoType, VIBRATO_TYPE )
173 API_PROPERTY( hairpinCircledTip, HAIRPIN_CIRCLEDTIP )
174 API_PROPERTY( hairpinType, HAIRPIN_TYPE )
175 API_PROPERTY( hairpinHeight, HAIRPIN_HEIGHT )
176 API_PROPERTY( hairpinContHeight, HAIRPIN_CONT_HEIGHT )
177 API_PROPERTY( veloChange, VELO_CHANGE )
178 API_PROPERTY( singleNoteDynamics, SINGLE_NOTE_DYNAMICS )
179 API_PROPERTY( veloChangeMethod, VELO_CHANGE_METHOD )
180 API_PROPERTY( veloChangeSpeed, VELO_CHANGE_SPEED )
181 API_PROPERTY( dynamicRange, DYNAMIC_RANGE )
182 API_PROPERTY( placement, PLACEMENT )
183 API_PROPERTY( velocity, VELOCITY )
184 API_PROPERTY( jumpTo, JUMP_TO )
185 API_PROPERTY( playUntil, PLAY_UNTIL )
186 API_PROPERTY( continueAt, CONTINUE_AT )
187 API_PROPERTY( label, LABEL )
188 API_PROPERTY( markerType, MARKER_TYPE )
189 API_PROPERTY( arpUserLen1, ARP_USER_LEN1 )
190 API_PROPERTY( arpUserLen2, ARP_USER_LEN2 )
191 API_PROPERTY( measureNumberMode, MEASURE_NUMBER_MODE )
192 API_PROPERTY( glissType, GLISS_TYPE )
193 API_PROPERTY( glissText, GLISS_TEXT )
194 API_PROPERTY( glissShowText, GLISS_SHOW_TEXT )
195 API_PROPERTY( diagonal, DIAGONAL )
196 API_PROPERTY( groups, GROUPS )
197 API_PROPERTY( lineStyle, LINE_STYLE )
198 API_PROPERTY( lineColor, COLOR )
199 API_PROPERTY( lineWidth, LINE_WIDTH )
200 API_PROPERTY( lassoPos, LASSO_POS )
201 API_PROPERTY( lassoSize, LASSO_SIZE )
202 API_PROPERTY( timeStretch, TIME_STRETCH )
203 API_PROPERTY( ornamentStyle, ORNAMENT_STYLE )
204 API_PROPERTY( timesig, TIMESIG )
205 API_PROPERTY( timesigGlobal, TIMESIG_GLOBAL )
206 API_PROPERTY( timesigStretch, TIMESIG_STRETCH )
207 API_PROPERTY( timesigType, TIMESIG_TYPE )
208 API_PROPERTY( spannerTick, SPANNER_TICK )
209 API_PROPERTY( spannerTicks, SPANNER_TICKS )
210 API_PROPERTY( spannerTrack2, SPANNER_TRACK2 )
211 API_PROPERTY( userOff2, OFFSET2 )
212 API_PROPERTY( breakMmr, BREAK_MMR )
213 API_PROPERTY( repeatCount, REPEAT_COUNT )
214 API_PROPERTY( userStretch, USER_STRETCH )
215 API_PROPERTY( noOffset, NO_OFFSET )
216 API_PROPERTY( irregular, IRREGULAR )
217 API_PROPERTY( anchor, ANCHOR )
218 API_PROPERTY( slurUoff1, SLUR_UOFF1 )
219 API_PROPERTY( slurUoff2, SLUR_UOFF2 )
220 API_PROPERTY( slurUoff3, SLUR_UOFF3 )
221 API_PROPERTY( slurUoff4, SLUR_UOFF4 )
222 API_PROPERTY( staffMove, STAFF_MOVE )
223 API_PROPERTY( verse, VERSE )
224 API_PROPERTY( syllabic, SYLLABIC )
225 API_PROPERTY( lyricTicks, LYRIC_TICKS )
226 API_PROPERTY( volta_ending, VOLTA_ENDING )
227 API_PROPERTY( lineVisible, LINE_VISIBLE )
228 API_PROPERTY( mag, MAG )
229 API_PROPERTY( useDrumset, USE_DRUMSET )
230 API_PROPERTY( duration, DURATION )
231 API_PROPERTY( durationType, DURATION_TYPE )
232 API_PROPERTY( role, ROLE )
233 API_PROPERTY_T(
int, track, TRACK )
234 API_PROPERTY( glissandoStyle, GLISSANDO_STYLE )
235 API_PROPERTY( fretStrings, FRET_STRINGS )
236 API_PROPERTY( fretFrets, FRET_FRETS )
238 API_PROPERTY( fretOffset, FRET_OFFSET )
239 API_PROPERTY( fretNumPos, FRET_NUM_POS )
240 API_PROPERTY( systemBracket, SYSTEM_BRACKET )
241 API_PROPERTY( gap, GAP )
243 API_PROPERTY_T(
bool,
autoplace, AUTOPLACE )
244 API_PROPERTY( dashLineLen, DASH_LINE_LEN )
245 API_PROPERTY( dashGapLen, DASH_GAP_LEN )
247 API_PROPERTY( playbackVoice1, PLAYBACK_VOICE1 )
248 API_PROPERTY( playbackVoice2, PLAYBACK_VOICE2 )
249 API_PROPERTY( playbackVoice3, PLAYBACK_VOICE3 )
250 API_PROPERTY( playbackVoice4, PLAYBACK_VOICE4 )
251 API_PROPERTY( symbol, SYMBOL )
252 API_PROPERTY( playRepeats, PLAY_REPEATS )
253 API_PROPERTY( createSystemHeader, CREATE_SYSTEM_HEADER )
254 API_PROPERTY( staffLines, STAFF_LINES )
255 API_PROPERTY( lineDistance, LINE_DISTANCE )
256 API_PROPERTY( stepOffset, STEP_OFFSET )
257 API_PROPERTY( staffShowBarlines, STAFF_SHOW_BARLINES )
258 API_PROPERTY( staffShowLedgerlines, STAFF_SHOW_LEDGERLINES )
259 API_PROPERTY( staffSlashStyle, STAFF_SLASH_STYLE )
260 API_PROPERTY( staffNoteheadScheme, STAFF_NOTEHEAD_SCHEME )
261 API_PROPERTY( staffGenClef, STAFF_GEN_CLEF )
262 API_PROPERTY( staffGenTimesig, STAFF_GEN_TIMESIG )
263 API_PROPERTY( staffGenKeysig, STAFF_GEN_KEYSIG )
264 API_PROPERTY( staffYoffset, STAFF_YOFFSET )
265 API_PROPERTY( staffUserdist, STAFF_USERDIST )
266 API_PROPERTY( staffBarlineSpan, STAFF_BARLINE_SPAN )
267 API_PROPERTY( staffBarlineSpanFrom, STAFF_BARLINE_SPAN_FROM )
268 API_PROPERTY( staffBarlineSpanTo, STAFF_BARLINE_SPAN_TO )
269 API_PROPERTY( bracketSpan, BRACKET_SPAN )
270 API_PROPERTY( bracketColumn, BRACKET_COLUMN )
271 API_PROPERTY( inameLayoutPosition, INAME_LAYOUT_POSITION )
272 API_PROPERTY( subStyle, SUB_STYLE )
273 API_PROPERTY( fontFace, FONT_FACE )
274 API_PROPERTY( fontSize, FONT_SIZE )
275 API_PROPERTY( fontStyle, FONT_STYLE )
276 API_PROPERTY( frameType, FRAME_TYPE )
277 API_PROPERTY( frameWidth, FRAME_WIDTH )
278 API_PROPERTY( framePadding, FRAME_PADDING )
279 API_PROPERTY( frameRound, FRAME_ROUND )
280 API_PROPERTY( frameFgColor, FRAME_FG_COLOR )
281 API_PROPERTY( frameBgColor, FRAME_BG_COLOR )
282 API_PROPERTY( sizeSpatiumDependent, SIZE_SPATIUM_DEPENDENT )
283 API_PROPERTY( align, ALIGN )
284 API_PROPERTY( systemFlag, SYSTEM_FLAG )
285 API_PROPERTY( beginText, BEGIN_TEXT )
286 API_PROPERTY( beginTextAlign, BEGIN_TEXT_ALIGN )
287 API_PROPERTY( beginTextPlace, BEGIN_TEXT_PLACE )
288 API_PROPERTY( beginHookType, BEGIN_HOOK_TYPE )
289 API_PROPERTY( beginHookHeight, BEGIN_HOOK_HEIGHT )
290 API_PROPERTY( beginFontFace, BEGIN_FONT_FACE )
291 API_PROPERTY( beginFontSize, BEGIN_FONT_SIZE )
292 API_PROPERTY( beginFontStyle, BEGIN_FONT_STYLE )
293 API_PROPERTY( beginTextOffset, BEGIN_TEXT_OFFSET )
294 API_PROPERTY( continueText, CONTINUE_TEXT )
295 API_PROPERTY( continueTextAlign, CONTINUE_TEXT_ALIGN )
296 API_PROPERTY( continueTextPlace, CONTINUE_TEXT_PLACE )
297 API_PROPERTY( continueFontFace, CONTINUE_FONT_FACE )
298 API_PROPERTY( continueFontSize, CONTINUE_FONT_SIZE )
299 API_PROPERTY( continueFontStyle, CONTINUE_FONT_STYLE )
300 API_PROPERTY( continueTextOffset, CONTINUE_TEXT_OFFSET )
301 API_PROPERTY( endText, END_TEXT )
302 API_PROPERTY( endTextAlign, END_TEXT_ALIGN )
303 API_PROPERTY( endTextPlace, END_TEXT_PLACE )
304 API_PROPERTY( endHookType, END_HOOK_TYPE )
305 API_PROPERTY( endHookHeight, END_HOOK_HEIGHT )
306 API_PROPERTY( endFontFace, END_FONT_FACE )
307 API_PROPERTY( endFontSize, END_FONT_SIZE )
308 API_PROPERTY( endFontStyle, END_FONT_STYLE )
309 API_PROPERTY( endTextOffset, END_TEXT_OFFSET )
310 API_PROPERTY( posAbove, POS_ABOVE )
311 API_PROPERTY_T(
int, voice, VOICE )
312 API_PROPERTY_READ_ONLY( position, POSITION )
314 qreal
offsetX()
const {
return element()->offset().x() / element()->spatium(); }
315 qreal
offsetY()
const {
return element()->offset().y() / element()->spatium(); }
316 void setOffsetX(qreal offX);
317 void setOffsetY(qreal offY);
321 Element(Ms::Element* e =
nullptr, Ownership own = Ownership::PLUGIN)
322 :
Ms::PluginAPI::ScoreElement(e, own) {}
326 Ms::Element* element() {
return toElement(e); }
327 const Ms::Element* element()
const {
return toElement(e); }
334 Q_INVOKABLE QString subtypeName()
const {
return element()->subtypeName(); }
347 Q_PROPERTY(
Ms::AccidentalType accidentalType READ accidentalType WRITE setAccidentalType)
348 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Element> dots READ dots)
350 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Element> elements READ elements)
376 API_PROPERTY_T(
int,
tpc1, TPC1 )
381 API_PROPERTY_T(
int,
tpc2, TPC2 )
387 Q_PROPERTY(
int tpc READ
tpc WRITE setTpc)
393 API_PROPERTY_T(
int, veloOffset, VELO_OFFSET )
397 Note(
Ms::
Note* c =
nullptr, Ownership own = Ownership::PLUGIN)
400 Ms::Note* note() {
return toNote(e); }
401 const Ms::Note* note()
const {
return toNote(e); }
403 int tpc()
const {
return note()->tpc(); }
404 void setTpc(
int val);
406 QQmlListProperty<Element> dots() {
return wrapContainerProperty<Element>(
this, note()->dots()); }
407 QQmlListProperty<Element> elements() {
return wrapContainerProperty<Element>(
this, note()->el()); }
409 Element* accidental() {
return wrap<Element>(note()->accidental()); }
424 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Chord> graceNotes READ graceNotes)
425 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Note> notes READ notes )
426 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Element> lyrics READ lyrics )
437 Chord(Ms::Chord* c =
nullptr, Ownership own = Ownership::PLUGIN)
440 Ms::Chord* chord() {
return toChord(e); }
441 const Ms::Chord* chord()
const {
return toChord(e); }
443 QQmlListProperty<Chord> graceNotes() {
return wrapContainerProperty<Chord>(
this, chord()->graceNotes()); }
444 QQmlListProperty<Note> notes() {
return wrapContainerProperty<Note>(
this, chord()->notes()); }
445 QQmlListProperty<Element> lyrics() {
return wrapContainerProperty<Element>(
this, chord()->lyrics()); }
487 Q_PROPERTY(
int tick READ tick)
492 Segment(Ms::Segment* s =
nullptr, Ownership own = Ownership::SCORE)
495 Ms::Segment* segment() {
return toSegment(e); }
496 const Ms::Segment* segment()
const {
return toSegment(e); }
498 int tick()
const {
return segment()->tick().ticks(); }
502 Segment* nextInScore() {
return wrap<Segment>(segment()->next1()); }
504 Segment* prevInScore() {
return wrap<Segment>(segment()->prev1()); }
506 QQmlListProperty<Element>
annotations() {
return wrapContainerProperty<Element>(
this, segment()->
annotations()); }
536 Measure(Ms::Measure* m =
nullptr, Ownership own = Ownership::SCORE)
539 Ms::Measure* measure() {
return toMeasure(e); }
540 const Ms::Measure* measure()
const {
return toMeasure(e); }
542 Segment*
firstSegment() {
return wrap<Segment>(measure()->firstEnabled(), Ownership::SCORE); }
545 Measure* prevMeasure() {
return wrap<Measure>(measure()->prevMeasure(), Ownership::SCORE); }
546 Measure* nextMeasure() {
return wrap<Measure>(measure()->nextMeasure(), Ownership::SCORE); }
551 #undef API_PROPERTY_T
552 #undef API_PROPERTY_READ_ONLY
553 #undef API_PROPERTY_READ_ONLY_T