KHTML
SVGFEComponentTransferElement.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 "SVGFEComponentTransferElement.h"
00027
00028 #include "Attr.h"
00029 #include "SVGNames.h"
00030 #include "SVGRenderStyle.h"
00031 #include "SVGFEFuncRElement.h"
00032 #include "SVGFEFuncGElement.h"
00033 #include "SVGFEFuncBElement.h"
00034 #include "SVGFEFuncAElement.h"
00035 #include "SVGResourceFilter.h"
00036
00037 namespace WebCore {
00038
00039 SVGFEComponentTransferElement::SVGFEComponentTransferElement(const QualifiedName& tagName, Document* doc)
00040 : SVGFilterPrimitiveStandardAttributes(tagName, doc)
00041 , m_filterEffect(0)
00042 {
00043 }
00044
00045 SVGFEComponentTransferElement::~SVGFEComponentTransferElement()
00046 {
00047 delete m_filterEffect;
00048 }
00049
00050 ANIMATED_PROPERTY_DEFINITIONS(SVGFEComponentTransferElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
00051
00052 void SVGFEComponentTransferElement::parseMappedAttribute(MappedAttribute* attr)
00053 {
00054 const String& value = attr->value();
00055 if (attr->name() == SVGNames::inAttr)
00056 setIn1BaseValue(value);
00057 else
00058 SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
00059 }
00060
00061 SVGFEComponentTransfer* SVGFEComponentTransferElement::filterEffect(SVGResourceFilter* filter) const
00062 {
00063 if (!m_filterEffect)
00064 m_filterEffect = new SVGFEComponentTransfer(filter);
00065
00066 m_filterEffect->setIn(in1());
00067 setStandardAttributes(m_filterEffect);
00068
00069 for (Node* n = firstChild(); n != 0; n = n->nextSibling()) {
00070 if (n->hasTagName(SVGNames::feFuncRTag))
00071 m_filterEffect->setRedFunction(static_cast<SVGFEFuncRElement*>(n)->transferFunction());
00072 else if (n->hasTagName(SVGNames::feFuncGTag))
00073 m_filterEffect->setGreenFunction(static_cast<SVGFEFuncGElement*>(n)->transferFunction());
00074 else if (n->hasTagName(SVGNames::feFuncBTag))
00075 m_filterEffect->setBlueFunction(static_cast<SVGFEFuncBElement*>(n)->transferFunction());
00076 else if (n->hasTagName(SVGNames::feFuncATag))
00077 m_filterEffect->setAlphaFunction(static_cast<SVGFEFuncAElement*>(n)->transferFunction());
00078 }
00079
00080 return m_filterEffect;
00081 }
00082
00083 }
00084
00085 #endif // ENABLE(SVG)
00086
00087