MuseScore Plugins  3.5
Plugins API for MuseScore
style.h
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
45 //
46 // Keep in sync with styleTypes[] in style.cpp
47 //---------------------------------------------------------
48 
49 BEGIN_QT_REGISTERED_ENUM(Sid)
50 enum class Sid {
52  NOSTYLE = -1,
53 
54  pageWidth,
55  pageHeight,
64 
69 
72 
91 
104 
117 
119 // figuredBassFontSize,
127 
128  barWidth,
130  endBarWidth,
137 
138  bracketWidth,
142  dividerLeft,
144  dividerLeftX,
145  dividerLeftY,
146  dividerRight,
150 
155  timesigScale,
156 
165 
168 
169  stemWidth,
170  shortenStem,
172  shortestStem,
179 
186  beamWidth,
187  beamDistance,
188  beamMinLen,
189  beamNoSlope,
190 
191  dotMag,
204 
217  hairpinColor,
225  hairpinText,
232 
244  pedalColor,
252 
256 
260 
266 
270  harmonyPlay,
274 
277 
280 
283 
286 
299 
312 
325 
338 
339  capoPosition,
340  fretNumMag,
341  fretNumPos,
342  fretY,
344  fretMag,
346  fretStrings,
347  fretFrets,
348  fretNut,
349  fretDotSize,
355 
364 
365  smallNoteMag,
366  graceNoteMag,
368  smallClefMag,
369  genClef,
370  genKeysig,
374 
375  swingRatio,
376  swingUnit,
377 
387  chordStyle,
394  concertPitch,
403  gateTime,
406  slurGateTime,
407 
412 
413  SlurEndWidth,
414  SlurMidWidth,
416  MinTieLength,
418 
419  SectionPause,
422 
423  showHeader,
426  evenHeaderL,
427  evenHeaderC,
428  evenHeaderR,
429  oddHeaderL,
430  oddHeaderC,
431  oddHeaderR,
432 
433  showFooter,
436  evenFooterL,
437  evenFooterC,
438  evenFooterR,
439  oddFooterL,
440  oddFooterC,
441  oddFooterR,
442 
444  voltaHook,
451  voltaColor,
452  voltaAlign,
453  voltaOffset,
460 
467 
480 
493 
505  ottavaColor,
513 
514  tabClef,
515 
516  tremoloWidth,
520  tremoloStyle,
522  // TODO tremoloMaxBeamLength,
523 
527 
544  tupletColor,
545  tupletAlign,
547  tupletOffset,
554 
558 
561  spatium,
562 
564 
568 
571 
581 
583  jumpPosAbove,
585 
590  defaultColor,
591  defaultAlign,
601  defaultText,
602 
607  titleColor,
608  titleAlign,
609  titleOffset,
617 
632 
647 
662 
676 
690 
704 
718 
732 
746 
760 
773 
788 
793  tempoColor,
794  tempoAlign,
806 
821 
839 
853 
871 
889 
906 
920 
934 
939  frameColor,
940  frameAlign,
941  frameOffset,
948 
955 
971 
972  bendFontFace,
973  bendFontSize,
976  bendColor,
977  bendAlign,
978  bendOffset,
987 
992  headerColor,
993  headerAlign,
994  headerOffset,
1001 
1006  footerColor,
1007  footerAlign,
1008  footerOffset,
1015 
1033 
1038  stickingColor,
1039  stickingAlign,
1051 
1057 
1058  user1Name,
1059  user1FontFace,
1060  user1FontSize,
1063  user1Color,
1064  user1Align,
1065  user1Offset,
1073 
1074  user2Name,
1075  user2FontFace,
1076  user2FontSize,
1079  user2Color,
1080  user2Align,
1081  user2Offset,
1089 
1090  user3Name,
1091  user3FontFace,
1092  user3FontSize,
1095  user3Color,
1096  user3Align,
1097  user3Offset,
1105 
1106  user4Name,
1107  user4FontFace,
1108  user4FontSize,
1111  user4Color,
1112  user4Align,
1113  user4Offset,
1121 
1122  user5Name,
1123  user5FontFace,
1124  user5FontSize,
1127  user5Color,
1128  user5Align,
1129  user5Offset,
1137 
1138  user6Name,
1139  user6FontFace,
1140  user6FontSize,
1143  user6Color,
1144  user6Align,
1145  user6Offset,
1153 
1154  user7Name,
1155  user7FontFace,
1156  user7FontSize,
1159  user7Color,
1160  user7Align,
1161  user7Offset,
1169 
1170  user8Name,
1171  user8FontFace,
1172  user8FontSize,
1175  user8Color,
1176  user8Align,
1177  user8Offset,
1185 
1186  user9Name,
1187  user9FontFace,
1188  user9FontSize,
1191  user9Color,
1192  user9Align,
1193  user9Offset,
1201 
1202  user10Name,
1207  user10Color,
1208  user10Align,
1209  user10Offset,
1217 
1218  user11Name,
1223  user11Color,
1224  user11Align,
1225  user11Offset,
1233 
1234  user12Name,
1239  user12Color,
1240  user12Align,
1241  user12Offset,
1249 
1254  letRingColor,
1263  letRingText,
1271 
1276  palmMuteColor,
1285  palmMuteText,
1293 
1297 
1299 
1314 
1316 
1317  STYLES
1319  };
1320 END_QT_REGISTERED_ENUM(Sid)
1321 
1322 //---------------------------------------------------------
1323 // MStyle
1325 // the name "Style" gives problems with some microsoft
1326 // header files...
1327 //---------------------------------------------------------
1328 
1329 class MStyle {
1330  std::array<QVariant, int(Sid::STYLES)> _values;
1331  std::array<qreal, int(Sid::STYLES)> _precomputedValues;
1332 
1333  ChordList _chordList;
1334  bool _customChordList; // if true, chordlist will be saved as part of score
1335 
1336  public:
1337  MStyle();
1338 
1339  void precomputeValues();
1340  const QVariant& value(Sid idx) const;
1341  qreal pvalue(Sid idx) const { return _precomputedValues[int(idx)]; }
1342  void set(Sid idx, const QVariant& v);
1343 
1344  bool isDefault(Sid idx) const;
1345 
1346  const ChordDescription* chordDescription(int id) const;
1347  ChordList* chordList() { return &_chordList; }
1348  void setChordList(ChordList*, bool custom = true); // Style gets ownership of ChordList
1349  void setCustomChordList(bool t) { _customChordList = t; }
1350  void checkChordList();
1351 
1352  bool load(QFile* qf, bool ign = false);
1353  void load(XmlReader& e);
1354  void save(XmlWriter& xml, bool optimize);
1355  bool readProperties(XmlReader&);
1356  bool readStyleValCompat(XmlReader&);
1357  bool readTextStyleValCompat(XmlReader&);
1358 
1359  void reset(Score*);
1360 
1361  static const char* valueType(const Sid);
1362  static const char* valueName(const Sid);
1363  static Sid styleIdx(const QString& name);
1364  };
1365 
1366 //---------------------------------------------------------
1367 // StyledProperty
1369 //---------------------------------------------------------
1370 
1371 struct StyledProperty {
1372  Sid sid;
1373  Pid pid;
1374  };
1375 
1376 typedef std::vector<StyledProperty> ElementStyle;
1377 
1378 #define TEXT_STYLE_SIZE 13
1379 
1380 typedef std::array<StyledProperty, TEXT_STYLE_SIZE> TextStyle;
1381 
1382 
1383 const TextStyle* textStyle(Tid);
1384 const TextStyle* textStyle(const char*);
1385 
1386 const char* textStyleName(Tid);
1387 QString textStyleUserName(Tid);
1388 Tid textStyleFromName(const QString&);
1389 
1390 const std::vector<Tid>& allTextStyles();
1391 const std::vector<Tid>& primaryTextStyles();
1392 
1393 #ifndef NDEBUG
1394 extern void checkStyles();
1395 #endif
1396 
1397 } // namespace Ms
1398 
1399 
1400 #endif
Tid
Enumerates the list of built-in text substyles.
Definition: types.h:462
Sid
Enumerates the list of score style settings.
Definition: style.h:50
Definition: cursor.cpp:30