void Fingering::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag(name()); Text::writeProperties(xml); xml.etag(); }
void Breath::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Breath"); xml.tag("subtype", _breathType); Element::writeProperties(xml); xml.etag(); }
void StaffText::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("StaffText"); foreach(ChannelActions s, _channelActions) { int channel = s.channel; foreach(QString name, s.midiActionNames) xml.tagE(QString("MidiAction channel=\"%1\" name=\"%2\"").arg(channel).arg(name)); }
void Ottava::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag(QString("%1 id=\"%2\"").arg(name()).arg(xml.spannerId(this))); writeProperty(xml, P_ID::NUMBERS_ONLY); xml.tag("subtype", ottavaDefault[int(ottavaType())].name); TextLine::writeProperties(xml); xml.etag(); }
void Glissando::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag(QString("%1 id=\"%2\"").arg(name()).arg(xml.spannerId(this))); if (_showText && !_text.isEmpty()) xml.tag("text", _text); xml.tag("subtype", int(_glissandoType)); SLine::writeProperties(xml); xml.etag(); }
void Trill::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag(QString("%1 id=\"%2\"").arg(name()).arg(xml.spannerId(this))); xml.tag("subtype", trillTypeName()); SLine::writeProperties(xml); if (_accidental) _accidental->write(xml); xml.etag(); }
void Dynamic::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Dynamic"); xml.tag("subtype", dynamicTypeName()); writeProperty(xml, P_ID::VELOCITY); writeProperty(xml, P_ID::DYNAMIC_RANGE); Text::writeProperties(xml, dynamicType() == Type::OTHER); xml.etag(); }
void Glissando::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Glissando"); if (_showText && !_text.isEmpty()) xml.tag("text", _text); xml.tag("subtype", int(_glissandoType)); Element::writeProperties(xml); xml.etag(); }
void Arpeggio::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Arpeggio"); Element::writeProperties(xml); xml.tag("subtype", int(_arpeggioType)); if (_userLen1 != 0.0) xml.tag("userLen1", _userLen1 / spatium()); if (_userLen2 != 0.0) xml.tag("userLen2", _userLen2 / spatium()); if (_span != 1) xml.tag("span", _span); xml.etag(); }
void Articulation::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Articulation"); if (!_channelName.isEmpty()) xml.tagE(QString("channel name=\"%1\"").arg(_channelName)); writeProperty(xml, P_ID::DIRECTION); xml.tag("subtype", subtypeName()); if (_timeStretch != 1.0) xml.tag("timeStretch", _timeStretch); Element::writeProperties(xml); if (anchorStyle == PropertyStyle::UNSTYLED) xml.tag("anchor", int(_anchor)); xml.etag(); }
void Hairpin::write(Xml& xml) const { if (!xml.canWrite(this)) return; int id = xml.spannerId(this); xml.stag(QString("%1 id=\"%2\"").arg(name()).arg(id)); xml.tag("subtype", int(_hairpinType)); writeProperty(xml, P_ID::VELO_CHANGE); writeProperty(xml, P_ID::HAIRPIN_CIRCLEDTIP); writeProperty(xml, P_ID::DYNAMIC_RANGE); writeProperty(xml, P_ID::PLACEMENT); writeProperty(xml, P_ID::HAIRPIN_HEIGHT); writeProperty(xml, P_ID::HAIRPIN_CONT_HEIGHT); TextLine::writeProperties(xml); xml.etag(); }
void Articulation::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Articulation"); if (!_channelName.isEmpty()) xml.tagE(QString("channel name=\"%1\"").arg(_channelName)); writeProperty(xml, P_ID::DIRECTION); xml.tag("subtype", Sym::id2name(_symId)); writeProperty(xml, P_ID::TIME_STRETCH); writeProperty(xml, P_ID::PLAY); writeProperty(xml, P_ID::ORNAMENT_STYLE); Element::writeProperties(xml); writeProperty(xml, P_ID::ARTICULATION_ANCHOR); xml.etag(); }
void Harmony::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Harmony"); if (_leftParen) xml.tagE("leftParen"); if (_rootTpc != Tpc::TPC_INVALID || _baseTpc != Tpc::TPC_INVALID) { int rRootTpc = _rootTpc; int rBaseTpc = _baseTpc; if (staff()) { const Interval& interval = staff()->part()->instr()->transpose(); if (xml.clipboardmode && !score()->styleB(StyleIdx::concertPitch) && interval.chromatic) { rRootTpc = transposeTpc(_rootTpc, interval, false); rBaseTpc = transposeTpc(_baseTpc, interval, false); } } if (rRootTpc != Tpc::TPC_INVALID) xml.tag("root", rRootTpc); if (_id > 0) xml.tag("extension", _id); if (_textName != "") xml.tag("name", _textName); if (rBaseTpc != Tpc::TPC_INVALID) xml.tag("base", rBaseTpc); foreach(const HDegree& hd, _degreeList) { HDegreeType tp = hd.type(); if (tp == HDegreeType::ADD || tp == HDegreeType::ALTER || tp == HDegreeType::SUBTRACT) { xml.stag("degree"); xml.tag("degree-value", hd.value()); xml.tag("degree-alter", hd.alter()); switch (tp) { case HDegreeType::ADD: xml.tag("degree-type", "add"); break; case HDegreeType::ALTER: xml.tag("degree-type", "alter"); break; case HDegreeType::SUBTRACT: xml.tag("degree-type", "subtract"); break; default: break; } xml.etag(); } }
void Lyrics::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Lyrics"); if (_no) xml.tag("no", _no); if (_syllabic != Syllabic::SINGLE) { static const char* sl[] = { "single", "begin", "end", "middle" }; xml.tag("syllabic", sl[int(_syllabic)]); } writeProperty(xml, P_ID::LYRIC_TICKS); Text::writeProperties(xml); xml.etag(); }
void Lyrics::write(Xml& xml) const { if(!xml.canWrite(this)) return; xml.stag("Lyrics"); if (_no) xml.tag("no", _no); if (_syllabic != Syllabic::SINGLE) { static const char* sl[] = { "single", "begin", "end", "middle" }; xml.tag("syllabic", sl[int(_syllabic)]); } if (_ticks) xml.tag("ticks", _ticks); Text::writeProperties(xml); if (_verseNumber) { xml.stag("Number"); _verseNumber->writeProperties(xml); xml.etag(); } xml.etag(); }
void ChordRest::writeProperties(Xml& xml) const { DurationElement::writeProperties(xml); // // Beam::Mode default: // REST - Beam::Mode::NONE // CHORD - Beam::Mode::AUTO // if ((type() == Element::Type::REST && _beamMode != Beam::Mode::NONE) || (type() == Element::Type::CHORD && _beamMode != Beam::Mode::AUTO)) { QString s; switch(_beamMode) { case Beam::Mode::AUTO: s = "auto"; break; case Beam::Mode::BEGIN: s = "begin"; break; case Beam::Mode::MID: s = "mid"; break; case Beam::Mode::END: s = "end"; break; case Beam::Mode::NONE: s = "no"; break; case Beam::Mode::BEGIN32: s = "begin32"; break; case Beam::Mode::BEGIN64: s = "begin64"; break; case Beam::Mode::INVALID: s = "?"; break; } xml.tag("BeamMode", s); } writeProperty(xml, P_ID::SMALL); if (actualDurationType().dots()) xml.tag("dots", actualDurationType().dots()); writeProperty(xml, P_ID::STAFF_MOVE); if (actualDurationType().isValid()) xml.tag("durationType", actualDurationType().name()); if (!duration().isZero() && (!actualDurationType().fraction().isValid() || (actualDurationType().fraction() != duration()))) xml.fTag("duration", duration()); foreach(const Articulation* a, _articulations) a->write(xml); #ifndef NDEBUG if (_beam && (MScore::testMode || !_beam->generated())) xml.tag("Beam", _beam->id()); #else if (_beam && !_beam->generated()) xml.tag("Beam", _beam->id()); #endif foreach(Lyrics* lyrics, _lyricsList) { if (lyrics) lyrics->write(xml); } if (!isGrace()) { Fraction t(globalDuration()); if (staff()) t *= staff()->timeStretch(xml.curTick); xml.curTick += t.ticks(); } for (auto i : score()->spanner()) { // TODO: dont search whole list Spanner* s = i.second; if (s->generated() || s->type() != Element::Type::SLUR || !xml.canWrite(s)) continue; if (s->startElement() == this) { int id = xml.spannerId(s); xml.tagE(QString("Slur type=\"start\" id=\"%1\"").arg(id)); } else if (s->endElement() == this) { int id = xml.spannerId(s); xml.tagE(QString("Slur type=\"stop\" id=\"%1\"").arg(id)); } } }