Remove read300 functions
This commit is contained in:
parent
e8baf704c6
commit
c354eb24c3
59 changed files with 799 additions and 3113 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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&);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
@ -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
|
@ -297,7 +297,7 @@ void MasterScore::addMovement(MasterScore* score)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// read300
|
||||
// read301
|
||||
//---------------------------------------------------------
|
||||
|
||||
Score::FileError MasterScore::read301(XmlReader& e)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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 "??"; }
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()); }
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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&);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in a new issue