OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
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 13 matching lines...) Expand all Loading... |
24 #include "SVGNames.h" | 24 #include "SVGNames.h" |
25 #include "core/rendering/style/RenderStyle.h" | 25 #include "core/rendering/style/RenderStyle.h" |
26 #include "core/rendering/style/SVGRenderStyle.h" | 26 #include "core/rendering/style/SVGRenderStyle.h" |
27 #include "core/svg/SVGElementInstance.h" | 27 #include "core/svg/SVGElementInstance.h" |
28 #include "core/svg/SVGParserUtilities.h" | 28 #include "core/svg/SVGParserUtilities.h" |
29 #include "core/svg/graphics/filters/SVGFilterBuilder.h" | 29 #include "core/svg/graphics/filters/SVGFilterBuilder.h" |
30 | 30 |
31 namespace WebCore { | 31 namespace WebCore { |
32 | 32 |
33 // Animated property definitions | 33 // Animated property definitions |
34 DEFINE_ANIMATED_STRING(SVGFEDropShadowElement, SVGNames::inAttr, In1, in1) | |
35 | 34 |
36 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFEDropShadowElement) | 35 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFEDropShadowElement) |
37 REGISTER_LOCAL_ANIMATED_PROPERTY(in1) | |
38 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes) | 36 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes) |
39 END_REGISTER_ANIMATED_PROPERTIES | 37 END_REGISTER_ANIMATED_PROPERTIES |
40 | 38 |
41 inline SVGFEDropShadowElement::SVGFEDropShadowElement(Document& document) | 39 inline SVGFEDropShadowElement::SVGFEDropShadowElement(Document& document) |
42 : SVGFilterPrimitiveStandardAttributes(SVGNames::feDropShadowTag, document) | 40 : SVGFilterPrimitiveStandardAttributes(SVGNames::feDropShadowTag, document) |
43 , m_dx(SVGAnimatedNumber::create(this, SVGNames::dxAttr, SVGNumber::create(2
))) | 41 , m_dx(SVGAnimatedNumber::create(this, SVGNames::dxAttr, SVGNumber::create(2
))) |
44 , m_dy(SVGAnimatedNumber::create(this, SVGNames::dyAttr, SVGNumber::create(2
))) | 42 , m_dy(SVGAnimatedNumber::create(this, SVGNames::dyAttr, SVGNumber::create(2
))) |
45 , m_stdDeviation(SVGAnimatedNumberOptionalNumber::create(this, SVGNames::std
DeviationAttr, 2, 2)) | 43 , m_stdDeviation(SVGAnimatedNumberOptionalNumber::create(this, SVGNames::std
DeviationAttr, 2, 2)) |
| 44 , m_in1(SVGAnimatedString::create(this, SVGNames::inAttr, SVGString::create(
))) |
46 { | 45 { |
47 ScriptWrappable::init(this); | 46 ScriptWrappable::init(this); |
48 | 47 |
49 addToPropertyMap(m_dx); | 48 addToPropertyMap(m_dx); |
50 addToPropertyMap(m_dy); | 49 addToPropertyMap(m_dy); |
51 addToPropertyMap(m_stdDeviation); | 50 addToPropertyMap(m_stdDeviation); |
| 51 addToPropertyMap(m_in1); |
52 registerAnimatedPropertiesForSVGFEDropShadowElement(); | 52 registerAnimatedPropertiesForSVGFEDropShadowElement(); |
53 } | 53 } |
54 | 54 |
55 PassRefPtr<SVGFEDropShadowElement> SVGFEDropShadowElement::create(Document& docu
ment) | 55 PassRefPtr<SVGFEDropShadowElement> SVGFEDropShadowElement::create(Document& docu
ment) |
56 { | 56 { |
57 return adoptRef(new SVGFEDropShadowElement(document)); | 57 return adoptRef(new SVGFEDropShadowElement(document)); |
58 } | 58 } |
59 | 59 |
60 void SVGFEDropShadowElement::setStdDeviation(float x, float y) | 60 void SVGFEDropShadowElement::setStdDeviation(float x, float y) |
61 { | 61 { |
(...skipping 14 matching lines...) Expand all Loading... |
76 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); | 76 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); |
77 } | 77 } |
78 | 78 |
79 void SVGFEDropShadowElement::parseAttribute(const QualifiedName& name, const Ato
micString& value) | 79 void SVGFEDropShadowElement::parseAttribute(const QualifiedName& name, const Ato
micString& value) |
80 { | 80 { |
81 if (!isSupportedAttribute(name)) { | 81 if (!isSupportedAttribute(name)) { |
82 SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value); | 82 SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value); |
83 return; | 83 return; |
84 } | 84 } |
85 | 85 |
86 if (name == SVGNames::inAttr) { | |
87 setIn1BaseValue(value); | |
88 return; | |
89 } | |
90 | |
91 SVGParsingError parseError = NoError; | 86 SVGParsingError parseError = NoError; |
92 | 87 |
93 if (name == SVGNames::dxAttr) | 88 if (name == SVGNames::inAttr) |
| 89 m_in1->setBaseValueAsString(value, parseError); |
| 90 else if (name == SVGNames::dxAttr) |
94 m_dx->setBaseValueAsString(value, parseError); | 91 m_dx->setBaseValueAsString(value, parseError); |
95 else if (name == SVGNames::dyAttr) | 92 else if (name == SVGNames::dyAttr) |
96 m_dy->setBaseValueAsString(value, parseError); | 93 m_dy->setBaseValueAsString(value, parseError); |
97 else if (name == SVGNames::stdDeviationAttr) | 94 else if (name == SVGNames::stdDeviationAttr) |
98 m_stdDeviation->setBaseValueAsString(value, parseError); | 95 m_stdDeviation->setBaseValueAsString(value, parseError); |
99 else | 96 else |
100 ASSERT_NOT_REACHED(); | 97 ASSERT_NOT_REACHED(); |
101 | 98 |
102 reportAttributeParsingError(parseError, name, value); | 99 reportAttributeParsingError(parseError, name, value); |
103 } | 100 } |
(...skipping 26 matching lines...) Expand all Loading... |
130 | 127 |
131 if (stdDeviationX()->currentValue()->value() < 0 || stdDeviationY()->current
Value()->value() < 0) | 128 if (stdDeviationX()->currentValue()->value() < 0 || stdDeviationY()->current
Value()->value() < 0) |
132 return 0; | 129 return 0; |
133 | 130 |
134 ASSERT(renderer->style()); | 131 ASSERT(renderer->style()); |
135 const SVGRenderStyle* svgStyle = renderer->style()->svgStyle(); | 132 const SVGRenderStyle* svgStyle = renderer->style()->svgStyle(); |
136 | 133 |
137 Color color = svgStyle->floodColor(); | 134 Color color = svgStyle->floodColor(); |
138 float opacity = svgStyle->floodOpacity(); | 135 float opacity = svgStyle->floodOpacity(); |
139 | 136 |
140 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(in1CurrentV
alue())); | 137 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->curr
entValue()->value())); |
141 if (!input1) | 138 if (!input1) |
142 return 0; | 139 return 0; |
143 | 140 |
144 RefPtr<FilterEffect> effect = FEDropShadow::create(filter, stdDeviationX()->
currentValue()->value(), stdDeviationY()->currentValue()->value(), m_dx->current
Value()->value(), m_dy->currentValue()->value(), color, opacity); | 141 RefPtr<FilterEffect> effect = FEDropShadow::create(filter, stdDeviationX()->
currentValue()->value(), stdDeviationY()->currentValue()->value(), m_dx->current
Value()->value(), m_dy->currentValue()->value(), color, opacity); |
145 effect->inputEffects().append(input1); | 142 effect->inputEffects().append(input1); |
146 return effect.release(); | 143 return effect.release(); |
147 } | 144 } |
148 | 145 |
149 } | 146 } |
OLD | NEW |