MuseScore Plugins  3.5
Plugins API for MuseScore
types.h
1 //=============================================================================
2 // MuseScore
3 // Music Composition & Notation
4 //
5 // Copyright (C) 2017 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 __TYPES_H__
14 #define __TYPES_H__
15 
16 #include "config.h"
17 
22 namespace Ms {
23 #ifdef SCRIPT_INTERFACE
24 Q_NAMESPACE
25 #endif
26 
27 //-------------------------------------------------------------------
32 //-------------------------------------------------------------------
33 
34 enum class ElementType {
36  INVALID = 0,
38  PART,
39  STAFF,
40  SCORE,
41  SYMBOL,
42  TEXT,
47  BAR_LINE,
50  STEM_SLASH,
51  ARPEGGIO,
52  ACCIDENTAL,
54  STEM, // list STEM before NOTE: notes in TAB might 'break' stems
55  NOTE, // and this requires stems to be drawn before notes
56  CLEF, // elements from CLEF to TIMESIG need to be in the order
57  KEYSIG, // in which they appear in a measure
58  AMBITUS,
59  TIMESIG,
60  REST,
61  BREATH,
63  TIE,
65  FERMATA,
66  CHORDLINE,
67  DYNAMIC,
68  BEAM,
69  HOOK,
70  LYRICS,
72  MARKER,
73  JUMP,
74  FINGERING,
75  TUPLET,
76  TEMPO_TEXT,
77  STAFF_TEXT,
82  HARMONY,
84  BEND,
85  TREMOLOBAR,
86  VOLTA,
99  SPACER,
100  STAFF_STATE,
101  NOTEHEAD,
102  NOTEDOT,
103  TREMOLO,
104  IMAGE,
105  MEASURE,
106  SELECTION,
107  LASSO,
108  SHADOW_NOTE,
110  FSYMBOL,
111  PAGE,
112  HAIRPIN,
113  OTTAVA,
114  PEDAL,
115  TRILL,
116  LET_RING,
117  VIBRATO,
118  PALM_MUTE,
119  TEXTLINE,
121  NOTELINE,
122  LYRICSLINE,
123  GLISSANDO,
124  BRACKET,
125  SEGMENT,
126  SYSTEM,
127  COMPOUND,
128  CHORD,
129  SLUR,
130  ELEMENT,
131  ELEMENT_LIST,
132  STAFF_LIST,
133  MEASURE_LIST,
134  HBOX,
135  VBOX,
136  TBOX,
137  FBOX,
138  ICON,
139  OSSIA,
141  STICKING,
142 
143  MAXTYPE
145  };
146 
147 //---------------------------------------------------------
148 // AccidentalType
149 //---------------------------------------------------------
150 // NOTE: keep this in sync with with accList array in accidentals.cpp
151 
152 enum class AccidentalType : unsigned char {
154  NONE,
155  FLAT,
156  NATURAL,
157  SHARP,
158  SHARP2,
159  FLAT2,
160  SHARP3,
161  FLAT3,
162  NATURAL_FLAT,
164  SHARP_SHARP,
165 
166  // Gould arrow quartertone
177  ARROW_DOWN,
178  ARROW_UP,
179 
180  // Stein-Zimmermann
183  SHARP_SLASH,
184  SHARP_SLASH4,
185 
186  // Arel-Ezgi-Uzdilek (AEU)
187  FLAT_SLASH2,
188  FLAT_SLASH,
189  SHARP_SLASH3,
190  SHARP_SLASH2,
191 
192  // Extended Helmholtz-Ellis accidentals (just intonation)
199 
206 
213 
220 
227 
234 
237 
245 
246  FLAT_17,
247  SHARP_17,
248  FLAT_19,
249  SHARP_19,
250  FLAT_23,
251  SHARP_23,
252  FLAT_31,
253  SHARP_31,
254  FLAT_53,
255  SHARP_53,
256  //EQUALS_ALMOST,
257  //EQUALS,
258  //TILDE,
259 
260  // Persian
261  SORI,
262  KORON,
263 
264  // Wyschnegradsky
287 
288  // (Spartan) Sagittal
291  SAGITTAL_5CD,
292  SAGITTAL_5CU,
293  SAGITTAL_7CD,
294  SAGITTAL_7CU,
315 
316  END
318  };
319 
320 //---------------------------------------------------------
321 // NoteType
322 //---------------------------------------------------------
323 
324 enum class NoteType {
326  NORMAL = 0,
327  ACCIACCATURA = 0x1,
328  APPOGGIATURA = 0x2, // grace notes
329  GRACE4 = 0x4,
330  GRACE16 = 0x8,
331  GRACE32 = 0x10,
332  GRACE8_AFTER = 0x20,
333  GRACE16_AFTER = 0x40,
334  GRACE32_AFTER = 0x80,
335  INVALID = 0xFF
337  };
338 
339 constexpr NoteType operator| (NoteType t1, NoteType t2) {
340  return static_cast<NoteType>(static_cast<int>(t1) | static_cast<int>(t2));
341  }
342 constexpr bool operator& (NoteType t1, NoteType t2) {
343  return static_cast<int>(t1) & static_cast<int>(t2);
344  }
345 
346 
347 //---------------------------------------------------------
348 // Direction
349 //---------------------------------------------------------
350 
351 enum class Direction {
353  AUTO, UP, DOWN
355  };
356 
357 //---------------------------------------------------------
358 // GlissandoType
359 //---------------------------------------------------------
360 
361 enum class GlissandoType {
363  STRAIGHT, WAVY
365  };
366 
367 //---------------------------------------------------------
368 // GlissandoStyle
369 //---------------------------------------------------------
370 
371 enum class GlissandoStyle {
375  };
376 
377 //---------------------------------------------------------
378 // HarmonyType
379 //---------------------------------------------------------
380 
381 enum class HarmonyType {
383  STANDARD,
384  ROMAN,
385  NASHVILLE
387  };
388 
389 //---------------------------------------------------------
390 // Placement
391 //---------------------------------------------------------
392 
393 enum class Placement {
395  ABOVE, BELOW
397  };
398 
399 //---------------------------------------------------------
400 // HPlacement
401 //---------------------------------------------------------
402 
403 enum class HPlacement {
405  LEFT, CENTER, RIGHT
407  };
408 
409 //---------------------------------------------------------
410 // OffsetType
411 //---------------------------------------------------------
412 
413 enum class OffsetType : char {
414  ABS,
415  SPATIUM
416  };
417 
418 //-------------------------------------------------------------------
419 // SegmentType
420 //
421 // Type values determine the order of segments for a given tick
422 //-------------------------------------------------------------------
423 
424 enum class SegmentType {
426  Invalid = 0x0,
427  BeginBarLine = 0x1,
428  HeaderClef = 0x2,
429  KeySig = 0x4,
430  Ambitus = 0x8,
431  TimeSig = 0x10,
432  StartRepeatBarLine = 0x20,
433  Clef = 0x40,
434  BarLine = 0x80,
435  Breath = 0x100,
436  //--
437  ChordRest = 0x200,
438  //--
439  EndBarLine = 0x400,
440  KeySigAnnounce = 0x800,
441  TimeSigAnnounce = 0x1000,
442  All = -1,
446  };
447 
448 constexpr SegmentType operator| (const SegmentType t1, const SegmentType t2) {
449  return static_cast<SegmentType>(static_cast<int>(t1) | static_cast<int>(t2));
450  }
451 constexpr bool operator& (const SegmentType t1, const SegmentType t2) {
452  return static_cast<int>(t1) & static_cast<int>(t2);
453  }
454 
455 //-------------------------------------------------------------------
456 // Tid
460 //-------------------------------------------------------------------
461 
462 enum class Tid {
464  DEFAULT,
465  TITLE,
466  SUBTITLE,
467  COMPOSER,
468  POET,
469  LYRICS_ODD,
470  LYRICS_EVEN,
471  FINGERING,
478  DYNAMICS,
479  EXPRESSION,
480  TEMPO,
481  METRONOME,
483  TRANSLATOR,
484  TUPLET,
485  SYSTEM,
486  STAFF,
487  HARMONY_A,
488  HARMONY_B,
492  REPEAT_LEFT, // align to start of measure
493  REPEAT_RIGHT, // align to end of measure
494  FRAME,
495  TEXTLINE,
496  GLISSANDO,
497  OTTAVA,
498  VOLTA,
499  PEDAL,
500  LET_RING,
501  PALM_MUTE,
502  HAIRPIN,
503  BEND,
504  HEADER,
505  FOOTER,
507  STICKING,
508  USER1,
509  USER2,
510  USER3,
511  USER4,
512  USER5,
513  USER6,
514  USER7,
515  USER8,
516  USER9,
517  USER10,
518  USER11,
519  USER12,
520  // special, no-contents, styles used while importing older scores
521  TEXT_STYLES, // used for user-defined styles
522  IGNORED_STYLES // used for styles no longer relevant (mainly Figured bass text style)
524  };
525 
526 //---------------------------------------------------------
535 //---------------------------------------------------------
536 
537 enum class Align : char {
539  LEFT = 0,
540  RIGHT = 1,
541  HCENTER = 2,
542  TOP = 0,
543  BOTTOM = 4,
544  VCENTER = 8,
545  BASELINE = 16,
550  };
551 
552 constexpr Align operator| (Align a1, Align a2) {
553  return static_cast<Align>(static_cast<char>(a1) | static_cast<char>(a2));
554  }
555 constexpr bool operator& (Align a1, Align a2) {
556  return static_cast<char>(a1) & static_cast<char>(a2);
557  }
558 constexpr Align operator~ (Align a) {
559  return static_cast<Align>(~static_cast<char>(a));
560  }
561 
562 //---------------------------------------------------------
563 // FontStyle
564 //---------------------------------------------------------
565 
566 enum class FontStyle : char {
567  Normal = 0, Bold = 1, Italic = 2, Underline = 4
568  };
569 
570 constexpr FontStyle operator+ (FontStyle a1, FontStyle a2) {
571  return static_cast<FontStyle>(static_cast<char>(a1) | static_cast<char>(a2));
572  }
573 constexpr FontStyle operator- (FontStyle a1, FontStyle a2) {
574  return static_cast<FontStyle>(static_cast<char>(a1) & ~static_cast<char>(a2));
575  }
576 constexpr bool operator& (FontStyle a1, FontStyle a2) {
577  return static_cast<bool>(static_cast<char>(a1) & static_cast<char>(a2));
578  }
579 
580 //---------------------------------------------------------
581 // PlayEventType
585 //---------------------------------------------------------
586 
587 enum class PlayEventType : char {
589  Auto,
590  User,
591  };
593 
594 //---------------------------------------------------------
595 // Tuplets
596 //---------------------------------------------------------
597 
598 enum class TupletNumberType : char { SHOW_NUMBER, SHOW_RELATION, NO_TEXT };
599 enum class TupletBracketType : char { AUTO_BRACKET, SHOW_BRACKET, SHOW_NO_BRACKET };
600 
601 #ifdef SCRIPT_INTERFACE
602 Q_ENUM_NS(ElementType);
603 Q_ENUM_NS(Direction);
604 Q_ENUM_NS(GlissandoType);
605 Q_ENUM_NS(GlissandoStyle);
606 Q_ENUM_NS(Placement);
607 Q_ENUM_NS(HPlacement);
608 Q_ENUM_NS(SegmentType);
609 Q_ENUM_NS(Tid);
610 Q_ENUM_NS(Align);
611 Q_ENUM_NS(NoteType);
612 Q_ENUM_NS(PlayEventType);
613 Q_ENUM_NS(AccidentalType);
614 Q_ENUM_NS(HarmonyType);
615 #endif
616 
617 //hack: to force the build system to run moc on this file
619 class Mops : public QObject {
620  Q_GADGET
621  };
622 
623 extern Direction toDirection(const QString&);
624 extern const char* toString(Direction);
625 extern QString toUserString(Direction);
626 extern void fillComboBoxDirection(QComboBox*);
627 
628 
629 } // namespace Ms
630 
631 Q_DECLARE_METATYPE(Ms::Align);
632 
633 Q_DECLARE_METATYPE(Ms::Direction);
634 
635 Q_DECLARE_METATYPE(Ms::NoteType);
636 
637 Q_DECLARE_METATYPE(Ms::PlayEventType);
638 
639 Q_DECLARE_METATYPE(Ms::AccidentalType);
640 
641 Q_DECLARE_METATYPE(Ms::HPlacement);
642 
643 #endif
Placement
Definition: types.h:393
Tid
Enumerates the list of built-in text substyles.
Definition: types.h:462
Some play events are modified by user.
OffsetType
Definition: types.h:413
ElementType
Definition: types.h:34
Direction
Definition: types.h:351
Align
Align Because the Align enum has Top = 0 and Left = 0, align() & Align::Top will always return false...
Definition: types.h:537
Includes all barline types.
PlayEventType
Determines whether oranaments are automatically generated when playing a score and whether the PlayEv...
Definition: types.h:587
HPlacement
Definition: types.h:403
NoteType
Definition: types.h:324
GlissandoStyle
Definition: types.h:371
offset in staff space units
HarmonyType
Definition: types.h:381
AccidentalType
Definition: types.h:152
Definition: cursor.cpp:30
SegmentType
Definition: types.h:424
offset in point units
GlissandoType
Definition: types.h:361