KHTML
SVGFEBlendElement.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "config.h"
00024
00025 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
00026 #include "SVGFEBlendElement.h"
00027
00028 #include "SVGResourceFilter.h"
00029
00030 namespace WebCore {
00031
00032 SVGFEBlendElement::SVGFEBlendElement(const QualifiedName& tagName, Document* doc)
00033 : SVGFilterPrimitiveStandardAttributes(tagName, doc)
00034 , m_mode(SVG_FEBLEND_MODE_NORMAL)
00035 , m_filterEffect(0)
00036 {
00037 }
00038
00039 SVGFEBlendElement::~SVGFEBlendElement()
00040 {
00041 delete m_filterEffect;
00042 }
00043
00044 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
00045 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In2, in2, SVGNames::in2Attr, m_in2)
00046 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, int, Enumeration, enumeration, Mode, mode, SVGNames::modeAttr, m_mode)
00047
00048 void SVGFEBlendElement::parseMappedAttribute(MappedAttribute* attr)
00049 {
00050 const String& value = attr->value();
00051 if (attr->name() == SVGNames::modeAttr) {
00052 if (value == "normal")
00053 setModeBaseValue(SVG_FEBLEND_MODE_NORMAL);
00054 else if (value == "multiply")
00055 setModeBaseValue(SVG_FEBLEND_MODE_MULTIPLY);
00056 else if (value == "screen")
00057 setModeBaseValue(SVG_FEBLEND_MODE_SCREEN);
00058 else if (value == "darken")
00059 setModeBaseValue(SVG_FEBLEND_MODE_DARKEN);
00060 else if (value == "lighten")
00061 setModeBaseValue(SVG_FEBLEND_MODE_LIGHTEN);
00062 } else if (attr->name() == SVGNames::inAttr)
00063 setIn1BaseValue(value);
00064 else if (attr->name() == SVGNames::in2Attr)
00065 setIn2BaseValue(value);
00066 else
00067 SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
00068 }
00069
00070 SVGFEBlend* SVGFEBlendElement::filterEffect(SVGResourceFilter* filter) const
00071 {
00072 if (!m_filterEffect)
00073 m_filterEffect = new SVGFEBlend(filter);
00074
00075 m_filterEffect->setBlendMode((SVGBlendModeType) mode());
00076 m_filterEffect->setIn(in1());
00077 m_filterEffect->setIn2(in2());
00078 setStandardAttributes(m_filterEffect);
00079 return m_filterEffect;
00080 }
00081
00082 }
00083
00084 #endif // ENABLE(SVG)
00085
00086