#ifndef SVGFilterEffect_h
#define SVGFilterEffect_h
#if ENABLE(SVG) && ENABLE(SVG_EXPERIMENTAL_FEATURES)
#include "FloatRect.h"
#include "PlatformString.h"
#if PLATFORM(CI)
#ifdef __OBJC__
@class CIFilter;
#else
class CIFilter;
#endif
#endif
namespace WebCore {
enum SVGFilterEffectType {
FE_DISTANT_LIGHT = 0,
FE_POINT_LIGHT = 1,
FE_SPOT_LIGHT = 2,
FE_BLEND = 3,
FE_COLOR_MATRIX = 4,
FE_COMPONENT_TRANSFER = 5,
FE_COMPOSITE = 6,
FE_CONVOLVE_MATRIX = 7,
FE_DIFFUSE_LIGHTING = 8,
FE_DISPLACEMENT_MAP = 9,
FE_FLOOD = 10,
FE_GAUSSIAN_BLUR = 11,
FE_IMAGE = 12,
FE_MERGE = 13,
FE_MORPHOLOGY = 14,
FE_OFFSET = 15,
FE_SPECULAR_LIGHTING = 16,
FE_TILE = 17,
FE_TURBULENCE = 18
};
class SVGResourceFilter;
class TextStream;
class SVGFilterEffect {
public:
SVGFilterEffect() { }
virtual ~SVGFilterEffect() { }
virtual SVGFilterEffectType effectType() const { return FE_TURBULENCE; }
FloatRect subRegion() const;
void setSubRegion(const FloatRect&);
String in() const;
void setIn(const String&);
String result() const;
void setResult(const String&);
virtual TextStream& externalRepresentation(TextStream&) const;
#if PLATFORM(CI)
virtual CIFilter* getCIFilter(SVGResourceFilter*) const;
#endif
private:
FloatRect m_subRegion;
String m_in;
String m_result;
};
TextStream& operator<<(TextStream&, const SVGFilterEffect&);
}
#endif // ENABLE(SVG) && ENABLE(SVG_EXPERIMENTAL_FEATURES)
#endif // SVGFilterEffect_h