1 //=============================================================================
2 //  MuseScore
3 //  Music Composition & Notation
4 //
5 //  Copyright (C) 2002-2011 Werner Schweer
6 //
7 //  This program is free software; you can redistribute it and/or modify
8 //  it under the terms of the GNU General Public License version 2
9 //  as published by the Free Software Foundation and appearing in
10 //  the file LICENCE.GPL
11 //=============================================================================
12 
13 #ifndef __STYLE_H__
14 #define __STYLE_H__
15 
16 #include "chordlist.h"
17 #include "types.h"
18 
19 namespace Ms {
20 
21 enum class Pid : int;
22 class XmlWriter;
23 struct ChordDescription;
24 class Element;
25 class Score;
26 
27 // Needs to be duplicated here and in sym.h since moc doesn't handle macros from #include'd files
28 #ifdef SCRIPT_INTERFACE
29 #define BEGIN_QT_REGISTERED_ENUM(Name) \
30 class MSQE_##Name { \
31       Q_GADGET \
32    public:
33 #define END_QT_REGISTERED_ENUM(Name) \
34       Q_ENUM(Name); \
35       }; \
36 using Name = MSQE_##Name::Name;
37 #else
38 #define BEGIN_QT_REGISTERED_ENUM(Name)
39 #define END_QT_REGISTERED_ENUM(Name)
40 #endif
41 
42 //---------------------------------------------------------
43 //   Sid
44 ///   Enumerates the list of score style settings
45 //
46 //    Keep in sync with styleTypes[] in style.cpp
47 //---------------------------------------------------------
48 
49 BEGIN_QT_REGISTERED_ENUM(Sid)
50 enum class Sid {
51       ///.\{
52       NOSTYLE = -1,
53 
54       pageWidth,
55       pageHeight,
56       pagePrintableWidth,
57       pageEvenLeftMargin,
58       pageOddLeftMargin,
59       pageEvenTopMargin,
60       pageEvenBottomMargin,
61       pageOddTopMargin,
62       pageOddBottomMargin,
63       pageTwosided,
64 
65       staffUpperBorder,
66       staffLowerBorder,
67       staffDistance,
68       akkoladeDistance,
69       minSystemDistance,
70       maxSystemDistance,
71 
72       enableVerticalSpread,
73       spreadSystem,
74       spreadSquareBracket,
75       spreadCurlyBracket,
76       minSystemSpread,
77       maxSystemSpread,
78       minStaffSpread,
79       maxStaffSpread,
80       maxAkkoladeDistance,
81       maxPageFillSpread,
82 
83       lyricsPlacement,
84       lyricsPosAbove,
85       lyricsPosBelow,
86       lyricsMinTopDistance,
87       lyricsMinBottomDistance,
88       lyricsMinDistance,
89       lyricsLineHeight,
90       lyricsDashMinLength,
91       lyricsDashMaxLength,
92       lyricsDashMaxDistance,
93       lyricsDashForce,
94       lyricsAlignVerseNumber,
95       lyricsLineThickness,
96       lyricsMelismaAlign,
97       lyricsMelismaPad,
98       lyricsDashPad,
99       lyricsDashLineThickness,
100       lyricsDashYposRatio,
101 
102       lyricsOddFontFace,
103       lyricsOddFontSize,
104       lyricsOddLineSpacing,
105       lyricsOddFontSpatiumDependent,
106       lyricsOddFontStyle,
107       lyricsOddColor,
108       lyricsOddAlign,
109       lyricsOddFrameType,
110       lyricsOddFramePadding,
111       lyricsOddFrameWidth,
112       lyricsOddFrameRound,
113       lyricsOddFrameFgColor,
114       lyricsOddFrameBgColor,
115 
116       lyricsEvenFontFace,
117       lyricsEvenFontSize,
118       lyricsEvenLineSpacing,
119       lyricsEvenFontSpatiumDependent,
120       lyricsEvenFontStyle,
121       lyricsEvenColor,
122       lyricsEvenAlign,
123       lyricsEvenFrameType,
124       lyricsEvenFramePadding,
125       lyricsEvenFrameWidth,
126       lyricsEvenFrameRound,
127       lyricsEvenFrameFgColor,
128       lyricsEvenFrameBgColor,
129 
130       figuredBassFontFamily,
131 //      figuredBassFontSize,
132       figuredBassYOffset,
133       figuredBassLineHeight,
134       figuredBassAlignment,
135       figuredBassStyle,
136       systemFrameDistance,
137       frameSystemDistance,
138       minMeasureWidth,
139 
140       barWidth,
141       doubleBarWidth,
142       endBarWidth,
143       doubleBarDistance,
144       endBarDistance,
145       repeatBarlineDotSeparation,
146       repeatBarTips,
147       startBarlineSingle,
148       startBarlineMultiple,
149 
150       bracketWidth,
151       bracketDistance,
152       akkoladeWidth,
153       akkoladeBarDistance,
154       dividerLeft,
155       dividerLeftSym,
156       dividerLeftX,
157       dividerLeftY,
158       dividerRight,
159       dividerRightSym,
160       dividerRightX,
161       dividerRightY,
162 
163       clefLeftMargin,
164       keysigLeftMargin,
165       ambitusMargin,
166       timesigLeftMargin,
167       timesigScale,
168 
169       midClefKeyRightMargin,
170       clefKeyRightMargin,
171       clefKeyDistance,
172       clefTimesigDistance,
173       keyTimesigDistance,
174       keyBarlineDistance,
175       systemHeaderDistance,
176       systemHeaderTimeSigDistance,
177 
178       clefBarlineDistance,
179       timesigBarlineDistance,
180 
181       stemWidth,
182       shortenStem,
183       shortStemProgression,
184       shortestStem,
185       beginRepeatLeftMargin,
186       minNoteDistance,
187       barNoteDistance,
188       barAccidentalDistance,
189       multiMeasureRestMargin,
190       noteBarDistance,
191 
192       measureSpacing,
193       staffLineWidth,
194       ledgerLineWidth,
195       ledgerLineLength,
196       accidentalDistance,
197       accidentalNoteDistance,
198       bracketedAccidentalPadding,
199       alignAccidentalsLeft,
200       beamWidth,
201       beamDistance,
202       beamMinLen,
203       beamNoSlope,
204 
205       dotMag,
206       dotNoteDistance,
207       dotRestDistance,
208       dotDotDistance,
209       propertyDistanceHead,
210       propertyDistanceStem,
211       propertyDistance,
212       articulationMag,
213       articulationPosAbove,
214       articulationAnchorDefault,
215       articulationAnchorLuteFingering,
216       articulationAnchorOther,
217       lastSystemFillLimit,
218 
219       hairpinPlacement,
220       hairpinPosAbove,
221       hairpinPosBelow,
222       hairpinLinePosAbove,
223       hairpinLinePosBelow,
224       hairpinHeight,
225       hairpinContHeight,
226       hairpinLineWidth,
227       hairpinFontFace,
228       hairpinFontSize,
229       hairpinLineSpacing,
230       hairpinFontSpatiumDependent,
231       hairpinFontStyle,
232       hairpinColor,
233       hairpinTextAlign,
234       hairpinFrameType,
235       hairpinFramePadding,
236       hairpinFrameWidth,
237       hairpinFrameRound,
238       hairpinFrameFgColor,
239       hairpinFrameBgColor,
240       hairpinText,
241       hairpinCrescText,
242       hairpinDecrescText,
243       hairpinCrescContText,
244       hairpinDecrescContText,
245       hairpinLineStyle,
246       hairpinLineLineStyle,
247 
248       pedalPlacement,
249       pedalPosAbove,
250       pedalPosBelow,
251       pedalLineWidth,
252       pedalLineStyle,
253       pedalBeginTextOffset,
254       pedalHookHeight,
255       pedalFontFace,
256       pedalFontSize,
257       pedalLineSpacing,
258       pedalFontSpatiumDependent,
259       pedalFontStyle,
260       pedalColor,
261       pedalTextAlign,
262       pedalFrameType,
263       pedalFramePadding,
264       pedalFrameWidth,
265       pedalFrameRound,
266       pedalFrameFgColor,
267       pedalFrameBgColor,
268 
269       trillPlacement,
270       trillPosAbove,
271       trillPosBelow,
272 
273       vibratoPlacement,
274       vibratoPosAbove,
275       vibratoPosBelow,
276 
277       harmonyFretDist,
278       minHarmonyDistance,
279       maxHarmonyBarDistance,
280       maxChordShiftAbove,
281       maxChordShiftBelow,
282 
283       harmonyPlacement,
284       romanNumeralPlacement,
285       nashvilleNumberPlacement,
286       harmonyPlay,
287       harmonyVoiceLiteral,
288       harmonyVoicing,
289       harmonyDuration,
290 
291       chordSymbolAPosAbove,
292       chordSymbolAPosBelow,
293 
294       chordSymbolBPosAbove,
295       chordSymbolBPosBelow,
296 
297       romanNumeralPosAbove,
298       romanNumeralPosBelow,
299 
300       nashvilleNumberPosAbove,
301       nashvilleNumberPosBelow,
302 
303       chordSymbolAFontFace,
304       chordSymbolAFontSize,
305       chordSymbolALineSpacing,
306       chordSymbolAFontSpatiumDependent,
307       chordSymbolAFontStyle,
308       chordSymbolAColor,
309       chordSymbolAAlign,
310       chordSymbolAFrameType,
311       chordSymbolAFramePadding,
312       chordSymbolAFrameWidth,
313       chordSymbolAFrameRound,
314       chordSymbolAFrameFgColor,
315       chordSymbolAFrameBgColor,
316 
317       chordSymbolBFontFace,
318       chordSymbolBFontSize,
319       chordSymbolBLineSpacing,
320       chordSymbolBFontSpatiumDependent,
321       chordSymbolBFontStyle,
322       chordSymbolBColor,
323       chordSymbolBAlign,
324       chordSymbolBFrameType,
325       chordSymbolBFramePadding,
326       chordSymbolBFrameWidth,
327       chordSymbolBFrameRound,
328       chordSymbolBFrameFgColor,
329       chordSymbolBFrameBgColor,
330 
331       romanNumeralFontFace,
332       romanNumeralFontSize,
333       romanNumeralLineSpacing,
334       romanNumeralFontSpatiumDependent,
335       romanNumeralFontStyle,
336       romanNumeralColor,
337       romanNumeralAlign,
338       romanNumeralFrameType,
339       romanNumeralFramePadding,
340       romanNumeralFrameWidth,
341       romanNumeralFrameRound,
342       romanNumeralFrameFgColor,
343       romanNumeralFrameBgColor,
344 
345       nashvilleNumberFontFace,
346       nashvilleNumberFontSize,
347       nashvilleNumberLineSpacing,
348       nashvilleNumberFontSpatiumDependent,
349       nashvilleNumberFontStyle,
350       nashvilleNumberColor,
351       nashvilleNumberAlign,
352       nashvilleNumberFrameType,
353       nashvilleNumberFramePadding,
354       nashvilleNumberFrameWidth,
355       nashvilleNumberFrameRound,
356       nashvilleNumberFrameFgColor,
357       nashvilleNumberFrameBgColor,
358 
359       capoPosition,
360       fretNumMag,
361       fretNumPos,
362       fretY,
363       fretMinDistance,
364       fretMag,
365       fretPlacement,
366       fretStrings,
367       fretFrets,
368       fretNut,
369       fretDotSize,
370       fretStringSpacing,
371       fretFretSpacing,
372       fretOrientation,
373       maxFretShiftAbove,
374       maxFretShiftBelow,
375 
376       showPageNumber,
377       showPageNumberOne,
378       pageNumberOddEven,
379       showMeasureNumber,
380       showMeasureNumberOne,
381       measureNumberInterval,
382       measureNumberSystem,
383       measureNumberAllStaves,
384 
385       smallNoteMag,
386       graceNoteMag,
387       smallStaffMag,
388       smallClefMag,
389       genClef,
390       genKeysig,
391       genCourtesyTimesig,
392       genCourtesyKeysig,
393       genCourtesyClef,
394 
395       swingRatio,
396       swingUnit,
397 
398       useStandardNoteNames,
399       useGermanNoteNames,
400       useFullGermanNoteNames,
401       useSolfeggioNoteNames,
402       useFrenchNoteNames,
403       automaticCapitalization,
404       lowerCaseMinorChords,
405       lowerCaseBassNotes,
406       allCapsNoteNames,
407       chordStyle,
408       chordsXmlFile,
409       chordDescriptionFile,
410       chordExtensionMag,
411       chordExtensionAdjust,
412       chordModifierMag,
413       chordModifierAdjust,
414       concertPitch,
415       createMultiMeasureRests,
416       minEmptyMeasures,
417       minMMRestWidth,
418       mmRestNumberPos,
419       hideEmptyStaves,
420       dontHideStavesInFirstSystem,
421       enableIndentationOnFirstSystem,
422       firstSystemIndentationValue,
423       alwaysShowBracketsWhenEmptyStavesAreHidden,
424       hideInstrumentNameIfOneInstrument,
425       gateTime,
426       tenutoGateTime,
427       staccatoGateTime,
428       slurGateTime,
429 
430       ArpeggioNoteDistance,
431       ArpeggioLineWidth,
432       ArpeggioHookLen,
433       ArpeggioHiddenInStdIfTab,
434 
435       SlurEndWidth,
436       SlurMidWidth,
437       SlurDottedWidth,
438       MinTieLength,
439       SlurMinDistance,
440 
441       SectionPause,
442       MusicalSymbolFont,
443       MusicalTextFont,
444 
445       showHeader,
446       headerFirstPage,
447       headerOddEven,
448       evenHeaderL,
449       evenHeaderC,
450       evenHeaderR,
451       oddHeaderL,
452       oddHeaderC,
453       oddHeaderR,
454 
455       showFooter,
456       footerFirstPage,
457       footerOddEven,
458       evenFooterL,
459       evenFooterC,
460       evenFooterR,
461       oddFooterL,
462       oddFooterC,
463       oddFooterR,
464 
465       voltaPosAbove,
466       voltaHook,
467       voltaLineWidth,
468       voltaLineStyle,
469       voltaFontFace,
470       voltaFontSize,
471       voltaLineSpacing,
472       voltaFontSpatiumDependent,
473       voltaFontStyle,
474       voltaColor,
475       voltaAlign,
476       voltaOffset,
477       voltaFrameType,
478       voltaFramePadding,
479       voltaFrameWidth,
480       voltaFrameRound,
481       voltaFrameFgColor,
482       voltaFrameBgColor,
483 
484       ottava8VAPlacement,
485       ottava8VBPlacement,
486       ottava15MAPlacement,
487       ottava15MBPlacement,
488       ottava22MAPlacement,
489       ottava22MBPlacement,
490 
491       ottava8VAText,
492       ottava8VAContinueText,
493       ottava8VBText,
494       ottava8VBContinueText,
495       ottava15MAText,
496       ottava15MAContinueText,
497       ottava15MBText,
498       ottava15MBContinueText,
499       ottava22MAText,
500       ottava22MAContinueText,
501       ottava22MBText,
502       ottava22MBContinueText,
503 
504       ottava8VAnoText,
505       ottava8VAnoContinueText,
506       ottava8VBnoText,
507       ottava8VBnoContinueText,
508       ottava15MAnoText,
509       ottava15MAnoContinueText,
510       ottava15MBnoText,
511       ottava15MBnoContinueText,
512       ottava22MAnoText,
513       ottava22MAnoContinueText,
514       ottava22MBnoText,
515       ottava22MBnoContinueText,
516 
517       ottavaPosAbove,
518       ottavaPosBelow,
519       ottavaHookAbove,
520       ottavaHookBelow,
521       ottavaLineWidth,
522       ottavaLineStyle,
523       ottavaNumbersOnly,
524       ottavaFontFace,
525       ottavaFontSize,
526       ottavaLineSpacing,
527       ottavaFontSpatiumDependent,
528       ottavaFontStyle,
529       ottavaColor,
530       ottavaTextAlign,
531       ottavaFrameType,
532       ottavaFramePadding,
533       ottavaFrameWidth,
534       ottavaFrameRound,
535       ottavaFrameFgColor,
536       ottavaFrameBgColor,
537 
538       tabClef,
539 
540       tremoloWidth,
541       tremoloBoxHeight,
542       tremoloStrokeWidth,
543       tremoloDistance,
544       tremoloStyle,
545       tremoloStrokeLengthMultiplier,
546       // TODO tremoloMaxBeamLength,
547 
548       linearStretch,
549       crossMeasureValues,
550       keySigNaturals,
551 
552       tupletMaxSlope,
553       tupletOufOfStaff,
554       tupletVHeadDistance,
555       tupletVStemDistance,
556       tupletStemLeftDistance,
557       tupletStemRightDistance,
558       tupletNoteLeftDistance,
559       tupletNoteRightDistance,
560       tupletBracketWidth,
561       tupletDirection,
562       tupletNumberType,
563       tupletBracketType,
564       tupletFontFace,
565       tupletFontSize,
566       tupletLineSpacing,
567       tupletFontSpatiumDependent,
568       tupletFontStyle,
569       tupletColor,
570       tupletAlign,
571       tupletBracketHookHeight,
572       tupletOffset,
573       tupletFrameType,
574       tupletFramePadding,
575       tupletFrameWidth,
576       tupletFrameRound,
577       tupletFrameFgColor,
578       tupletFrameBgColor,
579 
580       barreLineWidth,
581       scaleBarlines,
582       barGraceDistance,
583 
584       minVerticalDistance,
585       ornamentStyle,
586       spatium,
587 
588       autoplaceHairpinDynamicsDistance,
589 
590       dynamicsPlacement,
591       dynamicsPosAbove,
592       dynamicsPosBelow,
593 
594       dynamicsMinDistance,
595       autoplaceVerticalAlignRange,
596 
597       textLinePlacement,
598       textLinePosAbove,
599       textLinePosBelow,
600       textLineFrameType,
601       textLineFramePadding,
602       textLineFrameWidth,
603       textLineFrameRound,
604       textLineFrameFgColor,
605       textLineFrameBgColor,
606 
607       systemTextLinePlacement,
608       systemTextLinePosAbove,
609       systemTextLinePosBelow,
610       systemTextLineFrameType,
611       systemTextLineFramePadding,
612       systemTextLineFrameWidth,
613       systemTextLineFrameRound,
614       systemTextLineFrameFgColor,
615       systemTextLineFrameBgColor,
616 
617       tremoloBarLineWidth,
618       jumpPosAbove,
619       markerPosAbove,
620 
621       defaultFontFace,
622       defaultFontSize,
623       defaultLineSpacing,
624       defaultFontSpatiumDependent,
625       defaultFontStyle,
626       defaultColor,
627       defaultAlign,
628       defaultFrameType,
629       defaultFramePadding,
630       defaultFrameWidth,
631       defaultFrameRound,
632       defaultFrameFgColor,
633       defaultFrameBgColor,
634       defaultOffset,
635       defaultOffsetType,
636       defaultSystemFlag,
637       defaultText,
638 
639       titleFontFace,
640       titleFontSize,
641       titleLineSpacing,
642       titleFontSpatiumDependent,
643       titleFontStyle,
644       titleColor,
645       titleAlign,
646       titleOffset,
647       titleOffsetType,
648       titleFrameType,
649       titleFramePadding,
650       titleFrameWidth,
651       titleFrameRound,
652       titleFrameFgColor,
653       titleFrameBgColor,
654 
655       subTitleFontFace,
656       subTitleFontSize,
657       subTitleLineSpacing,
658       subTitleFontSpatiumDependent,
659       subTitleFontStyle,
660       subTitleColor,
661       subTitleAlign,
662       subTitleOffset,
663       subTitleOffsetType,
664       subTitleFrameType,
665       subTitleFramePadding,
666       subTitleFrameWidth,
667       subTitleFrameRound,
668       subTitleFrameFgColor,
669       subTitleFrameBgColor,
670 
671       composerFontFace,
672       composerFontSize,
673       composerLineSpacing,
674       composerFontSpatiumDependent,
675       composerFontStyle,
676       composerColor,
677       composerAlign,
678       composerOffset,
679       composerOffsetType,
680       composerFrameType,
681       composerFramePadding,
682       composerFrameWidth,
683       composerFrameRound,
684       composerFrameFgColor,
685       composerFrameBgColor,
686 
687       lyricistFontFace,
688       lyricistFontSize,
689       lyricistLineSpacing,
690       lyricistFontSpatiumDependent,
691       lyricistFontStyle,
692       lyricistColor,
693       lyricistAlign,
694       lyricistOffset,
695       lyricistOffsetType,
696       lyricistFrameType,
697       lyricistFramePadding,
698       lyricistFrameWidth,
699       lyricistFrameRound,
700       lyricistFrameFgColor,
701       lyricistFrameBgColor,
702 
703       fingeringFontFace,
704       fingeringFontSize,
705       fingeringLineSpacing,
706       fingeringFontSpatiumDependent,
707       fingeringFontStyle,
708       fingeringColor,
709       fingeringAlign,
710       fingeringFrameType,
711       fingeringFramePadding,
712       fingeringFrameWidth,
713       fingeringFrameRound,
714       fingeringFrameFgColor,
715       fingeringFrameBgColor,
716       fingeringOffset,
717 
718       lhGuitarFingeringFontFace,
719       lhGuitarFingeringFontSize,
720       lhGuitarFingeringLineSpacing,
721       lhGuitarFingeringFontSpatiumDependent,
722       lhGuitarFingeringFontStyle,
723       lhGuitarFingeringColor,
724       lhGuitarFingeringAlign,
725       lhGuitarFingeringFrameType,
726       lhGuitarFingeringFramePadding,
727       lhGuitarFingeringFrameWidth,
728       lhGuitarFingeringFrameRound,
729       lhGuitarFingeringFrameFgColor,
730       lhGuitarFingeringFrameBgColor,
731       lhGuitarFingeringOffset,
732 
733       rhGuitarFingeringFontFace,
734       rhGuitarFingeringFontSize,
735       rhGuitarFingeringLineSpacing,
736       rhGuitarFingeringFontSpatiumDependent,
737       rhGuitarFingeringFontStyle,
738       rhGuitarFingeringColor,
739       rhGuitarFingeringAlign,
740       rhGuitarFingeringFrameType,
741       rhGuitarFingeringFramePadding,
742       rhGuitarFingeringFrameWidth,
743       rhGuitarFingeringFrameRound,
744       rhGuitarFingeringFrameFgColor,
745       rhGuitarFingeringFrameBgColor,
746       rhGuitarFingeringOffset,
747 
748       stringNumberFontFace,
749       stringNumberFontSize,
750       stringNumberLineSpacing,
751       stringNumberFontSpatiumDependent,
752       stringNumberFontStyle,
753       stringNumberColor,
754       stringNumberAlign,
755       stringNumberFrameType,
756       stringNumberFramePadding,
757       stringNumberFrameWidth,
758       stringNumberFrameRound,
759       stringNumberFrameFgColor,
760       stringNumberFrameBgColor,
761       stringNumberOffset,
762 
763       longInstrumentFontFace,
764       longInstrumentFontSize,
765       longInstrumentLineSpacing,
766       longInstrumentFontSpatiumDependent,
767       longInstrumentFontStyle,
768       longInstrumentColor,
769       longInstrumentAlign,
770       longInstrumentOffset,
771       longInstrumentFrameType,
772       longInstrumentFramePadding,
773       longInstrumentFrameWidth,
774       longInstrumentFrameRound,
775       longInstrumentFrameFgColor,
776       longInstrumentFrameBgColor,
777 
778       shortInstrumentFontFace,
779       shortInstrumentFontSize,
780       shortInstrumentLineSpacing,
781       shortInstrumentFontSpatiumDependent,
782       shortInstrumentFontStyle,
783       shortInstrumentColor,
784       shortInstrumentAlign,
785       shortInstrumentOffset,
786       shortInstrumentFrameType,
787       shortInstrumentFramePadding,
788       shortInstrumentFrameWidth,
789       shortInstrumentFrameRound,
790       shortInstrumentFrameFgColor,
791       shortInstrumentFrameBgColor,
792 
793       partInstrumentFontFace,
794       partInstrumentFontSize,
795       partInstrumentLineSpacing,
796       partInstrumentFontSpatiumDependent,
797       partInstrumentFontStyle,
798       partInstrumentColor,
799       partInstrumentAlign,
800       partInstrumentOffset,
801       partInstrumentFrameType,
802       partInstrumentFramePadding,
803       partInstrumentFrameWidth,
804       partInstrumentFrameRound,
805       partInstrumentFrameFgColor,
806       partInstrumentFrameBgColor,
807 
808       dynamicsFontFace,
809       dynamicsFontSize,
810       dynamicsLineSpacing,
811       dynamicsFontSpatiumDependent,
812       dynamicsFontStyle,
813       dynamicsColor,
814       dynamicsAlign,
815       dynamicsFrameType,
816       dynamicsFramePadding,
817       dynamicsFrameWidth,
818       dynamicsFrameRound,
819       dynamicsFrameFgColor,
820       dynamicsFrameBgColor,
821 
822       expressionFontFace,
823       expressionFontSize,
824       expressionLineSpacing,
825       expressionFontSpatiumDependent,
826       expressionFontStyle,
827       expressionColor,
828       expressionAlign,
829       expressionPlacement,
830       expressionOffset,
831       expressionFrameType,
832       expressionFramePadding,
833       expressionFrameWidth,
834       expressionFrameRound,
835       expressionFrameFgColor,
836       expressionFrameBgColor,
837 
838       tempoFontFace,
839       tempoFontSize,
840       tempoLineSpacing,
841       tempoFontSpatiumDependent,
842       tempoFontStyle,
843       tempoColor,
844       tempoAlign,
845       tempoSystemFlag,
846       tempoPlacement,
847       tempoPosAbove,
848       tempoPosBelow,
849       tempoMinDistance,
850       tempoFrameType,
851       tempoFramePadding,
852       tempoFrameWidth,
853       tempoFrameRound,
854       tempoFrameFgColor,
855       tempoFrameBgColor,
856 
857       metronomeFontFace,
858       metronomeFontSize,
859       metronomeLineSpacing,
860       metronomeFontSpatiumDependent,
861       metronomeFontStyle,
862       metronomeColor,
863       metronomePlacement,
864       metronomeAlign,
865       metronomeOffset,
866       metronomeFrameType,
867       metronomeFramePadding,
868       metronomeFrameWidth,
869       metronomeFrameRound,
870       metronomeFrameFgColor,
871       metronomeFrameBgColor,
872 
873       measureNumberFontFace,
874       measureNumberFontSize,
875       measureNumberLineSpacing,
876       measureNumberFontSpatiumDependent,
877       measureNumberFontStyle,
878       measureNumberColor,
879       measureNumberPosAbove,
880       measureNumberPosBelow,
881       measureNumberOffsetType,
882       measureNumberVPlacement,
883       measureNumberHPlacement,
884       measureNumberAlign,
885       measureNumberFrameType,
886       measureNumberFramePadding,
887       measureNumberFrameWidth,
888       measureNumberFrameRound,
889       measureNumberFrameFgColor,
890       measureNumberFrameBgColor,
891 
892       mmRestShowMeasureNumberRange,
893       mmRestRangeBracketType,
894 
895       mmRestRangeFontFace,
896       mmRestRangeFontSize,
897       mmRestRangeFontSpatiumDependent,
898       mmRestRangeFontStyle,
899       mmRestRangeColor,
900       mmRestRangePosAbove,
901       mmRestRangePosBelow,
902       mmRestRangeOffsetType,
903       mmRestRangeVPlacement,
904       mmRestRangeHPlacement,
905       mmRestRangeAlign,
906       mmRestRangeFrameType,
907       mmRestRangeFramePadding,
908       mmRestRangeFrameWidth,
909       mmRestRangeFrameRound,
910       mmRestRangeFrameFgColor,
911       mmRestRangeFrameBgColor,
912 
913       translatorFontFace,
914       translatorFontSize,
915       translatorLineSpacing,
916       translatorFontSpatiumDependent,
917       translatorFontStyle,
918       translatorColor,
919       translatorAlign,
920       translatorOffset,
921       translatorFrameType,
922       translatorFramePadding,
923       translatorFrameWidth,
924       translatorFrameRound,
925       translatorFrameFgColor,
926       translatorFrameBgColor,
927 
928       systemTextFontFace,
929       systemTextFontSize,
930       systemTextLineSpacing,
931       systemTextFontSpatiumDependent,
932       systemTextFontStyle,
933       systemTextColor,
934       systemTextAlign,
935       systemTextOffsetType,
936       systemTextPlacement,
937       systemTextPosAbove,
938       systemTextPosBelow,
939       systemTextMinDistance,
940       systemTextFrameType,
941       systemTextFramePadding,
942       systemTextFrameWidth,
943       systemTextFrameRound,
944       systemTextFrameFgColor,
945       systemTextFrameBgColor,
946 
947       staffTextFontFace,
948       staffTextFontSize,
949       staffTextLineSpacing,
950       staffTextFontSpatiumDependent,
951       staffTextFontStyle,
952       staffTextColor,
953       staffTextAlign,
954       staffTextOffsetType,
955       staffTextPlacement,
956       staffTextPosAbove,
957       staffTextPosBelow,
958       staffTextMinDistance,
959       staffTextFrameType,
960       staffTextFramePadding,
961       staffTextFrameWidth,
962       staffTextFrameRound,
963       staffTextFrameFgColor,
964       staffTextFrameBgColor,
965 
966       rehearsalMarkFontFace,
967       rehearsalMarkFontSize,
968       rehearsalMarkLineSpacing,
969       rehearsalMarkFontSpatiumDependent,
970       rehearsalMarkFontStyle,
971       rehearsalMarkColor,
972       rehearsalMarkAlign,
973       rehearsalMarkFrameType,
974       rehearsalMarkFramePadding,
975       rehearsalMarkFrameWidth,
976       rehearsalMarkFrameRound,
977       rehearsalMarkFrameFgColor,
978       rehearsalMarkFrameBgColor,
979       rehearsalMarkPlacement,
980       rehearsalMarkPosAbove,
981       rehearsalMarkPosBelow,
982       rehearsalMarkMinDistance,
983 
984       repeatLeftFontFace,
985       repeatLeftFontSize,
986       repeatLeftLineSpacing,
987       repeatLeftFontSpatiumDependent,
988       repeatLeftFontStyle,
989       repeatLeftColor,
990       repeatLeftAlign,
991       repeatLeftPlacement,
992       repeatLeftFrameType,
993       repeatLeftFramePadding,
994       repeatLeftFrameWidth,
995       repeatLeftFrameRound,
996       repeatLeftFrameFgColor,
997       repeatLeftFrameBgColor,
998 
999       repeatRightFontFace,
1000       repeatRightFontSize,
1001       repeatRightLineSpacing,
1002       repeatRightFontSpatiumDependent,
1003       repeatRightFontStyle,
1004       repeatRightColor,
1005       repeatRightAlign,
1006       repeatRightPlacement,
1007       repeatRightFrameType,
1008       repeatRightFramePadding,
1009       repeatRightFrameWidth,
1010       repeatRightFrameRound,
1011       repeatRightFrameFgColor,
1012       repeatRightFrameBgColor,
1013 
1014       frameFontFace,
1015       frameFontSize,
1016       frameLineSpacing,
1017       frameFontSpatiumDependent,
1018       frameFontStyle,
1019       frameColor,
1020       frameAlign,
1021       frameOffset,
1022       frameFrameType,
1023       frameFramePadding,
1024       frameFrameWidth,
1025       frameFrameRound,
1026       frameFrameFgColor,
1027       frameFrameBgColor,
1028 
1029       textLineFontFace,
1030       textLineFontSize,
1031       textLineLineSpacing,
1032       textLineFontSpatiumDependent,
1033       textLineFontStyle,
1034       textLineColor,
1035       textLineTextAlign,
1036       textLineSystemFlag,
1037 
1038       systemTextLineFontFace,
1039       systemTextLineFontSize,
1040       systemTextLineFontSpatiumDependent,
1041       systemTextLineFontStyle,
1042       systemTextLineColor,
1043       systemTextLineTextAlign,
1044       systemTextLineSystemFlag,
1045 
1046       glissandoFontFace,
1047       glissandoFontSize,
1048       glissandoLineSpacing,
1049       glissandoFontSpatiumDependent,
1050       glissandoFontStyle,
1051       glissandoColor,
1052       glissandoAlign,
1053       glissandoOffset,
1054       glissandoFrameType,
1055       glissandoFramePadding,
1056       glissandoFrameWidth,
1057       glissandoFrameRound,
1058       glissandoFrameFgColor,
1059       glissandoFrameBgColor,
1060       glissandoLineWidth,
1061       glissandoText,
1062 
1063       bendFontFace,
1064       bendFontSize,
1065       bendLineSpacing,
1066       bendFontSpatiumDependent,
1067       bendFontStyle,
1068       bendColor,
1069       bendAlign,
1070       bendOffset,
1071       bendFrameType,
1072       bendFramePadding,
1073       bendFrameWidth,
1074       bendFrameRound,
1075       bendFrameFgColor,
1076       bendFrameBgColor,
1077       bendLineWidth,
1078       bendArrowWidth,
1079 
1080       headerFontFace,
1081       headerFontSize,
1082       headerLineSpacing,
1083       headerFontSpatiumDependent,
1084       headerFontStyle,
1085       headerColor,
1086       headerAlign,
1087       headerOffset,
1088       headerFrameType,
1089       headerFramePadding,
1090       headerFrameWidth,
1091       headerFrameRound,
1092       headerFrameFgColor,
1093       headerFrameBgColor,
1094 
1095       footerFontFace,
1096       footerFontSize,
1097       footerLineSpacing,
1098       footerFontSpatiumDependent,
1099       footerFontStyle,
1100       footerColor,
1101       footerAlign,
1102       footerOffset,
1103       footerFrameType,
1104       footerFramePadding,
1105       footerFrameWidth,
1106       footerFrameRound,
1107       footerFrameFgColor,
1108       footerFrameBgColor,
1109 
1110       instrumentChangeFontFace,
1111       instrumentChangeFontSize,
1112       instrumentChangeLineSpacing,
1113       instrumentChangeFontSpatiumDependent,
1114       instrumentChangeFontStyle,
1115       instrumentChangeColor,
1116       instrumentChangeAlign,
1117       instrumentChangeOffset,
1118       instrumentChangePlacement,
1119       instrumentChangePosAbove,
1120       instrumentChangePosBelow,
1121       instrumentChangeMinDistance,
1122       instrumentChangeFrameType,
1123       instrumentChangeFramePadding,
1124       instrumentChangeFrameWidth,
1125       instrumentChangeFrameRound,
1126       instrumentChangeFrameFgColor,
1127       instrumentChangeFrameBgColor,
1128 
1129       stickingFontFace,
1130       stickingFontSize,
1131       stickingLineSpacing,
1132       stickingFontSpatiumDependent,
1133       stickingFontStyle,
1134       stickingColor,
1135       stickingAlign,
1136       stickingOffset,
1137       stickingPlacement,
1138       stickingPosAbove,
1139       stickingPosBelow,
1140       stickingMinDistance,
1141       stickingFrameType,
1142       stickingFramePadding,
1143       stickingFrameWidth,
1144       stickingFrameRound,
1145       stickingFrameFgColor,
1146       stickingFrameBgColor,
1147 
1148       figuredBassFontFace,
1149       figuredBassFontSize,
1150       figuredBassLineSpacing,
1151       figuredBassFontSpatiumDependent,
1152       figuredBassFontStyle,
1153       figuredBassColor,
1154 
1155       user1Name,
1156       user1FontFace,
1157       user1FontSize,
1158       user1LineSpacing,
1159       user1FontSpatiumDependent,
1160       user1FontStyle,
1161       user1Color,
1162       user1Align,
1163       user1Offset,
1164       user1OffsetType,
1165       user1FrameType,
1166       user1FramePadding,
1167       user1FrameWidth,
1168       user1FrameRound,
1169       user1FrameFgColor,
1170       user1FrameBgColor,
1171 
1172       user2Name,
1173       user2FontFace,
1174       user2FontSize,
1175       user2LineSpacing,
1176       user2FontSpatiumDependent,
1177       user2FontStyle,
1178       user2Color,
1179       user2Align,
1180       user2Offset,
1181       user2OffsetType,
1182       user2FrameType,
1183       user2FramePadding,
1184       user2FrameWidth,
1185       user2FrameRound,
1186       user2FrameFgColor,
1187       user2FrameBgColor,
1188 
1189       user3Name,
1190       user3FontFace,
1191       user3FontSize,
1192       user3LineSpacing,
1193       user3FontSpatiumDependent,
1194       user3FontStyle,
1195       user3Color,
1196       user3Align,
1197       user3Offset,
1198       user3OffsetType,
1199       user3FrameType,
1200       user3FramePadding,
1201       user3FrameWidth,
1202       user3FrameRound,
1203       user3FrameFgColor,
1204       user3FrameBgColor,
1205 
1206       user4Name,
1207       user4FontFace,
1208       user4FontSize,
1209       user4LineSpacing,
1210       user4FontSpatiumDependent,
1211       user4FontStyle,
1212       user4Color,
1213       user4Align,
1214       user4Offset,
1215       user4OffsetType,
1216       user4FrameType,
1217       user4FramePadding,
1218       user4FrameWidth,
1219       user4FrameRound,
1220       user4FrameFgColor,
1221       user4FrameBgColor,
1222 
1223       user5Name,
1224       user5FontFace,
1225       user5FontSize,
1226       user5LineSpacing,
1227       user5FontSpatiumDependent,
1228       user5FontStyle,
1229       user5Color,
1230       user5Align,
1231       user5Offset,
1232       user5OffsetType,
1233       user5FrameType,
1234       user5FramePadding,
1235       user5FrameWidth,
1236       user5FrameRound,
1237       user5FrameFgColor,
1238       user5FrameBgColor,
1239 
1240       user6Name,
1241       user6FontFace,
1242       user6FontSize,
1243       user6LineSpacing,
1244       user6FontSpatiumDependent,
1245       user6FontStyle,
1246       user6Color,
1247       user6Align,
1248       user6Offset,
1249       user6OffsetType,
1250       user6FrameType,
1251       user6FramePadding,
1252       user6FrameWidth,
1253       user6FrameRound,
1254       user6FrameFgColor,
1255       user6FrameBgColor,
1256 
1257       user7Name,
1258       user7FontFace,
1259       user7FontSize,
1260       user7LineSpacing,
1261       user7FontSpatiumDependent,
1262       user7FontStyle,
1263       user7Color,
1264       user7Align,
1265       user7Offset,
1266       user7OffsetType,
1267       user7FrameType,
1268       user7FramePadding,
1269       user7FrameWidth,
1270       user7FrameRound,
1271       user7FrameFgColor,
1272       user7FrameBgColor,
1273 
1274       user8Name,
1275       user8FontFace,
1276       user8FontSize,
1277       user8LineSpacing,
1278       user8FontSpatiumDependent,
1279       user8FontStyle,
1280       user8Color,
1281       user8Align,
1282       user8Offset,
1283       user8OffsetType,
1284       user8FrameType,
1285       user8FramePadding,
1286       user8FrameWidth,
1287       user8FrameRound,
1288       user8FrameFgColor,
1289       user8FrameBgColor,
1290 
1291       user9Name,
1292       user9FontFace,
1293       user9FontSize,
1294       user9LineSpacing,
1295       user9FontSpatiumDependent,
1296       user9FontStyle,
1297       user9Color,
1298       user9Align,
1299       user9Offset,
1300       user9OffsetType,
1301       user9FrameType,
1302       user9FramePadding,
1303       user9FrameWidth,
1304       user9FrameRound,
1305       user9FrameFgColor,
1306       user9FrameBgColor,
1307 
1308       user10Name,
1309       user10FontFace,
1310       user10FontSize,
1311       user10LineSpacing,
1312       user10FontSpatiumDependent,
1313       user10FontStyle,
1314       user10Color,
1315       user10Align,
1316       user10Offset,
1317       user10OffsetType,
1318       user10FrameType,
1319       user10FramePadding,
1320       user10FrameWidth,
1321       user10FrameRound,
1322       user10FrameFgColor,
1323       user10FrameBgColor,
1324 
1325       user11Name,
1326       user11FontFace,
1327       user11FontSize,
1328       user11LineSpacing,
1329       user11FontSpatiumDependent,
1330       user11FontStyle,
1331       user11Color,
1332       user11Align,
1333       user11Offset,
1334       user11OffsetType,
1335       user11FrameType,
1336       user11FramePadding,
1337       user11FrameWidth,
1338       user11FrameRound,
1339       user11FrameFgColor,
1340       user11FrameBgColor,
1341 
1342       user12Name,
1343       user12FontFace,
1344       user12FontSize,
1345       user12LineSpacing,
1346       user12FontSpatiumDependent,
1347       user12FontStyle,
1348       user12Color,
1349       user12Align,
1350       user12Offset,
1351       user12OffsetType,
1352       user12FrameType,
1353       user12FramePadding,
1354       user12FrameWidth,
1355       user12FrameRound,
1356       user12FrameFgColor,
1357       user12FrameBgColor,
1358 
1359       letRingFontFace,
1360       letRingFontSize,
1361       letRingLineSpacing,
1362       letRingFontSpatiumDependent,
1363       letRingFontStyle,
1364       letRingColor,
1365       letRingTextAlign,
1366       letRingHookHeight,
1367       letRingPlacement,
1368       letRingPosAbove,
1369       letRingPosBelow,
1370       letRingLineWidth,
1371       letRingLineStyle,
1372       letRingBeginTextOffset,
1373       letRingText,
1374       letRingFrameType,
1375       letRingFramePadding,
1376       letRingFrameWidth,
1377       letRingFrameRound,
1378       letRingFrameFgColor,
1379       letRingFrameBgColor,
1380       letRingEndHookType,
1381 
1382       palmMuteFontFace,
1383       palmMuteFontSize,
1384       palmMuteLineSpacing,
1385       palmMuteFontSpatiumDependent,
1386       palmMuteFontStyle,
1387       palmMuteColor,
1388       palmMuteTextAlign,
1389       palmMuteHookHeight,
1390       palmMutePlacement,
1391       palmMutePosAbove,
1392       palmMutePosBelow,
1393       palmMuteLineWidth,
1394       palmMuteLineStyle,
1395       palmMuteBeginTextOffset,
1396       palmMuteText,
1397       palmMuteFrameType,
1398       palmMuteFramePadding,
1399       palmMuteFrameWidth,
1400       palmMuteFrameRound,
1401       palmMuteFrameFgColor,
1402       palmMuteFrameBgColor,
1403       palmMuteEndHookType,
1404 
1405       fermataPosAbove,
1406       fermataPosBelow,
1407       fermataMinDistance,
1408 
1409       fingeringPlacement,
1410 
1411       articulationMinDistance,
1412       fingeringMinDistance,
1413       hairpinMinDistance,
1414       letRingMinDistance,
1415       ottavaMinDistance,
1416       palmMuteMinDistance,
1417       pedalMinDistance,
1418       repeatMinDistance,
1419       textLineMinDistance,
1420       systemTextLineMinDistance,
1421       trillMinDistance,
1422       vibratoMinDistance,
1423       voltaMinDistance,
1424       figuredBassMinDistance,
1425       tupletMinDistance,
1426 
1427       autoplaceEnabled,
1428       usePre_3_6_defaults,
1429       defaultsVersion,
1430 
1431       STYLES
1432       ///\}
1433       };
END_QT_REGISTERED_ENUM(Sid)1434 END_QT_REGISTERED_ENUM(Sid)
1435 
1436 inline uint qHash(Sid id)
1437 {
1438     return static_cast<uint>(id);
1439 }
1440 
1441 //---------------------------------------------------------
1442 //   MStyle
1443 ///   \cond PLUGIN_API \private \endcond
1444 //    the name "Style" gives problems with some microsoft
1445 //    header files...
1446 //---------------------------------------------------------
1447 
1448 class MStyle {
1449       std::array<QVariant, int(Sid::STYLES)> _values;
1450       std::array<qreal, int(Sid::STYLES)> _precomputedValues;
1451 
1452       ChordList _chordList;
1453       bool _customChordList;        // if true, chordlist will be saved as part of score
1454       int _defaultStyleVersion = -1;
1455 
1456    public:
1457       MStyle();
1458 
1459       void precomputeValues();
1460       const QVariant& value(Sid idx) const;
pvalue(Sid idx)1461       qreal pvalue(Sid idx) const    { return _precomputedValues[int(idx)]; }
1462       void set(Sid idx, const QVariant& v);
1463 
1464       bool isDefault(Sid idx) const;
1465       void setDefaultStyleVersion(const int defaultsVersion);
defaultStyleVersion()1466       int defaultStyleVersion() const { return _defaultStyleVersion; }
1467 
1468       const ChordDescription* chordDescription(int id) const;
chordList()1469       ChordList* chordList()  { return &_chordList; }
1470       void setChordList(ChordList*, bool custom = true);    // Style gets ownership of ChordList
setCustomChordList(bool t)1471       void setCustomChordList(bool t) { _customChordList = t; }
1472       void checkChordList();
1473 
1474       bool load(QFile* qf, bool ign = false);
1475       void load(XmlReader& e);
1476       void applyNewDefaults(const MStyle& other, const int defaultsVersion);
1477       void save(XmlWriter& xml, bool optimize);
1478       bool readProperties(XmlReader&);
1479       bool readStyleValCompat(XmlReader&);
1480       bool readTextStyleValCompat(XmlReader&);
1481 
1482       void resetAllStyles(Score* score, const QSet<Sid>& ignoredStyles = QSet<Sid>());
1483       void resetStyles(Score* score, const QSet<Sid>& stylesToReset);
1484 
1485       static const char* valueType(const Sid);
1486       static const char* valueName(const Sid);
1487       static Sid styleIdx(const QString& name);
1488       static MStyle* resolveStyleDefaults(const int defaultsVersion);
1489       };
1490 
1491 //---------------------------------------------------------
1492 //   StyledProperty
1493 ///   \cond PLUGIN_API \private \endcond
1494 //---------------------------------------------------------
1495 
1496 struct StyledProperty {
1497       Sid sid;
1498       Pid pid;
1499       };
1500 
1501 typedef std::vector<StyledProperty> ElementStyle;
1502 
1503 #define TEXT_STYLE_SIZE 14
1504 
1505 typedef std::array<StyledProperty, TEXT_STYLE_SIZE> TextStyle;
1506 
1507 
1508 const TextStyle* textStyle(Tid);
1509 const TextStyle* textStyle(const char*);
1510 
1511 const char* textStyleName(Tid);
1512 QString textStyleUserName(Tid);
1513 Tid textStyleFromName(const QString&);
1514 
1515 const std::vector<Tid>& allTextStyles();
1516 const std::vector<Tid>& primaryTextStyles();
1517 
1518 QSet<Sid> pageStyles();
1519 
1520 #ifndef NDEBUG
1521 extern void checkStyles();
1522 #endif
1523 
1524 }     // namespace Ms
1525 
1526 
1527 #endif
1528