| OLD | NEW |
| 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 26 matching lines...) Expand all Loading... |
| 37 DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::
orderAttr, orderXIdentifier(), OrderX, orderX) | 37 DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::
orderAttr, orderXIdentifier(), OrderX, orderX) |
| 38 DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::
orderAttr, orderYIdentifier(), OrderY, orderY) | 38 DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::
orderAttr, orderYIdentifier(), OrderY, orderY) |
| 39 DEFINE_ANIMATED_NUMBER_LIST(SVGFEConvolveMatrixElement, SVGNames::kernelMatrixAt
tr, KernelMatrix, kernelMatrix) | 39 DEFINE_ANIMATED_NUMBER_LIST(SVGFEConvolveMatrixElement, SVGNames::kernelMatrixAt
tr, KernelMatrix, kernelMatrix) |
| 40 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::divisorAttr, Diviso
r, divisor) | 40 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::divisorAttr, Diviso
r, divisor) |
| 41 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::biasAttr, Bias, bia
s) | 41 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::biasAttr, Bias, bia
s) |
| 42 DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetXAttr, Targe
tX, targetX) | 42 DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetXAttr, Targe
tX, targetX) |
| 43 DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetYAttr, Targe
tY, targetY) | 43 DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetYAttr, Targe
tY, targetY) |
| 44 DEFINE_ANIMATED_ENUMERATION(SVGFEConvolveMatrixElement, SVGNames::edgeModeAttr,
EdgeMode, edgeMode, EdgeModeType) | 44 DEFINE_ANIMATED_ENUMERATION(SVGFEConvolveMatrixElement, SVGNames::edgeModeAttr,
EdgeMode, edgeMode, EdgeModeType) |
| 45 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::k
ernelUnitLengthAttr, kernelUnitLengthXIdentifier(), KernelUnitLengthX, kernelUni
tLengthX) | 45 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::k
ernelUnitLengthAttr, kernelUnitLengthXIdentifier(), KernelUnitLengthX, kernelUni
tLengthX) |
| 46 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::k
ernelUnitLengthAttr, kernelUnitLengthYIdentifier(), KernelUnitLengthY, kernelUni
tLengthY) | 46 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::k
ernelUnitLengthAttr, kernelUnitLengthYIdentifier(), KernelUnitLengthY, kernelUni
tLengthY) |
| 47 DEFINE_ANIMATED_BOOLEAN(SVGFEConvolveMatrixElement, SVGNames::preserveAlphaAttr,
PreserveAlpha, preserveAlpha) | |
| 48 | 47 |
| 49 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFEConvolveMatrixElement) | 48 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFEConvolveMatrixElement) |
| 50 REGISTER_LOCAL_ANIMATED_PROPERTY(in1) | 49 REGISTER_LOCAL_ANIMATED_PROPERTY(in1) |
| 51 REGISTER_LOCAL_ANIMATED_PROPERTY(orderX) | 50 REGISTER_LOCAL_ANIMATED_PROPERTY(orderX) |
| 52 REGISTER_LOCAL_ANIMATED_PROPERTY(orderY) | 51 REGISTER_LOCAL_ANIMATED_PROPERTY(orderY) |
| 53 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelMatrix) | 52 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelMatrix) |
| 54 REGISTER_LOCAL_ANIMATED_PROPERTY(divisor) | 53 REGISTER_LOCAL_ANIMATED_PROPERTY(divisor) |
| 55 REGISTER_LOCAL_ANIMATED_PROPERTY(bias) | 54 REGISTER_LOCAL_ANIMATED_PROPERTY(bias) |
| 56 REGISTER_LOCAL_ANIMATED_PROPERTY(targetX) | 55 REGISTER_LOCAL_ANIMATED_PROPERTY(targetX) |
| 57 REGISTER_LOCAL_ANIMATED_PROPERTY(targetY) | 56 REGISTER_LOCAL_ANIMATED_PROPERTY(targetY) |
| 58 REGISTER_LOCAL_ANIMATED_PROPERTY(edgeMode) | 57 REGISTER_LOCAL_ANIMATED_PROPERTY(edgeMode) |
| 59 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelUnitLengthX) | 58 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelUnitLengthX) |
| 60 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelUnitLengthY) | 59 REGISTER_LOCAL_ANIMATED_PROPERTY(kernelUnitLengthY) |
| 61 REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAlpha) | |
| 62 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes) | 60 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes) |
| 63 END_REGISTER_ANIMATED_PROPERTIES | 61 END_REGISTER_ANIMATED_PROPERTIES |
| 64 | 62 |
| 65 inline SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement(Document& document
) | 63 inline SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement(Document& document
) |
| 66 : SVGFilterPrimitiveStandardAttributes(SVGNames::feConvolveMatrixTag, docume
nt) | 64 : SVGFilterPrimitiveStandardAttributes(SVGNames::feConvolveMatrixTag, docume
nt) |
| 65 , m_preserveAlpha(SVGAnimatedBoolean::create(this, SVGNames::preserveAlphaAt
tr, SVGBoolean::create())) |
| 67 , m_edgeMode(EDGEMODE_DUPLICATE) | 66 , m_edgeMode(EDGEMODE_DUPLICATE) |
| 68 { | 67 { |
| 69 ScriptWrappable::init(this); | 68 ScriptWrappable::init(this); |
| 69 |
| 70 addToPropertyMap(m_preserveAlpha); |
| 71 |
| 70 registerAnimatedPropertiesForSVGFEConvolveMatrixElement(); | 72 registerAnimatedPropertiesForSVGFEConvolveMatrixElement(); |
| 71 } | 73 } |
| 72 | 74 |
| 73 PassRefPtr<SVGFEConvolveMatrixElement> SVGFEConvolveMatrixElement::create(Docume
nt& document) | 75 PassRefPtr<SVGFEConvolveMatrixElement> SVGFEConvolveMatrixElement::create(Docume
nt& document) |
| 74 { | 76 { |
| 75 return adoptRef(new SVGFEConvolveMatrixElement(document)); | 77 return adoptRef(new SVGFEConvolveMatrixElement(document)); |
| 76 } | 78 } |
| 77 | 79 |
| 78 const AtomicString& SVGFEConvolveMatrixElement::kernelUnitLengthXIdentifier() | 80 const AtomicString& SVGFEConvolveMatrixElement::kernelUnitLengthXIdentifier() |
| 79 { | 81 { |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 setKernelUnitLengthYBaseValue(y); | 196 setKernelUnitLengthYBaseValue(y); |
| 195 } else { | 197 } else { |
| 196 document().accessSVGExtensions()->reportWarning( | 198 document().accessSVGExtensions()->reportWarning( |
| 197 "feConvolveMatrix: problem parsing kernelUnitLength=\"" + value | 199 "feConvolveMatrix: problem parsing kernelUnitLength=\"" + value |
| 198 + "\". Filtered element will not be displayed."); | 200 + "\". Filtered element will not be displayed."); |
| 199 } | 201 } |
| 200 return; | 202 return; |
| 201 } | 203 } |
| 202 | 204 |
| 203 if (name == SVGNames::preserveAlphaAttr) { | 205 if (name == SVGNames::preserveAlphaAttr) { |
| 204 if (value == "true") | 206 SVGParsingError parseError = NoError; |
| 205 setPreserveAlphaBaseValue(true); | 207 m_preserveAlpha->setBaseValueAsString(value, parseError); |
| 206 else if (value == "false") | 208 reportAttributeParsingError(parseError, name, value); |
| 207 setPreserveAlphaBaseValue(false); | |
| 208 else | |
| 209 document().accessSVGExtensions()->reportWarning( | |
| 210 "feConvolveMatrix: problem parsing preserveAlphaAttr=\"" + value | |
| 211 + "\". Filtered element will not be displayed."); | |
| 212 return; | 209 return; |
| 213 } | 210 } |
| 214 | 211 |
| 215 ASSERT_NOT_REACHED(); | 212 ASSERT_NOT_REACHED(); |
| 216 } | 213 } |
| 217 | 214 |
| 218 bool SVGFEConvolveMatrixElement::setFilterEffectAttribute(FilterEffect* effect,
const QualifiedName& attrName) | 215 bool SVGFEConvolveMatrixElement::setFilterEffectAttribute(FilterEffect* effect,
const QualifiedName& attrName) |
| 219 { | 216 { |
| 220 FEConvolveMatrix* convolveMatrix = static_cast<FEConvolveMatrix*>(effect); | 217 FEConvolveMatrix* convolveMatrix = static_cast<FEConvolveMatrix*>(effect); |
| 221 if (attrName == SVGNames::edgeModeAttr) | 218 if (attrName == SVGNames::edgeModeAttr) |
| 222 return convolveMatrix->setEdgeMode(edgeModeCurrentValue()); | 219 return convolveMatrix->setEdgeMode(edgeModeCurrentValue()); |
| 223 if (attrName == SVGNames::divisorAttr) | 220 if (attrName == SVGNames::divisorAttr) |
| 224 return convolveMatrix->setDivisor(divisorCurrentValue()); | 221 return convolveMatrix->setDivisor(divisorCurrentValue()); |
| 225 if (attrName == SVGNames::biasAttr) | 222 if (attrName == SVGNames::biasAttr) |
| 226 return convolveMatrix->setBias(biasCurrentValue()); | 223 return convolveMatrix->setBias(biasCurrentValue()); |
| 227 if (attrName == SVGNames::targetXAttr) | 224 if (attrName == SVGNames::targetXAttr) |
| 228 return convolveMatrix->setTargetOffset(IntPoint(targetXCurrentValue(), t
argetYCurrentValue())); | 225 return convolveMatrix->setTargetOffset(IntPoint(targetXCurrentValue(), t
argetYCurrentValue())); |
| 229 if (attrName == SVGNames::targetYAttr) | 226 if (attrName == SVGNames::targetYAttr) |
| 230 return convolveMatrix->setTargetOffset(IntPoint(targetXCurrentValue(), t
argetYCurrentValue())); | 227 return convolveMatrix->setTargetOffset(IntPoint(targetXCurrentValue(), t
argetYCurrentValue())); |
| 231 if (attrName == SVGNames::kernelUnitLengthAttr) | 228 if (attrName == SVGNames::kernelUnitLengthAttr) |
| 232 return convolveMatrix->setKernelUnitLength(FloatPoint(kernelUnitLengthXC
urrentValue(), kernelUnitLengthYCurrentValue())); | 229 return convolveMatrix->setKernelUnitLength(FloatPoint(kernelUnitLengthXC
urrentValue(), kernelUnitLengthYCurrentValue())); |
| 233 if (attrName == SVGNames::preserveAlphaAttr) | 230 if (attrName == SVGNames::preserveAlphaAttr) |
| 234 return convolveMatrix->setPreserveAlpha(preserveAlphaCurrentValue()); | 231 return convolveMatrix->setPreserveAlpha(m_preserveAlpha->currentValue()-
>value()); |
| 235 | 232 |
| 236 ASSERT_NOT_REACHED(); | 233 ASSERT_NOT_REACHED(); |
| 237 return false; | 234 return false; |
| 238 } | 235 } |
| 239 | 236 |
| 240 void SVGFEConvolveMatrixElement::setOrder(float x, float y) | 237 void SVGFEConvolveMatrixElement::setOrder(float x, float y) |
| 241 { | 238 { |
| 242 setOrderXBaseValue(x); | 239 setOrderXBaseValue(x); |
| 243 setOrderYBaseValue(y); | 240 setOrderYBaseValue(y); |
| 244 invalidate(); | 241 invalidate(); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 if (!hasAttribute(SVGNames::divisorAttr)) { | 329 if (!hasAttribute(SVGNames::divisorAttr)) { |
| 333 for (int i = 0; i < kernelMatrixSize; ++i) | 330 for (int i = 0; i < kernelMatrixSize; ++i) |
| 334 divisorValue += kernelMatrix.at(i).value(); | 331 divisorValue += kernelMatrix.at(i).value(); |
| 335 if (!divisorValue) | 332 if (!divisorValue) |
| 336 divisorValue = 1; | 333 divisorValue = 1; |
| 337 } | 334 } |
| 338 | 335 |
| 339 RefPtr<FilterEffect> effect = FEConvolveMatrix::create(filter, | 336 RefPtr<FilterEffect> effect = FEConvolveMatrix::create(filter, |
| 340 IntSize(orderXValue, orderYValue), divisorValue, | 337 IntSize(orderXValue, orderYValue), divisorValue, |
| 341 biasCurrentValue(), IntPoint(targetXValue, targetYValue), ed
geModeCurrentValue(), | 338 biasCurrentValue(), IntPoint(targetXValue, targetYValue), ed
geModeCurrentValue(), |
| 342 FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue),
preserveAlphaCurrentValue(), kernelMatrix.toFloatVector()); | 339 FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue),
m_preserveAlpha->currentValue()->value(), kernelMatrix.toFloatVector()); |
| 343 effect->inputEffects().append(input1); | 340 effect->inputEffects().append(input1); |
| 344 return effect.release(); | 341 return effect.release(); |
| 345 } | 342 } |
| 346 | 343 |
| 347 } // namespace WebCore | 344 } // namespace WebCore |
| OLD | NEW |