Reviewed by Eric. Rubber stamped by Oliver.
[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
25 #ifdef SVG_SUPPORT
26 #include "SVGFEFloodElement.h"
27
28 #include "Attr.h"
29 #include "RenderView.h"
30 #include "SVGHelper.h"
31 #include "SVGNames.h"
32 #include "SVGRenderStyle.h"
33 #include "SVGResourceFilter.h"
34
35 namespace WebCore {
36
37 SVGFEFloodElement::SVGFEFloodElement(const QualifiedName& tagName, Document* doc)
38     : SVGFilterPrimitiveStandardAttributes(tagName, doc)
39     , m_filterEffect(0)
40 {
41 }
42
43 SVGFEFloodElement::~SVGFEFloodElement()
44 {
45     delete m_filterEffect;
46 }
47
48 ANIMATED_PROPERTY_DEFINITIONS(SVGFEFloodElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
49
50 void SVGFEFloodElement::parseMappedAttribute(MappedAttribute* attr)
51 {
52     const String& value = attr->value();
53     if (attr->name() == SVGNames::inAttr)
54         setIn1BaseValue(value);
55     else
56         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
57 }
58
59 SVGFEFlood* SVGFEFloodElement::filterEffect() const
60 {
61     if (!m_filterEffect)
62         m_filterEffect = static_cast<SVGFEFlood*>(SVGResourceFilter::createFilterEffect(FE_FLOOD));
63     if (!m_filterEffect)
64         return 0;
65     m_filterEffect->setIn(in1());
66     setStandardAttributes(m_filterEffect);
67     RenderStyle* filterStyle = const_cast<SVGFEFloodElement *>(this)->styleForRenderer(parentNode()->renderer());
68     const SVGRenderStyle* svgStyle = filterStyle->svgStyle();
69     m_filterEffect->setFloodColor(svgStyle->floodColor());
70     m_filterEffect->setFloodOpacity(svgStyle->floodOpacity());
71     filterStyle->deref(view()->renderArena());
72
73     return m_filterEffect;
74 }
75
76 }
77
78 #endif // SVG_SUPPORT
79
80 // vim:ts=4:noet