MuseScore  3.4
Music composition and notation
scoreElement.h
Go to the documentation of this file.
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 __SCORE_ELEMENT_H__
14 #define __SCORE_ELEMENT_H__
15 
16 #include "types.h"
17 #include "style.h"
18 
19 namespace Ms {
20 
21 class ScoreElement;
22 class MasterScore;
23 class XmlWriter;
24 class ConnectorInfoReader;
25 class Measure;
26 class Staff;
27 class Part;
28 class Score;
29 class Sym;
30 class MuseScoreView;
31 class Segment;
32 class Element;
33 class BarLine;
34 class Articulation;
35 class Marker;
36 class Clef;
37 class KeySig;
38 class TimeSig;
39 class TempoText;
40 class Breath;
41 class Box;
42 class HBox;
43 class VBox;
44 class TBox;
45 class FBox;
46 class ChordRest;
47 class Slur;
48 class Tie;
49 class Glissando;
50 class GlissandoSegment;
51 class SystemDivider;
52 class RehearsalMark;
53 class Harmony;
54 class Volta;
55 class Jump;
56 class StaffText;
57 class Ottava;
58 class Note;
59 class Chord;
60 class Rest;
61 class LayoutBreak;
62 class Tremolo;
63 class System;
64 class Sticking;
65 class Lyrics;
66 class LyricsLine;
67 class LyricsLineSegment;
68 class Stem;
69 class SlurSegment;
70 class TieSegment;
71 class OttavaSegment;
72 class Beam;
73 class Hook;
74 class StemSlash;
75 class Spacer;
76 class StaffLines;
77 class Ambitus;
78 class Bracket;
79 class InstrumentChange;
80 class Text;
81 class TextBase;
82 class Hairpin;
83 class HairpinSegment;
84 class Bend;
85 class TremoloBar;
86 class RepeatMeasure;
87 class Tuplet;
88 class NoteDot;
89 class Dynamic;
90 class InstrumentName;
91 class DurationElement;
92 class Accidental;
93 class TextLine;
94 class TextLineSegment;
95 class Pedal;
96 class PedalSegment;
97 class LedgerLine;
98 class Icon;
99 class VoltaSegment;
100 class NoteLine;
101 class Trill;
102 class TrillSegment;
103 class Symbol;
104 class FSymbol;
105 class Fingering;
106 class NoteHead;
107 class FiguredBass;
108 class StaffState;
109 class Arpeggio;
110 class Image;
111 class ChordLine;
112 class SlurTieSegment;
113 class FretDiagram;
114 class StaffTypeChange;
115 class MeasureBase;
116 class Page;
117 class SystemText;
118 class BracketItem;
119 class Spanner;
120 class SpannerSegment;
121 class Lasso;
122 class BagpipeEmbellishment;
123 class LineSegment;
124 class BSymbol;
125 class TextLineBase;
126 class Fermata;
127 
128 class LetRing;
129 class LetRingSegment;
130 class Vibrato;
131 class VibratoSegment;
132 class PalmMute;
133 class PalmMuteSegment;
134 class MeasureNumber;
135 
136 class StaffTextBase;
137 
138 enum class Pid : int;
139 enum class PropertyFlags : char;
140 enum class Sid : int;
141 
142 //---------------------------------------------------------
143 // LinkedElements
144 //---------------------------------------------------------
145 
146 class LinkedElements : public QList<ScoreElement*> {
147  int _lid; // unique id for every linked list
148 
149  public:
151  LinkedElements(Score*, int id);
152 
153  void setLid(Score*, int val);
154  int lid() const { return _lid; }
155 
156  ScoreElement* mainElement();
157  };
158 
159 //---------------------------------------------------------
160 // ElementName
161 //---------------------------------------------------------
162 
163 struct ElementName {
165  const char* name;
166  const char* userName;
167  };
168 
169 //---------------------------------------------------------
170 // ScoreElement
171 //---------------------------------------------------------
172 
175  static ElementStyle const emptyStyle;
176 
177  protected:
178  const ElementStyle* _elementStyle { &emptyStyle };
179  PropertyFlags* _propertyFlagsList { 0 };
180  LinkedElements* _links { 0 };
181  virtual int getPropertyFlagsIdx(Pid id) const;
182 
183  public:
184  ScoreElement(Score* s) : _score(s) {}
185  ScoreElement(const ScoreElement& se);
186 
187  virtual ~ScoreElement();
188 
189  Score* score() const { return _score; }
190  MasterScore* masterScore() const;
191  virtual void setScore(Score* s) { _score = s; }
192  const char* name() const;
193  virtual QString userName() const;
194  virtual ElementType type() const = 0;
195 
196  static ElementType name2type(const QStringRef&, bool silent = false);
197  static ElementType name2type(const QString& s) { return name2type(QStringRef(&s)); }
198  static const char* name(ElementType);
199 
200  virtual QVariant getProperty(Pid) const = 0;
201  virtual bool setProperty(Pid, const QVariant&) = 0;
202  virtual QVariant propertyDefault(Pid) const;
203  virtual void resetProperty(Pid id);
204  QVariant propertyDefault(Pid pid, Tid tid) const;
205  virtual bool sizeIsSpatiumDependent() const { return true; }
206 
207  virtual void reset(); // reset all properties & position to default
208 
209  virtual Pid propertyId(const QStringRef& xmlName) const;
210  virtual QString propertyUserValue(Pid) const;
211 
212  virtual void initElementStyle(const ElementStyle*);
213  virtual const ElementStyle* styledProperties() const { return _elementStyle; }
214 
215  virtual PropertyFlags* propertyFlagsList() const { return _propertyFlagsList; }
216  virtual PropertyFlags propertyFlags(Pid) const;
217  bool isStyled(Pid pid) const;
218  QVariant styleValue(Pid, Sid) const;
219 
220  void setPropertyFlags(Pid, PropertyFlags);
221 
222  virtual Sid getPropertyStyle(Pid) const;
223  bool readProperty(const QStringRef&, XmlReader&, Pid);
224  void readProperty(XmlReader&, Pid);
225  bool readStyledProperty(XmlReader& e, const QStringRef& tag);
226 
227  virtual void readAddConnector(ConnectorInfoReader* info, bool pasteMode);
228 
229  virtual void styleChanged();
230 
231  virtual void undoChangeProperty(Pid id, const QVariant&, PropertyFlags ps);
232  void undoChangeProperty(Pid id, const QVariant&);
233  void undoResetProperty(Pid id);
234 
235  void undoPushProperty(Pid);
236  void writeProperty(XmlWriter& xml, Pid id) const;
237  void writeStyledProperties(XmlWriter&) const;
238 
239  QList<ScoreElement*> linkList() const;
240 
241  void linkTo(ScoreElement*);
242  void unlink();
243  bool isLinked(ScoreElement*);
244 
245  virtual void undoUnlink();
246  int lid() const { return _links ? _links->lid() : 0; }
247  LinkedElements* links() const { return _links; }
248  void setLinks(LinkedElements* le) { _links = le; }
249 
250  //---------------------------------------------------
251  // check type
252  //
253  // Example for ChordRest:
254  //
255  // bool isChordRest()
256  //---------------------------------------------------
257 
258 
259 #define CONVERT(a,b) \
260  bool is##a() const { return type() == ElementType::b; }
261 
357 #undef CONVERT
358 
359  virtual bool isElement() const { return false; } // overridden in element.h
360  bool isChordRest() const { return isRest() || isChord() || isRepeatMeasure(); }
361  bool isDurationElement() const { return isChordRest() || isTuplet(); }
362  bool isSlurTieSegment() const { return isSlurSegment() || isTieSegment(); }
363  bool isSLineSegment() const;
364  bool isBox() const { return isVBox() || isHBox() || isTBox() || isFBox(); }
365  bool isVBoxBase() const { return isVBox() || isTBox() || isFBox(); }
366  bool isMeasureBase() const { return isMeasure() || isBox(); }
367  bool isTextBase() const;
368  bool isTextLineBaseSegment() const {
369  return isHairpinSegment()
370  || isLetRingSegment()
371  || isTextLineSegment()
372  || isOttavaSegment()
373  || isPalmMuteSegment()
374  || isPedalSegment()
375  || isVoltaSegment()
376  ;
377  }
378  bool isLineSegment() const {
379  return isGlissandoSegment()
380  || isLyricsLineSegment()
381  || isTextLineBaseSegment()
382  || isTrillSegment()
383  || isVibratoSegment()
384  ;
385  }
386  bool isSpannerSegment() const { return isLineSegment() || isTextLineBaseSegment() || isSlurSegment() || isTieSegment(); }
387  bool isBSymbol() const { return isImage() || isSymbol(); }
388  bool isTextLineBase() const {
389  return isHairpin()
390  || isLetRing()
391  || isNoteLine()
392  || isOttava()
393  || isPalmMute()
394  || isPedal()
395  || isTextLine()
396  || isVolta()
397  ;
398  }
399  bool isSLine() const {
400  return isTextLineBase() || isTrill() || isGlissando() || isVibrato();
401  }
402 
403  bool isSpanner() const {
404  return isSlur()
405  || isTie()
406  || isGlissando()
407  || isLyricsLine()
408  || isTextLineBase()
409  || isSLine()
410  ;
411  }
412  bool isStaffTextBase() const {
413  return isStaffText() || isSystemText();
414  }
415  };
416 
417 //---------------------------------------------------
418 // safe casting of ScoreElement
419 //
420 // Example for ChordRest:
421 //
422 // ChordRest* toChordRest(Element* e)
423 //---------------------------------------------------
424 
425 static inline ChordRest* toChordRest(ScoreElement* e) {
426  Q_ASSERT(e == 0 || e->type() == ElementType::CHORD || e->type() == ElementType::REST
427  || e->type() == ElementType::REPEAT_MEASURE);
428  return (ChordRest*)e;
429  }
430 static inline const ChordRest* toChordRest(const ScoreElement* e) {
431  Q_ASSERT(e == 0 || e->type() == ElementType::CHORD || e->type() == ElementType::REST
432  || e->type() == ElementType::REPEAT_MEASURE);
433  return (const ChordRest*)e;
434  }
435 static inline DurationElement* toDurationElement(ScoreElement* e) {
436  Q_ASSERT(e == 0 || e->type() == ElementType::CHORD || e->type() == ElementType::REST
438  return (DurationElement*)e;
439  }
440 static inline const DurationElement* toDurationElement(const ScoreElement* e) {
441  Q_ASSERT(e == 0 || e->type() == ElementType::CHORD || e->type() == ElementType::REST
443  return (const DurationElement*)e;
444  }
445 static inline Rest* toRest(ScoreElement* e) {
446  Q_ASSERT(!e || e->isRest() || e->isRepeatMeasure());
447  return (Rest*)e;
448  }
449 static inline const Rest* toRest(const ScoreElement* e) {
450  Q_ASSERT(!e || e->isRest() || e->isRepeatMeasure());
451  return (const Rest*)e;
452  }
453 static inline SlurTieSegment* toSlurTieSegment(ScoreElement* e) {
454  Q_ASSERT(e == 0 || e->type() == ElementType::SLUR_SEGMENT || e->type() == ElementType::TIE_SEGMENT);
455  return (SlurTieSegment*)e;
456  }
457 static inline const SlurTieSegment* toSlurTieSegment(const ScoreElement* e) {
458  Q_ASSERT(e == 0 || e->type() == ElementType::SLUR_SEGMENT || e->type() == ElementType::TIE_SEGMENT);
459  return (const SlurTieSegment*)e;
460  }
461 static inline const MeasureBase* toMeasureBase(const ScoreElement* e) {
462  Q_ASSERT(e == 0 || e->isMeasure() || e->isVBox() || e->isHBox() || e->isTBox() || e->isFBox());
463  return (const MeasureBase*)e;
464  }
465 static inline MeasureBase* toMeasureBase(ScoreElement* e) {
466  Q_ASSERT(e == 0 || e->isMeasureBase());
467  return (MeasureBase*)e;
468  }
469 static inline Box* toBox(ScoreElement* e) {
470  Q_ASSERT(e == 0 || e->isBox());
471  return (Box*)e;
472  }
473 static inline SpannerSegment* toSpannerSegment(ScoreElement* e) {
474  Q_ASSERT(e == 0 || e->isSpannerSegment());
475  return (SpannerSegment*)e;
476  }
477 static inline const SpannerSegment* toSpannerSegment(const ScoreElement* e) {
478  Q_ASSERT(e == 0 || e->isSpannerSegment());
479  return (const SpannerSegment*)e;
480  }
481 static inline BSymbol* toBSymbol(ScoreElement* e) {
482  Q_ASSERT(e == 0 || e->isBSymbol());
483  return (BSymbol*)e;
484  }
485 static inline TextLineBase* toTextLineBase(ScoreElement* e) {
486  Q_ASSERT(e == 0 || e->isTextLineBase());
487  return (TextLineBase*)e;
488  }
489 static inline TextBase* toTextBase(ScoreElement* e) {
490  Q_ASSERT(e == 0 || e->isTextBase());
491  return (TextBase*)e;
492  }
493 static inline const TextBase* toTextBase(const ScoreElement* e) {
494  Q_ASSERT(e == 0 || e->isTextBase());
495  return (const TextBase*)e;
496  }
497 static inline StaffTextBase* toStaffTextBase(ScoreElement* e) {
498  Q_ASSERT(e == 0 || e->isStaffTextBase());
499  return (StaffTextBase*)e;
500  }
501 static inline const StaffTextBase* toStaffTextBase(const ScoreElement* e) {
502  Q_ASSERT(e == 0 || e->isStaffTextBase());
503  return (const StaffTextBase*)e;
504  }
505 
506 #define CONVERT(a) \
507 static inline a* to##a(ScoreElement* e) { Q_ASSERT(e == 0 || e->is##a()); return (a*)e; } \
508 static inline const a* to##a(const ScoreElement* e) { Q_ASSERT(e == 0 || e->is##a()); return (const a*)e; }
509 
510  CONVERT(Element)
511  CONVERT(Note)
512  CONVERT(Chord)
514  CONVERT(Articulation)
515  CONVERT(Fermata)
516  CONVERT(Marker)
517  CONVERT(Clef)
518  CONVERT(KeySig)
520  CONVERT(Measure)
521  CONVERT(TempoText)
522  CONVERT(Breath)
523  CONVERT(HBox)
524  CONVERT(VBox)
525  CONVERT(TBox)
526  CONVERT(FBox)
527  CONVERT(Spanner)
528  CONVERT(Tie)
529  CONVERT(Slur)
530  CONVERT(Glissando)
531  CONVERT(GlissandoSegment)
532  CONVERT(SystemDivider)
533  CONVERT(RehearsalMark)
534  CONVERT(Harmony)
535  CONVERT(Volta)
536  CONVERT(Jump)
537  CONVERT(StaffText)
538  CONVERT(Ottava)
539  CONVERT(LayoutBreak)
540  CONVERT(Segment)
541  CONVERT(Tremolo)
542  CONVERT(System)
543  CONVERT(Lyrics)
544  CONVERT(Stem)
545  CONVERT(Beam)
546  CONVERT(Hook)
547  CONVERT(StemSlash)
548  CONVERT(LineSegment)
549  CONVERT(SlurSegment)
550  CONVERT(TieSegment)
551  CONVERT(Spacer)
552  CONVERT(StaffLines)
554  CONVERT(Bracket)
555  CONVERT(InstrumentChange)
556  CONVERT(StaffTypeChange)
557  CONVERT(Text)
558  CONVERT(MeasureNumber)
559  CONVERT(Hairpin)
560  CONVERT(HairpinSegment)
561  CONVERT(Bend)
562  CONVERT(TremoloBar)
563  CONVERT(RepeatMeasure)
564  CONVERT(Tuplet)
565  CONVERT(NoteDot)
566  CONVERT(Dynamic)
567  CONVERT(InstrumentName)
568  CONVERT(Accidental)
569  CONVERT(TextLine)
570  CONVERT(TextLineSegment)
571  CONVERT(Pedal)
572  CONVERT(PedalSegment)
573  CONVERT(OttavaSegment)
574  CONVERT(LedgerLine)
575  CONVERT(Icon)
576  CONVERT(VoltaSegment)
577  CONVERT(NoteLine)
578  CONVERT(Trill)
579  CONVERT(TrillSegment)
580  CONVERT(LetRing)
581  CONVERT(LetRingSegment)
582  CONVERT(Vibrato)
583  CONVERT(VibratoSegment)
584  CONVERT(PalmMute)
585  CONVERT(PalmMuteSegment)
586  CONVERT(Symbol)
587  CONVERT(FSymbol)
588  CONVERT(Fingering)
589  CONVERT(NoteHead)
590  CONVERT(LyricsLine)
591  CONVERT(LyricsLineSegment)
592  CONVERT(FiguredBass)
593  CONVERT(StaffState)
594  CONVERT(Arpeggio)
595  CONVERT(Image)
596  CONVERT(ChordLine)
597  CONVERT(FretDiagram)
598  CONVERT(Page)
599  CONVERT(SystemText)
600  CONVERT(BracketItem)
601  CONVERT(Staff)
602  CONVERT(Part)
603  CONVERT(Lasso)
604  CONVERT(BagpipeEmbellishment)
605  CONVERT(Sticking)
606 #undef CONVERT
607 
608 }
609 
610 #endif
611 
Helper class for reading beams, tuplets and spanners.
Definition: connector.h:96
horizontal frame
Definition: box.h:103
virtual base class for frames "boxes"
Definition: box.h:33
Definition: pedal.h:26
Definition: image.h:28
Definition: bracketItem.h:25
bool isFBox() const
Definition: scoreElement.h:278
bezier line attached to top note of a chord implements fall, doit, plop, bend
Definition: chordline.h:34
Definition: lyrics.h:111
Global staff data not directly related to drawing.
Definition: staff.h:62
Definition: palmmute.h:44
symbols for line break, page break etc.
Definition: layoutbreak.h:27
Score * _score
Definition: scoreElement.h:174
Definition: beam.h:37
Pid
Definition: property.h:62
Virtual base class for Measure, HBox and VBox.
Definition: measurebase.h:61
This class represents a time signature.
Definition: timesig.h:41
Definition: bagpembell.h:51
bool isTextLineBaseSegment() const
Definition: scoreElement.h:368
Fretboard diagram.
Definition: fret.h:122
Definition: xml.h:67
virtual PropertyFlags * propertyFlagsList() const
Definition: scoreElement.h:215
Definition: editdrumset.cpp:32
Text frame.
Definition: textframe.h:27
void setLinks(LinkedElements *le)
Definition: scoreElement.h:248
static ElementStyle const emptyStyle
Definition: scoreElement.h:175
parent: System
Definition: spanner.h:50
Definition: scoreElement.h:146
Definition: volta.h:48
Graphic representation of a note stem.
Definition: stem.h:27
bool isSlurTieSegment() const
Definition: scoreElement.h:362
Definition: measurenumber.h:24
one measure in a system
Definition: measure.h:65
Definition: score.h:1227
Definition: scoreElement.h:163
Definition: slur.h:55
Definition: tremolo.h:39
bool isBSymbol() const
Definition: scoreElement.h:387
Tempo marker which determines the midi tempo.
Definition: tempotext.h:29
Definition: scoreElement.h:173
LinkedElements * links() const
Definition: scoreElement.h:247
std::vector< StyledProperty > ElementStyle
Definition: style.h:1339
Definition: letring.h:26
bool isStaffTextBase() const
Definition: scoreElement.h:412
virtual bool isElement() const
Definition: scoreElement.h:359
Symbol constructed from a font glyph.
Definition: symbol.h:66
Definition: lyrics.h:139
bool isLineSegment() const
Definition: scoreElement.h:378
virtual bool sizeIsSpatiumDependent() const
Definition: scoreElement.h:205
Jump label.
Definition: jump.h:31
ElementType type
Definition: scoreElement.h:164
Graphic representation of a clef.
Definition: clef.h:132
bool isSpanner() const
Definition: scoreElement.h:403
A complete figured bass indication.
Definition: figuredbass.h:232
Definition: volta.h:32
Definition: icon.h:26
bool isRepeatMeasure() const
Definition: scoreElement.h:310
Definition: hairpin.h:84
Definition: ottava.h:89
Definition: accidental.h:65
Definition: stafftextbase.h:35
Definition: trill.h:62
Definition: score.h:391
Definition: noteline.h:26
Definition: arpeggio.h:30
Definition: ottava.h:71
PropertyFlags
Definition: property.h:54
bool isChordRest() const
Definition: scoreElement.h:360
Definition: bracket.h:29
base class for Symbol and Image
Definition: bsymbol.h:25
bool isTBox() const
Definition: scoreElement.h:277
Example of 1/8 triplet: _baseLen = 1/8 _actualNotes = 3 _normalNotes = 2 (3 notes played in the time ...
Definition: tuplet.h:37
Definition: stafftypechange.h:26
virtual void setScore(Score *s)
Definition: scoreElement.h:191
Score * score() const
Definition: scoreElement.h:189
Definition: marker.h:27
The StaffLines class is the graphic representation of a staff, it draws the horizontal staff lines...
Definition: stafflines.h:23
bool isTextBase() const
Definition: scoreElement.cpp:840
Vertical spacer element to adjust the distance of staves.
Definition: spacer.h:33
int lid() const
Definition: scoreElement.h:246
bool isVBoxBase() const
Definition: scoreElement.h:365
Definition: palmmute.h:26
int lid() const
Definition: scoreElement.h:154
frame containing fret diagrams
Definition: box.h:154
QVariant readProperty(Pid id, XmlReader &e)
Definition: property.cpp:581
Definition: bend.h:27
Definition: glissando.h:49
Definition: tremolobar.h:29
virtual ElementType type() const =0
The KeySig class represents a Key Signature on a staff.
Definition: keysig.h:31
Definition: hairpin.h:47
Tid
Enumerates the list of built-in text substyles.
Definition: types.h:371
Definition: trill.h:27
a single segment of slur; also used for Tie
Definition: slur.h:25
Definition: fermata.h:33
bool isTextLineBase() const
Definition: scoreElement.h:388
articulation marks
Definition: articulation.h:57
used for grace notes of type acciaccatura
Definition: stemslash.h:26
Definition: lasso.h:24
Definition: vibrato.h:54
Definition: textbase.h:217
Definition: segment.h:50
int _lid
Definition: scoreElement.h:147
dynamics marker; determines midi velocity
Definition: dynamic.h:31
Definition: stafftext.h:27
bool isSpannerSegment() const
Definition: scoreElement.h:386
Definition: aeolus.cpp:26
Definition: slurtie.h:80
Definition: iname.h:28
Definition: note.h:53
bool isHBox() const
Definition: scoreElement.h:275
bool isVBox() const
Definition: scoreElement.h:276
Sid
Definition: style.h:33
This class implements a rest.
Definition: rest.h:29
#define CONVERT(a, b)
Definition: scoreElement.h:506
Definition: letring.h:41
Definition: xml.h:218
Definition: hook.h:26
Virtual base class for Chord, Rest and Tuplet.
Definition: duration.h:34
static ElementType name2type(const QString &s)
Definition: scoreElement.h:197
bool isSLine() const
Definition: scoreElement.h:399
Definition: xmlwriter.h:26
Definition: textline.h:26
a Tie has a Note as startElement/endElement
Definition: tie.h:60
bool isBox() const
Definition: scoreElement.h:364
Symbol constructed from builtin symbol.
Definition: symbol.h:31
Graphic representation of a chord.
Definition: chord.h:55
Definition: harmony.h:72
Definition: fingering.h:24
Definition: chordrest.h:48
virtual const ElementStyle * styledProperties() const
Definition: scoreElement.h:213
Definition: glissando.h:33
Definition: pedal.h:44
Definition: notedot.h:27
Definition: textline.h:42
Definition: systemdivider.h:25
Definition: textlinebase.h:70
bool isRest() const
Definition: scoreElement.h:263
Definition: instrchange.h:25
One row of measures for all instruments; a complete piece of the timeline.
Definition: system.h:79
const char * userName
Definition: scoreElement.h:166
bool isMeasureBase() const
Definition: scoreElement.h:366
Graphic representation of a note.
Definition: note.h:212
Graphic representation of a ledger line.
Definition: ledgerline.h:31
ElementType
Definition: types.h:34
Symbol
Definition: symbols.h:31
Definition: ambitus.h:26
Definition: barline.h:57
Definition: lyrics.h:27
Definition: part.h:47
vertical frame
Definition: box.h:137
breathType() is index in symList
Definition: breath.h:37
bool isDurationElement() const
Definition: scoreElement.h:361
Definition: text.h:24
const char * name
Definition: scoreElement.h:165
Definition: vibrato.h:27
Definition: repeat.h:28
Drum sticking.
Definition: sticking.h:32
Definition: systemtext.h:24
Pid propertyId(const QStringRef &s)
Definition: property.cpp:347
Definition: page.h:34
Definition: staffstate.h:32
ScoreElement(Score *s)
Definition: scoreElement.h:184
bool isMeasure() const
Definition: scoreElement.h:272
a single segment of slur; also used for Tie
Definition: tie.h:25
Definition: rehearsalmark.h:24