27 class Lyrics final :
public TextBase {
43 static constexpr
int TEMP_MELISMA_TICKS = 1;
52 LyricsLine* _separator;
54 bool isMelisma()
const;
55 virtual void undoChangeProperty(Pid
id,
const QVariant&, PropertyFlags ps)
override;
65 virtual Lyrics* clone()
const override {
return new Lyrics(*
this); }
67 virtual void scanElements(
void* data,
void (*func)(
void*, Element*),
bool all=
true)
override;
68 virtual bool acceptDrop(EditData&)
const override;
69 virtual Element* drop(EditData&)
override;
71 Segment* segment()
const {
return toSegment(parent()->parent()); }
72 Measure* measure()
const {
return toMeasure(parent()->parent()->parent()); }
73 ChordRest* chordRest()
const {
return toChordRest(parent()); }
75 virtual void layout()
override;
78 virtual void write(XmlWriter& xml)
const override;
79 virtual void read(XmlReader&)
override;
80 virtual bool readProperties(XmlReader&);
81 virtual int subtype()
const override {
return _no; }
82 virtual QString subtypeName()
const override {
return QObject::tr(
"Verse %1").arg(
_no + 1); }
83 void setNo(
int n) {
_no = n; }
84 int no()
const {
return _no; }
85 bool isEven()
const {
return _no % 1; }
86 void setSyllabic(
Syllabic s) { _syllabic = s; }
87 Syllabic syllabic()
const {
return _syllabic; }
88 virtual void add(Element*)
override;
89 virtual void remove(Element*)
override;
90 virtual void endEdit(EditData&)
override;
92 Fraction ticks()
const {
return _ticks; }
93 void setTicks(
const Fraction& tick) { _ticks = tick; }
94 Fraction endTick()
const;
95 void removeFromScore();
97 using ScoreElement::undoChangeProperty;
98 using TextBase::paste;
99 virtual void paste(EditData&)
override;
101 virtual QVariant getProperty(Pid propertyId)
const override;
102 virtual bool setProperty(Pid propertyId,
const QVariant&)
override;
103 virtual QVariant propertyDefault(Pid
id)
const override;
104 virtual Sid getPropertyStyle(Pid)
const override;
112 class LyricsLine final :
public SLine {
118 LyricsLine(
const LyricsLine&);
120 virtual LyricsLine* clone()
const override {
return new LyricsLine(*
this); }
122 virtual void layout()
override;
123 virtual LineSegment* createLineSegment()
override;
124 virtual void removeUnmanaged()
override;
125 virtual void styleChanged()
override;
127 Lyrics* lyrics()
const {
return toLyrics(parent()); }
128 Lyrics* nextLyrics()
const {
return _nextLyrics; }
129 bool isEndMelisma()
const {
return lyrics()->ticks().isNotZero(); }
130 bool isDash()
const {
return !isEndMelisma(); }
131 virtual bool setProperty(Pid propertyId,
const QVariant& v)
override;
132 virtual SpannerSegment* layoutSystem(System*)
override;
140 class LyricsLineSegment final :
public LineSegment {
146 LyricsLineSegment(Spanner*, Score*);
148 virtual LyricsLineSegment* clone()
const override {
return new LyricsLineSegment(*
this); }
150 virtual void draw(QPainter*)
const override;
151 virtual void layout()
override;
153 LyricsLine* lyricsLine()
const {
return toLyricsLine(spanner()); }
154 Lyrics* lyrics()
const {
return lyricsLine()->lyrics(); }