diff options
Diffstat (limited to 'WebCore/svg/SVGGradientElement.cpp')
-rw-r--r-- | WebCore/svg/SVGGradientElement.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/WebCore/svg/SVGGradientElement.cpp b/WebCore/svg/SVGGradientElement.cpp index b4fe21d..f573265 100644 --- a/WebCore/svg/SVGGradientElement.cpp +++ b/WebCore/svg/SVGGradientElement.cpp @@ -37,17 +37,12 @@ namespace WebCore { -char SVGGradientElementIdentifier[] = "SVGGradientElement"; - SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document* doc) : SVGStyledElement(tagName, doc) , SVGURIReference() , SVGExternalResourcesRequired() - , m_spreadMethod(this, SVGNames::spreadMethodAttr) - , m_gradientUnits(this, SVGNames::gradientUnitsAttr, SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) - , m_gradientTransform(this, SVGNames::gradientTransformAttr, SVGTransformList::create(SVGNames::gradientTransformAttr)) - , m_href(this, XLinkNames::hrefAttr) - , m_externalResourcesRequired(this, SVGNames::externalResourcesRequiredAttr, false) + , m_gradientUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) + , m_gradientTransform(SVGTransformList::create(SVGNames::gradientTransformAttr)) { } @@ -101,6 +96,31 @@ void SVGGradientElement::svgAttributeChanged(const QualifiedName& attrName) m_resource->invalidate(); } +void SVGGradientElement::synchronizeProperty(const QualifiedName& attrName) +{ + SVGStyledElement::synchronizeProperty(attrName); + + if (attrName == anyQName()) { + synchronizeGradientUnits(); + synchronizeGradientTransform(); + synchronizeSpreadMethod(); + synchronizeExternalResourcesRequired(); + synchronizeHref(); + return; + } + + if (attrName == SVGNames::gradientUnitsAttr) + synchronizeGradientUnits(); + else if (attrName == SVGNames::gradientTransformAttr) + synchronizeGradientTransform(); + else if (attrName == SVGNames::spreadMethodAttr) + synchronizeSpreadMethod(); + else if (SVGExternalResourcesRequired::isKnownAttribute(attrName)) + synchronizeExternalResourcesRequired(); + else if (SVGURIReference::isKnownAttribute(attrName)) + synchronizeHref(); +} + void SVGGradientElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) { SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); @@ -114,7 +134,7 @@ RenderObject* SVGGradientElement::createRenderer(RenderArena* arena, RenderStyle return new (arena) RenderSVGHiddenContainer(this); } -SVGResource* SVGGradientElement::canvasResource() +SVGResource* SVGGradientElement::canvasResource(const RenderObject*) { if (!m_resource) { if (gradientType() == LinearGradientPaintServer) |