File indexing completed on 2024-04-28 15:24:31

0001 /*
0002     Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org>
0003                   2004, 2005 Rob Buis <buis@kde.org>
0004 
0005     This file is part of the KDE project
0006 
0007     This library is free software; you can redistribute it and/or
0008     modify it under the terms of the GNU Library General Public
0009     License as published by the Free Software Foundation; either
0010     version 2 of the License, or (at your option) any later version.
0011 
0012     This library is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0015     Library General Public License for more details.
0016 
0017     You should have received a copy of the GNU Library General Public License
0018     along with this library; see the file COPYING.LIB.  If not, write to
0019     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0020     Boston, MA 02110-1301, USA.
0021 */
0022 
0023 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
0024 #include "SVGFEOffsetElement.h"
0025 
0026 #include "Attr.h"
0027 #include "SVGResourceFilter.h"
0028 
0029 namespace WebCore
0030 {
0031 
0032 SVGFEOffsetElement::SVGFEOffsetElement(const QualifiedName &tagName, Document *doc)
0033     : SVGFilterPrimitiveStandardAttributes(tagName, doc)
0034     , m_dx(0.0f)
0035     , m_dy(0.0f)
0036     , m_filterEffect(0)
0037 {
0038 }
0039 
0040 SVGFEOffsetElement::~SVGFEOffsetElement()
0041 {
0042     delete m_filterEffect;
0043 }
0044 
0045 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
0046 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, float, Number, number, Dx, dx, SVGNames::dxAttr, m_dx)
0047 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, float, Number, number, Dy, dy, SVGNames::dyAttr, m_dy)
0048 
0049 void SVGFEOffsetElement::parseMappedAttribute(MappedAttribute *attr)
0050 {
0051     const String &value = attr->value();
0052     if (attr->name() == SVGNames::dxAttr) {
0053         setDxBaseValue(value.toFloat());
0054     } else if (attr->name() == SVGNames::dyAttr) {
0055         setDyBaseValue(value.toFloat());
0056     } else if (attr->name() == SVGNames::inAttr) {
0057         setIn1BaseValue(value);
0058     } else {
0059         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
0060     }
0061 }
0062 
0063 SVGFEOffset *SVGFEOffsetElement::filterEffect(SVGResourceFilter *filter) const
0064 {
0065     if (!m_filterEffect) {
0066         m_filterEffect = new SVGFEOffset(filter);
0067     }
0068 
0069     m_filterEffect->setIn(in1());
0070     m_filterEffect->setDx(dx());
0071     m_filterEffect->setDy(dy());
0072 
0073     setStandardAttributes(m_filterEffect);
0074     return m_filterEffect;
0075 }
0076 
0077 }
0078 
0079 #endif // ENABLE(SVG)
0080