2 Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
3 2004, 2005 Rob Buis <buis@kde.org>
4 2005 Eric Seidel <eric@webkit.org>
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
16 You should have received a copy of the GNU Library General Public License
17 aint with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
22 #ifndef SVGFEComponentTransfer_h
23 #define SVGFEComponentTransfer_h
25 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
26 #include <wtf/Vector.h>
28 #include "SVGFilterEffect.h"
29 #include "SVGFEDisplacementMap.h"
43 enum SVGComponentTransferType
{
44 SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN
= 0,
45 SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY
= 1,
46 SVG_FECOMPONENTTRANSFER_TYPE_TABLE
= 2,
47 SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE
= 3,
48 SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
= 4,
49 SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
= 5
52 struct SVGComponentTransferFunction
{
53 SVGComponentTransferFunction()
54 : type(SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN
)
63 SVGComponentTransferType type
;
71 Vector
<float> tableValues
;
74 class SVGFEComponentTransfer
: public SVGFilterEffect
{
76 SVGFEComponentTransfer(SVGResourceFilter
*);
78 SVGComponentTransferFunction
redFunction() const;
79 void setRedFunction(const SVGComponentTransferFunction
&);
81 SVGComponentTransferFunction
greenFunction() const;
82 void setGreenFunction(const SVGComponentTransferFunction
&);
84 SVGComponentTransferFunction
blueFunction() const;
85 void setBlueFunction(const SVGComponentTransferFunction
&);
87 SVGComponentTransferFunction
alphaFunction() const;
88 void setAlphaFunction(const SVGComponentTransferFunction
&);
90 virtual TextStream
& externalRepresentation(TextStream
&) const;
93 virtual CIFilter
* getCIFilter(const FloatRect
& bbox
) const;
96 CIFilter
* getFunctionFilter(SVGChannelSelectorType
, CIImage
* inputImage
) const;
100 SVGComponentTransferFunction m_redFunc
;
101 SVGComponentTransferFunction m_greenFunc
;
102 SVGComponentTransferFunction m_blueFunc
;
103 SVGComponentTransferFunction m_alphaFunc
;
106 } // namespace WebCore
108 #endif // ENABLE(SVG) && ENABLE(SVG_FILTERS)
110 #endif // SVGFEComponentTransfer_h