15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org>
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org>
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef SVGFEBlendElement_h
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SVGFEBlendElement_h
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGAnimatedEnumeration.h"
2553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGFilterPrimitiveStandardAttributes.h"
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)class SVGFEBlendElement FINAL : public SVGFilterPrimitiveStandardAttributes {
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    enum Mode {
33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        ModeUnknown = 0,
34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        ModeNormal = 1,
35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        ModeMultiply = 2,
36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        ModeScreen = 3,
37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        ModeDarken = 4,
38e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeLighten = 5,
39e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
40e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        // The following modes do not map to IDL constants on
41e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        // SVGFEBlendElement.
42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeOverlay,
43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeColorDodge,
44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeColorBurn,
45e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeHardLight,
46e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeSoftLight,
47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeDifference,
48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeExclusion,
49e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeHue,
50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeSaturation,
51e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeColor,
52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        ModeLuminosity,
53c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    };
54c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
555d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    DECLARE_NODE_FACTORY(SVGFEBlendElement);
5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    SVGAnimatedString* in1() { return m_in1.get(); }
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    SVGAnimatedString* in2() { return m_in2.get(); }
58c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    SVGAnimatedEnumeration<Mode>* mode() { return m_mode.get(); }
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
6151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    explicit SVGFEBlendElement(Document&);
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isSupportedAttribute(const QualifiedName&);
64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName& attrName) OVERRIDE;
6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void svgAttributeChanged(const QualifiedName&) OVERRIDE;
6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*, Filter*) OVERRIDE;
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    RefPtr<SVGAnimatedString> m_in1;
7009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    RefPtr<SVGAnimatedString> m_in2;
71c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    RefPtr<SVGAnimatedEnumeration<Mode> > m_mode;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)template<> const SVGEnumerationStringEntries& getStaticStringEntries<SVGFEBlendElement::Mode>();
75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)template<> unsigned short getMaxExposedEnumValue<SVGFEBlendElement::Mode>();
76c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
77c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // SVGFEBlendElement_h
80