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 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 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)); } } }
void Tie::write(Xml& xml) const { xml.stag(QString("Tie id=\"%1\"").arg(xml.spannerId(this))); SlurTie::writeProperties(xml); xml.etag(); }