void Hairpin::read(XmlReader& e) { foreach(SpannerSegment* seg, spannerSegments()) delete seg; spannerSegments().clear(); setId(e.intAttribute("id", -1)); while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "subtype") _hairpinType = HairpinType(e.readInt()); else if (tag == "lineWidth") { setLineWidth(Spatium(e.readDouble())); lineWidthStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinHeight") { setHairpinHeight(Spatium(e.readDouble())); hairpinHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinContHeight") { setHairpinContHeight(Spatium(e.readDouble())); hairpinContHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "veloChange") _veloChange = e.readInt(); else if (tag == "dynType") _dynRange = DynamicRange(e.readInt()); else if (!SLine::readProperties(e)) e.unknown(); } }
void Hairpin::styleChanged() { if (lineWidthStyle == PropertyStyle::STYLED) setLineWidth(score()->styleS(StyleIdx::hairpinLineWidth)); if (hairpinHeightStyle == PropertyStyle::STYLED) setHairpinHeight(score()->styleS(StyleIdx::hairpinHeight)); if (hairpinContHeightStyle == PropertyStyle::STYLED) setHairpinContHeight(score()->styleS(StyleIdx::hairpinContHeight)); }
void Hairpin::read(XmlReader& e) { foreach(SpannerSegment* seg, spannerSegments()) delete seg; spannerSegments().clear(); int id = e.intAttribute("id", -1); e.addSpanner(id, this); while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "subtype") _hairpinType = Type(e.readInt()); else if (tag == "lineWidth") { setLineWidth(Spatium(e.readDouble())); lineWidthStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinHeight") { setHairpinHeight(Spatium(e.readDouble())); hairpinHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinContHeight") { setHairpinContHeight(Spatium(e.readDouble())); hairpinContHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinCircledTip") _hairpinCircledTip = e.readInt(); else if (tag == "veloChange") _veloChange = e.readInt(); else if (tag == "dynType") _dynRange = Dynamic::Range(e.readInt()); else if (tag == "useTextLine") _useTextLine = e.readInt(); else if (!TextLine::readProperties(e)) e.unknown(); } // add default text to legacy hairpins if (score()->mscVersion() <= 206 && !_useTextLine) { bool cresc = _hairpinType == Hairpin::Type::CRESCENDO; if (!_beginText) setBeginText(cresc ? "cresc." : "dim."); if (!_continueText) setContinueText(cresc ? "(cresc.)" : "(dim.)"); } }
void Hairpin::read(XmlReader& e) { foreach(SpannerSegment* seg, spannerSegments()) delete seg; spannerSegments().clear(); int id = e.intAttribute("id", -1); e.addSpanner(id, this); while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "subtype") setHairpinType(Type(e.readInt())); else if (tag == "lineWidth") { setLineWidth(Spatium(e.readDouble())); lineWidthStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinHeight") { setHairpinHeight(Spatium(e.readDouble())); hairpinHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinContHeight") { setHairpinContHeight(Spatium(e.readDouble())); hairpinContHeightStyle = PropertyStyle::UNSTYLED; } else if (tag == "hairpinCircledTip") _hairpinCircledTip = e.readInt(); else if (tag == "veloChange") _veloChange = e.readInt(); else if (tag == "dynType") _dynRange = Dynamic::Range(e.readInt()); else if (tag == "useTextLine") { // obsolete e.readInt(); if (hairpinType() == Type::CRESC_HAIRPIN) setHairpinType(Type::CRESC_LINE); else if (hairpinType() == Type::DECRESC_HAIRPIN) setHairpinType(Type::DECRESC_LINE); } else if (!TextLine::readProperties(e)) e.unknown(); } }
void Hairpin::resetProperty(P_ID id) { switch (id) { case P_ID::LINE_WIDTH: setLineWidth(score()->styleS(StyleIdx::hairpinLineWidth)); lineWidthStyle = PropertyStyle::STYLED; break; case P_ID::HAIRPIN_HEIGHT: setHairpinHeight(score()->styleS(StyleIdx::hairpinHeight)); hairpinHeightStyle = PropertyStyle::STYLED; break; case P_ID::HAIRPIN_CONT_HEIGHT: setHairpinContHeight(score()->styleS(StyleIdx::hairpinContHeight)); hairpinContHeightStyle = PropertyStyle::STYLED; break; default: return TextLine::resetProperty(id); } score()->setLayoutAll(true); }