diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp | 157 |
1 files changed, 55 insertions, 102 deletions
diff --git a/chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp b/chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp index 4429044f7fb..e8aafb0c12a 100644 --- a/chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp +++ b/chromium/third_party/WebKit/Source/core/svg/SVGFELightElement.cpp @@ -23,65 +23,42 @@ #include "core/svg/SVGFELightElement.h" -#include "SVGNames.h" +#include "core/SVGNames.h" #include "core/rendering/RenderObject.h" #include "core/rendering/svg/RenderSVGResource.h" -#include "core/svg/SVGElementInstance.h" #include "core/svg/SVGFEDiffuseLightingElement.h" #include "core/svg/SVGFESpecularLightingElement.h" namespace WebCore { -// Animated property definitions -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::azimuthAttr, Azimuth, azimuth) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::elevationAttr, Elevation, elevation) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::xAttr, X, x) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::yAttr, Y, y) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::zAttr, Z, z) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::pointsAtXAttr, PointsAtX, pointsAtX) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::pointsAtYAttr, PointsAtY, pointsAtY) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::pointsAtZAttr, PointsAtZ, pointsAtZ) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::specularExponentAttr, SpecularExponent, specularExponent) -DEFINE_ANIMATED_NUMBER(SVGFELightElement, SVGNames::limitingConeAngleAttr, LimitingConeAngle, limitingConeAngle) - -BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFELightElement) - REGISTER_LOCAL_ANIMATED_PROPERTY(azimuth) - REGISTER_LOCAL_ANIMATED_PROPERTY(elevation) - REGISTER_LOCAL_ANIMATED_PROPERTY(x) - REGISTER_LOCAL_ANIMATED_PROPERTY(y) - REGISTER_LOCAL_ANIMATED_PROPERTY(z) - REGISTER_LOCAL_ANIMATED_PROPERTY(pointsAtX) - REGISTER_LOCAL_ANIMATED_PROPERTY(pointsAtY) - REGISTER_LOCAL_ANIMATED_PROPERTY(pointsAtZ) - REGISTER_LOCAL_ANIMATED_PROPERTY(specularExponent) - REGISTER_LOCAL_ANIMATED_PROPERTY(limitingConeAngle) -END_REGISTER_ANIMATED_PROPERTIES - SVGFELightElement::SVGFELightElement(const QualifiedName& tagName, Document& document) : SVGElement(tagName, document) - , m_specularExponent(1) + , m_azimuth(SVGAnimatedNumber::create(this, SVGNames::azimuthAttr, SVGNumber::create())) + , m_elevation(SVGAnimatedNumber::create(this, SVGNames::elevationAttr, SVGNumber::create())) + , m_x(SVGAnimatedNumber::create(this, SVGNames::xAttr, SVGNumber::create())) + , m_y(SVGAnimatedNumber::create(this, SVGNames::yAttr, SVGNumber::create())) + , m_z(SVGAnimatedNumber::create(this, SVGNames::zAttr, SVGNumber::create())) + , m_pointsAtX(SVGAnimatedNumber::create(this, SVGNames::pointsAtXAttr, SVGNumber::create())) + , m_pointsAtY(SVGAnimatedNumber::create(this, SVGNames::pointsAtYAttr, SVGNumber::create())) + , m_pointsAtZ(SVGAnimatedNumber::create(this, SVGNames::pointsAtZAttr, SVGNumber::create())) + , m_specularExponent(SVGAnimatedNumber::create(this, SVGNames::specularExponentAttr, SVGNumber::create(1))) + , m_limitingConeAngle(SVGAnimatedNumber::create(this, SVGNames::limitingConeAngleAttr, SVGNumber::create())) { - registerAnimatedPropertiesForSVGFELightElement(); -} - -SVGFELightElement* SVGFELightElement::findLightElement(const SVGElement* svgElement) -{ - for (Node* node = svgElement->firstChild(); node; node = node->nextSibling()) { - if (node->hasTagName(SVGNames::feDistantLightTag) - || node->hasTagName(SVGNames::fePointLightTag) - || node->hasTagName(SVGNames::feSpotLightTag)) { - return static_cast<SVGFELightElement*>(node); - } - } - return 0; + addToPropertyMap(m_azimuth); + addToPropertyMap(m_elevation); + addToPropertyMap(m_x); + addToPropertyMap(m_y); + addToPropertyMap(m_z); + addToPropertyMap(m_pointsAtX); + addToPropertyMap(m_pointsAtY); + addToPropertyMap(m_pointsAtZ); + addToPropertyMap(m_specularExponent); + addToPropertyMap(m_limitingConeAngle); } -PassRefPtr<LightSource> SVGFELightElement::findLightSource(const SVGElement* svgElement) +SVGFELightElement* SVGFELightElement::findLightElement(const SVGElement& svgElement) { - SVGFELightElement* lightNode = findLightElement(svgElement); - if (!lightNode) - return 0; - return lightNode->lightSource(); + return Traversal<SVGFELightElement>::firstChild(svgElement); } bool SVGFELightElement::isSupportedAttribute(const QualifiedName& attrName) @@ -109,57 +86,32 @@ void SVGFELightElement::parseAttribute(const QualifiedName& name, const AtomicSt return; } - if (name == SVGNames::azimuthAttr) { - setAzimuthBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::elevationAttr) { - setElevationBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::xAttr) { - setXBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::yAttr) { - setYBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::zAttr) { - setZBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::pointsAtXAttr) { - setPointsAtXBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::pointsAtYAttr) { - setPointsAtYBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::pointsAtZAttr) { - setPointsAtZBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::specularExponentAttr) { - setSpecularExponentBaseValue(value.toFloat()); - return; - } - - if (name == SVGNames::limitingConeAngleAttr) { - setLimitingConeAngleBaseValue(value.toFloat()); - return; - } - - ASSERT_NOT_REACHED(); + SVGParsingError parseError = NoError; + + if (name == SVGNames::azimuthAttr) + m_azimuth->setBaseValueAsString(value, parseError); + else if (name == SVGNames::elevationAttr) + m_elevation->setBaseValueAsString(value, parseError); + else if (name == SVGNames::xAttr) + m_x->setBaseValueAsString(value, parseError); + else if (name == SVGNames::yAttr) + m_y->setBaseValueAsString(value, parseError); + else if (name == SVGNames::zAttr) + m_z->setBaseValueAsString(value, parseError); + else if (name == SVGNames::pointsAtXAttr) + m_pointsAtX->setBaseValueAsString(value, parseError); + else if (name == SVGNames::pointsAtYAttr) + m_pointsAtY->setBaseValueAsString(value, parseError); + else if (name == SVGNames::pointsAtZAttr) + m_pointsAtZ->setBaseValueAsString(value, parseError); + else if (name == SVGNames::specularExponentAttr) + m_specularExponent->setBaseValueAsString(value, parseError); + else if (name == SVGNames::limitingConeAngleAttr) + m_limitingConeAngle->setBaseValueAsString(value, parseError); + else + ASSERT_NOT_REACHED(); + + reportAttributeParsingError(parseError, name, value); } void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) @@ -169,7 +121,7 @@ void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) return; } - SVGElementInstance::InvalidationGuard invalidationGuard(this); + SVGElement::InvalidationGuard invalidationGuard(this); if (attrName == SVGNames::azimuthAttr || attrName == SVGNames::elevationAttr @@ -189,11 +141,12 @@ void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) if (!renderer || !renderer->isSVGResourceFilterPrimitive()) return; - if (parent->hasTagName(SVGNames::feDiffuseLightingTag)) { - toSVGFEDiffuseLightingElement(parent)->lightElementAttributeChanged(this, attrName); + if (isSVGFEDiffuseLightingElement(*parent)) { + toSVGFEDiffuseLightingElement(*parent).lightElementAttributeChanged(this, attrName); return; - } else if (parent->hasTagName(SVGNames::feSpecularLightingTag)) { - toSVGFESpecularLightingElement(parent)->lightElementAttributeChanged(this, attrName); + } + if (isSVGFESpecularLightingElement(*parent)) { + toSVGFESpecularLightingElement(*parent).lightElementAttributeChanged(this, attrName); return; } } |