void SVGGradientElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { if (name == SVGNames::gradientUnitsAttr) { auto propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); if (propertyValue > 0) setGradientUnitsBaseValue(propertyValue); return; } if (name == SVGNames::gradientTransformAttr) { SVGTransformList newList; newList.parse(value); detachAnimatedGradientTransformListWrappers(newList.size()); setGradientTransformBaseValue(newList); return; } if (name == SVGNames::spreadMethodAttr) { auto propertyValue = SVGPropertyTraits<SVGSpreadMethodType>::fromString(value); if (propertyValue > 0) setSpreadMethodBaseValue(propertyValue); return; } SVGElement::parseAttribute(name, value); SVGURIReference::parseAttribute(name, value); SVGExternalResourcesRequired::parseAttribute(name, value); }
void SVGViewSpec::setTransformString(const String& transform) { if (!m_contextElement) return; SVGTransformList newList; newList.parse(transform); if (SVGAnimatedProperty* wrapper = SVGAnimatedProperty::lookupWrapper<SVGElement, SVGAnimatedTransformList>(m_contextElement, transformPropertyInfo())) static_cast<SVGAnimatedTransformList*>(wrapper)->detachListWrappers(newList.size()); m_transform = newList; }
void SVGGraphicsElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { if (!isSupportedAttribute(name)) { SVGElement::parseAttribute(name, value); return; } if (name == SVGNames::transformAttr) { SVGTransformList newList; newList.parse(value); detachAnimatedTransformListWrappers(newList.size()); setTransformBaseValue(newList); return; } if (SVGTests::parseAttribute(name, value)) return; ASSERT_NOT_REACHED(); }
void SVGPatternElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { if (name == SVGNames::patternUnitsAttr) { auto propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); if (propertyValue > 0) setPatternUnitsBaseValue(propertyValue); return; } if (name == SVGNames::patternContentUnitsAttr) { auto propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); if (propertyValue > 0) setPatternContentUnitsBaseValue(propertyValue); return; } if (name == SVGNames::patternTransformAttr) { SVGTransformList newList; newList.parse(value); detachAnimatedPatternTransformListWrappers(newList.size()); setPatternTransformBaseValue(newList); return; } SVGParsingError parseError = NoError; if (name == SVGNames::xAttr) setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError)); else if (name == SVGNames::yAttr) setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError)); else if (name == SVGNames::widthAttr) setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError, ForbidNegativeLengths)); else if (name == SVGNames::heightAttr) setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError, ForbidNegativeLengths)); reportAttributeParsingError(parseError, name, value); SVGElement::parseAttribute(name, value); SVGURIReference::parseAttribute(name, value); SVGTests::parseAttribute(name, value); SVGExternalResourcesRequired::parseAttribute(name, value); SVGFitToViewBox::parseAttribute(this, name, value); }