void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { SVGParsingError parseError = NoError; if (!isSupportedAttribute(name)) SVGElement::parseAttribute(name, value); else if (name == SVGNames::markerUnitsAttr) { SVGMarkerUnitsType propertyValue = SVGPropertyTraits<SVGMarkerUnitsType>::fromString(value); if (propertyValue > 0) setMarkerUnitsBaseValue(propertyValue); } else if (name == SVGNames::refXAttr) setRefXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError)); else if (name == SVGNames::refYAttr) setRefYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError)); else if (name == SVGNames::markerWidthAttr) setMarkerWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError)); else if (name == SVGNames::markerHeightAttr) setMarkerHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError)); else if (name == SVGNames::orientAttr) { SVGAngle angle; SVGMarkerOrientType orientType = SVGPropertyTraits<SVGMarkerOrientType>::fromString(value, angle); if (orientType > 0) setOrientTypeBaseValue(orientType); if (orientType == SVGMarkerOrientAngle) setOrientAngleBaseValue(angle); } else if (SVGLangSpace::parseAttribute(name, value) || SVGExternalResourcesRequired::parseAttribute(name, value) || SVGFitToViewBox::parseAttribute(this, name, value)) { } else ASSERT_NOT_REACHED(); reportAttributeParsingError(parseError, name, value); }
void SVGMarkerElement::setOrientToAngle(const SVGAngle& angle) { setOrientTypeBaseValue(SVGMarkerOrientAngle); setOrientAngleBaseValue(angle); // Mark orientAttr dirty - the next XML DOM access of that attribute kicks in synchronization. m_orientAngle.shouldSynchronize = true; m_orientType.shouldSynchronize = true; invalidateSVGAttributes(); svgAttributeChanged(orientAnglePropertyInfo()->attributeName); }
void SVGMarkerElement::parseMappedAttribute(Attribute* attr) { if (attr->name() == SVGNames::markerUnitsAttr) { if (attr->value() == "userSpaceOnUse") setMarkerUnitsBaseValue(SVG_MARKERUNITS_USERSPACEONUSE); else if (attr->value() == "strokeWidth") setMarkerUnitsBaseValue(SVG_MARKERUNITS_STROKEWIDTH); } else if (attr->name() == SVGNames::refXAttr) setRefXBaseValue(SVGLength(LengthModeWidth, attr->value())); else if (attr->name() == SVGNames::refYAttr) setRefYBaseValue(SVGLength(LengthModeHeight, attr->value())); else if (attr->name() == SVGNames::markerWidthAttr) setMarkerWidthBaseValue(SVGLength(LengthModeWidth, attr->value())); else if (attr->name() == SVGNames::markerHeightAttr) setMarkerHeightBaseValue(SVGLength(LengthModeHeight, attr->value())); else if (attr->name() == SVGNames::orientAttr) { SVGAngle angle; if (attr->value() == "auto") setOrientTypeBaseValue(SVG_MARKER_ORIENT_AUTO); else { ExceptionCode ec = 0; angle.setValueAsString(attr->value(), ec); setOrientTypeBaseValue(SVG_MARKER_ORIENT_ANGLE); } setOrientAngleBaseValue(angle); } else { if (SVGLangSpace::parseMappedAttribute(attr)) return; if (SVGExternalResourcesRequired::parseMappedAttribute(attr)) return; if (SVGFitToViewBox::parseMappedAttribute(document(), attr)) return; SVGStyledElement::parseMappedAttribute(attr); } }
void SVGMarkerElement::setOrientToAngle(SVGAngle *angle) { setOrientTypeBaseValue(SVG_MARKER_ORIENT_ANGLE); setOrientAngleBaseValue(angle); }
void SVGMarkerElement::setOrientToAuto() { setOrientTypeBaseValue(SVG_MARKER_ORIENT_AUTO); }