c269daddc40f8d842ab665d59016fc956bf237d6
[WebKit-https.git] / WebCore / ksvg2 / svg / SVGFEFloodElement.cpp
1 /*
2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3                   2004, 2005 Rob Buis <buis@kde.org>
4
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include "config.h"
24 #ifdef SVG_SUPPORT
25 #include "SVGFEFloodElement.h"
26
27 #include "Attr.h"
28 #include "RenderView.h"
29 #include "SVGHelper.h"
30 #include "SVGNames.h"
31 #include "SVGRenderStyle.h"
32 #include "KRenderingDevice.h"
33
34 namespace WebCore {
35
36 SVGFEFloodElement::SVGFEFloodElement(const QualifiedName& tagName, Document *doc)
37     : SVGFilterPrimitiveStandardAttributes(tagName, doc)
38     , m_filterEffect(0)
39 {
40 }
41
42 SVGFEFloodElement::~SVGFEFloodElement()
43 {
44     delete m_filterEffect;
45 }
46
47 ANIMATED_PROPERTY_DEFINITIONS(SVGFEFloodElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
48
49 void SVGFEFloodElement::parseMappedAttribute(MappedAttribute *attr)
50 {
51     const String& value = attr->value();
52     if (attr->name() == SVGNames::inAttr)
53         setIn1BaseValue(value);
54     else
55         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
56 }
57
58 SVGFEFlood *SVGFEFloodElement::filterEffect() const
59 {
60     if (!m_filterEffect)
61         m_filterEffect = static_cast<SVGFEFlood *>(renderingDevice()->createFilterEffect(FE_FLOOD));
62     if (!m_filterEffect)
63         return 0;
64     m_filterEffect->setIn(in1());
65     setStandardAttributes(m_filterEffect);
66     RenderStyle *filterStyle = const_cast<SVGFEFloodElement *>(this)->styleForRenderer(parentNode()->renderer());
67     const SVGRenderStyle *svgStyle = filterStyle->svgStyle();
68     m_filterEffect->setFloodColor(svgStyle->floodColor());
69     m_filterEffect->setFloodOpacity(svgStyle->floodOpacity());
70     filterStyle->deref(view()->renderArena());
71
72     return m_filterEffect;
73 }
74
75 }
76
77 // vim:ts=4:noet
78 #endif // SVG_SUPPORT
79