OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2005 Oliver Hunt <oliver@nerget.com> | 4 * Copyright (C) 2005 Oliver Hunt <oliver@nerget.com> |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 FloatPoint3D SVGFELightElement::position() const | 78 FloatPoint3D SVGFELightElement::position() const |
79 { | 79 { |
80 return FloatPoint3D(x()->currentValue()->value(), y()->currentValue()->value
(), z()->currentValue()->value()); | 80 return FloatPoint3D(x()->currentValue()->value(), y()->currentValue()->value
(), z()->currentValue()->value()); |
81 } | 81 } |
82 | 82 |
83 FloatPoint3D SVGFELightElement::pointsAt() const | 83 FloatPoint3D SVGFELightElement::pointsAt() const |
84 { | 84 { |
85 return FloatPoint3D(pointsAtX()->currentValue()->value(), pointsAtY()->curre
ntValue()->value(), pointsAtZ()->currentValue()->value()); | 85 return FloatPoint3D(pointsAtX()->currentValue()->value(), pointsAtY()->curre
ntValue()->value(), pointsAtZ()->currentValue()->value()); |
86 } | 86 } |
87 | 87 |
88 bool SVGFELightElement::isSupportedAttribute(const QualifiedName& attrName) | |
89 { | |
90 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | |
91 if (supportedAttributes.isEmpty()) { | |
92 supportedAttributes.add(SVGNames::azimuthAttr); | |
93 supportedAttributes.add(SVGNames::elevationAttr); | |
94 supportedAttributes.add(SVGNames::xAttr); | |
95 supportedAttributes.add(SVGNames::yAttr); | |
96 supportedAttributes.add(SVGNames::zAttr); | |
97 supportedAttributes.add(SVGNames::pointsAtXAttr); | |
98 supportedAttributes.add(SVGNames::pointsAtYAttr); | |
99 supportedAttributes.add(SVGNames::pointsAtZAttr); | |
100 supportedAttributes.add(SVGNames::specularExponentAttr); | |
101 supportedAttributes.add(SVGNames::limitingConeAngleAttr); | |
102 } | |
103 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); | |
104 } | |
105 | |
106 void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) | 88 void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) |
107 { | 89 { |
108 if (!isSupportedAttribute(attrName)) { | |
109 SVGElement::svgAttributeChanged(attrName); | |
110 return; | |
111 } | |
112 | |
113 SVGElement::InvalidationGuard invalidationGuard(this); | |
114 | |
115 if (attrName == SVGNames::azimuthAttr | 90 if (attrName == SVGNames::azimuthAttr |
116 || attrName == SVGNames::elevationAttr | 91 || attrName == SVGNames::elevationAttr |
117 || attrName == SVGNames::xAttr | 92 || attrName == SVGNames::xAttr |
118 || attrName == SVGNames::yAttr | 93 || attrName == SVGNames::yAttr |
119 || attrName == SVGNames::zAttr | 94 || attrName == SVGNames::zAttr |
120 || attrName == SVGNames::pointsAtXAttr | 95 || attrName == SVGNames::pointsAtXAttr |
121 || attrName == SVGNames::pointsAtYAttr | 96 || attrName == SVGNames::pointsAtYAttr |
122 || attrName == SVGNames::pointsAtZAttr | 97 || attrName == SVGNames::pointsAtZAttr |
123 || attrName == SVGNames::specularExponentAttr | 98 || attrName == SVGNames::specularExponentAttr |
124 || attrName == SVGNames::limitingConeAngleAttr) { | 99 || attrName == SVGNames::limitingConeAngleAttr) { |
125 ContainerNode* parent = parentNode(); | 100 ContainerNode* parent = parentNode(); |
126 if (!parent) | 101 if (!parent) |
127 return; | 102 return; |
128 | 103 |
129 LayoutObject* renderer = parent->layoutObject(); | 104 LayoutObject* renderer = parent->layoutObject(); |
130 if (!renderer || !renderer->isSVGResourceFilterPrimitive()) | 105 if (!renderer || !renderer->isSVGResourceFilterPrimitive()) |
131 return; | 106 return; |
132 | 107 |
| 108 SVGElement::InvalidationGuard invalidationGuard(this); |
133 if (isSVGFEDiffuseLightingElement(*parent)) { | 109 if (isSVGFEDiffuseLightingElement(*parent)) { |
134 toSVGFEDiffuseLightingElement(*parent).lightElementAttributeChanged(
this, attrName); | 110 toSVGFEDiffuseLightingElement(*parent).lightElementAttributeChanged(
this, attrName); |
135 return; | 111 return; |
136 } | 112 } |
137 if (isSVGFESpecularLightingElement(*parent)) { | 113 if (isSVGFESpecularLightingElement(*parent)) { |
138 toSVGFESpecularLightingElement(*parent).lightElementAttributeChanged
(this, attrName); | 114 toSVGFESpecularLightingElement(*parent).lightElementAttributeChanged
(this, attrName); |
139 return; | 115 return; |
140 } | 116 } |
| 117 |
| 118 ASSERT_NOT_REACHED(); |
141 } | 119 } |
142 | 120 |
143 ASSERT_NOT_REACHED(); | 121 SVGElement::svgAttributeChanged(attrName); |
144 } | 122 } |
145 | 123 |
146 void SVGFELightElement::childrenChanged(const ChildrenChange& change) | 124 void SVGFELightElement::childrenChanged(const ChildrenChange& change) |
147 { | 125 { |
148 SVGElement::childrenChanged(change); | 126 SVGElement::childrenChanged(change); |
149 | 127 |
150 if (!change.byParser) { | 128 if (!change.byParser) { |
151 if (ContainerNode* parent = parentNode()) { | 129 if (ContainerNode* parent = parentNode()) { |
152 LayoutObject* renderer = parent->layoutObject(); | 130 LayoutObject* renderer = parent->layoutObject(); |
153 if (renderer && renderer->isSVGResourceFilterPrimitive()) | 131 if (renderer && renderer->isSVGResourceFilterPrimitive()) |
154 markForLayoutAndParentResourceInvalidation(renderer); | 132 markForLayoutAndParentResourceInvalidation(renderer); |
155 } | 133 } |
156 } | 134 } |
157 } | 135 } |
158 | 136 |
159 } | 137 } |
OLD | NEW |