void Ottava::read(XmlReader& e) { qDeleteAll(spannerSegments()); spannerSegments().clear(); e.addSpanner(e.intAttribute("id", -1), this); while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "subtype") { QString s = e.readElementText(); bool ok; int idx = s.toInt(&ok); if (!ok) { idx = int(Type::OTTAVA_8VA); for (unsigned i = 0; i < sizeof(ottavaDefault)/sizeof(*ottavaDefault); ++i) { if (s == ottavaDefault[i].name) { idx = i; break; } } } else if (score()->mscVersion() <= 114) { //subtype are now in a different order... if (idx == 1) idx = 2; else if (idx == 2) idx = 1; } setOttavaType(Type(idx)); } else if (tag == "numbersOnly") { _numbersOnly = e.readInt(); numbersOnlyStyle = PropertyStyle::UNSTYLED; } else if (tag == "lineWidth") { setLineWidth(Spatium(e.readDouble())); lineWidthStyle = PropertyStyle::UNSTYLED; } else if (tag == "lineStyle") { setLineStyle(Qt::PenStyle(e.readInt())); lineStyleStyle = PropertyStyle::UNSTYLED; } else if (tag == "beginSymbol") { // obsolete beginTextStyle = PropertyStyle::UNSTYLED; QString text(e.readElementText()); setBeginText(QString("<sym>%1</sym>").arg(text[0].isNumber() ? Sym::id2name(SymId(text.toInt())) : text)); } else if (tag == "continueSymbol") { // obsolete continueTextStyle = PropertyStyle::UNSTYLED; QString text(e.readElementText()); setContinueText(QString("<sym>%1</sym>").arg(text[0].isNumber() ? Sym::id2name(SymId(text.toInt())) : text)); } else if (!TextLine::readProperties(e)) e.unknown(); } if (beginText() != propertyDefault(P_ID::BEGIN_TEXT)) beginTextStyle = PropertyStyle::UNSTYLED; if (continueText() != propertyDefault(P_ID::CONTINUE_TEXT)) continueTextStyle = PropertyStyle::UNSTYLED; }
void ScoreElement::writeProperty(XmlWriter& xml, P_ID id) const { if (propertyType(id) == P_TYPE::SP_REAL) { qreal _spatium = score()->spatium(); xml.tag(id, QVariant(getProperty(id).toReal()/_spatium), QVariant(propertyDefault(id).toReal()/_spatium)); } else xml.tag(id, getProperty(id), propertyDefault(id)); }
void Hairpin::reset() { if (lineWidthStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::LINE_WIDTH, propertyDefault(P_ID::LINE_WIDTH), PropertyStyle::STYLED); if (hairpinHeightStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::HAIRPIN_HEIGHT, propertyDefault(P_ID::HAIRPIN_HEIGHT), PropertyStyle::STYLED); if (hairpinContHeightStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::HAIRPIN_CONT_HEIGHT, propertyDefault(P_ID::HAIRPIN_CONT_HEIGHT), PropertyStyle::STYLED); TextLine::reset(); }
void Ottava::setOttavaType(Type val) { setEndHook(true); _ottavaType = val; const OttavaDefault* def = &ottavaDefault[int(_ottavaType)]; if (beginTextStyle == PropertyStyle::STYLED) setBeginText(propertyDefault(P_ID::BEGIN_TEXT).toString(), TextStyleType::OTTAVA); if (continueTextStyle == PropertyStyle::STYLED) setContinueText(propertyDefault(P_ID::CONTINUE_TEXT).toString(), TextStyleType::OTTAVA); setEndHookHeight(score()->styleS(StyleIdx::ottavaHook) * def->hookDirection); setPlacement(def->place); _pitchShift = def->shift; }
void Ottava::reset() { if (lineWidthStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::LINE_WIDTH, propertyDefault(P_ID::LINE_WIDTH), PropertyStyle::STYLED); if (lineStyleStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::LINE_STYLE, propertyDefault(P_ID::LINE_STYLE), PropertyStyle::STYLED); if (numbersOnlyStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::NUMBERS_ONLY, propertyDefault(P_ID::NUMBERS_ONLY), PropertyStyle::STYLED); if (beginTextStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::BEGIN_TEXT, propertyDefault(P_ID::BEGIN_TEXT), PropertyStyle::STYLED); if (continueTextStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::CONTINUE_TEXT, propertyDefault(P_ID::CONTINUE_TEXT), PropertyStyle::STYLED); setOttavaType(_ottavaType); TextLine::reset(); }
void Fermata::layout() { Segment* s = segment(); setPos(QPointF()); if (!s) { // for use in palette setOffset(0.0, 0.0); QRectF b(symBbox(_symId)); setbbox(b.translated(-0.5 * b.width(), 0.0)); return; } if (isStyled(Pid::OFFSET)) setOffset(propertyDefault(Pid::OFFSET).toPointF()); Element* e = s->element(track()); if (e) { if (e->isChord()) rxpos() += score()->noteHeadWidth() * staff()->mag(Fraction(0, 1)) * .5; else rxpos() += e->x() + e->width() * staff()->mag(Fraction(0, 1)) * .5; } QString name = Sym::id2name(_symId); if (placeAbove()) { if (name.endsWith("Below")) _symId = Sym::name2id(name.left(name.size() - 5) + "Above"); } else { rypos() += staff()->height(); if (name.endsWith("Above")) _symId = Sym::name2id(name.left(name.size() - 5) + "Below"); } QRectF b(symBbox(_symId)); setbbox(b.translated(-0.5 * b.width(), 0.0)); autoplaceSegmentElement(styleP(Sid::fermataMinDistance)); }
void Articulation::resetProperty(P_ID id) { switch (id) { case P_ID::DIRECTION: case P_ID::TIME_STRETCH: case P_ID::ORNAMENT_STYLE: setProperty(id, propertyDefault(id)); return; case P_ID::ARTICULATION_ANCHOR: setProperty(id, propertyDefault(id)); return; default: break; } Element::resetProperty(id); }
void Box::writeProperties(Xml& xml) const { writeProperty(xml, P_ID::BOX_HEIGHT); writeProperty(xml, P_ID::BOX_WIDTH); if (getProperty(P_ID::TOP_GAP) != propertyDefault(P_ID::TOP_GAP)) xml.tag("topGap", _topGap / spatium()); if (getProperty(P_ID::BOTTOM_GAP) != propertyDefault(P_ID::BOTTOM_GAP)) xml.tag("bottomGap", _bottomGap / spatium()); writeProperty(xml, P_ID::LEFT_MARGIN); writeProperty(xml, P_ID::RIGHT_MARGIN); writeProperty(xml, P_ID::TOP_MARGIN); writeProperty(xml, P_ID::BOTTOM_MARGIN); Element::writeProperties(xml); foreach (const Element* el, _el) el->write(xml); }
LayoutBreak::LayoutBreak(Score* score) : Element(score, ElementFlag::SYSTEM | ElementFlag::HAS_TAG) { _layoutBreakType = Type(propertyDefault(Pid::LAYOUT_BREAK).toInt()); _pause = score->styleD(Sid::SectionPause); _startWithLongNames = true; _startWithMeasureOne = true; lw = spatium() * 0.3; }
void Ottava::reset() { if (lineWidthStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::LINE_WIDTH, propertyDefault(P_ID::LINE_WIDTH), PropertyStyle::STYLED); if (lineStyleStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::LINE_STYLE, propertyDefault(P_ID::LINE_STYLE), PropertyStyle::STYLED); if (numbersOnlyStyle == PropertyStyle::UNSTYLED) score()->undoChangeProperty(this, P_ID::NUMBERS_ONLY, propertyDefault(P_ID::NUMBERS_ONLY), PropertyStyle::STYLED); if (beginTextStyle == PropertyStyle::UNSTYLED) { ; // TODO score()->undoChangeProperty(this, P_ID::BEGIN_SYMBOL, propertyDefault(P_BEGIN_SYMBOL), PropertyStyle::STYLED); } if (continueTextStyle == PropertyStyle::UNSTYLED) { ; // TODO score()->undoChangeProperty(this, P_ID::CONTINUE_SYMBOL, propertyDefault(P_CONTINUE_SYMBOL), PropertyStyle::STYLED); } setOttavaType(_ottavaType); TextLine::reset(); }
LayoutBreak::LayoutBreak(Score* score) : Element(score) { _layoutBreakType = LayoutBreakType(propertyDefault(P_LAYOUT_BREAK).toInt()); _pause = score->styleD(ST_SectionPause); _startWithLongNames = true; _startWithMeasureOne = true; lw = spatium() * 0.3; setFlag(ELEMENT_HAS_TAG, true); }
void Ottava::read(XmlReader& e) { eraseSpannerSegments(); if (score()->mscVersion() < 301) e.addSpanner(e.intAttribute("id", -1), this); while (e.readNextStartElement()) readProperties(e); if (_ottavaType != OttavaType::OTTAVA_8VA || _numbersOnly != propertyDefault(Pid::NUMBERS_ONLY).toBool()) styleChanged(); }
void Volta::resetProperty(P_ID id) { switch (id) { case P_ID::VOLTA_ENDING: case P_ID::VOLTA_TYPE: return; case P_ID::LINE_WIDTH: setProperty(id, propertyDefault(id)); lineWidthStyle = PropertyStyle::STYLED; break; case P_ID::LINE_STYLE: setProperty(id, propertyDefault(id)); lineStyleStyle = PropertyStyle::STYLED; break; default: return TextLineBase::resetProperty(id); } }
void TremoloBar::resetProperty(Pid id) { switch (id) { case Pid::LINE_WIDTH: setProperty(id, propertyDefault(id)); lineWidthStyle = PropertyFlags::STYLED; break; default: return Element::resetProperty(id); } }
TimeSig::TimeSig(Score* s) : Element(s) { setFlags(ElementFlag::SELECTABLE | ElementFlag::ON_STAFF | ElementFlag::MOVABLE); _showCourtesySig = true; scaleStyle = PropertyFlags::STYLED; setProperty(P_ID::SCALE, propertyDefault(P_ID::SCALE)); _stretch.set(1, 1); _sig.set(0, 1); // initialize to invalid _timeSigType = TimeSigType::NORMAL; _largeParentheses = false; }
void Fermata::resetProperty(Pid id) { switch (id) { case Pid::TIME_STRETCH: setProperty(id, propertyDefault(id)); return; default: break; } Element::resetProperty(id); }
void Hairpin::resetProperty(P_ID id) { switch (id) { case P_ID::LINE_WIDTH: setProperty(id, propertyDefault(id)); lineWidthStyle = PropertyStyle::STYLED; break; case P_ID::HAIRPIN_HEIGHT: setProperty(id, propertyDefault(id)); hairpinHeightStyle = PropertyStyle::STYLED; break; case P_ID::HAIRPIN_CONT_HEIGHT: setLineWidth(score()->styleS(StyleIdx::hairpinLineWidth)); hairpinContHeightStyle = PropertyStyle::STYLED; break; default: return TextLine::resetProperty(id); } triggerLayout(); }
void Articulation::resetProperty(P_ID id) { switch (id) { case P_DIRECTION: case P_TIME_STRETCH: return; case P_ARTICULATION_ANCHOR: setProperty(id, propertyDefault(id)); anchorStyle = PropertyStyle::STYLED; return; default: break; } Element::resetProperty(id); }
void ScoreElement::writeProperty(XmlWriter& xml, P_ID id) const { xml.tag(id, getProperty(id), propertyDefault(id)); }
void Volta::reset() { if (lineWidthStyle == PropertyStyle::UNSTYLED) undoChangeProperty(P_ID::LINE_WIDTH, propertyDefault(P_ID::LINE_WIDTH), PropertyStyle::STYLED); TextLineBase::reset(); }
void Image::write(Xml& xml, P_ID id) const { xml.tag(propertyName(id), getProperty(id), propertyDefault(id)); }
void ScoreElement::resetProperty(P_ID id) { QVariant v = propertyDefault(id); if (v.isValid()) setProperty(id, v); }
TextLineBase::TextLineBase(Score* s) : SLine(s) { for (P_ID pid : pids) setProperty(pid, propertyDefault(pid)); }
void TremoloBar::reset() { if (lineWidthStyle == PropertyFlags::UNSTYLED) undoChangeProperty(Pid::LINE_WIDTH, propertyDefault(Pid::LINE_WIDTH), PropertyFlags::STYLED); Element::reset(); }
void Articulation::setSymId(SymId id) { _symId = id; _anchor = ArticulationAnchor(propertyDefault(P_ID::ARTICULATION_ANCHOR).toInt()); }