void Marker::read(XmlReader& e) { MarkerType mt = MarkerType::SEGNO; while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "label") { QString s(e.readElementText()); setLabel(s); mt = markerType(s); } else if (!Text::readProperties(e)) e.unknown(); } switch (mt) { case MarkerType::SEGNO: case MarkerType::VARSEGNO: case MarkerType::CODA: case MarkerType::VARCODA: case MarkerType::CODETTA: setTextStyleType(TEXT_STYLE_REPEAT_LEFT); break; case MarkerType::FINE: case MarkerType::TOCODA: setTextStyleType(TEXT_STYLE_REPEAT_RIGHT); break; case MarkerType::USER: setTextStyleType(TEXT_STYLE_REPEAT); break; } setMarkerType(mt); }
void Marker::read(const QDomElement& de) { MarkerType mt = MARKER_SEGNO; for (QDomElement e = de.firstChildElement(); !e.isNull(); e = e.nextSiblingElement()) { const QString& tag(e.tagName()); if (tag == "label") { setLabel(e.text()); mt = markerType(e.text()); } else if (!Text::readProperties(e)) domError(e); } switch (mt) { case MARKER_SEGNO: case MARKER_VARSEGNO: case MARKER_CODA: case MARKER_VARCODA: case MARKER_CODETTA: setTextStyleType(TEXT_STYLE_REPEAT_LEFT); break; case MARKER_FINE: case MARKER_TOCODA: setTextStyleType(TEXT_STYLE_REPEAT_RIGHT); break; case MARKER_USER: setTextStyleType(TEXT_STYLE_REPEAT); break; } setMarkerType(mt); }
void InstrumentName::setInstrumentNameType(InstrumentNameType st) { _instrumentNameType = st; if (st == InstrumentNameType::SHORT) setTextStyleType(TextStyleType::INSTRUMENT_SHORT); else setTextStyleType(TextStyleType::INSTRUMENT_LONG); }
void Lyrics::setNo(int n) { _no = n; // adjust beween LYRICS1 and LYRICS2 only; keep other styles as they are // (_no is 0-based, so odd _no means even line and viceversa) if (type() == Element::Type::LYRICS) { if( (_no & 1) && textStyleType() == TextStyleType::LYRIC1) setTextStyleType(TextStyleType::LYRIC2); if( !(_no & 1) && textStyleType() == TextStyleType::LYRIC2) setTextStyleType(TextStyleType::LYRIC1); } }
void Marker::setMarkerType(Type t) { _markerType = t; const char* txt = 0; switch (t) { case Type::SEGNO: txt = "<sym>segno</sym>"; setLabel("segno"); break; case Type::VARSEGNO: txt = "<sym>segnoSerpent1</sym>"; setLabel("varsegno"); break; case Type::CODA: txt = "<sym>coda</sym>"; setLabel("codab"); break; case Type::VARCODA: txt = "<sym>codaSquare</sym>"; setLabel("varcoda"); break; case Type::CODETTA: txt = "<sym>coda</sym><sym>coda</sym>"; setLabel("codetta"); break; case Type::FINE: txt = "Fine"; setTextStyleType(TextStyleType::REPEAT_RIGHT); setLabel("fine"); break; case Type::TOCODA: txt = "To Coda"; setTextStyleType(TextStyleType::REPEAT_RIGHT); setLabel("coda"); break; case Type::USER: break; default: qDebug("unknown marker type %hhd", t); break; } if (isEmpty() && txt) setText(txt); }
void Dynamic::setSubtype(const QString& tag) { int n = sizeof(dynList)/sizeof(*dynList); for (int i = 1; i < n; ++i) { if (dynList[i].tag == tag) { _subtype = i; setTextStyleType(TEXT_STYLE_DYNAMICS2); setText(dynList[i].tag); return; } } _subtype = 0; setTextStyleType(TEXT_STYLE_DYNAMICS); setText(tag); }
Marker::Marker(Score* s) : Text(s) { _markerType = MarkerType::FINE; setFlags(ELEMENT_MOVABLE | ELEMENT_SELECTABLE | ELEMENT_ON_STAFF); setTextStyleType(TEXT_STYLE_REPEAT); }
Jump::Jump(Score* s) : Text(s) { setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE); setTextStyleType(TextStyleType::REPEAT_RIGHT); setLayoutToParentWidth(true); }
Marker::Marker(Score* s) : Text(s) { _markerType = MarkerType::FINE; setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE | ElementFlag::ON_STAFF); setTextStyleType(TextStyleType::REPEAT); }
Marker::Marker(Score* s) : Text(s) { _markerType = Type::FINE; setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE | ElementFlag::ON_STAFF); setTextStyleType(TextStyleType::REPEAT_LEFT); setLayoutToParentWidth(true); }
TempoText::TempoText(Score* s) : Text(s) { _tempo = 2.0; // propertyDefault(P_TEMPO).toDouble(); _followText = false; setPlacement(Placement::ABOVE); setTextStyleType(TEXT_STYLE_TEMPO); }
Lyrics::Lyrics(Score* s) : Text(s) { setTextStyleType(TextStyleType::LYRIC1); _no = 0; _ticks = 0; _syllabic = Syllabic::SINGLE; _verseNumber = 0; }
Dynamic::Dynamic(Score* s) : Text(s) { setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE | ElementFlag::ON_STAFF); _velocity = -1; _dynRange = Range::PART; setTextStyleType(TextStyleType::DYNAMICS); _dynamicType = Type::OTHER; }
Dynamic::Dynamic(Score* s) : Text(s) { setFlags(ELEMENT_MOVABLE | ELEMENT_SELECTABLE); _velocity = -1; _dynRange = DYNAMIC_PART; setTextStyleType(TEXT_STYLE_DYNAMICS); _dynamicType = DYNAMIC_OTHER; }
Lyrics::Lyrics(Score* s) : Text(s) { setTextStyleType(TextStyleType::LYRIC1); _no = 0; _ticks = 0; _syllabic = Syllabic::SINGLE; _separator = nullptr; }
StaffText::StaffText(Score* s) : Text(s) { setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE | ElementFlag::ON_STAFF); setTextStyleType(TextStyleType::STAFF); _setAeolusStops = false; _swing = false; clearAeolusStops(); setSwingParameters(MScore::division / 2, 60); }
TempoText::TempoText(Score* s) : Text(s) { _tempo = 2.0; // propertyDefault(P_TEMPO).toDouble(); _followText = false; _relative = 1.0; _isRelative = false; setPlacement(Element::Placement::ABOVE); setTextStyleType(TextStyleType::TEMPO); }
Harmony::Harmony(Score* s) : Text(s) { setTextStyleType(TEXT_STYLE_HARMONY); _rootTpc = INVALID_TPC; _baseTpc = INVALID_TPC; _id = -1; _parsedForm = 0; _leftParen = false; _rightParen = false; }
Harmony::Harmony(Score* s) : Text(s) { _rootTpc = Tpc::TPC_INVALID; _baseTpc = Tpc::TPC_INVALID; _id = -1; _parsedForm = 0; _leftParen = false; _rightParen = false; setFlags(ElementFlag::MOVABLE | ElementFlag::SELECTABLE | ElementFlag::ON_STAFF); setTextStyleType(TextStyleType::HARMONY); // call after setting of _id }
void Jump::setJumpType(Type t) { for (const JumpTypeTable& p : jumpTypeTable) { if (p.type == t) { setXmlText(p.text); setJumpTo(p.jumpTo); setPlayUntil(p.playUntil); setContinueAt(p.continueAt); setTextStyleType(p.textStyleType); break; } } }
void Jump::read(XmlReader& e) { while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "jumpTo") _jumpTo = e.readElementText(); else if (tag == "playUntil") _playUntil = e.readElementText(); else if (tag == "continueAt") _continueAt = e.readElementText(); else if (!Text::readProperties(e)) e.unknown(); } setTextStyleType(TEXT_STYLE_REPEAT_RIGHT); }
void Dynamic::read(const QDomElement& de) { for (QDomElement e = de.firstChildElement(); !e.isNull(); e = e.nextSiblingElement()) { if (e.tagName() == "subtype") setSubtype(e.text()); else if (e.tagName() == "velocity") _velocity = e.text().toInt(); else if (e.tagName() == "dynType") _dynType = DynamicType(e.text().toInt()); else if (!Text::readProperties(e)) domError(e); } if (score()->mscVersion() < 118) setTextStyleType(TEXT_STYLE_DYNAMICS2); }
void Dynamic::read(XmlReader& e) { while (e.readNextStartElement()) { const QStringRef& tag = e.name(); if (tag == "subtype") { setDynamicType(e.readElementText()); } else if (tag == "velocity") _velocity = e.readInt(); else if (tag == "dynType") _dynRange = DynamicRange(e.readInt()); else if (!Text::readProperties(e)) e.unknown(); } setTextStyleType(TEXT_STYLE_DYNAMICS); }
void Marker::read(XmlReader& e) { Type mt = Type::SEGNO; while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "label") { QString s(e.readElementText()); setLabel(s); mt = markerType(s); } else if (!Text::readProperties(e)) e.unknown(); } // REPEAT is obsolete, but was previously used for both left and right aligned text if (textStyleType() == TextStyleType::REPEAT) setTextStyleType(TextStyleType::REPEAT_LEFT); setMarkerType(mt); }
RehearsalMark::RehearsalMark(Score* s) : Text(s) { setTextStyleType(TextStyleType::REHEARSAL_MARK); }
Fingering::Fingering(Score* s) : Text(s) { setTextStyleType(TEXT_STYLE_FINGERING); setFlag(ELEMENT_HAS_TAG, true); }
bool Text::readProperties(const QDomElement& e) { const QString& tag(e.tagName()); const QString& val(e.text()); if (tag == "style") { int st; bool ok; int i = val.toInt(&ok); if (ok) { // obsolete old text styles switch (i) { case 1: i = TEXT_STYLE_UNSTYLED; break; case 2: i = TEXT_STYLE_TITLE; break; case 3: i = TEXT_STYLE_SUBTITLE; break; case 4: i = TEXT_STYLE_COMPOSER; break; case 5: i = TEXT_STYLE_POET; break; case 6: i = TEXT_STYLE_LYRIC1; break; case 7: i = TEXT_STYLE_LYRIC2; break; case 8: i = TEXT_STYLE_FINGERING; break; case 9: i = TEXT_STYLE_INSTRUMENT_LONG; break; case 10: i = TEXT_STYLE_INSTRUMENT_SHORT; break; case 11: i = TEXT_STYLE_INSTRUMENT_EXCERPT; break; case 12: i = TEXT_STYLE_DYNAMICS; break; case 13: i = TEXT_STYLE_TECHNIK; break; case 14: i = TEXT_STYLE_TEMPO; break; case 15: i = TEXT_STYLE_METRONOME; break; case 16: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_COPYRIGHT case 17: i = TEXT_STYLE_MEASURE_NUMBER; break; case 18: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_PAGE_NUMBER_ODD case 19: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_PAGE_NUMBER_EVEN case 20: i = TEXT_STYLE_TRANSLATOR; break; case 21: i = TEXT_STYLE_TUPLET; break; case 22: i = TEXT_STYLE_SYSTEM; break; case 23: i = TEXT_STYLE_STAFF; break; case 24: i = TEXT_STYLE_HARMONY; break; case 25: i = TEXT_STYLE_REHEARSAL_MARK; break; case 26: i = TEXT_STYLE_REPEAT; break; case 27: i = TEXT_STYLE_VOLTA; break; case 28: i = TEXT_STYLE_FRAME; break; case 29: i = TEXT_STYLE_TEXTLINE; break; case 30: i = TEXT_STYLE_GLISSANDO; break; case 31: i = TEXT_STYLE_STRING_NUMBER; break; case 32: i = TEXT_STYLE_OTTAVA; break; case 33: i = TEXT_STYLE_BENCH; break; case 34: i = TEXT_STYLE_HEADER; break; case 35: i = TEXT_STYLE_FOOTER; break; case 0: default: qDebug("Text:readProperties: style %d<%s> invalid", i, qPrintable(val)); i = TEXT_STYLE_UNSTYLED; break; } st = i; } else st = score()->style()->textStyleType(val); if (st == TEXT_STYLE_UNSTYLED) setUnstyled(); else if (st == TEXT_STYLE_UNKNOWN) _styleIndex = st; else setTextStyleType(st); } else if (tag == "styleName") // obsolete, unstyled text ; // _styleName = val; else if (tag == "data") // obsolete _doc->setHtml(val); else if (tag == "html") { QString s = Xml::htmlToString(e); setHtml(s); } else if (tag == "text") setText(val); else if (tag == "html-data") { QString s = Xml::htmlToString(e.firstChildElement()); if (score()->mscVersion() <= 114) { s.replace("MScore1", "FreeSerifMscore"); s.replace(QChar(0xe10e), QChar(0x266e)); //natural s.replace(QChar(0xe10c), QChar(0x266f)); // sharp s.replace(QChar(0xe10d), QChar(0x266d)); // flat s.replace(QChar(0xe104), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd5e))), // note2_Sym s.replace(QChar(0xe105), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd5f))); // note4_Sym //test s.replace(QChar(0xe105), QString("XXX")); s.replace(QChar(0xe106), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd60))); // note8_Sym s.replace(QChar(0xe107), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd61))); // note16_Sym s.replace(QChar(0xe108), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd62))); // note32_Sym s.replace(QChar(0xe109), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd63))); // note64_Sym s.replace(QChar(0xe10a), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd6d))); // dot s.replace(QChar(0xe10b), QString("%1%2%3%4").arg(QChar(0xd834)).arg(QChar(0xdd6d)).arg(QChar(0xd834)).arg(QChar(0xdd6d))); // dotdot s.replace(QChar(0xe167), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd0b))); // coda s.replace(QChar(0xe168), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd0c))); // varcoda s.replace(QChar(0xe169), QString("%1%2").arg(QChar(0xd834)).arg(QChar(0xdd0c))); // segno if (_doc == 0) createDoc(); _doc->setHtml(s); if (isSimpleText()) { QString s = _doc->toPlainText(); delete _doc; _doc = 0; setText(s); } else { setUnstyled(); setHtml(s); } } else { setHtml(s); } } else if (tag == "subtype") // obsolete ; else if (tag == "frameWidth") { // obsolete qreal spMM = spatium() / MScore::DPMM; setFrameWidth(Spatium(val.toDouble() / spMM)); } else if (tag == "paddingWidth") { // obsolete qreal spMM = spatium() / MScore::DPMM; setPaddingWidth(Spatium(val.toDouble() / spMM)); } else if (_textStyle.readProperties(e)) ; else if (!Element::readProperties(e)) return false; return true; }
Jump::Jump(Score* s) : Text(s) { setFlags(ELEMENT_MOVABLE | ELEMENT_SELECTABLE); setTextStyleType(TEXT_STYLE_REPEAT); }
bool Text::readProperties(const QDomElement& e) { const QString& tag(e.tagName()); const QString& val(e.text()); if (tag == "style") { int st; bool ok; int i = val.toInt(&ok); if (ok) { // obsolete old text styles switch (i) { case 1: i = TEXT_STYLE_UNSTYLED; break; case 2: i = TEXT_STYLE_TITLE; break; case 3: i = TEXT_STYLE_SUBTITLE; break; case 4: i = TEXT_STYLE_COMPOSER; break; case 5: i = TEXT_STYLE_POET; break; case 6: i = TEXT_STYLE_LYRIC1; break; case 7: i = TEXT_STYLE_LYRIC2; break; case 8: i = TEXT_STYLE_FINGERING; break; case 9: i = TEXT_STYLE_INSTRUMENT_LONG; break; case 10: i = TEXT_STYLE_INSTRUMENT_SHORT; break; case 11: i = TEXT_STYLE_INSTRUMENT_EXCERPT; break; case 12: i = TEXT_STYLE_DYNAMICS; break; case 13: i = TEXT_STYLE_TECHNIK; break; case 14: i = TEXT_STYLE_TEMPO; break; case 15: i = TEXT_STYLE_METRONOME; break; case 16: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_COPYRIGHT case 17: i = TEXT_STYLE_MEASURE_NUMBER; break; case 18: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_PAGE_NUMBER_ODD case 19: i = TEXT_STYLE_FOOTER; break; // TEXT_STYLE_PAGE_NUMBER_EVEN case 20: i = TEXT_STYLE_TRANSLATOR; break; case 21: i = TEXT_STYLE_TUPLET; break; case 22: i = TEXT_STYLE_SYSTEM; break; case 23: i = TEXT_STYLE_STAFF; break; case 24: i = TEXT_STYLE_HARMONY; break; case 25: i = TEXT_STYLE_REHEARSAL_MARK; break; case 26: i = TEXT_STYLE_REPEAT; break; case 27: i = TEXT_STYLE_VOLTA; break; case 28: i = TEXT_STYLE_FRAME; break; case 29: i = TEXT_STYLE_TEXTLINE; break; case 30: i = TEXT_STYLE_GLISSANDO; break; case 31: i = TEXT_STYLE_STRING_NUMBER; break; case 32: i = TEXT_STYLE_OTTAVA; break; case 33: i = TEXT_STYLE_BENCH; break; case 34: i = TEXT_STYLE_HEADER; break; case 35: i = TEXT_STYLE_FOOTER; break; case 0: default: qDebug("Text:readProperties: style %d<%s> invalid", i, qPrintable(val)); i = TEXT_STYLE_UNSTYLED; break; } st = i; } else st = score()->style()->textStyleType(val); if (st == TEXT_STYLE_UNSTYLED) setUnstyled(); else if (st == TEXT_STYLE_UNKNOWN) _styleIndex = st; else setTextStyleType(st); } else if (tag == "styleName") // obsolete, unstyled text ; // _styleName = val; else if (tag == "data") // obsolete _doc->setHtml(val); else if (tag == "html") { QString s = Xml::htmlToString(e); setHtml(s); } else if (tag == "text") setText(val); else if (tag == "html-data") { QString s = Xml::htmlToString(e.firstChildElement()); setHtml(s); } else if (tag == "subtype") // obsolete ; else if (_textStyle.readProperties(e)) ; // setUnstyled(); else if (!Element::readProperties(e)) return false; return true; }
Fingering::Fingering(Score* s) : Text(s) { setTextStyleType(TextStyleType::FINGERING); setFlag(ElementFlag::HAS_TAG, true); }