Remove read300 functions

This commit is contained in:
Dmitri Ovodok 2018-08-27 23:57:15 +03:00
parent e8baf704c6
commit c354eb24c3
59 changed files with 799 additions and 3113 deletions

View file

@ -94,7 +94,6 @@ add_library (
shape.cpp systemdivider.cpp midimapping.cpp stafflines.cpp
read114.cpp
read206.cpp
read300.cpp
read301.cpp stafftypelist.cpp stafftypechange.cpp
bracketItem.cpp
lyricsline.cpp

View file

@ -13,6 +13,7 @@
#include "ambitus.h"
#include "chord.h"
#include "measure.h"
#include "read206.h"
#include "score.h"
#include "segment.h"
#include "staff.h"
@ -244,16 +245,24 @@ bool Ambitus::readProperties(XmlReader& e)
_bottomTpc = e.readInt();
else if (tag == "topAccidental") {
while (e.readNextStartElement()) {
if (e.name() == "Accidental")
_topAccid.read(e);
if (e.name() == "Accidental") {
if (score()->mscVersion() < 301)
readAccidental206(&_topAccid, e);
else
_topAccid.read(e);
}
else
e.skipCurrentElement();
}
}
else if (tag == "bottomAccidental") {
while (e.readNextStartElement()) {
if (e.name() == "Accidental")
_bottomAccid.read(e);
if (e.name() == "Accidental") {
if (score()->mscVersion() < 301)
readAccidental206(&_bottomAccid, e);
else
_bottomAccid.read(e);
}
else
e.skipCurrentElement();
}

View file

@ -81,12 +81,10 @@ class Ambitus final : public Element {
virtual void layout() override;
virtual QPointF pagePos() const override; ///< position in page coordinates
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void scanElements(void* data, void (*func)(void*, Element*), bool all=true) override;
virtual void setTrack(int val) override;
virtual void write(XmlWriter&) const override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual QString accessibleInfo() const override;
// properties

View file

@ -87,10 +87,8 @@ class Articulation final : public Element {
virtual void layout() override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual void reset() override;
virtual QLineF dragAnchor() const override;

View file

@ -2029,6 +2029,8 @@ void Beam::read(XmlReader& e)
{
QPointF p1, p2;
qreal _spatium = spatium();
if (score()->mscVersion() < 301)
_id = e.intAttribute("id");
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "StemDirection") {
@ -2085,71 +2087,6 @@ void Beam::read(XmlReader& e)
}
}
//---------------------------------------------------------
// Beam::read300
//---------------------------------------------------------
void Beam::read300(XmlReader& e)
{
QPointF p1, p2;
qreal _spatium = spatium();
_id = e.intAttribute("id");
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "StemDirection") {
setProperty(Pid::STEM_DIRECTION, Ms::getProperty(Pid::STEM_DIRECTION, e));
e.readNext();
}
else if (tag == "distribute")
setDistribute(e.readInt());
else if (readStyledProperty(e, tag))
;
else if (tag == "growLeft")
setGrowLeft(e.readDouble());
else if (tag == "growRight")
setGrowRight(e.readDouble());
else if (tag == "y1") {
if (fragments.empty())
fragments.append(new BeamFragment);
BeamFragment* f = fragments.back();
int idx = (_direction == Direction::AUTO || _direction == Direction::DOWN) ? 0 : 1;
_userModified[idx] = true;
f->py1[idx] = e.readDouble() * _spatium;
}
else if (tag == "y2") {
if (fragments.empty())
fragments.append(new BeamFragment);
BeamFragment* f = fragments.back();
int idx = (_direction == Direction::AUTO || _direction == Direction::DOWN) ? 0 : 1;
_userModified[idx] = true;
f->py2[idx] = e.readDouble() * _spatium;
}
else if (tag == "Fragment") {
BeamFragment* f = new BeamFragment;
int idx = (_direction == Direction::AUTO || _direction == Direction::DOWN) ? 0 : 1;
_userModified[idx] = true;
qreal _spatium = spatium();
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "y1")
f->py1[idx] = e.readDouble() * _spatium;
else if (tag == "y2")
f->py2[idx] = e.readDouble() * _spatium;
else
e.unknown();
}
fragments.append(f);
}
else if (tag == "l1" || tag == "l2") // ignore
e.skipCurrentElement();
else if (tag == "subtype") // obsolete
e.skipCurrentElement();
else if (!Element::readProperties300(e))
e.unknown();
}
}
//---------------------------------------------------------
// BeamEditData
//---------------------------------------------------------

View file

@ -92,7 +92,6 @@ class Beam final : public Element {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void spatiumChanged(qreal /*oldValue*/, qreal /*newValue*/) override;
virtual void reset() override;

View file

@ -62,8 +62,6 @@ class Box : public MeasureBase {
virtual void writeProperties(XmlWriter&) const override;
virtual bool readProperties(XmlReader&) override;
virtual void read(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual bool acceptDrop(EditData&) const override;
virtual Element* drop(EditData&) override;
virtual void add(Element* e) override;

View file

@ -108,9 +108,7 @@ class Chord final : public ChordRest {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual Element* drop(EditData&) override;
void setStemDirection(Direction d) { _stemDirection = d; }

View file

@ -84,7 +84,6 @@ class ChordRest : public DurationElement {
virtual void writeProperties(XmlWriter& xml) const;
virtual bool readProperties(XmlReader&);
virtual bool readProperties300(XmlReader&);
virtual void readAddConnector(ConnectorInfoReader* info, bool pasteMode) override;
virtual void scanElements(void* data, void (*func)(void*, Element*), bool all=true) override;

View file

@ -150,7 +150,6 @@ class Clef final : public Element {
virtual void layout();
virtual void draw(QPainter*) const;
virtual void read(XmlReader&);
virtual void read300(XmlReader&);
virtual void write(XmlWriter&) const;
virtual bool isEditable() const { return false; }

View file

@ -49,7 +49,6 @@ class DurationElement : public Element {
virtual Measure* measure() const { return (Measure*)(parent()); }
void readAddTuplet(Tuplet* t);
virtual bool readProperties300(XmlReader&);
void writeTupletStart(XmlWriter& xml) const;
void writeTupletEnd(XmlWriter& xml) const;

View file

@ -93,7 +93,6 @@ class Dynamic final : public TextBase {
virtual void layout() override;
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual bool isEditable() const override { return true; }
virtual void startEdit(EditData&) override;

View file

@ -262,11 +262,9 @@ class Element : public ScoreElement {
virtual void writeProperties(XmlWriter& xml) const;
virtual bool readProperties(XmlReader&);
virtual bool readProperties300(XmlReader& xml) { return Element::readProperties(xml); }
virtual void write(XmlWriter&) const;
virtual void read(XmlReader&);
virtual void read300(XmlReader& xml) { read(xml); }
virtual void startDrag(EditData&);
virtual QRectF drag(EditData&);

View file

@ -260,7 +260,6 @@ class FiguredBass final : public TextBase {
virtual void endEdit(EditData&) override;
virtual void layout() override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void setSelected(bool f) override;
virtual void setVisible(bool f) override;
virtual void startEdit(EditData&) override;

View file

@ -390,6 +390,9 @@ void Glissando::read(XmlReader& e)
qDeleteAll(spannerSegments());
spannerSegments().clear();
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
_showText = false;
while (e.readNextStartElement()) {
const QStringRef& tag = e.name();

View file

@ -73,7 +73,6 @@ class Glissando final : public SLine {
virtual void layout() override;
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
// property/style methods
virtual QVariant getProperty(Pid propertyId) const override;

View file

@ -109,7 +109,6 @@ class Hairpin final : public TextLineBase {
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual QVariant getProperty(Pid id) const override;
virtual bool setProperty(Pid propertyId, const QVariant&) override;

View file

@ -154,7 +154,6 @@ class Harmony final : public TextBase {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
QString harmonyName() const;
void render();

View file

@ -35,7 +35,6 @@ class InstrumentChange final : public TextBase {
virtual ElementType type() const override { return ElementType::INSTRUMENT_CHANGE; }
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
Instrument* instrument() const { return _instrument; }
void setInstrument(Instrument* i) { _instrument = i; }

View file

@ -57,7 +57,6 @@ class Jump final : public TextBase {
Measure* measure() const { return toMeasure(parent()); }
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
virtual void layout() override;

View file

@ -71,6 +71,8 @@ LetRing::LetRing(Score* s)
void LetRing::read(XmlReader& e)
{
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
if (!TextLineBase::readProperties(e))
e.unknown();

View file

@ -47,7 +47,6 @@ class LetRing final : public TextLineBase {
virtual LetRing* clone() const override { return new LetRing(*this); }
virtual ElementType type() const override { return ElementType::LET_RING; }
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
LineSegment* createLineSegment();
virtual void setYoff(qreal) override;

View file

@ -1130,6 +1130,9 @@ void SLine::read(XmlReader& e)
delete seg;
spannerSegments().clear();
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
if (!SLine::readProperties(e))
e.unknown();

View file

@ -51,8 +51,6 @@ class LineSegment : public SpannerSegment {
friend class SLine;
virtual void read(XmlReader&) override;
bool readProperties(XmlReader&);
virtual void read300(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual Element* propertyDelegate(Pid) override;
@ -87,7 +85,6 @@ class SLine : public Spanner {
virtual SpannerSegment* layoutSystem(System*) override;
bool readProperties(XmlReader& node);
bool readProperties300(XmlReader&);
void writeProperties(XmlWriter& xml) const;
virtual LineSegment* createLineSegment() = 0;
void setLen(qreal l);
@ -96,7 +93,6 @@ class SLine : public Spanner {
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
bool diagonal() const { return _diagonal; }
void setDiagonal(bool v) { _diagonal = v; }

View file

@ -71,9 +71,7 @@ class Lyrics final : public TextBase {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual bool readProperties(XmlReader&);
virtual bool readProperties300(XmlReader&) override;
virtual int subtype() const override { return _no; }
virtual QString subtypeName() const override { return QObject::tr("Verse %1").arg(_no + 1); }
void setNo(int n) { _no = n; }

View file

@ -57,7 +57,6 @@ class Marker final : public TextBase {
virtual void layout() override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
QString label() const { return _label; }

View file

@ -2324,462 +2324,6 @@ void Measure::readAddConnector(ConnectorInfoReader* info, bool pasteMode)
}
}
//---------------------------------------------------------
// Measure::read300
//---------------------------------------------------------
void Measure::read300(XmlReader& e, int staffIdx)
{
Segment* segment = 0;
qreal _spatium = spatium();
QList<Chord*> graceNotes;
e.tuplets().clear();
e.setTrack(staffIdx * VOICES);
for (int n = int(_mstaves.size()); n <= staffIdx; ++n) {
Staff* staff = score()->staff(n);
MStaff* s = new MStaff;
s->setLines(new StaffLines(score()));
s->lines()->setParent(this);
s->lines()->setTrack(n * VOICES);
s->lines()->setVisible(!staff->invisible());
_mstaves.push_back(s);
}
// tick is obsolete
if (e.hasAttribute("tick"))
e.initTick(score()->fileDivision(e.intAttribute("tick")));
bool irregular;
if (e.hasAttribute("len")) {
QStringList sl = e.attribute("len").split('/');
if (sl.size() == 2)
_len = Fraction(sl[0].toInt(), sl[1].toInt());
else
qDebug("illegal measure size <%s>", qPrintable(e.attribute("len")));
irregular = true;
score()->sigmap()->add(tick(), SigEvent(_len, _timesig));
score()->sigmap()->add(tick() + ticks(), SigEvent(_timesig));
}
else
irregular = false;
Staff* staff = score()->staff(staffIdx);
Fraction timeStretch(staff->timeStretch(tick()));
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "move")
e.initTick(e.readFraction().ticks() + tick());
else if (tag == "tick") {
e.initTick(score()->fileDivision(e.readInt()));
}
else if (tag == "BarLine") {
BarLine* barLine = new BarLine(score());
barLine->setTrack(e.track());
barLine->read300(e);
//
// StartRepeatBarLine: at rtick == 0, always BarLineType::START_REPEAT
// BarLine: in the middle of a measure, has no semantic
// EndBarLine: at the end of a measure
// BeginBarLine: first segment of a measure, systemic barline
SegmentType st = SegmentType::Invalid;
int t = e.tick() - tick();
if (t && (t != ticks()))
st = SegmentType::BarLine;
else if (barLine->barLineType() == BarLineType::START_REPEAT && t == 0)
st = SegmentType::StartRepeatBarLine;
else if (barLine->barLineType() == BarLineType::START_REPEAT && t == ticks()) {
// old version, ignore
delete barLine;
barLine = 0;
}
else if (t == 0 && segment == 0)
st = SegmentType::BeginBarLine;
else
st = SegmentType::EndBarLine;
if (barLine) {
segment = getSegmentR(st, t);
segment->add(barLine);
barLine->layout();
}
}
else if (tag == "Chord") {
Chord* chord = new Chord(score());
chord->setTrack(e.track());
chord->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
if (chord->noteType() != NoteType::NORMAL)
graceNotes.push_back(chord);
else {
segment->add(chord);
for (int i = 0; i < graceNotes.size(); ++i) {
Chord* gc = graceNotes[i];
gc->setGraceIndex(i);
chord->add(gc);
}
graceNotes.clear();
int crticks = chord->actualTicks();
e.incTick(crticks);
}
}
else if (tag == "Rest") {
Rest* rest = new Rest(score());
rest->setDurationType(TDuration::DurationType::V_MEASURE);
rest->setDuration(timesig()/timeStretch);
rest->setTrack(e.track());
rest->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(rest);
if (!rest->duration().isValid()) // hack
rest->setDuration(timesig()/timeStretch);
e.incTick(rest->actualTicks());
}
else if (tag == "Breath") {
Breath* breath = new Breath(score());
breath->setTrack(e.track());
int tick = e.tick();
breath->read300(e);
segment = getSegment(SegmentType::Breath, tick);
segment->add(breath);
}
else if (tag == "endSpanner") {
int id = e.attribute("id").toInt();
Spanner* spanner = e.findSpanner(id);
if (spanner) {
spanner->setTicks(e.tick() - spanner->tick());
// if (spanner->track2() == -1)
// the absence of a track tag [?] means the
// track is the same as the beginning of the slur
if (spanner->track2() == -1)
spanner->setTrack2(spanner->track() ? spanner->track() : e.track());
}
else {
// remember "endSpanner" values
SpannerValues sv;
sv.spannerId = id;
sv.track2 = e.track();
sv.tick2 = e.tick();
e.addSpannerValues(sv);
}
e.readNext();
}
else if (tag == "Slur") {
Slur *sl = new Slur(score());
sl->setTick(e.tick());
sl->read300(e);
//
// check if we already saw "endSpanner"
//
int id = e.spannerId(sl);
const SpannerValues* sv = e.spannerValues(id);
if (sv) {
sl->setTick2(sv->tick2);
sl->setTrack2(sv->track2);
}
score()->addSpanner(sl);
}
else if (tag == "HairPin"
|| tag == "Pedal"
|| tag == "Ottava"
|| tag == "Trill"
|| tag == "TextLine"
|| tag == "LetRing"
|| tag == "Vibrato"
|| tag == "PalmMute"
|| tag == "Volta") {
Spanner* sp = toSpanner(Element::name2Element(tag, score()));
sp->setTrack(e.track());
sp->setTick(e.tick());
// ?? sp->setAnchor(Spanner::Anchor::SEGMENT);
sp->read300(e);
score()->addSpanner(sp);
//
// check if we already saw "endSpanner"
//
int id = e.spannerId(sp);
const SpannerValues* sv = e.spannerValues(id);
if (sv) {
sp->setTicks(sv->tick2 - sp->tick());
sp->setTrack2(sv->track2);
}
}
else if (tag == "RepeatMeasure") {
RepeatMeasure* rm = new RepeatMeasure(score());
rm->setTrack(e.track());
rm->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(rm);
e.incTick(ticks());
}
else if (tag == "Clef") {
Clef* clef = new Clef(score());
clef->setTrack(e.track());
clef->read300(e);
clef->setGenerated(false);
// there may be more than one clef segment for same tick position
// the first clef may be missing and is added later in layout
bool header;
if (e.tick() != tick())
header = false;
else if (!segment)
header = true;
else {
header = true;
for (Segment* s = _segments.first(); s && !s->rtick(); s = s->next()) {
if (s->isKeySigType() || s->isTimeSigType()) {
// hack: there may be other segment types which should
// generate a clef at current position
header = false;
break;
}
}
}
segment = getSegment(header ? SegmentType::HeaderClef : SegmentType::Clef, e.tick());
segment->add(clef);
}
else if (tag == "TimeSig") {
TimeSig* ts = new TimeSig(score());
ts->setTrack(e.track());
ts->read300(e);
// if time sig not at beginning of measure => courtesy time sig
int currTick = e.tick();
bool courtesySig = (currTick > tick());
if (courtesySig) {
// if courtesy sig., just add it without map processing
segment = getSegment(SegmentType::TimeSigAnnounce, currTick);
segment->add(ts);
}
else {
// if 'real' time sig., do full process
segment = getSegment(SegmentType::TimeSig, currTick);
segment->add(ts);
timeStretch = ts->stretch().reduced();
_timesig = ts->sig() / timeStretch;
if (irregular) {
score()->sigmap()->add(tick(), SigEvent(_len, _timesig));
score()->sigmap()->add(tick() + ticks(), SigEvent(_timesig));
}
else {
_len = _timesig;
score()->sigmap()->add(tick(), SigEvent(_timesig));
}
}
}
else if (tag == "KeySig") {
KeySig* ks = new KeySig(score());
ks->setTrack(e.track());
ks->read300(e);
int curTick = e.tick();
if (!ks->isCustom() && !ks->isAtonal() && ks->key() == Key::C && curTick == 0) {
// ignore empty key signature
qDebug("remove keysig c at tick 0");
if (ks->links()) {
if (ks->links()->size() == 1)
e.linkIds().remove(ks->links()->lid());
}
}
else {
// if key sig not at beginning of measure => courtesy key sig
// bool courtesySig = (curTick > tick());
bool courtesySig = (curTick == endTick());
segment = getSegment(courtesySig ? SegmentType::KeySigAnnounce : SegmentType::KeySig, curTick);
segment->add(ks);
if (!courtesySig)
staff->setKey(curTick, ks->keySigEvent());
}
}
else if (tag == "Text") {
StaffText* t = new StaffText(score());
t->setTrack(e.track());
t->read300(e);
if (t->empty()) {
if (t->links()) {
if (t->links()->size() == 1) {
qDebug("==reading empty text: deleted lid = %d", t->links()->lid());
e.linkIds().remove(t->links()->lid());
delete t;
}
}
}
else {
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(t);
}
}
//----------------------------------------------------
// Annotation
else if (tag == "Dynamic") {
Dynamic* dyn = new Dynamic(score());
dyn->setTrack(e.track());
dyn->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(dyn);
}
else if (tag == "Harmony"
|| tag == "FretDiagram"
|| tag == "TremoloBar"
|| tag == "Symbol"
|| tag == "Tempo"
|| tag == "StaffText"
|| tag == "SystemText"
|| tag == "RehearsalMark"
|| tag == "InstrumentChange"
|| tag == "StaffState"
|| tag == "FiguredBass"
|| tag == "Fermata"
) {
Element* el = Element::name2Element(tag, score());
// hack - needed because tick tags are unreliable in 1.3 scores
// for symbols attached to anything but a measure
el->setTrack(e.track());
el->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(el);
}
else if (tag == "Marker" || tag == "Jump"
) {
Element* el = Element::name2Element(tag, score());
el->setTrack(e.track());
el->read300(e);
add(el);
}
else if (tag == "Image") {
if (MScore::noImages)
e.skipCurrentElement();
else {
Element* el = Element::name2Element(tag, score());
el->setTrack(e.track());
el->read300(e);
segment = getSegment(SegmentType::ChordRest, e.tick());
segment->add(el);
}
}
//----------------------------------------------------
else if (tag == "stretch") {
double val = e.readDouble();
if (val < 0.0)
val = 0;
setUserStretch(val);
}
else if (tag == "noOffset")
setNoOffset(e.readInt());
else if (tag == "measureNumberMode")
setMeasureNumberMode(MeasureNumberMode(e.readInt()));
else if (tag == "irregular")
setIrregular(e.readBool());
else if (tag == "breakMultiMeasureRest")
_breakMultiMeasureRest = e.readBool();
else if (tag == "sysInitBarLineType") {
const QString& val(e.readElementText());
BarLine* barLine = new BarLine(score());
barLine->setTrack(e.track());
barLine->setBarLineType(val);
segment = getSegmentR(SegmentType::BeginBarLine, 0);
segment->add(barLine);
}
else if (tag == "Tuplet") {
Tuplet* tuplet = new Tuplet(score());
tuplet->setTrack(e.track());
tuplet->setTick(e.tick());
tuplet->setParent(this);
tuplet->read300(e);
e.addTuplet(tuplet);
}
else if (tag == "startRepeat") {
setRepeatStart(true);
e.readNext();
}
else if (tag == "endRepeat") {
_repeatCount = e.readInt();
setRepeatEnd(true);
}
else if (tag == "vspacer" || tag == "vspacerDown") {
if (!_mstaves[staffIdx]->vspacerDown()) {
Spacer* spacer = new Spacer(score());
spacer->setSpacerType(SpacerType::DOWN);
spacer->setTrack(staffIdx * VOICES);
add(spacer);
}
_mstaves[staffIdx]->vspacerDown()->setGap(e.readDouble() * _spatium);
}
else if (tag == "vspacerFixed") {
if (!_mstaves[staffIdx]->vspacerDown()) {
Spacer* spacer = new Spacer(score());
spacer->setSpacerType(SpacerType::FIXED);
spacer->setTrack(staffIdx * VOICES);
add(spacer);
}
_mstaves[staffIdx]->vspacerDown()->setGap(e.readDouble() * _spatium);
}
else if (tag == "vspacerUp") {
if (!_mstaves[staffIdx]->vspacerUp()) {
Spacer* spacer = new Spacer(score());
spacer->setSpacerType(SpacerType::UP);
spacer->setTrack(staffIdx * VOICES);
add(spacer);
}
_mstaves[staffIdx]->vspacerUp()->setGap(e.readDouble() * _spatium);
}
else if (tag == "visible")
_mstaves[staffIdx]->setVisible(e.readInt());
else if (tag == "slashStyle")
_mstaves[staffIdx]->setSlashStyle(e.readInt());
else if (tag == "Beam") {
Beam* beam = new Beam(score());
beam->setTrack(e.track());
beam->read300(e);
beam->setParent(0);
e.addBeam(beam);
}
else if (tag == "Segment")
segment->read300(e);
else if (tag == "MeasureNumber") {
Text* noText = new Text(score(), Tid::MEASURE_NUMBER);
noText->read(e);
noText->setFlag(ElementFlag::ON_STAFF, true);
noText->setTrack(e.track());
noText->setParent(this);
_mstaves[noText->staffIdx()]->setNoText(noText);
}
else if (tag == "SystemDivider") {
SystemDivider* sd = new SystemDivider(score());
sd->read300(e);
add(sd);
}
else if (tag == "Ambitus") {
Ambitus* range = new Ambitus(score());
range->read300(e);
segment = getSegment(SegmentType::Ambitus, e.tick());
range->setParent(segment); // a parent segment is needed for setTrack() to work
range->setTrack(trackZeroVoice(e.track()));
segment->add(range);
}
else if (tag == "multiMeasureRest") {
_mmRestCount = e.readInt();
// set tick to previous measure
setTick(e.lastMeasure()->tick());
e.initTick(e.lastMeasure()->tick());
}
else if (MeasureBase::readProperties300(e))
;
else
e.unknown();
}
e.checkTuplets();
}
//---------------------------------------------------------
// visible
//---------------------------------------------------------

View file

@ -104,8 +104,6 @@ class Measure final : public MeasureBase {
void read(XmlReader&, int idx);
void read(XmlReader& d) { read(d, 0); }
virtual void readAddConnector(ConnectorInfoReader* info, bool pasteMode) override;
void read300(XmlReader&, int idx);
void read300(XmlReader& d) { read300(d, 0); }
virtual void write(XmlWriter& xml) const override { Element::write(xml); }
void write(XmlWriter&, int, bool writeSystemElements, bool forceTimeSig) const;
void writeBox(XmlWriter&) const;

View file

@ -117,7 +117,6 @@ class MeasureBase : public Element {
virtual void remove(Element*) override;
virtual void writeProperties(XmlWriter&) const override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual int tick() const override { return _tick; }
virtual int ticks() const { return 0; }

View file

@ -386,8 +386,6 @@ class Note final : public Element {
virtual void read(XmlReader&) override;
virtual bool readProperties(XmlReader&) override;
virtual void readAddConnector(ConnectorInfoReader* info, bool pasteMode) override;
virtual void read300(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual void write(XmlWriter&) const override;
bool acceptDrop(EditData&) const override;

View file

@ -246,24 +246,13 @@ void Ottava::read(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement())
readProperties(e);
updateStyledProperties();
}
//---------------------------------------------------------
// Ottava::read300
//---------------------------------------------------------
void Ottava::read300(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement())
readProperties300(e);
}
//---------------------------------------------------------
// readProperties
//---------------------------------------------------------
@ -302,44 +291,6 @@ bool Ottava::readProperties(XmlReader& e)
return true;
}
//---------------------------------------------------------
// Ottava::readProperties300
//---------------------------------------------------------
bool Ottava::readProperties300(XmlReader& e)
{
const QStringRef& tag(e.name());
if (tag == "subtype") {
QString s = e.readElementText();
bool ok;
int idx = s.toInt(&ok);
if (!ok) {
_ottavaType = OttavaType::OTTAVA_8VA;
for (unsigned i = 0; i < sizeof(ottavaDefault)/sizeof(*ottavaDefault); ++i) {
if (s == ottavaDefault[i].name) {
_ottavaType = ottavaDefault[i].type;
break;
}
}
}
else if (score()->mscVersion() <= 114) {
//subtype are now in a different order...
if (idx == 1)
idx = 2;
else if (idx == 2)
idx = 1;
_ottavaType = OttavaType(idx);
}
}
else if (readStyledProperty(e, tag))
return true;
else if (!TextLineBase::readProperties300(e)) {
e.unknown();
return false;
}
return true;
}
//---------------------------------------------------------
// setYoff
// used in musicxml import

View file

@ -114,9 +114,7 @@ class Ottava final : public TextLineBase {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader& de) override;
virtual void read300(XmlReader&) override;
bool readProperties(XmlReader& e);
bool readProperties300(XmlReader& e);
virtual QVariant getProperty(Pid propertyId) const override;
virtual bool setProperty(Pid propertyId, const QVariant&) override;

View file

@ -71,6 +71,8 @@ PalmMute::PalmMute(Score* s)
void PalmMute::read(XmlReader& e)
{
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
if (!TextLineBase::readProperties(e))
e.unknown();

View file

@ -49,7 +49,6 @@ class PalmMute final : public TextLineBase {
virtual PalmMute* clone() const override { return new PalmMute(*this); }
virtual ElementType type() const override { return ElementType::PALM_MUTE; }
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
LineSegment* createLineSegment();
virtual void setYoff(qreal) override;

View file

@ -88,6 +88,8 @@ Pedal::Pedal(Score* s)
void Pedal::read(XmlReader& e)
{
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
if (!TextLineBase::readProperties(e))
e.unknown();

View file

@ -47,7 +47,6 @@ class Pedal final : public TextLineBase {
virtual Pedal* clone() const override { return new Pedal(*this); }
virtual ElementType type() const override { return ElementType::PEDAL; }
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
LineSegment* createLineSegment();
virtual void setYoff(qreal) override;

View file

@ -409,7 +409,7 @@ static bool readTextProperties(XmlReader& e, TextBase* t, Element*)
else if (tag == "systemFlag") { // TODO
e.readElementText();
}
else if (!t->readProperties300(e))
else if (!t->readProperties(e))
return false;
t->setUserOff(QPointF()); // ignore user offsets
t->setAutoplace(true);
@ -583,7 +583,7 @@ static void readAccidental(Accidental* a, XmlReader& e)
a->setSmall(e.readInt());
else if (tag == "offset")
e.skipCurrentElement(); // ignore manual layout in older scores
else if (a->Element::readProperties300(e))
else if (a->Element::readProperties(e))
;
else
e.unknown();
@ -840,7 +840,7 @@ static void readNote(Note* note, XmlReader& e)
}
note->setHeadType(val);
}
else if (note->readProperties300(e))
else if (readNoteProperties206(note, e))
;
else
e.unknown();
@ -882,7 +882,7 @@ static void readNote(Note* note, XmlReader& e)
}
// check consistency of pitch, tpc1, tpc2, and transposition
// see note in InstrumentChange::read300() about a known case of tpc corruption produced in 2.0.x
// see note in InstrumentChange::read() about a known case of tpc corruption produced in 2.0.x
// but since there are other causes of tpc corruption (eg, https://musescore.org/en/node/74746)
// including perhaps some we don't know about yet,
// we will attempt to fix some problems here regardless of version
@ -955,7 +955,7 @@ static void readClef(Clef* clef, XmlReader& e)
const QStringRef& tag(e.name());
if (tag == "subtype")
clef->setClefType(readClefType(e.readElementText()));
else if (!clef->readProperties300(e))
else if (!clef->readProperties(e))
e.unknown();
}
if (clef->clefType() == ClefType::INVALID)
@ -985,7 +985,7 @@ static void readTuplet(Tuplet* tuplet, XmlReader& e)
bl = e.readInt();
else if (tag == "tick")
tuplet->setTick(e.readInt());
else if (!tuplet->readProperties300(e))
else if (!readTupletProperties206(e, tuplet))
e.unknown();
}
Fraction r = (tuplet->ratio() == 1) ? tuplet->ratio() : tuplet->ratio().reduced();
@ -1031,7 +1031,7 @@ static void readTremolo(Tremolo* tremolo, XmlReader& e)
}
tremolo->setTremoloType(st);
}
else if (!tremolo->Element::readProperties300(e))
else if (!tremolo->Element::readProperties(e))
e.unknown();
}
}
@ -1069,7 +1069,7 @@ static void readChord(Measure* m, Chord* chord, XmlReader& e)
readTremolo(tremolo, e);
tremolo->setParent(chord);
}
else if (chord->readProperties300(e))
else if (readChordProperties206(e, chord))
;
else
e.unknown();
@ -1094,7 +1094,7 @@ static void readRest(Measure* m, Rest* rest, XmlReader& e)
else
rest->add(el);
}
else if (rest->readProperties300(e))
else if (readChordRestProperties206(e, rest))
;
else
e.unknown();
@ -1139,7 +1139,7 @@ static void readLineSegment114(XmlReader& e, LineSegment* ls)
if (tag == "off1")
ls->setUserOff(e.readPoint() * ls->spatium());
else
ls->readProperties300(e);
ls->readProperties(e);
}
}
@ -1190,7 +1190,7 @@ static bool readTextLineProperties114(XmlReader& e, TextLineBase* tl)
ls->setAutoplace(true);
tl->add(ls);
}
else if (tl->readProperties300(e))
else if (tl->readProperties(e))
return true;
return true;
}
@ -1585,7 +1585,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
}
barLine->setBarLineType(t);
}
else if (!barLine->Element::readProperties300(e))
else if (!barLine->Element::readProperties(e))
e.unknown();
}
@ -1690,7 +1690,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
Breath* breath = new Breath(m->score());
breath->setTrack(e.track());
int tick = e.tick();
breath->read300(e);
breath->read(e);
// older scores placed the breath segment right after the chord to which it applies
// rather than before the next chordrest segment with an element for the staff
// result would be layout too far left if there are other segments due to notes in other staves
@ -1735,7 +1735,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "Slur") {
Slur *sl = new Slur(m->score());
sl->setTick(e.tick());
sl->read300(e);
readSlur206(e, sl);
//
// check if we already saw "endSpanner"
//
@ -1775,7 +1775,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "RepeatMeasure") {
RepeatMeasure* rm = new RepeatMeasure(m->score());
rm->setTrack(e.track());
rm->read300(e);
readRest(m, rm, e);
segment = m->getSegment(SegmentType::ChordRest, e.tick());
segment->add(rm);
if (rm->actualDuration().isZero()) { // might happen with 1.3 scores
@ -1826,7 +1826,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "TimeSig") {
TimeSig* ts = new TimeSig(m->score());
ts->setTrack(e.track());
ts->read300(e);
ts->read(e);
// if time sig not at beginning of measure => courtesy time sig
int currTick = e.tick();
bool courtesySig = (currTick > m->tick());
@ -1847,7 +1847,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "KeySig") {
KeySig* ks = new KeySig(m->score());
ks->setTrack(e.track());
ks->read300(e);
ks->read(e);
int curTick = e.tick();
if (!ks->isCustom() && !ks->isAtonal() && ks->key() == Key::C && curTick == 0) {
// ignore empty key signature
@ -1899,7 +1899,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
l->setTicks(e.readInt());
else if (t == "Number") { // obsolete
_verseNumber = new Text(l->score());
_verseNumber->read300(e);
readText114(e, _verseNumber, l);
_verseNumber->setParent(l);
}
else if (!readTextProperties(e, l, l))
@ -1941,7 +1941,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "Dynamic") {
Dynamic* dyn = new Dynamic(m->score());
dyn->setTrack(e.track());
dyn->read300(e);
dyn->read(e);
dyn->setDynamicType(dyn->xmlText());
segment = m->getSegment(SegmentType::ChordRest, e.tick());
segment->add(dyn);
@ -1982,7 +1982,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
if (el->type() == ElementType::SYMBOL)
el->setParent(m); // this will get reset when adding to segment
el->setTrack(e.track());
el->read300(e);
el->read(e);
segment = m->getSegment(SegmentType::ChordRest, e.tick());
segment->add(el);
}
@ -2001,7 +2001,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
j->setPlayRepeats(e.readBool());
else if (t == "subtype")
e.readInt();
else if (!j->TextBase::readProperties300(e))
else if (!j->TextBase::readProperties(e))
e.unknown();
}
m->add(j);
@ -2018,7 +2018,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
a->setLabel(s);
mt = a->markerType(s);
}
else if (!a->TextBase::readProperties300(e))
else if (!a->TextBase::readProperties(e))
e.unknown();
}
a->setMarkerType(mt);
@ -2038,7 +2038,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else {
Element* el = Element::name2Element(tag, m->score());
el->setTrack(e.track());
el->read300(e);
el->read(e);
segment = m->getSegment(SegmentType::ChordRest, e.tick());
segment->add(el);
}
@ -2106,12 +2106,12 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
else if (tag == "Beam") {
Beam* beam = new Beam(m->score());
beam->setTrack(e.track());
beam->read300(e);
beam->read(e);
beam->setParent(0);
e.addBeam(beam);
}
else if (tag == "Segment") {
segment->read300(e);
segment->read(e);
while (e.readNextStartElement()) {
const QStringRef& t(e.name());
if (t == "off1") {
@ -2124,7 +2124,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
}
else if (tag == "MeasureNumber") {
Text* noText = new Text(m->score(), Tid::MEASURE_NUMBER);
noText->read300(e);
readText114(e, noText, m);
noText->setFlag(ElementFlag::ON_STAFF, true);
// noText->setFlag(ElementFlag::MOVABLE, false); ??
noText->setTrack(e.track());
@ -2137,7 +2137,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
m->setTick(e.lastMeasure()->tick());
e.initTick(e.lastMeasure()->tick());
}
else if (m->MeasureBase::readProperties300(e))
else if (m->MeasureBase::readProperties(e))
;
else
e.unknown();
@ -2219,7 +2219,7 @@ static bool readBoxProperties(XmlReader& e, Box* b)
}
else if (tag == "Symbol") {
Symbol* s = new Symbol(b->score());
s->read300(e);
s->read(e);
b->add(s);
}
else if (tag == "Image") {
@ -2228,7 +2228,7 @@ static bool readBoxProperties(XmlReader& e, Box* b)
else {
Image* image = new Image(b->score());
image->setTrack(e.track());
image->read300(e);
image->read(e);
b->add(image);
}
}
@ -2242,7 +2242,7 @@ static bool readBoxProperties(XmlReader& e, Box* b)
readBox(e, vb);
b->add(vb);
}
// else if (MeasureBase::readProperties300(e))
// else if (MeasureBase::readProperties(e))
// ;
else
return false;
@ -2672,7 +2672,7 @@ static void readStyle(MStyle* style, XmlReader& e)
if (tag == "TextStyle") {
// TextStyle s;
//TODO s.read300(e);
//TODO s.read(e);
// style->setTextStyle(s);
e.skipCurrentElement();
}
@ -2824,7 +2824,7 @@ Score::FileError MasterScore::read114(XmlReader& e)
readStaffContent(this, e);
else if (tag == "KeySig") { // not supported
KeySig* ks = new KeySig(this);
ks->read300(e);
ks->read(e);
delete ks;
}
else if (tag == "siglist")
@ -2894,7 +2894,7 @@ Score::FileError MasterScore::read114(XmlReader& e)
e.skipCurrentElement();
#if 0 // TODO
TextStyle s;
s.read300(e);
s.read(e);
qreal spMM = spatium() / DPMM;
if (s.frameWidthMM() != 0.0)
@ -2944,7 +2944,7 @@ Score::FileError MasterScore::read114(XmlReader& e)
}
else if (tag == "Slur") {
Slur* slur = new Slur(this);
slur->read300(e);
readSlur206(e, slur);
addSpanner(slur);
}
else if ((tag == "HairPin")
@ -2962,8 +2962,12 @@ Score::FileError MasterScore::read114(XmlReader& e)
readTextLine114(e, toTextLine(s));
else if (tag == "Pedal")
readPedal114(e, toPedal(s));
else
s->read300(e);
else if (tag == "Trill")
readTrill206(e, toTrill(s));
else {
Q_ASSERT(tag == "HairPin");
readHairpin206(e, toHairpin(s));
}
if (s->track() == -1)
s->setTrack(e.track());
else
@ -2993,7 +2997,7 @@ Score::FileError MasterScore::read114(XmlReader& e)
}
else if (tag == "Beam") {
Beam* beam = new Beam(this);
beam->read300(e);
beam->read(e);
beam->setParent(0);
// _beams.append(beam);
}

File diff suppressed because it is too large Load diff

View file

@ -66,12 +66,23 @@ class PageFormat {
};
extern Element* readArticulation(ChordRest*, XmlReader&);
extern void readAccidental206(Accidental*, XmlReader&);
extern void setPageFormat(MStyle*, const PageFormat&);
extern void initPageFormat(MStyle*, PageFormat*);
extern void readTextStyle206(MStyle* style, XmlReader& e);
//extern void readText206(XmlReader& e, TextBase* t, Element* be);
// extern void readVolta206(XmlReader& e, Volta* volta);
extern void readTextLine206(XmlReader& e, TextLineBase* tlb);
extern void readTrill206(XmlReader& e, Trill* t);
extern void readHairpin206(XmlReader& e, Hairpin* h);
extern void readSlur206(XmlReader& e, Slur* s);
extern void readTie206(XmlReader& e, Tie* t);
extern bool readNoteProperties206(Note* note, XmlReader& e);
extern bool readDurationProperties206(XmlReader& e, DurationElement* de);
extern bool readTupletProperties206(XmlReader& e, Tuplet* t);
extern bool readChordRestProperties206(XmlReader& e, ChordRest* cr);
extern bool readChordProperties206(XmlReader& e, Chord* ch);
}
#endif

File diff suppressed because it is too large Load diff

View file

@ -297,7 +297,7 @@ void MasterScore::addMovement(MasterScore* score)
}
//---------------------------------------------------------
// read300
// read301
//---------------------------------------------------------
Score::FileError MasterScore::read301(XmlReader& e)

View file

@ -71,7 +71,6 @@ class Rest : public ChordRest {
virtual void remove(Element*);
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter& xml) const override;
void layoutMMRest(qreal val);

View file

@ -559,9 +559,7 @@ class Score : public QObject, public ScoreElement {
void removeStaff(Staff*);
void addMeasure(MeasureBase*, MeasureBase*);
void readStaff(XmlReader&);
void readStaff300(XmlReader&);
bool read(XmlReader&);
bool read300(XmlReader&);
Excerpt* excerpt() { return _excerpt; }
void setExcerpt(Excerpt* e) { _excerpt = e; }
@ -1205,7 +1203,6 @@ class MasterScore : public Score {
QFileInfo info;
bool read(XmlReader&);
bool read300(XmlReader&);
void setPrev(MasterScore* s) { _prev = s; }
void setNext(MasterScore* s) { _next = s; }
@ -1256,7 +1253,6 @@ class MasterScore : public Score {
FileError loadMsc(QString name, QIODevice*, bool ignoreVersionError);
FileError read114(XmlReader&);
FileError read206(XmlReader&);
FileError readScore300(XmlReader&);
FileError read301(XmlReader&);
QByteArray readToBuffer();
QByteArray readCompressedToBuffer();

View file

@ -940,8 +940,6 @@ Score::FileError MasterScore::read1(XmlReader& e, bool ignoreVersionError)
error = read114(e);
else if (mscVersion() <= 207)
error = read206(e);
else if (mscVersion() < 301)
error = readScore300(e);
else
error = read301(e);
setExcerptsChanged(false);

View file

@ -62,14 +62,12 @@ class Slur final : public SlurTie {
virtual Slur* clone() const override { return new Slur(*this); }
virtual ElementType type() const override { return ElementType::SLUR; }
virtual void write(XmlWriter& xml) const override;
virtual void read300(XmlReader&) override;
virtual void layout() override;
virtual SpannerSegment* layoutSystem(System*) override;
virtual void setTrack(int val) override;
virtual void slurPos(SlurPos*) override;
bool readProperties(XmlReader&);
bool readProperties300(XmlReader&);
SlurSegment* frontSegment() const { return (SlurSegment*)spannerSegments().front(); }
SlurSegment* backSegment() const { return (SlurSegment*)spannerSegments().back(); }

View file

@ -133,7 +133,6 @@ class SlurTie : public Spanner {
void writeProperties(XmlWriter& xml) const;
bool readProperties(XmlReader&);
bool readProperties300(XmlReader&);
int lineType() const { return _lineType; }
void setLineType(int val) { _lineType = val; }

View file

@ -45,9 +45,7 @@ class StaffTextBase : public TextBase {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual int subtype() const { return 0; } // TODO::ws
virtual QString subtypeName() const { return "??"; }

View file

@ -47,8 +47,6 @@ class Stem final : public Element {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader& e) override;
virtual bool readProperties(XmlReader&) override;
virtual void read300(XmlReader& e) override;
virtual bool readProperties300(XmlReader&) override;
virtual void reset() override;
virtual bool acceptDrop(EditData&) const override;
virtual Element* drop(EditData&) override;

View file

@ -44,7 +44,6 @@ class TempoText final : public TextBase {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
Segment* segment() const { return toSegment(parent()); }
Measure* measure() const { return toMeasure(parent()->parent()); }

View file

@ -29,7 +29,6 @@ class Text final : public TextBase {
virtual ElementType type() const override { return ElementType::TEXT; }
virtual Text* clone() const override { return new Text(*this); }
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual QVariant propertyDefault(Pid id) const override;
};

View file

@ -297,12 +297,10 @@ class TextBase : public Element {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void writeProperties(XmlWriter& xml) const { writeProperties(xml, true, true); }
void writeProperties(XmlWriter& xml, bool writeText) const { writeProperties(xml, writeText, true); }
void writeProperties(XmlWriter&, bool, bool) const;
bool readProperties(XmlReader&);
bool readProperties300(XmlReader&);
virtual void paste(EditData&);

View file

@ -36,7 +36,6 @@ class TBox : public VBox {
virtual void write(XmlWriter&) const override;
using VBox::write;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual Element* drop(EditData&) override;
virtual void add(Element* e) override;
virtual void remove(Element* el) override;

View file

@ -405,6 +405,9 @@ void TextLineBase::read(XmlReader& e)
qDeleteAll(spannerSegments());
spannerSegments().clear();
if (score()->mscVersion() < 301)
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
if (!readProperties(e))
e.unknown();
@ -447,22 +450,6 @@ bool TextLineBase::readProperties(XmlReader& e)
return SLine::readProperties(e);
}
//---------------------------------------------------------
// TextLineBase::readProperties300
//---------------------------------------------------------
bool TextLineBase::readProperties300(XmlReader& e)
{
const QStringRef& tag(e.name());
for (Pid i :pids) {
if (readProperty(tag, e, i)) {
setPropertyFlags(i, PropertyFlags::UNSTYLED);
return true;
}
}
return SLine::readProperties300(e);
}
//---------------------------------------------------------
// getProperty
//---------------------------------------------------------

View file

@ -113,11 +113,9 @@ class TextLineBase : public SLine {
virtual void write(XmlWriter& xml) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void writeProperties(XmlWriter& xml) const override;
virtual bool readProperties(XmlReader& node) override;
virtual bool readProperties300(XmlReader&) override;
virtual void spatiumChanged(qreal /*oldValue*/, qreal /*newValue*/) override;

View file

@ -74,7 +74,6 @@ class Tie final : public SlurTie {
void calculateDirection();
virtual void write(XmlWriter& xml) const override;
virtual void read300(XmlReader&) override;
// virtual void layout() override;
virtual void slurPos(SlurPos*) override;
@ -82,7 +81,6 @@ class Tie final : public SlurTie {
void layoutBack(System*);
bool readProperties(XmlReader&);
bool readProperties300(XmlReader&);
TieSegment* frontSegment() const { return (TieSegment*)spannerSegments().front(); }
TieSegment* backSegment() const { return (TieSegment*)spannerSegments().back(); }

View file

@ -82,7 +82,6 @@ class Trill final : public SLine {
virtual void remove(Element*) override;
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
void setTrillType(const QString& s);
void undoSetTrillType(Type val);

View file

@ -101,10 +101,8 @@ class Tuplet final : public DurationElement {
virtual void scanElements(void* data, void (*func)(void*, Element*), bool all=true) override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
virtual void write(XmlWriter&) const override;
virtual bool readProperties(XmlReader&) override;
virtual bool readProperties300(XmlReader&) override;
virtual void reset() override;

View file

@ -69,7 +69,6 @@ class Vibrato final : public SLine {
virtual LineSegment* createLineSegment() override;
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader&) override;
virtual void read300(XmlReader&) override;
void setVibratoType(const QString& s);
void undoSetVibratoType(Type val);

View file

@ -60,7 +60,6 @@ class Volta final : public TextLineBase {
virtual void write(XmlWriter&) const override;
virtual void read(XmlReader& e) override;
virtual void read300(XmlReader&) override;
QList<int> endings() const { return _endings; }
QList<int>& endings() { return _endings; }