+2008-06-19 Alex Mathews <possessedpenguinbob@gmail.com>
+
+ Reviewed by Oliver.
+
+ Starting to clean up the SVG Filter code. Mostly adding 'create' wrapper
+ functions and changing raw pointer fields to RefPtrs.
+
+ * Configurations/WebCore.xcconfig:
+ * WebCore.xcodeproj/project.pbxproj:
+ * svg/SVGFEBlendElement.cpp:
+ (WebCore::SVGFEBlendElement::~SVGFEBlendElement):
+ (WebCore::SVGFEBlendElement::filterEffect):
+ * svg/SVGFEBlendElement.h:
+ * svg/SVGFEColorMatrixElement.cpp:
+ (WebCore::SVGFEColorMatrixElement::~SVGFEColorMatrixElement):
+ (WebCore::SVGFEColorMatrixElement::filterEffect):
+ * svg/SVGFEColorMatrixElement.h:
+ * svg/SVGFEComponentTransferElement.cpp:
+ (WebCore::SVGFEComponentTransferElement::~SVGFEComponentTransferElement):
+ (WebCore::SVGFEComponentTransferElement::filterEffect):
+ * svg/SVGFEComponentTransferElement.h:
+ * svg/SVGFECompositeElement.cpp:
+ (WebCore::SVGFECompositeElement::~SVGFECompositeElement):
+ (WebCore::SVGFECompositeElement::filterEffect):
+ * svg/SVGFECompositeElement.h:
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ (WebCore::SVGFEDiffuseLightingElement::~SVGFEDiffuseLightingElement):
+ (WebCore::SVGFEDiffuseLightingElement::filterEffect):
+ * svg/SVGFEDiffuseLightingElement.h:
+ * svg/SVGFEDisplacementMapElement.cpp:
+ (WebCore::SVGFEDisplacementMapElement::~SVGFEDisplacementMapElement):
+ (WebCore::SVGFEDisplacementMapElement::filterEffect):
+ * svg/SVGFEDisplacementMapElement.h:
+ * svg/SVGFEFloodElement.cpp:
+ (WebCore::SVGFEFloodElement::~SVGFEFloodElement):
+ (WebCore::SVGFEFloodElement::filterEffect):
+ * svg/SVGFEFloodElement.h:
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::~SVGFEGaussianBlurElement):
+ (WebCore::SVGFEGaussianBlurElement::filterEffect):
+ * svg/SVGFEGaussianBlurElement.h:
+ * svg/SVGFEImageElement.cpp:
+ (WebCore::SVGFEImageElement::~SVGFEImageElement):
+ (WebCore::SVGFEImageElement::filterEffect):
+ * svg/SVGFEImageElement.h:
+ * svg/SVGFEMergeElement.cpp:
+ (WebCore::SVGFEMergeElement::~SVGFEMergeElement):
+ (WebCore::SVGFEMergeElement::filterEffect):
+ * svg/SVGFEMergeElement.h:
+ * svg/SVGFEOffsetElement.cpp:
+ (WebCore::SVGFEOffsetElement::~SVGFEOffsetElement):
+ (WebCore::SVGFEOffsetElement::filterEffect):
+ * svg/SVGFEOffsetElement.h:
+ * svg/SVGFESpecularLightingElement.cpp:
+ (WebCore::SVGFESpecularLightingElement::~SVGFESpecularLightingElement):
+ (WebCore::SVGFESpecularLightingElement::filterEffect):
+ * svg/SVGFESpecularLightingElement.h:
+ * svg/SVGFETileElement.cpp:
+ (WebCore::SVGFETileElement::~SVGFETileElement):
+ (WebCore::SVGFETileElement::filterEffect):
+ * svg/SVGFETileElement.h:
+ * svg/SVGFETurbulenceElement.cpp:
+ (WebCore::SVGFETurbulenceElement::~SVGFETurbulenceElement):
+ (WebCore::SVGFETurbulenceElement::filterEffect):
+ * svg/SVGFETurbulenceElement.h:
+ * svg/graphics/SVGResourceFilter.cpp:
+ (WebCore::SVGResourceFilter::addFilterEffect):
+ * svg/graphics/SVGResourceFilter.h:
+ * svg/graphics/filters/SVGFEBlend.cpp:
+ (WebCore::SVGFEBlend::create):
+ * svg/graphics/filters/SVGFEBlend.h:
+ * svg/graphics/filters/SVGFEColorMatrix.cpp:
+ (WebCore::SVGFEColorMatrix::create):
+ * svg/graphics/filters/SVGFEColorMatrix.h:
+ * svg/graphics/filters/SVGFEComponentTransfer.cpp:
+ (WebCore::SVGFEComponentTransfer::create):
+ * svg/graphics/filters/SVGFEComponentTransfer.h:
+ * svg/graphics/filters/SVGFEComposite.cpp:
+ (WebCore::SVGFEComposite::create):
+ * svg/graphics/filters/SVGFEComposite.h:
+ * svg/graphics/filters/SVGFEConvolveMatrix.cpp:
+ (WebCore::SVGFEConvolveMatrix::create):
+ * svg/graphics/filters/SVGFEConvolveMatrix.h:
+ * svg/graphics/filters/SVGFEDiffuseLighting.cpp:
+ (WebCore::SVGFEDiffuseLighting::create):
+ (WebCore::SVGFEDiffuseLighting::~SVGFEDiffuseLighting):
+ (WebCore::SVGFEDiffuseLighting::lightSource):
+ (WebCore::SVGFEDiffuseLighting::setLightSource):
+ * svg/graphics/filters/SVGFEDiffuseLighting.h:
+ * svg/graphics/filters/SVGFEDisplacementMap.cpp:
+ (WebCore::SVGFEDisplacementMap::create):
+ * svg/graphics/filters/SVGFEDisplacementMap.h:
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ (WebCore::SVGFEFlood::create):
+ * svg/graphics/filters/SVGFEFlood.h:
+ * svg/graphics/filters/SVGFEGaussianBlur.cpp:
+ (WebCore::SVGFEGaussianBlur::create):
+ * svg/graphics/filters/SVGFEGaussianBlur.h:
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::SVGFEImage::create):
+ * svg/graphics/filters/SVGFEImage.h:
+ * svg/graphics/filters/SVGFEMerge.cpp:
+ (WebCore::SVGFEMerge::SVGFEMerge):
+ (WebCore::SVGFEMerge::create):
+ * svg/graphics/filters/SVGFEMerge.h:
+ * svg/graphics/filters/SVGFEOffset.cpp:
+ (WebCore::SVGFEOffset::create):
+ * svg/graphics/filters/SVGFEOffset.h:
+ * svg/graphics/filters/SVGFESpecularLighting.cpp:
+ (WebCore::SVGFESpecularLighting::create):
+ (WebCore::SVGFESpecularLighting::~SVGFESpecularLighting):
+ (WebCore::SVGFESpecularLighting::lightSource):
+ (WebCore::SVGFESpecularLighting::setLightSource):
+ * svg/graphics/filters/SVGFESpecularLighting.h:
+ * svg/graphics/filters/SVGFETile.cpp: Added.
+ (WebCore::SVGFETile::SVGFETile):
+ (WebCore::SVGFETile::create):
+ * svg/graphics/filters/SVGFETile.h:
+ * svg/graphics/filters/SVGFETurbulence.cpp:
+ (WebCore::SVGFETurbulence::create):
+ * svg/graphics/filters/SVGFETurbulence.h:
+ * svg/graphics/filters/SVGFilterEffect.h:
+ * svg/graphics/filters/SVGLightSource.h:
+
2008-06-18 Adele Peterson <adele@apple.com>
Reviewed by Dan Bernstein.
A7CFB3D10B7ED10A0070C32D /* DragImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */; };
A7CFB3D20B7ED10A0070C32D /* DragImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CFB3D00B7ED10A0070C32D /* DragImage.h */; settings = {ATTRIBUTES = (Private, ); }; };
A7CFB3D50B7ED1180070C32D /* DragImageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A7CFB3D40B7ED1180070C32D /* DragImageMac.mm */; };
+ A7D27FC40E0A599F0079AD2B /* SVGFETile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D27FC30E0A599F0079AD2B /* SVGFETile.cpp */; };
A7D3C5240B576B4B002CA450 /* PasteboardHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D3C5230B576B4B002CA450 /* PasteboardHelper.h */; settings = {ATTRIBUTES = (Private, ); }; };
A809F1470B73793A002E4D7F /* RenderSVGGradientStop.h in Headers */ = {isa = PBXBuildFile; fileRef = A809F1450B73793A002E4D7F /* RenderSVGGradientStop.h */; };
A809F1480B73793B002E4D7F /* RenderSVGGradientStop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A809F1460B73793A002E4D7F /* RenderSVGGradientStop.cpp */; };
A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DragImage.cpp; sourceTree = "<group>"; };
A7CFB3D00B7ED10A0070C32D /* DragImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DragImage.h; sourceTree = "<group>"; };
A7CFB3D40B7ED1180070C32D /* DragImageMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DragImageMac.mm; sourceTree = "<group>"; };
+ A7D27FC30E0A599F0079AD2B /* SVGFETile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFETile.cpp; sourceTree = "<group>"; };
A7D3C5230B576B4B002CA450 /* PasteboardHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasteboardHelper.h; sourceTree = "<group>"; };
A809F1450B73793A002E4D7F /* RenderSVGGradientStop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGGradientStop.h; sourceTree = "<group>"; };
A809F1460B73793A002E4D7F /* RenderSVGGradientStop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGGradientStop.cpp; sourceTree = "<group>"; };
B255989C0D00D8B800BB825C /* filters */ = {
isa = PBXGroup;
children = (
+ A7D27FC30E0A599F0079AD2B /* SVGFETile.cpp */,
B255989D0D00D8B800BB825C /* cg */,
B25598D70D00D8B900BB825C /* SVGDistantLightSource.h */,
B25598D80D00D8B900BB825C /* SVGFEBlend.cpp */,
E1A302C10DE8376900C52F2C /* StringBuilder.cpp in Sources */,
1A2C40AB0DEB55AA005AF19E /* JSTextCustom.cpp in Sources */,
AB40484D0E083FA8007D6920 /* MediaDocument.cpp in Sources */,
+ A7D27FC40E0A599F0079AD2B /* SVGFETile.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
SVGFEBlendElement::~SVGFEBlendElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEBlend* SVGFEBlendElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEBlend(filter);
+ m_filterEffect = SVGFEBlend::create(filter);
m_filterEffect->setBlendMode((SVGBlendModeType) mode());
m_filterEffect->setIn(in1());
m_filterEffect->setIn2(in2());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, String, String, In2, in2)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, int, int, Mode, mode)
- mutable SVGFEBlend* m_filterEffect;
+ mutable RefPtr<SVGFEBlend> m_filterEffect;
};
} // namespace WebCore
SVGFEColorMatrixElement::~SVGFEColorMatrixElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEColorMatrix* SVGFEColorMatrixElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEColorMatrix(filter);
+ m_filterEffect = SVGFEColorMatrix::create(filter);
m_filterEffect->setIn(in1());
- setStandardAttributes(m_filterEffect);
+ setStandardAttributes(m_filterEffect.get());
Vector<float> _values;
SVGNumberList* numbers = values();
m_filterEffect->setValues(_values);
m_filterEffect->setType((SVGColorMatrixType) type());
- return m_filterEffect;
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, int, int, Type, type)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, SVGNumberList*, RefPtr<SVGNumberList>, Values, values)
- mutable SVGFEColorMatrix* m_filterEffect;
+ mutable RefPtr<SVGFEColorMatrix> m_filterEffect;
};
} // namespace WebCore
SVGFEComponentTransferElement::~SVGFEComponentTransferElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEComponentTransferElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEComponentTransfer* SVGFEComponentTransferElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEComponentTransfer(filter);
+ m_filterEffect = SVGFEComponentTransfer::create(filter);
m_filterEffect->setIn(in1());
- setStandardAttributes(m_filterEffect);
+ setStandardAttributes(m_filterEffect.get());
for (Node* n = firstChild(); n != 0; n = n->nextSibling()) {
if (n->hasTagName(SVGNames::feFuncRTag))
m_filterEffect->setAlphaFunction(static_cast<SVGFEFuncAElement*>(n)->transferFunction());
}
- return m_filterEffect;
+ return m_filterEffect.get();
}
}
private:
ANIMATED_PROPERTY_DECLARATIONS(SVGFEComponentTransferElement, String, String, In1, in1)
- mutable SVGFEComponentTransfer *m_filterEffect;
+ mutable RefPtr<SVGFEComponentTransfer> m_filterEffect;
};
} // namespace WebCore
SVGFECompositeElement::~SVGFECompositeElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEComposite* SVGFECompositeElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEComposite(filter);
+ m_filterEffect = SVGFEComposite::create(filter);
m_filterEffect->setOperation((SVGCompositeOperationType) _operator());
m_filterEffect->setIn(in1());
m_filterEffect->setK3(k3());
m_filterEffect->setK4(k4());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, float, float, K3, k3)
ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, float, float, K4, k4)
- mutable SVGFEComposite* m_filterEffect;
+ mutable RefPtr<SVGFEComposite> m_filterEffect;
};
} // namespace WebCore
SVGFEDiffuseLightingElement::~SVGFEDiffuseLightingElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFilterEffect* SVGFEDiffuseLightingElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEDiffuseLighting(filter);
+ m_filterEffect = SVGFEDiffuseLighting::create(filter);
m_filterEffect->setIn(in1());
m_filterEffect->setDiffuseConstant(diffuseConstant());
RenderStyle* filterStyle = nonConstThis->resolveStyle(parentStyle);
m_filterEffect->setLightingColor(filterStyle->svgStyle()->lightingColor());
- setStandardAttributes(m_filterEffect);
+ setStandardAttributes(m_filterEffect.get());
parentStyle->deref(document()->renderArena());
filterStyle->deref(document()->renderArena());
updateLights();
- return m_filterEffect;
+ return m_filterEffect.get();
}
void SVGFEDiffuseLightingElement::updateLights() const
ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, float, float, KernelUnitLengthX, kernelUnitLengthX)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, float, float, KernelUnitLengthY, kernelUnitLengthY)
- mutable SVGFEDiffuseLighting* m_filterEffect;
+ mutable RefPtr<SVGFEDiffuseLighting> m_filterEffect;
void updateLights() const;
};
SVGFEDisplacementMapElement::~SVGFEDisplacementMapElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEDisplacementMap* SVGFEDisplacementMapElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEDisplacementMap(filter);
+ m_filterEffect = SVGFEDisplacementMap::create(filter);
m_filterEffect->setXChannelSelector((SVGChannelSelectorType) xChannelSelector());
m_filterEffect->setYChannelSelector((SVGChannelSelectorType) yChannelSelector());
m_filterEffect->setIn2(in2());
m_filterEffect->setScale(scale());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, int, int, YChannelSelector, yChannelSelector)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, float, float, Scale, scale)
- mutable SVGFEDisplacementMap* m_filterEffect;
+ mutable RefPtr<SVGFEDisplacementMap> m_filterEffect;
};
} // namespace WebCore
SVGFEFloodElement::~SVGFEFloodElement()
{
- delete m_filterEffect;
}
void SVGFEFloodElement::parseMappedAttribute(MappedAttribute* attr)
SVGFEFlood* SVGFEFloodElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEFlood(filter);
+ m_filterEffect = SVGFEFlood::create(filter);
- setStandardAttributes(m_filterEffect);
+ setStandardAttributes(m_filterEffect.get());
SVGFEFloodElement* nonConstThis = const_cast<SVGFEFloodElement*>(this);
parentStyle->deref(document()->renderArena());
filterStyle->deref(document()->renderArena());
- return m_filterEffect;
+ return m_filterEffect.get();
}
}
virtual const SVGElement* contextElement() const { return this; }
private:
- mutable SVGFEFlood *m_filterEffect;
+ mutable RefPtr<SVGFEFlood> m_filterEffect;
};
} // namespace WebCore
SVGFEGaussianBlurElement::~SVGFEGaussianBlurElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEGaussianBlur* SVGFEGaussianBlurElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEGaussianBlur(filter);
+ m_filterEffect = SVGFEGaussianBlur::create(filter);
m_filterEffect->setIn(in1());
m_filterEffect->setStdDeviationX(stdDeviationX());
m_filterEffect->setStdDeviationY(stdDeviationY());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, float, float, StdDeviationX, stdDeviationX)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, float, float, StdDeviationY, stdDeviationY)
- mutable SVGFEGaussianBlur* m_filterEffect;
+ mutable RefPtr<SVGFEGaussianBlur> m_filterEffect;
};
} // namespace WebCore
SVGFEImageElement::~SVGFEImageElement()
{
- delete m_filterEffect;
if (m_cachedImage)
m_cachedImage->removeClient(this);
}
SVGFEImage* SVGFEImageElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEImage(filter);
+ m_filterEffect = SVGFEImage::create(filter);
// The resource may already be loaded!
if (m_cachedImage)
m_filterEffect->setCachedImage(m_cachedImage);
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
void SVGFEImageElement::getSubresourceAttributeStrings(Vector<String>& urls) const
ANIMATED_PROPERTY_DECLARATIONS(SVGFEImageElement, SVGPreserveAspectRatio*, RefPtr<SVGPreserveAspectRatio>, PreserveAspectRatio, preserveAspectRatio)
CachedImage* m_cachedImage;
- mutable SVGFEImage* m_filterEffect;
+ mutable RefPtr<SVGFEImage> m_filterEffect;
};
} // namespace WebCore
SVGFEMergeElement::~SVGFEMergeElement()
{
- delete m_filterEffect;
}
SVGFEMerge* SVGFEMergeElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEMerge(filter);
- setStandardAttributes(m_filterEffect);
+ m_filterEffect = SVGFEMerge::create(filter);
+
+ setStandardAttributes(m_filterEffect.get());
Vector<String> mergeInputs;
for (Node* n = firstChild(); n != 0; n = n->nextSibling()) {
}
m_filterEffect->setMergeInputs(mergeInputs);
- return m_filterEffect;
+ return m_filterEffect.get();
}
}
virtual const SVGElement* contextElement() const { return this; }
private:
- mutable SVGFEMerge* m_filterEffect;
+ mutable RefPtr<SVGFEMerge> m_filterEffect;
};
} // namespace WebCore
SVGFEOffsetElement::~SVGFEOffsetElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFEOffset* SVGFEOffsetElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFEOffset(filter);
+ m_filterEffect = SVGFEOffset::create(filter);
m_filterEffect->setIn(in1());
m_filterEffect->setDx(dx());
m_filterEffect->setDy(dy());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, float, float, Dx, dx)
ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, float, float, Dy, dy)
- mutable SVGFEOffset* m_filterEffect;
+ mutable RefPtr<SVGFEOffset> m_filterEffect;
};
} // namespace WebCore
SVGFESpecularLightingElement::~SVGFESpecularLightingElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFESpecularLighting* SVGFESpecularLightingElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFESpecularLighting(filter);
+ m_filterEffect = SVGFESpecularLighting::create(filter);
m_filterEffect->setIn(in1());
m_filterEffect->setSpecularConstant((specularConstant()));
parentStyle->deref(document()->renderArena());
filterStyle->deref(document()->renderArena());
- setStandardAttributes(m_filterEffect);
+ setStandardAttributes(m_filterEffect.get());
updateLights();
- return m_filterEffect;
+ return m_filterEffect.get();
}
void SVGFESpecularLightingElement::updateLights() const
ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, float, float, KernelUnitLengthX, kernelUnitLengthX)
ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, float, float, KernelUnitLengthY, kernelUnitLengthY)
- mutable SVGFESpecularLighting* m_filterEffect;
+ mutable RefPtr<SVGFESpecularLighting> m_filterEffect;
void updateLights() const;
};
SVGFETileElement::~SVGFETileElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS(SVGFETileElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
SVGFETile* SVGFETileElement::filterEffect(SVGResourceFilter* filter) const
{
if (!m_filterEffect)
- m_filterEffect = new SVGFETile(filter);
+ m_filterEffect = SVGFETile::create(filter);
m_filterEffect->setIn(in1());
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
namespace WebCore
{
-
class SVGFETileElement : public SVGFilterPrimitiveStandardAttributes
{
public:
private:
ANIMATED_PROPERTY_DECLARATIONS(SVGFETileElement, String, String, In1, in1)
- mutable SVGFETile* m_filterEffect;
+ mutable RefPtr<SVGFETile> m_filterEffect;
};
} // namespace WebCore
SVGFETurbulenceElement::~SVGFETurbulenceElement()
{
- delete m_filterEffect;
}
ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(SVGFETurbulenceElement, float, Number, number, BaseFrequencyX, baseFrequencyX, SVGNames::baseFrequencyAttr, "baseFrequencyX", m_baseFrequencyX)
{
if (!m_filterEffect)
- m_filterEffect = new SVGFETurbulence(filter);
+ m_filterEffect = SVGFETurbulence::create(filter);
m_filterEffect->setType((SVGTurbulanceType) type());
m_filterEffect->setBaseFrequencyX(baseFrequencyX());
m_filterEffect->setSeed(seed());
m_filterEffect->setStitchTiles(stitchTiles() == SVG_STITCHTYPE_STITCH);
- setStandardAttributes(m_filterEffect);
- return m_filterEffect;
+ setStandardAttributes(m_filterEffect.get());
+ return m_filterEffect.get();
}
}
ANIMATED_PROPERTY_DECLARATIONS(SVGFETurbulenceElement, int, int, StitchTiles, stitchTiles)
ANIMATED_PROPERTY_DECLARATIONS(SVGFETurbulenceElement, int, int, Type, type)
- mutable SVGFETurbulence* m_filterEffect;
+ mutable RefPtr<SVGFETurbulence> m_filterEffect;
};
} // namespace WebCore
{
}
+PassRefPtr<SVGFEBlend> SVGFEBlend::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEBlend(filter));
+}
+
String SVGFEBlend::in2() const
{
return m_in2;
class SVGFEBlend : public SVGFilterEffect {
public:
- SVGFEBlend(SVGResourceFilter*);
-
+ static PassRefPtr<SVGFEBlend> create(SVGResourceFilter*);
+
String in2() const;
void setIn2(const String&);
#endif
private:
+ SVGFEBlend(SVGResourceFilter*);
+
SVGBlendModeType m_mode;
String m_in2;
};
{
}
+PassRefPtr<SVGFEColorMatrix> SVGFEColorMatrix::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEColorMatrix(filter));
+}
+
SVGColorMatrixType SVGFEColorMatrix::type() const
{
return m_type;
class SVGFEColorMatrix : public SVGFilterEffect {
public:
- SVGFEColorMatrix(SVGResourceFilter*);
+ static PassRefPtr<SVGFEColorMatrix> create(SVGResourceFilter*);
SVGColorMatrixType type() const;
void setType(SVGColorMatrixType);
#endif
private:
+ SVGFEColorMatrix(SVGResourceFilter*);
+
SVGColorMatrixType m_type;
Vector<float> m_values;
};
{
}
+PassRefPtr<SVGFEComponentTransfer> SVGFEComponentTransfer::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEComponentTransfer(filter));
+}
+
SVGComponentTransferFunction SVGFEComponentTransfer::redFunction() const
{
return m_redFunc;
class SVGFEComponentTransfer : public SVGFilterEffect {
public:
- SVGFEComponentTransfer(SVGResourceFilter*);
+ static PassRefPtr<SVGFEComponentTransfer> create(SVGResourceFilter*);
SVGComponentTransferFunction redFunction() const;
void setRedFunction(const SVGComponentTransferFunction&);
#endif
private:
+ SVGFEComponentTransfer(SVGResourceFilter*);
+
SVGComponentTransferFunction m_redFunc;
SVGComponentTransferFunction m_greenFunc;
SVGComponentTransferFunction m_blueFunc;
{
}
+PassRefPtr<SVGFEComposite> SVGFEComposite::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEComposite(filter));
+}
+
String SVGFEComposite::in2() const
{
return m_in2;
class SVGFEComposite : public SVGFilterEffect {
public:
- SVGFEComposite(SVGResourceFilter*);
+ static PassRefPtr<SVGFEComposite> create(SVGResourceFilter*);
String in2() const;
void setIn2(const String&);
#endif
private:
+ SVGFEComposite(SVGResourceFilter*);
+
SVGCompositeOperationType m_operation;
float m_k1;
float m_k2;
{
}
+PassRefPtr<SVGFEConvolveMatrix> SVGFEConvolveMatrix::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEConvolveMatrix(filter));
+}
+
FloatSize SVGFEConvolveMatrix::kernelSize() const
{
return m_kernelSize;
class SVGFEConvolveMatrix : public SVGFilterEffect {
public:
- SVGFEConvolveMatrix(SVGResourceFilter*);
+ static PassRefPtr<SVGFEConvolveMatrix> create(SVGResourceFilter*);
FloatSize kernelSize() const;
void setKernelSize(FloatSize);
virtual TextStream& externalRepresentation(TextStream&) const;
private:
+ SVGFEConvolveMatrix(SVGResourceFilter*);
+
FloatSize m_kernelSize;
float m_divisor;
float m_bias;
{
}
+PassRefPtr<SVGFEDiffuseLighting> SVGFEDiffuseLighting::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEDiffuseLighting(filter));
+}
+
SVGFEDiffuseLighting::~SVGFEDiffuseLighting()
{
- delete m_lightSource;
}
Color SVGFEDiffuseLighting::lightingColor() const
const SVGLightSource* SVGFEDiffuseLighting::lightSource() const
{
- return m_lightSource;
+ return m_lightSource.get();
}
void SVGFEDiffuseLighting::setLightSource(SVGLightSource* lightSource)
{
- if (m_lightSource != lightSource) {
- delete m_lightSource;
- m_lightSource = lightSource;
- }
+ m_lightSource = lightSource;
}
TextStream& SVGFEDiffuseLighting::externalRepresentation(TextStream& ts) const
class SVGFEDiffuseLighting : public SVGFilterEffect {
public:
- SVGFEDiffuseLighting(SVGResourceFilter*);
+ static PassRefPtr<SVGFEDiffuseLighting> create(SVGResourceFilter*);
virtual ~SVGFEDiffuseLighting();
Color lightingColor() const;
#endif
private:
+ SVGFEDiffuseLighting(SVGResourceFilter*);
+
Color m_lightingColor;
float m_surfaceScale;
float m_diffuseConstant;
float m_kernelUnitLengthX;
float m_kernelUnitLengthY;
- SVGLightSource* m_lightSource;
+ RefPtr<SVGLightSource> m_lightSource;
};
} // namespace WebCore
{
}
+PassRefPtr<SVGFEDisplacementMap> SVGFEDisplacementMap::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEDisplacementMap(filter));
+}
+
String SVGFEDisplacementMap::in2() const
{
return m_in2;
class SVGFEDisplacementMap : public SVGFilterEffect {
public:
- SVGFEDisplacementMap(SVGResourceFilter*);
+ static PassRefPtr<SVGFEDisplacementMap> create(SVGResourceFilter*);
String in2() const;
void setIn2(const String&);
#endif
private:
+ SVGFEDisplacementMap(SVGResourceFilter*);
+
SVGChannelSelectorType m_xChannelSelector;
SVGChannelSelectorType m_yChannelSelector;
float m_scale;
{
}
+PassRefPtr<SVGFEFlood> SVGFEFlood::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEFlood(filter));
+}
+
Color SVGFEFlood::floodColor() const
{
return m_floodColor;
class SVGFEFlood : public SVGFilterEffect {
public:
- SVGFEFlood(SVGResourceFilter*);
+ static PassRefPtr<SVGFEFlood> create(SVGResourceFilter*);
Color floodColor() const;
void setFloodColor(const Color &);
#endif
private:
+ SVGFEFlood(SVGResourceFilter*);
+
Color m_floodColor;
float m_floodOpacity;
};
{
}
+PassRefPtr<SVGFEGaussianBlur> SVGFEGaussianBlur::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEGaussianBlur(filter));
+}
+
float SVGFEGaussianBlur::stdDeviationX() const
{
return m_x;
class SVGFEGaussianBlur : public SVGFilterEffect {
public:
- SVGFEGaussianBlur(SVGResourceFilter*);
+ static PassRefPtr<SVGFEGaussianBlur> create(SVGResourceFilter*);
float stdDeviationX() const;
void setStdDeviationX(float);
#endif
private:
+ SVGFEGaussianBlur(SVGResourceFilter*);
+
float m_x;
float m_y;
};
{
}
+PassRefPtr<SVGFEImage> SVGFEImage::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEImage(filter));
+}
+
SVGFEImage::~SVGFEImage()
{
if (m_cachedImage)
class SVGFEImage : public SVGFilterEffect
, public CachedResourceClient {
public:
- SVGFEImage(SVGResourceFilter*);
+ static PassRefPtr<SVGFEImage> create(SVGResourceFilter*);
virtual ~SVGFEImage();
// FIXME: We need to support <svg> (RenderObject*) as well as image data.
virtual void imageChanged(CachedImage*);
private:
+ SVGFEImage(SVGResourceFilter*);
+
CachedImage* m_cachedImage;
};
namespace WebCore {
+SVGFEMerge::SVGFEMerge(SVGResourceFilter* filter)
+ : SVGFilterEffect(filter)
+{
+}
+
+PassRefPtr<SVGFEMerge> SVGFEMerge::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEMerge(filter));
+}
+
const Vector<String>& SVGFEMerge::mergeInputs() const
{
return m_mergeInputs;
class SVGFEMerge : public SVGFilterEffect {
public:
- SVGFEMerge(SVGResourceFilter* filter) : SVGFilterEffect(filter) { }
+ static PassRefPtr<SVGFEMerge> create(SVGResourceFilter*);
const Vector<String>& mergeInputs() const;
void setMergeInputs(const Vector<String>& mergeInputs);
#endif
private:
+ SVGFEMerge(SVGResourceFilter*);
+
Vector<String> m_mergeInputs;
};
{
}
+PassRefPtr<SVGFEOffset> SVGFEOffset::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFEOffset(filter));
+}
+
float SVGFEOffset::dx() const
{
return m_dx;
class SVGFEOffset : public SVGFilterEffect {
public:
- SVGFEOffset(SVGResourceFilter*);
+ static PassRefPtr<SVGFEOffset> create(SVGResourceFilter*);
float dx() const;
void setDx(float);
#endif
private:
+ SVGFEOffset(SVGResourceFilter*);
+
float m_dx;
float m_dy;
};
{
}
+PassRefPtr<SVGFESpecularLighting> SVGFESpecularLighting::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFESpecularLighting(filter));
+}
+
SVGFESpecularLighting::~SVGFESpecularLighting()
{
- delete m_lightSource;
}
Color SVGFESpecularLighting::lightingColor() const
const SVGLightSource* SVGFESpecularLighting::lightSource() const
{
- return m_lightSource;
+ return m_lightSource.get();
}
void SVGFESpecularLighting::setLightSource(SVGLightSource* lightSource)
{
- if (m_lightSource != lightSource) {
- delete m_lightSource;
- m_lightSource = lightSource;
- }
+ m_lightSource = lightSource;
}
TextStream& SVGFESpecularLighting::externalRepresentation(TextStream& ts) const
class SVGFESpecularLighting : public SVGFilterEffect {
public:
- SVGFESpecularLighting(SVGResourceFilter*);
+ static PassRefPtr<SVGFESpecularLighting> create(SVGResourceFilter*);
virtual ~SVGFESpecularLighting();
Color lightingColor() const;
#endif
private:
+ SVGFESpecularLighting(SVGResourceFilter*);
+
Color m_lightingColor;
float m_surfaceScale;
float m_specularConstant;
float m_specularExponent;
float m_kernelUnitLengthX;
float m_kernelUnitLengthY;
- SVGLightSource* m_lightSource;
+ RefPtr<SVGLightSource> m_lightSource;
};
} // namespace WebCore
--- /dev/null
+/*
+ Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ aint with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+
+#if ENABLE(SVG) && ENABLE(SVG_FILTERS)
+#include "SVGFETile.h"
+
+namespace WebCore {
+
+SVGFETile::SVGFETile(SVGResourceFilter* filter)
+ : SVGFilterEffect(filter)
+{
+}
+
+PassRefPtr<SVGFETile> SVGFETile::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFETile(filter));
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(SVG) && ENABLE(SVG_FILTERS)
+
#include "SVGFilterEffect.h"
namespace WebCore {
-
-class SVGFETile : public SVGFilterEffect
-{
-public:
- SVGFETile(SVGResourceFilter* filter) : SVGFilterEffect(filter) { }
-
-#if PLATFORM(CI)
- virtual CIFilter* getCIFilter(const FloatRect& bbox) const;
-#endif
-};
+
+ class SVGFETile : public SVGFilterEffect {
+ public:
+ static PassRefPtr<SVGFETile> create(SVGResourceFilter*);
+
+ #if PLATFORM(CI)
+ virtual CIFilter* getCIFilter(const FloatRect& bbox) const;
+ #endif
+ private:
+ SVGFETile(SVGResourceFilter*);
+
+ };
} // namespace WebCore
{
}
+PassRefPtr<SVGFETurbulence> SVGFETurbulence::create(SVGResourceFilter* filter)
+{
+ return adoptRef(new SVGFETurbulence(filter));
+}
+
SVGTurbulanceType SVGFETurbulence::type() const
{
return m_type;
class SVGFETurbulence : public SVGFilterEffect {
public:
- SVGFETurbulence(SVGResourceFilter*);
+ static PassRefPtr<SVGFETurbulence> create(SVGResourceFilter*);
SVGTurbulanceType type() const;
void setType(SVGTurbulanceType);
virtual TextStream& externalRepresentation(TextStream&) const;
private:
+ SVGFETurbulence(SVGResourceFilter*);
+
float m_baseFrequencyX;
float m_baseFrequencyY;
int m_numOctaves;
class SVGResourceFilter;
class TextStream;
-class SVGFilterEffect {
+class SVGFilterEffect : public RefCounted<SVGFilterEffect> {
public:
SVGFilterEffect(SVGResourceFilter*);
virtual ~SVGFilterEffect() { }
#define SVGLightSource_h
#if ENABLE(SVG) && ENABLE(SVG_FILTERS)
+#include <wtf/RefCounted.h>
namespace WebCore {
class TextStream;
-class SVGLightSource {
+class SVGLightSource : public RefCounted<SVGLightSource> {
public:
SVGLightSource(SVGLightType type)
: m_type(type)