void SVGTextPathElement::parseMappedAttribute(MappedAttribute* attr) { const String& value = attr->value(); if (attr->name() == SVGNames::startOffsetAttr) setStartOffsetBaseValue(SVGLength(LengthModeOther, value)); else if (attr->name() == SVGNames::methodAttr) { if (value == "align") setSpacingBaseValue(SVG_TEXTPATH_METHODTYPE_ALIGN); else if(value == "stretch") setSpacingBaseValue(SVG_TEXTPATH_METHODTYPE_STRETCH); } else if (attr->name() == SVGNames::spacingAttr) { if (value == "auto") setMethodBaseValue(SVG_TEXTPATH_SPACINGTYPE_AUTO); else if (value == "exact") setMethodBaseValue(SVG_TEXTPATH_SPACINGTYPE_EXACT); } else { if (SVGURIReference::parseMappedAttribute(attr)) return; SVGTextContentElement::parseMappedAttribute(attr); } }
void SVGTextPathElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { SVGParsingError parseError = NoError; if (name == SVGNames::startOffsetAttr) setStartOffsetBaseValue(SVGLength::construct(LengthModeOther, value, parseError)); else if (name == SVGNames::methodAttr) { SVGTextPathMethodType propertyValue = SVGPropertyTraits<SVGTextPathMethodType>::fromString(value); if (propertyValue > 0) setMethodBaseValue(propertyValue); } else if (name == SVGNames::spacingAttr) { SVGTextPathSpacingType propertyValue = SVGPropertyTraits<SVGTextPathSpacingType>::fromString(value); if (propertyValue > 0) setSpacingBaseValue(propertyValue); } reportAttributeParsingError(parseError, name, value); SVGTextContentElement::parseAttribute(name, value); SVGURIReference::parseAttribute(name, value); }