void SVGPathElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { if (!isSupportedAttribute(name)) { SVGGraphicsElement::parseAttribute(name, value); return; } if (name == SVGNames::dAttr) { if (!buildSVGPathByteStreamFromString(value, m_pathByteStream.get(), UnalteredParsing)) document().accessSVGExtensions()->reportError("Problem parsing d=\"" + value + "\""); return; } if (name == SVGNames::pathLengthAttr) { setPathLengthBaseValue(value.toFloat()); if (pathLengthBaseValue() < 0) document().accessSVGExtensions()->reportError("A negative value for path attribute <pathLength> is not allowed"); return; } if (SVGLangSpace::parseAttribute(name, value)) return; if (SVGExternalResourcesRequired::parseAttribute(name, value)) return; ASSERT_NOT_REACHED(); }
void SVGPathElement::parseMappedAttribute(MappedAttribute* attr) { if (attr->name() == SVGNames::dAttr) { ExceptionCode ec; pathSegList()->clear(ec); if (!pathSegListFromSVGData(pathSegList(), attr->value(), true)) document()->accessSVGExtensions()->reportError("Problem parsing d=\"" + attr->value() + "\""); } else if (attr->name() == SVGNames::pathLengthAttr) { setPathLengthBaseValue(attr->value().toFloat()); if (pathLengthBaseValue() < 0.0f) document()->accessSVGExtensions()->reportError("A negative value for path attribute <pathLength> is not allowed"); } else { if (SVGTests::parseMappedAttribute(attr)) return; if (SVGLangSpace::parseMappedAttribute(attr)) return; if (SVGExternalResourcesRequired::parseMappedAttribute(attr)) return; SVGStyledTransformableElement::parseMappedAttribute(attr); } }