Starting to clean up the SVG Filter code. Mostly adding 'create' wrapper
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Jun 2008 09:57:26 +0000 (09:57 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Jun 2008 09:57:26 +0000 (09:57 +0000)
functions and changing raw pointer fields to RefPtrs.

Patch by Alex Mathews

Reviewed by Oliver

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@34656 268f45cc-cd09-0410-ab3c-d52691b4dbfc

62 files changed:
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/svg/SVGFEBlendElement.cpp
WebCore/svg/SVGFEBlendElement.h
WebCore/svg/SVGFEColorMatrixElement.cpp
WebCore/svg/SVGFEColorMatrixElement.h
WebCore/svg/SVGFEComponentTransferElement.cpp
WebCore/svg/SVGFEComponentTransferElement.h
WebCore/svg/SVGFECompositeElement.cpp
WebCore/svg/SVGFECompositeElement.h
WebCore/svg/SVGFEDiffuseLightingElement.cpp
WebCore/svg/SVGFEDiffuseLightingElement.h
WebCore/svg/SVGFEDisplacementMapElement.cpp
WebCore/svg/SVGFEDisplacementMapElement.h
WebCore/svg/SVGFEFloodElement.cpp
WebCore/svg/SVGFEFloodElement.h
WebCore/svg/SVGFEGaussianBlurElement.cpp
WebCore/svg/SVGFEGaussianBlurElement.h
WebCore/svg/SVGFEImageElement.cpp
WebCore/svg/SVGFEImageElement.h
WebCore/svg/SVGFEMergeElement.cpp
WebCore/svg/SVGFEMergeElement.h
WebCore/svg/SVGFEOffsetElement.cpp
WebCore/svg/SVGFEOffsetElement.h
WebCore/svg/SVGFESpecularLightingElement.cpp
WebCore/svg/SVGFESpecularLightingElement.h
WebCore/svg/SVGFETileElement.cpp
WebCore/svg/SVGFETileElement.h
WebCore/svg/SVGFETurbulenceElement.cpp
WebCore/svg/SVGFETurbulenceElement.h
WebCore/svg/graphics/filters/SVGFEBlend.cpp
WebCore/svg/graphics/filters/SVGFEBlend.h
WebCore/svg/graphics/filters/SVGFEColorMatrix.cpp
WebCore/svg/graphics/filters/SVGFEColorMatrix.h
WebCore/svg/graphics/filters/SVGFEComponentTransfer.cpp
WebCore/svg/graphics/filters/SVGFEComponentTransfer.h
WebCore/svg/graphics/filters/SVGFEComposite.cpp
WebCore/svg/graphics/filters/SVGFEComposite.h
WebCore/svg/graphics/filters/SVGFEConvolveMatrix.cpp
WebCore/svg/graphics/filters/SVGFEConvolveMatrix.h
WebCore/svg/graphics/filters/SVGFEDiffuseLighting.cpp
WebCore/svg/graphics/filters/SVGFEDiffuseLighting.h
WebCore/svg/graphics/filters/SVGFEDisplacementMap.cpp
WebCore/svg/graphics/filters/SVGFEDisplacementMap.h
WebCore/svg/graphics/filters/SVGFEFlood.cpp
WebCore/svg/graphics/filters/SVGFEFlood.h
WebCore/svg/graphics/filters/SVGFEGaussianBlur.cpp
WebCore/svg/graphics/filters/SVGFEGaussianBlur.h
WebCore/svg/graphics/filters/SVGFEImage.cpp
WebCore/svg/graphics/filters/SVGFEImage.h
WebCore/svg/graphics/filters/SVGFEMerge.cpp
WebCore/svg/graphics/filters/SVGFEMerge.h
WebCore/svg/graphics/filters/SVGFEOffset.cpp
WebCore/svg/graphics/filters/SVGFEOffset.h
WebCore/svg/graphics/filters/SVGFESpecularLighting.cpp
WebCore/svg/graphics/filters/SVGFESpecularLighting.h
WebCore/svg/graphics/filters/SVGFETile.cpp [new file with mode: 0644]
WebCore/svg/graphics/filters/SVGFETile.h
WebCore/svg/graphics/filters/SVGFETurbulence.cpp
WebCore/svg/graphics/filters/SVGFETurbulence.h
WebCore/svg/graphics/filters/SVGFilterEffect.h
WebCore/svg/graphics/filters/SVGLightSource.h

index 7ab896e..71322a1 100644 (file)
@@ -1,3 +1,127 @@
+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.
index cff92b2..8f682fd 100644 (file)
                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;
                };
index 317b92b..694ac97 100644 (file)
@@ -38,7 +38,6 @@ SVGFEBlendElement::SVGFEBlendElement(const QualifiedName& tagName, Document* doc
 
 SVGFEBlendElement::~SVGFEBlendElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -70,13 +69,13 @@ void SVGFEBlendElement::parseMappedAttribute(MappedAttribute* attr)
 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();
 }
 
 }
index 88d2e6f..72185e4 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         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
index d0648a8..6d4db8a 100644 (file)
@@ -41,7 +41,6 @@ SVGFEColorMatrixElement::SVGFEColorMatrixElement(const QualifiedName& tagName, D
 
 SVGFEColorMatrixElement::~SVGFEColorMatrixElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -72,10 +71,10 @@ void SVGFEColorMatrixElement::parseMappedAttribute(MappedAttribute* attr)
 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();
@@ -88,7 +87,7 @@ SVGFEColorMatrix* SVGFEColorMatrixElement::filterEffect(SVGResourceFilter* filte
     m_filterEffect->setValues(_values);
     m_filterEffect->setType((SVGColorMatrixType) type());
     
-    return m_filterEffect;
+    return m_filterEffect.get();
 }
 
 }
index 0015002..bda0553 100644 (file)
@@ -48,7 +48,7 @@ namespace WebCore
         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
index 2e9ec2e..ed65f14 100644 (file)
@@ -44,7 +44,6 @@ SVGFEComponentTransferElement::SVGFEComponentTransferElement(const QualifiedName
 
 SVGFEComponentTransferElement::~SVGFEComponentTransferElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEComponentTransferElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -61,10 +60,10 @@ void SVGFEComponentTransferElement::parseMappedAttribute(MappedAttribute* attr)
 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))
@@ -77,7 +76,7 @@ SVGFEComponentTransfer* SVGFEComponentTransferElement::filterEffect(SVGResourceF
             m_filterEffect->setAlphaFunction(static_cast<SVGFEFuncAElement*>(n)->transferFunction());
     }
 
-    return m_filterEffect;
+    return m_filterEffect.get();
 }
 
 }
index 74827c5..02958b1 100644 (file)
@@ -45,7 +45,7 @@ namespace WebCore
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEComponentTransferElement, String, String, In1, in1)
 
-        mutable SVGFEComponentTransfer *m_filterEffect;
+        mutable RefPtr<SVGFEComponentTransfer> m_filterEffect;
     };
 
 } // namespace WebCore
index d21aeec..a135e3d 100644 (file)
@@ -43,7 +43,6 @@ SVGFECompositeElement::SVGFECompositeElement(const QualifiedName& tagName, Docum
 
 SVGFECompositeElement::~SVGFECompositeElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -90,7 +89,7 @@ void SVGFECompositeElement::parseMappedAttribute(MappedAttribute *attr)
 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());
@@ -100,8 +99,8 @@ SVGFEComposite* SVGFECompositeElement::filterEffect(SVGResourceFilter* filter) c
     m_filterEffect->setK3(k3());
     m_filterEffect->setK4(k4());
 
-    setStandardAttributes(m_filterEffect);
-    return m_filterEffect;
+    setStandardAttributes(m_filterEffect.get());
+    return m_filterEffect.get();
 }
 
 }
index 24fe6ae..841a677 100644 (file)
@@ -51,7 +51,7 @@ namespace WebCore
         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
index 7d9628b..f23a830 100644 (file)
@@ -46,7 +46,6 @@ SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement(const QualifiedName& ta
 
 SVGFEDiffuseLightingElement::~SVGFEDiffuseLightingElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -77,7 +76,7 @@ void SVGFEDiffuseLightingElement::parseMappedAttribute(MappedAttribute *attr)
 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());
@@ -91,13 +90,13 @@ SVGFilterEffect* SVGFEDiffuseLightingElement::filterEffect(SVGResourceFilter* fi
     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
index 4d038b3..d5e9ede 100644 (file)
@@ -48,7 +48,7 @@ namespace WebCore {
         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;
     };
index 8852a65..31ddd31 100644 (file)
@@ -38,7 +38,6 @@ SVGFEDisplacementMapElement::SVGFEDisplacementMapElement(const QualifiedName& ta
 
 SVGFEDisplacementMapElement::~SVGFEDisplacementMapElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -81,7 +80,7 @@ void SVGFEDisplacementMapElement::parseMappedAttribute(MappedAttribute* attr)
 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());
@@ -89,8 +88,8 @@ SVGFEDisplacementMap* SVGFEDisplacementMapElement::filterEffect(SVGResourceFilte
     m_filterEffect->setIn2(in2());
     m_filterEffect->setScale(scale());
 
-    setStandardAttributes(m_filterEffect);
-    return m_filterEffect;
+    setStandardAttributes(m_filterEffect.get());
+    return m_filterEffect.get();
 }
 
 }
index 7f6a109..42dacc1 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore {
         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
index 5efb138..07de8c5 100644 (file)
@@ -41,7 +41,6 @@ SVGFEFloodElement::SVGFEFloodElement(const QualifiedName& tagName, Document* doc
 
 SVGFEFloodElement::~SVGFEFloodElement()
 {
-    delete m_filterEffect;
 }
 
 void SVGFEFloodElement::parseMappedAttribute(MappedAttribute* attr)
@@ -52,9 +51,9 @@ 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);
 
@@ -67,7 +66,7 @@ SVGFEFlood* SVGFEFloodElement::filterEffect(SVGResourceFilter* filter) const
     parentStyle->deref(document()->renderArena());
     filterStyle->deref(document()->renderArena());
     
-    return m_filterEffect;
+    return m_filterEffect.get();
 }
 
 }
index 66556f9..af4e982 100644 (file)
@@ -42,7 +42,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        mutable SVGFEFlood *m_filterEffect;
+        mutable RefPtr<SVGFEFlood> m_filterEffect;
     };
 
 } // namespace WebCore
index bc1ae25..4188e29 100644 (file)
@@ -41,7 +41,6 @@ SVGFEGaussianBlurElement::SVGFEGaussianBlurElement(const QualifiedName& tagName,
 
 SVGFEGaussianBlurElement::~SVGFEGaussianBlurElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -70,14 +69,14 @@ void SVGFEGaussianBlurElement::parseMappedAttribute(MappedAttribute* attr)
 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();
 }
 
 }
index c1e9292..5a04f12 100644 (file)
@@ -49,7 +49,7 @@ namespace WebCore
         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
index e8eb96f..0dfd7fc 100644 (file)
@@ -49,7 +49,6 @@ SVGFEImageElement::SVGFEImageElement(const QualifiedName& tagName, Document* doc
 
 SVGFEImageElement::~SVGFEImageElement()
 {
-    delete m_filterEffect;
     if (m_cachedImage)
         m_cachedImage->removeClient(this);
 }
@@ -93,14 +92,14 @@ void SVGFEImageElement::notifyFinished(CachedResource* finishedObj)
 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
index e977937..8bf2ac0 100644 (file)
@@ -61,7 +61,7 @@ namespace WebCore {
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEImageElement, SVGPreserveAspectRatio*, RefPtr<SVGPreserveAspectRatio>, PreserveAspectRatio, preserveAspectRatio)
 
         CachedImage* m_cachedImage;
-        mutable SVGFEImage* m_filterEffect;
+        mutable RefPtr<SVGFEImage> m_filterEffect;
     };
 
 } // namespace WebCore
index 7c7fd75..447b727 100644 (file)
@@ -38,14 +38,14 @@ SVGFEMergeElement::SVGFEMergeElement(const QualifiedName& tagName, Document* doc
 
 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()) {
@@ -54,7 +54,7 @@ SVGFEMerge* SVGFEMergeElement::filterEffect(SVGResourceFilter* filter) const
     }
 
     m_filterEffect->setMergeInputs(mergeInputs);
-    return m_filterEffect;
+    return m_filterEffect.get();
 }
 
 }
index 59898bb..eefedee 100644 (file)
@@ -41,7 +41,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        mutable SVGFEMerge* m_filterEffect;
+        mutable RefPtr<SVGFEMerge> m_filterEffect;
     };
 
 } // namespace WebCore
index 1442159..c2e4c1e 100644 (file)
@@ -40,7 +40,6 @@ SVGFEOffsetElement::SVGFEOffsetElement(const QualifiedName& tagName, Document* d
 
 SVGFEOffsetElement::~SVGFEOffsetElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -63,14 +62,14 @@ void SVGFEOffsetElement::parseMappedAttribute(MappedAttribute* attr)
 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();
 }
 
 }
index 01ee9ea..2cc5197 100644 (file)
@@ -47,7 +47,7 @@ namespace WebCore
         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
index 26a50bf..764c727 100644 (file)
@@ -46,7 +46,6 @@ SVGFESpecularLightingElement::SVGFESpecularLightingElement(const QualifiedName&
 
 SVGFESpecularLightingElement::~SVGFESpecularLightingElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -80,7 +79,7 @@ void SVGFESpecularLightingElement::parseMappedAttribute(MappedAttribute* attr)
 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()));
@@ -99,10 +98,10 @@ SVGFESpecularLighting* SVGFESpecularLightingElement::filterEffect(SVGResourceFil
     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
index 435882e..aa9fd3e 100644 (file)
@@ -50,7 +50,7 @@ namespace WebCore
         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;
     };
index 62fc05b..e1da7f7 100644 (file)
@@ -39,7 +39,6 @@ SVGFETileElement::SVGFETileElement(const QualifiedName& tagName, Document* doc)
 
 SVGFETileElement::~SVGFETileElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFETileElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
@@ -56,12 +55,12 @@ void SVGFETileElement::parseMappedAttribute(MappedAttribute* attr)
 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();
 }
 
 }
index 256e8a0..2287d69 100644 (file)
@@ -29,7 +29,6 @@
 
 namespace WebCore
 {
-
     class SVGFETileElement : public SVGFilterPrimitiveStandardAttributes
     {
     public:
@@ -45,7 +44,7 @@ namespace WebCore
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFETileElement, String, String, In1, in1)
 
-        mutable SVGFETile* m_filterEffect;
+        mutable RefPtr<SVGFETile> m_filterEffect;
     };
 
 } // namespace WebCore
index f3783ac..715960a 100644 (file)
@@ -44,7 +44,6 @@ SVGFETurbulenceElement::SVGFETurbulenceElement(const QualifiedName& tagName, Doc
 
 SVGFETurbulenceElement::~SVGFETurbulenceElement()
 {
-    delete m_filterEffect;
 }
 
 ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(SVGFETurbulenceElement, float, Number, number, BaseFrequencyX, baseFrequencyX, SVGNames::baseFrequencyAttr, "baseFrequencyX", m_baseFrequencyX)
@@ -85,7 +84,7 @@ SVGFETurbulence* SVGFETurbulenceElement::filterEffect(SVGResourceFilter* filter)
 {
     
     if (!m_filterEffect)
-        m_filterEffect = new SVGFETurbulence(filter);
+        m_filterEffect = SVGFETurbulence::create(filter);
     
     m_filterEffect->setType((SVGTurbulanceType) type());
     m_filterEffect->setBaseFrequencyX(baseFrequencyX());
@@ -94,8 +93,8 @@ SVGFETurbulence* SVGFETurbulenceElement::filterEffect(SVGResourceFilter* filter)
     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();
 }
 
 }
index a62bf15..7df6f5f 100644 (file)
@@ -55,7 +55,7 @@ namespace WebCore
         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
index bb083e3..b7e2afa 100644 (file)
@@ -33,6 +33,11 @@ SVGFEBlend::SVGFEBlend(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEBlend> SVGFEBlend::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEBlend(filter));
+}
+
 String SVGFEBlend::in2() const
 {
     return m_in2;
index f8063f7..1b6b28b 100644 (file)
@@ -38,8 +38,8 @@ enum SVGBlendModeType {
 
 class SVGFEBlend : public SVGFilterEffect {
 public:
-    SVGFEBlend(SVGResourceFilter*);
-
+    static PassRefPtr<SVGFEBlend> create(SVGResourceFilter*);
+    
     String in2() const;
     void setIn2(const String&);
 
@@ -53,6 +53,8 @@ public:
 #endif
 
 private:
+    SVGFEBlend(SVGResourceFilter*);
+
     SVGBlendModeType m_mode;
     String m_in2;
 };
index 8eb2572..61c7fb4 100644 (file)
@@ -32,6 +32,11 @@ SVGFEColorMatrix::SVGFEColorMatrix(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEColorMatrix> SVGFEColorMatrix::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEColorMatrix(filter));
+}
+
 SVGColorMatrixType SVGFEColorMatrix::type() const
 {
     return m_type;
index 0d4eb23..aeb24f6 100644 (file)
@@ -38,7 +38,7 @@ enum SVGColorMatrixType {
 
 class SVGFEColorMatrix : public SVGFilterEffect {
 public:
-    SVGFEColorMatrix(SVGResourceFilter*);
+    static PassRefPtr<SVGFEColorMatrix> create(SVGResourceFilter*);
 
     SVGColorMatrixType type() const;
     void setType(SVGColorMatrixType);
@@ -53,6 +53,8 @@ public:
 #endif
 
 private:
+    SVGFEColorMatrix(SVGResourceFilter*);
+
     SVGColorMatrixType m_type;
     Vector<float> m_values;
 };
index 55a1730..4fe4d3d 100644 (file)
@@ -32,6 +32,11 @@ SVGFEComponentTransfer::SVGFEComponentTransfer(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEComponentTransfer> SVGFEComponentTransfer::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEComponentTransfer(filter));
+}
+
 SVGComponentTransferFunction SVGFEComponentTransfer::redFunction() const
 {
     return m_redFunc;
index 32d5e14..29d22ba 100644 (file)
@@ -73,7 +73,7 @@ struct SVGComponentTransferFunction {
 
 class SVGFEComponentTransfer : public SVGFilterEffect {
 public:
-    SVGFEComponentTransfer(SVGResourceFilter*);
+    static PassRefPtr<SVGFEComponentTransfer> create(SVGResourceFilter*);
 
     SVGComponentTransferFunction redFunction() const;
     void setRedFunction(const SVGComponentTransferFunction&);
@@ -97,6 +97,8 @@ private:
 #endif
 
 private:
+    SVGFEComponentTransfer(SVGResourceFilter*);
+
     SVGComponentTransferFunction m_redFunc;
     SVGComponentTransferFunction m_greenFunc;
     SVGComponentTransferFunction m_blueFunc;
index 4e0dfb5..0d59138 100644 (file)
@@ -37,6 +37,11 @@ SVGFEComposite::SVGFEComposite(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEComposite> SVGFEComposite::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEComposite(filter));
+}
+
 String SVGFEComposite::in2() const
 {
     return m_in2;
index 7a18047..5dbb7d6 100644 (file)
@@ -39,7 +39,7 @@ enum SVGCompositeOperationType {
 
 class SVGFEComposite : public SVGFilterEffect {
 public:
-    SVGFEComposite(SVGResourceFilter*);
+    static PassRefPtr<SVGFEComposite> create(SVGResourceFilter*);
 
     String in2() const;
     void setIn2(const String&);
@@ -66,6 +66,8 @@ public:
 #endif
 
 private:
+    SVGFEComposite(SVGResourceFilter*);
+
     SVGCompositeOperationType m_operation;
     float m_k1;
     float m_k2;
index af2b693..0d526f7 100644 (file)
@@ -39,6 +39,11 @@ SVGFEConvolveMatrix::SVGFEConvolveMatrix(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEConvolveMatrix> SVGFEConvolveMatrix::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEConvolveMatrix(filter));
+}
+
 FloatSize SVGFEConvolveMatrix::kernelSize() const
 {
     return m_kernelSize;
index b9744fa..75f827e 100644 (file)
@@ -36,7 +36,7 @@ enum SVGEdgeModeType {
 
 class SVGFEConvolveMatrix : public SVGFilterEffect {
 public:
-    SVGFEConvolveMatrix(SVGResourceFilter*);
+    static PassRefPtr<SVGFEConvolveMatrix> create(SVGResourceFilter*);
 
     FloatSize kernelSize() const;
     void setKernelSize(FloatSize);
@@ -65,6 +65,8 @@ public:
     virtual TextStream& externalRepresentation(TextStream&) const;
 
 private:
+    SVGFEConvolveMatrix(SVGResourceFilter*);
+
     FloatSize m_kernelSize;
     float m_divisor;
     float m_bias;
index 2504ca6..198cfee 100644 (file)
@@ -39,9 +39,13 @@ SVGFEDiffuseLighting::SVGFEDiffuseLighting(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEDiffuseLighting> SVGFEDiffuseLighting::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEDiffuseLighting(filter));
+}
+
 SVGFEDiffuseLighting::~SVGFEDiffuseLighting()
 {
-    delete m_lightSource;
 }
 
 Color SVGFEDiffuseLighting::lightingColor() const
@@ -96,15 +100,12 @@ void SVGFEDiffuseLighting::setKernelUnitLengthY(float kernelUnitLengthY)
 
 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
index a2ed775..89a962a 100644 (file)
@@ -32,7 +32,7 @@ class SVGLightSource;
 
 class SVGFEDiffuseLighting : public SVGFilterEffect {
 public:
-    SVGFEDiffuseLighting(SVGResourceFilter*);
+    static PassRefPtr<SVGFEDiffuseLighting> create(SVGResourceFilter*);
     virtual ~SVGFEDiffuseLighting();
 
     Color lightingColor() const;
@@ -60,12 +60,14 @@ public:
 #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
index 39b012b..ebb23bb 100644 (file)
@@ -35,6 +35,11 @@ SVGFEDisplacementMap::SVGFEDisplacementMap(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEDisplacementMap> SVGFEDisplacementMap::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEDisplacementMap(filter));
+}
+
 String SVGFEDisplacementMap::in2() const
 {
     return m_in2;
index bc45728..038f6ef 100644 (file)
@@ -37,7 +37,7 @@ enum SVGChannelSelectorType {
 
 class SVGFEDisplacementMap : public SVGFilterEffect {
 public:
-    SVGFEDisplacementMap(SVGResourceFilter*);
+    static PassRefPtr<SVGFEDisplacementMap> create(SVGResourceFilter*);
 
     String in2() const;
     void setIn2(const String&);
@@ -58,6 +58,8 @@ public:
 #endif
 
 private:
+    SVGFEDisplacementMap(SVGResourceFilter*);
+
     SVGChannelSelectorType m_xChannelSelector;
     SVGChannelSelectorType m_yChannelSelector;
     float m_scale;
index 2baeb2e..51d4e58 100644 (file)
@@ -34,6 +34,11 @@ SVGFEFlood::SVGFEFlood(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEFlood> SVGFEFlood::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEFlood(filter));
+}
+
 Color SVGFEFlood::floodColor() const
 {
     return m_floodColor;
index 4cadf9a..1c7362f 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class SVGFEFlood : public SVGFilterEffect {
 public:
-    SVGFEFlood(SVGResourceFilter*);
+    static PassRefPtr<SVGFEFlood> create(SVGResourceFilter*);
 
     Color floodColor() const;
     void setFloodColor(const Color &);
@@ -45,6 +45,8 @@ public:
 #endif
 
 private:
+    SVGFEFlood(SVGResourceFilter*);
+
     Color m_floodColor;
     float m_floodOpacity;
 };
index aef9aad..58a8807 100644 (file)
@@ -34,6 +34,11 @@ SVGFEGaussianBlur::SVGFEGaussianBlur(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEGaussianBlur> SVGFEGaussianBlur::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEGaussianBlur(filter));
+}
+
 float SVGFEGaussianBlur::stdDeviationX() const
 {
     return m_x;
index 28cb9e0..814653e 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 class SVGFEGaussianBlur : public SVGFilterEffect {
 public:
-    SVGFEGaussianBlur(SVGResourceFilter*);
+    static PassRefPtr<SVGFEGaussianBlur> create(SVGResourceFilter*);
 
     float stdDeviationX() const;
     void setStdDeviationX(float);
@@ -44,6 +44,8 @@ public:
 #endif
 
 private:
+    SVGFEGaussianBlur(SVGResourceFilter*);
+
     float m_x;
     float m_y;
 };
index ab96b81..2efaa2e 100644 (file)
@@ -35,6 +35,11 @@ SVGFEImage::SVGFEImage(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEImage> SVGFEImage::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEImage(filter));
+}
+
 SVGFEImage::~SVGFEImage()
 {
     if (m_cachedImage)
index 8245d10..48157d3 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 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.
@@ -49,6 +49,8 @@ public:
     virtual void imageChanged(CachedImage*);
     
 private:
+    SVGFEImage(SVGResourceFilter*);
+
     CachedImage* m_cachedImage;
 };
 
index f4cf2db..ac41b01 100644 (file)
 
 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;
index 9a0e867..1038404 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 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);
@@ -41,6 +41,8 @@ public:
 #endif
 
 private:
+    SVGFEMerge(SVGResourceFilter*);
+
     Vector<String> m_mergeInputs;
 };
 
index 024f2cd..97ccf43 100644 (file)
@@ -34,6 +34,11 @@ SVGFEOffset::SVGFEOffset(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFEOffset> SVGFEOffset::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFEOffset(filter));
+}
+
 float SVGFEOffset::dx() const
 {
     return m_dx;
index 05b427d..6a79f8d 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 class SVGFEOffset : public SVGFilterEffect {
 public:
-    SVGFEOffset(SVGResourceFilter*);
+    static PassRefPtr<SVGFEOffset> create(SVGResourceFilter*);
 
     float dx() const;
     void setDx(float);
@@ -44,6 +44,8 @@ public:
 #endif
 
 private:
+    SVGFEOffset(SVGResourceFilter*);
+
     float m_dx;
     float m_dy;
 };
index ba45dae..80968ad 100644 (file)
@@ -39,9 +39,13 @@ SVGFESpecularLighting::SVGFESpecularLighting(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFESpecularLighting> SVGFESpecularLighting::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFESpecularLighting(filter));
+}
+
 SVGFESpecularLighting::~SVGFESpecularLighting()
 {
-    delete m_lightSource;
 }
 
 Color SVGFESpecularLighting::lightingColor() const
@@ -106,15 +110,12 @@ void SVGFESpecularLighting::setKernelUnitLengthY(float kernelUnitLengthY)
 
 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
index 66e1561..3a5aa8e 100644 (file)
@@ -31,7 +31,7 @@ namespace WebCore {
 
 class SVGFESpecularLighting : public SVGFilterEffect {
 public:
-    SVGFESpecularLighting(SVGResourceFilter*);
+    static PassRefPtr<SVGFESpecularLighting> create(SVGResourceFilter*);
     virtual ~SVGFESpecularLighting();
 
     Color lightingColor() const;
@@ -62,13 +62,15 @@ public:
 #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
diff --git a/WebCore/svg/graphics/filters/SVGFETile.cpp b/WebCore/svg/graphics/filters/SVGFETile.cpp
new file mode 100644 (file)
index 0000000..9746f66
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+    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)
+
index 1c3922f..3e51791 100644 (file)
 #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
 
index 0f9cbaf..567a7d3 100644 (file)
@@ -38,6 +38,11 @@ SVGFETurbulence::SVGFETurbulence(SVGResourceFilter* filter)
 {
 }
 
+PassRefPtr<SVGFETurbulence> SVGFETurbulence::create(SVGResourceFilter* filter)
+{
+    return adoptRef(new SVGFETurbulence(filter));
+}
+
 SVGTurbulanceType SVGFETurbulence::type() const
 {
     return m_type;
index b871416..2fd964f 100644 (file)
@@ -35,7 +35,7 @@ enum SVGTurbulanceType {
 
 class SVGFETurbulence : public SVGFilterEffect {
 public:
-    SVGFETurbulence(SVGResourceFilter*);
+    static PassRefPtr<SVGFETurbulence> create(SVGResourceFilter*);
 
     SVGTurbulanceType type() const;
     void setType(SVGTurbulanceType);
@@ -58,6 +58,8 @@ public:
     virtual TextStream& externalRepresentation(TextStream&) const;
 
 private:
+    SVGFETurbulence(SVGResourceFilter*);
+
     float m_baseFrequencyX;
     float m_baseFrequencyY;
     int m_numOctaves;
index f7128fc..d497f8b 100644 (file)
@@ -39,7 +39,7 @@ namespace WebCore {
 class SVGResourceFilter;
 class TextStream;
 
-class SVGFilterEffect {
+class SVGFilterEffect : public RefCounted<SVGFilterEffect> {
 public:
     SVGFilterEffect(SVGResourceFilter*);
     virtual ~SVGFilterEffect() { }
index 12cf3d0..92dcfa8 100644 (file)
@@ -23,6 +23,7 @@
 #define SVGLightSource_h
 
 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
+#include <wtf/RefCounted.h>
 
 namespace WebCore {
 
@@ -34,7 +35,7 @@ enum SVGLightType {
 
 class TextStream;
 
-class SVGLightSource {
+class SVGLightSource : public RefCounted<SVGLightSource> {
 public:
     SVGLightSource(SVGLightType type)
         : m_type(type)