Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: Source/core/svg/SVGFEConvolveMatrixElement.cpp

Issue 1074813002: Remove isSupportedAttribute in svg (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: invalidation guard tweaks Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 2 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 visitor->trace(m_kernelUnitLength); 106 visitor->trace(m_kernelUnitLength);
107 visitor->trace(m_order); 107 visitor->trace(m_order);
108 visitor->trace(m_preserveAlpha); 108 visitor->trace(m_preserveAlpha);
109 visitor->trace(m_targetX); 109 visitor->trace(m_targetX);
110 visitor->trace(m_targetY); 110 visitor->trace(m_targetY);
111 SVGFilterPrimitiveStandardAttributes::trace(visitor); 111 SVGFilterPrimitiveStandardAttributes::trace(visitor);
112 } 112 }
113 113
114 DEFINE_NODE_FACTORY(SVGFEConvolveMatrixElement) 114 DEFINE_NODE_FACTORY(SVGFEConvolveMatrixElement)
115 115
116 bool SVGFEConvolveMatrixElement::isSupportedAttribute(const QualifiedName& attrN ame)
117 {
118 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
119 if (supportedAttributes.isEmpty()) {
120 supportedAttributes.add(SVGNames::inAttr);
121 supportedAttributes.add(SVGNames::orderAttr);
122 supportedAttributes.add(SVGNames::kernelMatrixAttr);
123 supportedAttributes.add(SVGNames::edgeModeAttr);
124 supportedAttributes.add(SVGNames::divisorAttr);
125 supportedAttributes.add(SVGNames::biasAttr);
126 supportedAttributes.add(SVGNames::targetXAttr);
127 supportedAttributes.add(SVGNames::targetYAttr);
128 supportedAttributes.add(SVGNames::kernelUnitLengthAttr);
129 supportedAttributes.add(SVGNames::preserveAlphaAttr);
130 }
131 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
132 }
133
134 bool SVGFEConvolveMatrixElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName& attrName) 116 bool SVGFEConvolveMatrixElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName& attrName)
135 { 117 {
136 FEConvolveMatrix* convolveMatrix = static_cast<FEConvolveMatrix*>(effect); 118 FEConvolveMatrix* convolveMatrix = static_cast<FEConvolveMatrix*>(effect);
137 if (attrName == SVGNames::edgeModeAttr) 119 if (attrName == SVGNames::edgeModeAttr)
138 return convolveMatrix->setEdgeMode(m_edgeMode->currentValue()->enumValue ()); 120 return convolveMatrix->setEdgeMode(m_edgeMode->currentValue()->enumValue ());
139 if (attrName == SVGNames::divisorAttr) 121 if (attrName == SVGNames::divisorAttr)
140 return convolveMatrix->setDivisor(m_divisor->currentValue()->value()); 122 return convolveMatrix->setDivisor(m_divisor->currentValue()->value());
141 if (attrName == SVGNames::biasAttr) 123 if (attrName == SVGNames::biasAttr)
142 return convolveMatrix->setBias(m_bias->currentValue()->value()); 124 return convolveMatrix->setBias(m_bias->currentValue()->value());
143 if (attrName == SVGNames::targetXAttr) 125 if (attrName == SVGNames::targetXAttr)
144 return convolveMatrix->setTargetOffset(IntPoint(m_targetX->currentValue( )->value(), m_targetY->currentValue()->value())); 126 return convolveMatrix->setTargetOffset(IntPoint(m_targetX->currentValue( )->value(), m_targetY->currentValue()->value()));
145 if (attrName == SVGNames::targetYAttr) 127 if (attrName == SVGNames::targetYAttr)
146 return convolveMatrix->setTargetOffset(IntPoint(m_targetX->currentValue( )->value(), m_targetY->currentValue()->value())); 128 return convolveMatrix->setTargetOffset(IntPoint(m_targetX->currentValue( )->value(), m_targetY->currentValue()->value()));
147 if (attrName == SVGNames::kernelUnitLengthAttr) 129 if (attrName == SVGNames::kernelUnitLengthAttr)
148 return convolveMatrix->setKernelUnitLength(FloatPoint(kernelUnitLengthX( )->currentValue()->value(), kernelUnitLengthY()->currentValue()->value())); 130 return convolveMatrix->setKernelUnitLength(FloatPoint(kernelUnitLengthX( )->currentValue()->value(), kernelUnitLengthY()->currentValue()->value()));
149 if (attrName == SVGNames::preserveAlphaAttr) 131 if (attrName == SVGNames::preserveAlphaAttr)
150 return convolveMatrix->setPreserveAlpha(m_preserveAlpha->currentValue()- >value()); 132 return convolveMatrix->setPreserveAlpha(m_preserveAlpha->currentValue()- >value());
151 133
152 ASSERT_NOT_REACHED(); 134 ASSERT_NOT_REACHED();
153 return false; 135 return false;
154 } 136 }
155 137
156 void SVGFEConvolveMatrixElement::svgAttributeChanged(const QualifiedName& attrNa me) 138 void SVGFEConvolveMatrixElement::svgAttributeChanged(const QualifiedName& attrNa me)
157 { 139 {
158 if (!isSupportedAttribute(attrName)) {
159 SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
160 return;
161 }
162
163 SVGElement::InvalidationGuard invalidationGuard(this);
164
165 if (attrName == SVGNames::edgeModeAttr 140 if (attrName == SVGNames::edgeModeAttr
166 || attrName == SVGNames::divisorAttr 141 || attrName == SVGNames::divisorAttr
167 || attrName == SVGNames::biasAttr 142 || attrName == SVGNames::biasAttr
168 || attrName == SVGNames::targetXAttr 143 || attrName == SVGNames::targetXAttr
169 || attrName == SVGNames::targetYAttr 144 || attrName == SVGNames::targetYAttr
170 || attrName == SVGNames::kernelUnitLengthAttr 145 || attrName == SVGNames::kernelUnitLengthAttr
171 || attrName == SVGNames::preserveAlphaAttr) { 146 || attrName == SVGNames::preserveAlphaAttr) {
147 SVGElement::InvalidationGuard invalidationGuard(this);
172 primitiveAttributeChanged(attrName); 148 primitiveAttributeChanged(attrName);
173 return; 149 return;
174 } 150 }
175 151
176 if (attrName == SVGNames::inAttr 152 if (attrName == SVGNames::inAttr
177 || attrName == SVGNames::orderAttr 153 || attrName == SVGNames::orderAttr
178 || attrName == SVGNames::kernelMatrixAttr) { 154 || attrName == SVGNames::kernelMatrixAttr) {
155 SVGElement::InvalidationGuard invalidationGuard(this);
179 invalidate(); 156 invalidate();
180 return; 157 return;
181 } 158 }
182 159
183 ASSERT_NOT_REACHED(); 160 SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
184 } 161 }
185 162
186 PassRefPtrWillBeRawPtr<FilterEffect> SVGFEConvolveMatrixElement::build(SVGFilter Builder* filterBuilder, Filter* filter) 163 PassRefPtrWillBeRawPtr<FilterEffect> SVGFEConvolveMatrixElement::build(SVGFilter Builder* filterBuilder, Filter* filter)
187 { 164 {
188 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->curr entValue()->value())); 165 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->curr entValue()->value()));
189 166
190 if (!input1) 167 if (!input1)
191 return nullptr; 168 return nullptr;
192 169
193 int orderXValue = orderX()->currentValue()->value(); 170 int orderXValue = orderX()->currentValue()->value();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 218
242 RefPtrWillBeRawPtr<FilterEffect> effect = FEConvolveMatrix::create(filter, 219 RefPtrWillBeRawPtr<FilterEffect> effect = FEConvolveMatrix::create(filter,
243 IntSize(orderXValue, orderYValue), divisorValue, 220 IntSize(orderXValue, orderYValue), divisorValue,
244 m_bias->currentValue()->value(), IntPoint(targetXValue, targ etYValue), m_edgeMode->currentValue()->enumValue(), 221 m_bias->currentValue()->value(), IntPoint(targetXValue, targ etYValue), m_edgeMode->currentValue()->enumValue(),
245 FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue), m_preserveAlpha->currentValue()->value(), m_kernelMatrix->currentValue()->toFloa tVector()); 222 FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue), m_preserveAlpha->currentValue()->value(), m_kernelMatrix->currentValue()->toFloa tVector());
246 effect->inputEffects().append(input1); 223 effect->inputEffects().append(input1);
247 return effect.release(); 224 return effect.release();
248 } 225 }
249 226
250 } // namespace blink 227 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698