Replaced direct creation of staff texts to use factory

This commit is contained in:
Eism 2022-02-02 15:57:41 +02:00
parent 65f56d02ee
commit a078e1243d
12 changed files with 30 additions and 17 deletions

View file

@ -622,7 +622,7 @@ TextBase* Score::addText(TextStyleType type, bool addToAllScores)
if (!chordRest) {
break;
}
textBox = new StaffText(this->dummy()->segment(), TextStyleType::STAFF);
textBox = Factory::createStaffText(this->dummy()->segment(), TextStyleType::STAFF);
chordRest->undoAddAnnotation(textBox);
break;
}
@ -640,7 +640,7 @@ TextBase* Score::addText(TextStyleType type, bool addToAllScores)
if (!chordRest) {
break;
}
textBox = new StaffText(this->dummy()->segment(), TextStyleType::EXPRESSION);
textBox = Factory::createStaffText(this->dummy()->segment(), TextStyleType::EXPRESSION);
textBox->setPlacement(PlacementV::BELOW);
textBox->setPropertyFlags(Pid::PLACEMENT, PropertyFlags::UNSTYLED);
chordRest->undoAddAnnotation(textBox);

View file

@ -627,6 +627,16 @@ CREATE_ITEM_IMPL(StaffState, ElementType::STAFF_STATE, EngravingItem, setupAcces
CREATE_ITEM_IMPL(StaffTypeChange, ElementType::STAFFTYPE_CHANGE, MeasureBase, setupAccessible)
MAKE_ITEM_IMPL(StaffTypeChange, MeasureBase)
StaffText* Factory::createStaffText(Segment * parent, Ms::TextStyleType textStyleType, bool setupAccessible)
{
StaffText* staffText = new StaffText(parent, textStyleType);
if (setupAccessible) {
staffText->setupAccessible();
}
return staffText;
}
CREATE_ITEM_IMPL(Stem, ElementType::STEM, Chord, setupAccessible)
COPY_ITEM_IMPL(Stem)

View file

@ -149,6 +149,9 @@ public:
static Ms::StaffTypeChange* createStaffTypeChange(Ms::MeasureBase* parent, bool setupAccessible = true);
static std::shared_ptr<Ms::StaffTypeChange> makeStaffTypeChange(Ms::MeasureBase* parent);
static Ms::StaffText* createStaffText(Ms::Segment* parent, Ms::TextStyleType textStyleType = TextStyleType::STAFF,
bool setupAccessible = true);
static Ms::Stem* createStem(Ms::Chord* parent, bool setupAccessible = true);
static Ms::Stem* copyStem(const Ms::Stem& src);

View file

@ -1933,7 +1933,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx
}
} else if (tag == "Text") {
segment = m->getSegment(SegmentType::ChordRest, e.tick());
StaffText* t = new StaffText(segment);
StaffText* t = Factory::createStaffText(segment);
t->setTrack(e.track());
readStaffText(t, e);
if (t->empty()) {
@ -1957,7 +1957,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx
segment->add(t);
} else if (tag == "StaffText") {
segment = m->getSegment(SegmentType::ChordRest, e.tick());
StaffText* t = new StaffText(segment);
StaffText* t = Factory::createStaffText(segment);
t->setTrack(e.track());
readStaffText(t, e);
segment->add(t);

View file

@ -2774,7 +2774,7 @@ static void readMeasure206(Measure* m, int staffIdx, XmlReader& e, ReadContext&
|| styleName == "Volta") { // TODO: is it possible to get it from style?
t = new SystemText(ctx.dummy()->segment());
} else {
t = new StaffText(ctx.dummy()->segment());
t = Factory::createStaffText(ctx.dummy()->segment());
}
t->setTrack(e.track());
readTextPropertyStyle206(tctx.tag(), e, t, t);

View file

@ -411,7 +411,7 @@ void MeasureRW::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, int
}
} else if (tag == "Text") {
segment = measure->getSegment(SegmentType::ChordRest, e.tick());
StaffText* t = new StaffText(segment);
StaffText* t = Factory::createStaffText(segment);
t->setTrack(e.track());
t->read(e);
if (t->empty()) {

View file

@ -287,7 +287,7 @@ static void processBasicDrawObj(QList<BasicDrawObj*> objects, Segment* s, int tr
break;
}
}
TextBase* text = new StaffText(s);
TextBase* text = Factory::createStaffText(s);
QFont f(st->font());
text->setFamily(f.family());
text->setItalic(f.italic());

View file

@ -772,7 +772,7 @@ bool GuitarPro4::read(QFile* fp)
if (capo > 0) {
Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
st->setPlainText(QString("Capo. fret ") + QString::number(capo));
st->setTrack(i * VOICES);
s->add(st);

View file

@ -115,7 +115,7 @@ int GuitarPro5::readBeatEffects(int track, Segment* segment)
readTremoloBar(track, segment); // readBend();
}
if (fxBits2 & 0x01) { // Rasgueado effect
StaffText* st = new StaffText(score->dummy()->segment());
StaffText* st = Factory::createStaffText(score->dummy()->segment());
st->setXmlText("rasg.");
st->setParent(segment);
st->setTrack(track);
@ -571,7 +571,7 @@ bool GuitarPro5::readTracks()
if (capo > 0) {
Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
st->setPlainText(QString("Capo. fret ") + QString::number(capo));
st->setTrack(i * VOICES);
s->add(st);
@ -927,7 +927,7 @@ bool GuitarPro5::read(QFile* fp)
}
} else {
Segment* s = measure->getSegment(SegmentType::KeySig, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
static constexpr char text[][22] = {
"fine", "Da Capo", "D.C. al Coda", "D.C. al Double Coda",
"D.C. al Fine", "Da Segno", "D.S. al Coda", "D.S. al Double Coda",

View file

@ -1505,7 +1505,7 @@ Fraction GuitarPro6::readBeats(QString beats, GPPartInfo* partInfo, Measure* mea
}
}
if (!t && !text.isEmpty()) {
StaffText* s = new StaffText(segment);
StaffText* s = Factory::createStaffText(segment);
s->setPlainText(text);
s->setTrack(track);
segment->add(s);
@ -2136,7 +2136,7 @@ void GuitarPro6::readMasterBars(GPPartInfo* partInfo)
// no text for two consecutive freetime timesig
if (!previousFreeTime) {
s = m->getSegment(SegmentType::ChordRest, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
st->setXmlText("Free time");
st->setParent(s);
st->setTrack(stave);
@ -2160,7 +2160,7 @@ void GuitarPro6::readMasterBars(GPPartInfo* partInfo)
if (!bars[measureCounter].direction.compare("Fine")
|| (bars[measureCounter].direction.compare("") && !bars[measureCounter].directionStyle.compare("Jump"))) {
Segment* s = measure->getSegment(SegmentType::KeySig, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
if (!bars[measureCounter].direction.compare("Fine")) {
st->setXmlText("fine");
} else if (!bars[measureCounter].direction.compare("DaCapo")) {

View file

@ -1681,7 +1681,7 @@ bool GuitarPro2::read(QFile* fp)
if (capo > 0) {
Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
// st->setTextStyleType(TextStyleType::STAFF);
st->setPlainText(QString("Capo. fret ") + QString::number(capo));
st->setTrack(i * VOICES);
@ -2397,7 +2397,7 @@ bool GuitarPro3::read(QFile* fp)
if (capo > 0) {
Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick());
StaffText* st = new StaffText(s);
StaffText* st = Factory::createStaffText(s);
// st->setTextStyleType(TextStyleType::STAFF);
st->setPlainText(QString("Capo. fret ") + QString::number(capo));
st->setTrack(i * VOICES);

View file

@ -2587,7 +2587,7 @@ void MusicXMLParserDirection::direction(const QString& partId,
}
} else {
if (_wordsText != "" || _metroText != "") {
t = new StaffText(_score->dummy()->segment());
t = Factory::createStaffText(_score->dummy()->segment());
t->setXmlText(_wordsText + _metroText);
} else {
t = new RehearsalMark(_score->dummy()->segment());