2007-10-28 Eric Seidel <eric@webkit.org>
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 28 Oct 2007 10:34:24 +0000 (10:34 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 28 Oct 2007 10:34:24 +0000 (10:34 +0000)
        Reviewed by Oliver.

        Push SVGResourceFilter platform specific data down into m_platformData
        in preparation for implementing a non-mac filter solution.

        Also update a very old email address in copyright headers

        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/FloatPoint3D.cpp:
        (WebCore::FloatPoint3D::FloatPoint3D):
        * platform/graphics/FloatPoint3D.h:
        * platform/graphics/svg/SVGResourceFilter.cpp:
        (WebCore::SVGResourceFilter::SVGResourceFilter):
        * platform/graphics/svg/SVGResourceFilter.h:
        (WebCore::SVGResourceFilter::platformData):
        (WebCore::SVGResourceFilter::effects):
        * platform/graphics/svg/cg/SVGResourceFilterCg.mm:
        (WebCore::SVGResourceFilter::createPlatformData):l
        (WebCore::SVGResourceFilter::prepareFilter):
        (WebCore::SVGResourceFilter::applyFilter):
        * platform/graphics/svg/filters/SVGDistantLightSource.h:
        * platform/graphics/svg/filters/SVGFEBlend.cpp:
        * platform/graphics/svg/filters/SVGFEBlend.h:
        * platform/graphics/svg/filters/SVGFEColorMatrix.cpp:
        * platform/graphics/svg/filters/SVGFEColorMatrix.h:
        * platform/graphics/svg/filters/SVGFEComponentTransfer.cpp:
        * platform/graphics/svg/filters/SVGFEComponentTransfer.h:
        * platform/graphics/svg/filters/SVGFEComposite.cpp:
        * platform/graphics/svg/filters/SVGFEComposite.h:
        * platform/graphics/svg/filters/SVGFEConvolveMatrix.cpp:
        * platform/graphics/svg/filters/SVGFEConvolveMatrix.h:
        * platform/graphics/svg/filters/SVGFEDiffuseLighting.cpp:
        * platform/graphics/svg/filters/SVGFEDiffuseLighting.h:
        * platform/graphics/svg/filters/SVGFEDisplacementMap.cpp:
        * platform/graphics/svg/filters/SVGFEDisplacementMap.h:
        * platform/graphics/svg/filters/SVGFEFlood.cpp:
        * platform/graphics/svg/filters/SVGFEFlood.h:
        * platform/graphics/svg/filters/SVGFEGaussianBlur.cpp:
        * platform/graphics/svg/filters/SVGFEGaussianBlur.h:
        * platform/graphics/svg/filters/SVGFEImage.cpp:
        * platform/graphics/svg/filters/SVGFEImage.h:
        * platform/graphics/svg/filters/SVGFEMerge.cpp:
        * platform/graphics/svg/filters/SVGFEMerge.h:
        * platform/graphics/svg/filters/SVGFEMorphology.cpp:
        * platform/graphics/svg/filters/SVGFEMorphology.h:
        * platform/graphics/svg/filters/SVGFEOffset.cpp:
        * platform/graphics/svg/filters/SVGFEOffset.h:
        * platform/graphics/svg/filters/SVGFESpecularLighting.cpp:
        * platform/graphics/svg/filters/SVGFESpecularLighting.h:
        * platform/graphics/svg/filters/SVGFETile.h:
        * platform/graphics/svg/filters/SVGFETurbulence.cpp:
        * platform/graphics/svg/filters/SVGFETurbulence.h:
        * platform/graphics/svg/filters/SVGFilterEffect.cpp:
        * platform/graphics/svg/filters/SVGFilterEffect.h:
        * platform/graphics/svg/filters/SVGLightSource.cpp:
        * platform/graphics/svg/filters/SVGLightSource.h:
        * platform/graphics/svg/filters/SVGPointLightSource.h:
        * platform/graphics/svg/filters/SVGSpotLightSource.h:
        * platform/graphics/svg/filters/cg/SVGFEBlendCg.mm:
        (WebCore::SVGFEBlend::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEColorMatrixCg.mm:
        (WebCore::SVGFEColorMatrix::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEComponentTransferCg.mm:
        (WebCore::SVGFEComponentTransfer::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFECompositeCg.mm:
        (WebCore::SVGFEComposite::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEDiffuseLightingCg.mm:
        (WebCore::SVGFEDiffuseLighting::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEDisplacementMapCg.mm:
        (WebCore::SVGFEDisplacementMap::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEFloodCg.mm:
        (WebCore::SVGFEFlood::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEHelpersCg.h:
        * platform/graphics/svg/filters/cg/SVGFEImageCg.mm:
        (WebCore::SVGFEImage::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFEMergeCg.mm:
        (WebCore::SVGFEMerge::getCIFilter):
        * platform/graphics/svg/filters/cg/SVGFESpecularLightingCg.mm:
        (WebCore::SVGFESpecularLighting::getCIFilter):
        * platform/graphics/svg/mac: Added.
        * platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.h: Added.
        * platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.mm: Added.
        (WebCore::SVGResourceFilterPlatformDataMac::SVGResourceFilterPlatformDataMac):
        (WebCore::SVGResourceFilterPlatformDataMac::~SVGResourceFilterPlatformDataMac):
        (WebCore::SVGResourceFilterPlatformDataMac::getCIFilterStack):
        (WebCore::alphaImageForImage):
        (WebCore::SVGResourceFilterPlatformDataMac::imageForName):
        (WebCore::SVGResourceFilterPlatformDataMac::setImageForName):
        (WebCore::SVGResourceFilterPlatformDataMac::setOutputImage):
        (WebCore::SVGResourceFilterPlatformDataMac::inputImage):

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

60 files changed:
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/platform/graphics/FloatPoint3D.cpp
WebCore/platform/graphics/FloatPoint3D.h
WebCore/platform/graphics/svg/SVGResourceFilter.cpp
WebCore/platform/graphics/svg/SVGResourceFilter.h
WebCore/platform/graphics/svg/cg/SVGResourceFilterCg.cpp
WebCore/platform/graphics/svg/cg/SVGResourceFilterCg.mm
WebCore/platform/graphics/svg/filters/SVGDistantLightSource.h
WebCore/platform/graphics/svg/filters/SVGFEBlend.cpp
WebCore/platform/graphics/svg/filters/SVGFEBlend.h
WebCore/platform/graphics/svg/filters/SVGFEColorMatrix.cpp
WebCore/platform/graphics/svg/filters/SVGFEColorMatrix.h
WebCore/platform/graphics/svg/filters/SVGFEComponentTransfer.cpp
WebCore/platform/graphics/svg/filters/SVGFEComponentTransfer.h
WebCore/platform/graphics/svg/filters/SVGFEComposite.cpp
WebCore/platform/graphics/svg/filters/SVGFEComposite.h
WebCore/platform/graphics/svg/filters/SVGFEConvolveMatrix.cpp
WebCore/platform/graphics/svg/filters/SVGFEConvolveMatrix.h
WebCore/platform/graphics/svg/filters/SVGFEDiffuseLighting.cpp
WebCore/platform/graphics/svg/filters/SVGFEDiffuseLighting.h
WebCore/platform/graphics/svg/filters/SVGFEDisplacementMap.cpp
WebCore/platform/graphics/svg/filters/SVGFEDisplacementMap.h
WebCore/platform/graphics/svg/filters/SVGFEFlood.cpp
WebCore/platform/graphics/svg/filters/SVGFEFlood.h
WebCore/platform/graphics/svg/filters/SVGFEGaussianBlur.cpp
WebCore/platform/graphics/svg/filters/SVGFEGaussianBlur.h
WebCore/platform/graphics/svg/filters/SVGFEImage.cpp
WebCore/platform/graphics/svg/filters/SVGFEImage.h
WebCore/platform/graphics/svg/filters/SVGFEMerge.cpp
WebCore/platform/graphics/svg/filters/SVGFEMerge.h
WebCore/platform/graphics/svg/filters/SVGFEMorphology.cpp
WebCore/platform/graphics/svg/filters/SVGFEMorphology.h
WebCore/platform/graphics/svg/filters/SVGFEOffset.cpp
WebCore/platform/graphics/svg/filters/SVGFEOffset.h
WebCore/platform/graphics/svg/filters/SVGFESpecularLighting.cpp
WebCore/platform/graphics/svg/filters/SVGFESpecularLighting.h
WebCore/platform/graphics/svg/filters/SVGFETile.h
WebCore/platform/graphics/svg/filters/SVGFETurbulence.cpp
WebCore/platform/graphics/svg/filters/SVGFETurbulence.h
WebCore/platform/graphics/svg/filters/SVGFilterEffect.cpp
WebCore/platform/graphics/svg/filters/SVGFilterEffect.h
WebCore/platform/graphics/svg/filters/SVGLightSource.cpp
WebCore/platform/graphics/svg/filters/SVGLightSource.h
WebCore/platform/graphics/svg/filters/SVGPointLightSource.h
WebCore/platform/graphics/svg/filters/SVGSpotLightSource.h
WebCore/platform/graphics/svg/filters/cg/SVGFEBlendCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEColorMatrixCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEComponentTransferCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFECompositeCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEDiffuseLightingCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEDisplacementMapCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEFloodCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEHelpersCg.h
WebCore/platform/graphics/svg/filters/cg/SVGFEImageCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFEMergeCg.mm
WebCore/platform/graphics/svg/filters/cg/SVGFESpecularLightingCg.mm
WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.h [new file with mode: 0644]
WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.mm [new file with mode: 0644]
WebCore/platform/graphics/svg/qt/SVGResourceFilterQt.cpp

index 5537268552760118ce8e2953ce453d174f315585..4b666f37b5db1ba46cb69c5b93093fe230e05625 100644 (file)
@@ -1,3 +1,96 @@
+2007-10-28  Eric Seidel  <eric@webkit.org>
+
+        Reviewed by Oliver.
+
+        Push SVGResourceFilter platform specific data down into m_platformData
+        in preparation for implementing a non-mac filter solution.
+        
+        Also update a very old email address in copyright headers
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/FloatPoint3D.cpp:
+        (WebCore::FloatPoint3D::FloatPoint3D):
+        * platform/graphics/FloatPoint3D.h:
+        * platform/graphics/svg/SVGResourceFilter.cpp:
+        (WebCore::SVGResourceFilter::SVGResourceFilter):
+        * platform/graphics/svg/SVGResourceFilter.h:
+        (WebCore::SVGResourceFilter::platformData):
+        (WebCore::SVGResourceFilter::effects):
+        * platform/graphics/svg/cg/SVGResourceFilterCg.mm:
+        (WebCore::SVGResourceFilter::createPlatformData):l
+        (WebCore::SVGResourceFilter::prepareFilter):
+        (WebCore::SVGResourceFilter::applyFilter):
+        * platform/graphics/svg/filters/SVGDistantLightSource.h:
+        * platform/graphics/svg/filters/SVGFEBlend.cpp:
+        * platform/graphics/svg/filters/SVGFEBlend.h:
+        * platform/graphics/svg/filters/SVGFEColorMatrix.cpp:
+        * platform/graphics/svg/filters/SVGFEColorMatrix.h:
+        * platform/graphics/svg/filters/SVGFEComponentTransfer.cpp:
+        * platform/graphics/svg/filters/SVGFEComponentTransfer.h:
+        * platform/graphics/svg/filters/SVGFEComposite.cpp:
+        * platform/graphics/svg/filters/SVGFEComposite.h:
+        * platform/graphics/svg/filters/SVGFEConvolveMatrix.cpp:
+        * platform/graphics/svg/filters/SVGFEConvolveMatrix.h:
+        * platform/graphics/svg/filters/SVGFEDiffuseLighting.cpp:
+        * platform/graphics/svg/filters/SVGFEDiffuseLighting.h:
+        * platform/graphics/svg/filters/SVGFEDisplacementMap.cpp:
+        * platform/graphics/svg/filters/SVGFEDisplacementMap.h:
+        * platform/graphics/svg/filters/SVGFEFlood.cpp:
+        * platform/graphics/svg/filters/SVGFEFlood.h:
+        * platform/graphics/svg/filters/SVGFEGaussianBlur.cpp:
+        * platform/graphics/svg/filters/SVGFEGaussianBlur.h:
+        * platform/graphics/svg/filters/SVGFEImage.cpp:
+        * platform/graphics/svg/filters/SVGFEImage.h:
+        * platform/graphics/svg/filters/SVGFEMerge.cpp:
+        * platform/graphics/svg/filters/SVGFEMerge.h:
+        * platform/graphics/svg/filters/SVGFEMorphology.cpp:
+        * platform/graphics/svg/filters/SVGFEMorphology.h:
+        * platform/graphics/svg/filters/SVGFEOffset.cpp:
+        * platform/graphics/svg/filters/SVGFEOffset.h:
+        * platform/graphics/svg/filters/SVGFESpecularLighting.cpp:
+        * platform/graphics/svg/filters/SVGFESpecularLighting.h:
+        * platform/graphics/svg/filters/SVGFETile.h:
+        * platform/graphics/svg/filters/SVGFETurbulence.cpp:
+        * platform/graphics/svg/filters/SVGFETurbulence.h:
+        * platform/graphics/svg/filters/SVGFilterEffect.cpp:
+        * platform/graphics/svg/filters/SVGFilterEffect.h:
+        * platform/graphics/svg/filters/SVGLightSource.cpp:
+        * platform/graphics/svg/filters/SVGLightSource.h:
+        * platform/graphics/svg/filters/SVGPointLightSource.h:
+        * platform/graphics/svg/filters/SVGSpotLightSource.h:
+        * platform/graphics/svg/filters/cg/SVGFEBlendCg.mm:
+        (WebCore::SVGFEBlend::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEColorMatrixCg.mm:
+        (WebCore::SVGFEColorMatrix::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEComponentTransferCg.mm:
+        (WebCore::SVGFEComponentTransfer::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFECompositeCg.mm:
+        (WebCore::SVGFEComposite::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEDiffuseLightingCg.mm:
+        (WebCore::SVGFEDiffuseLighting::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEDisplacementMapCg.mm:
+        (WebCore::SVGFEDisplacementMap::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEFloodCg.mm:
+        (WebCore::SVGFEFlood::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEHelpersCg.h:
+        * platform/graphics/svg/filters/cg/SVGFEImageCg.mm:
+        (WebCore::SVGFEImage::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFEMergeCg.mm:
+        (WebCore::SVGFEMerge::getCIFilter):
+        * platform/graphics/svg/filters/cg/SVGFESpecularLightingCg.mm:
+        (WebCore::SVGFESpecularLighting::getCIFilter):
+        * platform/graphics/svg/mac: Added.
+        * platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.h: Added.
+        * platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.mm: Added.
+        (WebCore::SVGResourceFilterPlatformDataMac::SVGResourceFilterPlatformDataMac):
+        (WebCore::SVGResourceFilterPlatformDataMac::~SVGResourceFilterPlatformDataMac):
+        (WebCore::SVGResourceFilterPlatformDataMac::getCIFilterStack):
+        (WebCore::alphaImageForImage):
+        (WebCore::SVGResourceFilterPlatformDataMac::imageForName):
+        (WebCore::SVGResourceFilterPlatformDataMac::setImageForName):
+        (WebCore::SVGResourceFilterPlatformDataMac::setOutputImage):
+        (WebCore::SVGResourceFilterPlatformDataMac::inputImage):
+
 2007-10-28  Alexey Proskuryakov  <ap@webkit.org>
 
         Reviewed by Adam Roben.
index f53cae86ca42775ec2db6eb81b3d8a9f4f0f827b..ed59ba18fd2f8d1c1694c27ec09225e1c53960bc 100644 (file)
                A86629D209DA2B48009633A5 /* JSMouseEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */; };
                A86629D309DA2B48009633A5 /* JSKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */; };
                A86629D409DA2B48009633A5 /* JSKeyboardEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */; };
+               A869385C0CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A869385A0CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.mm */; };
+               A86938D00CD4931300B666A1 /* SVGResourceFilterPlatformDataMac.h in Headers */ = {isa = PBXBuildFile; fileRef = A86938590CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.h */; };
                A871D4560A127CBC00B12A68 /* HTMLPlugInElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D44C0A127CBC00B12A68 /* HTMLPlugInElement.h */; };
                A871D4570A127CBC00B12A68 /* HTMLPlugInElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871D44D0A127CBC00B12A68 /* HTMLPlugInElement.cpp */; };
                A871D4580A127CBC00B12A68 /* HTMLParamElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871D44E0A127CBC00B12A68 /* HTMLParamElement.h */; };
                A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMouseEvent.cpp; sourceTree = "<group>"; };
                A86629CD09DA2B47009633A5 /* JSKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSKeyboardEvent.h; sourceTree = "<group>"; };
                A86629CE09DA2B47009633A5 /* JSKeyboardEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSKeyboardEvent.cpp; sourceTree = "<group>"; };
+               A86938590CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SVGResourceFilterPlatformDataMac.h; path = mac/SVGResourceFilterPlatformDataMac.h; sourceTree = "<group>"; };
+               A869385A0CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SVGResourceFilterPlatformDataMac.mm; path = mac/SVGResourceFilterPlatformDataMac.mm; sourceTree = "<group>"; };
                A871D44C0A127CBC00B12A68 /* HTMLPlugInElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLPlugInElement.h; sourceTree = "<group>"; };
                A871D44D0A127CBC00B12A68 /* HTMLPlugInElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPlugInElement.cpp; sourceTree = "<group>"; };
                A871D44E0A127CBC00B12A68 /* HTMLParamElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HTMLParamElement.h; sourceTree = "<group>"; };
                        name = XML;
                        sourceTree = "<group>";
                };
+               A86938690CD487DE00B666A1 /* mac */ = {
+                       isa = PBXGroup;
+                       children = (
+                               A86938590CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.h */,
+                               A869385A0CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.mm */,
+                       );
+                       name = mac;
+                       sourceTree = "<group>";
+               };
                A8C0F6E9089701F100BA5114 /* ksvg2 */ = {
                        isa = PBXGroup;
                        children = (
                B2A015960AF6CD53006BCE0E /* svg */ = {
                        isa = PBXGroup;
                        children = (
+                               A86938690CD487DE00B666A1 /* mac */,
                                B2A015970AF6CD53006BCE0E /* cg */,
                                B2E27BDD0B0F2AE500F17C7B /* filters */,
                                A8C9DD250B4374260097883A /* SVGImage.cpp */,
                                E15863990CD10B730066E2C9 /* TextCodecUserDefined.h in Headers */,
                                BC0B36A50CD3C67C00AC7EB5 /* Console.h in Headers */,
                                BC98543E0CD3D98C00069BC1 /* JSConsole.h in Headers */,
+                               A86938D00CD4931300B666A1 /* SVGResourceFilterPlatformDataMac.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                E158639A0CD10B730066E2C9 /* TextCodecUserDefined.cpp in Sources */,
                                BC0B36A40CD3C67C00AC7EB5 /* Console.cpp in Sources */,
                                BC98543D0CD3D98B00069BC1 /* JSConsole.cpp in Sources */,
+                               A869385C0CD4831500B666A1 /* SVGResourceFilterPlatformDataMac.mm in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index 8d4579c293f78b8b618a77b27139e8636af25ab8..ec52d404f5372b4b079a595b4748c1ce67907425 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <wildfox@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -30,9 +28,9 @@
 namespace WebCore {
 
 FloatPoint3D::FloatPoint3D()
-    : m_x(0)
-    , m_y(0)
-    , m_z(0)
+    : m_x(0.f)
+    , m_y(0.f)
+    , m_z(0.f)
 {
 }
 
index 276f75d3781205d81f67315339b740b8d4acb943..55f70e753a0a667ceef240bcb0f16ccca7712e48 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <wildfox@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 9623a0ae3719e1e13f634b8786e3ef2f28a46297..c0f0616018b6c9ae466e3bdc9c56630d8d27f36f 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
 
 namespace WebCore {
 
+SVGResourceFilter::SVGResourceFilter()
+    : m_platformData(createPlatformData())
+    , m_filterBBoxMode(false)
+    , m_effectBBoxMode(false)
+    , m_xBBoxMode(false)
+    , m_yBBoxMode(false)
+{
+}
+
 void SVGResourceFilter::clearEffects()
 {
     m_effects.clear();
index a9131a0793e8b15200b0f97cd076b8a59f8d920f..cadf8cc05eeeba73088a2af59b531c0828fe7424 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
 #ifndef SVGResourceFilter_h
 #define SVGResourceFilter_h
 
+#include "config.h"
+
 #if ENABLE(SVG) && ENABLE(SVG_EXPERIMENTAL_FEATURES)
 #include "SVGResource.h"
 #include "SVGFilterEffect.h"
 
 #include "FloatRect.h"
 
-#if PLATFORM(CI)
-#include <ApplicationServices/ApplicationServices.h>
-
-#ifdef __OBJC__
-@class CIImage;
-@class CIFilter;
-@class CIContext;
-@class NSArray;
-@class NSMutableDictionary;
-#else
-class CIImage;
-class CIFilter;
-class CIContext;
-class NSArray;
-class NSMutableDictionary;
-#endif
-#endif
-
-#include <wtf/RetainPtr.h>
+#include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
 class GraphicsContext;
 class SVGFilterEffect;
+    
+class SVGResourceFilterPlatformData {};
 
 class SVGResourceFilter : public SVGResource {
 public:
-    // To be implemented in platform specific code.
     SVGResourceFilter();
-    virtual ~SVGResourceFilter();
     
     virtual SVGResourceType resourceType() const { return FilterResourceType; }
 
@@ -88,24 +70,14 @@ public:
     // To be implemented in platform specific code.
     void prepareFilter(GraphicsContext*&, const FloatRect& bbox);
     void applyFilter(GraphicsContext*&, const FloatRect& bbox);
-
-#if PLATFORM(CI)
-    CIImage* imageForName(const String&) const;
-    void setImageForName(CIImage*, const String&);
-
-    void setOutputImage(const SVGFilterEffect*, CIImage*);
-    CIImage* inputImage(const SVGFilterEffect*);
-#endif
-
+    
+    SVGResourceFilterPlatformData* platformData() { return m_platformData.get(); }
+    const Vector<SVGFilterEffect*>& effects() { return m_effects; }
+    
 private:
-    // FIXME: This should be pulled out of this header and into platform-specific static methods and private data
-#if PLATFORM(CI)
-    NSArray* getCIFilterStack(CIImage* inputImage, const FloatRect& bbox);
-
-    CIContext* m_filterCIContext;
-    CGLayerRef m_filterCGLayer;
-    RetainPtr<NSMutableDictionary> m_imagesByName;
-#endif
+    SVGResourceFilterPlatformData* createPlatformData();
+    
+    OwnPtr<SVGResourceFilterPlatformData> m_platformData;
 
     bool m_filterBBoxMode : 1;
     bool m_effectBBoxMode : 1;
index 26b4c2230e31b182334f1f1e4484f5514247085b..3d909afda07e97641b97b6ef10ba78a40e89a338 100644 (file)
 
 namespace WebCore {
 
-SVGResourceFilter::SVGResourceFilter()
-{
-}
-
-SVGResourceFilter::~SVGResourceFilter()
+SVGResourceFilterPlatformData* SVGResourceFilter::createPlatformData()
 {
+    return 0;
 }
 
 void SVGResourceFilter::prepareFilter(GraphicsContext*&, const FloatRect&)
index 1565cfa28ba4328bf5579593a9bdeee31c3fef6f..4507933f31ce721074ede1c698f56a24f7b2f807 100644 (file)
 #include "config.h"
 
 #if ENABLE(SVG) && ENABLE(SVG_EXPERIMENTAL_FEATURES)
+#include "SVGResourceFilter.h"
+
 #include "AffineTransform.h"
 #include "FoundationExtras.h"
 #include "GraphicsContext.h"
-#include "SVGResourceFilter.h"
 
 #include "SVGFEBlend.h"
 #include "SVGFEColorMatrix.h"
@@ -45,6 +46,7 @@
 #include "SVGFEOffset.h"
 #include "SVGFESpecularLighting.h"
 #include "SVGFETile.h"
+#include "SVGResourceFilterPlatformDataMac.h"
 
 #include <QuartzCore/CoreImage.h>
 
 
 namespace WebCore {
 
-static const char* const SVGPreviousFilterOutputName = "__previousOutput__";
-
-SVGResourceFilter::SVGResourceFilter()
-    : m_filterCIContext(0)
-    , m_filterCGLayer(0)
-    , m_imagesByName(AdoptNS, [[NSMutableDictionary alloc] init])
-    , m_filterBBoxMode(false)
-    , m_effectBBoxMode(false)
-    , m_xBBoxMode(false)
-    , m_yBBoxMode(false)
-{
-}
-
-SVGResourceFilter::~SVGResourceFilter()
+SVGResourceFilterPlatformData* SVGResourceFilter::createPlatformData()
 {
-    ASSERT(!m_filterCGLayer);
-    ASSERT(!m_filterCIContext);
+    return new SVGResourceFilterPlatformDataMac(this);
 }
 
 void SVGResourceFilter::prepareFilter(GraphicsContext*& context, const FloatRect& bbox)
@@ -77,6 +65,8 @@ void SVGResourceFilter::prepareFilter(GraphicsContext*& context, const FloatRect
     if (bbox.isEmpty() || m_effects.isEmpty())
         return;
 
+    SVGResourceFilterPlatformDataMac* platform = static_cast<SVGResourceFilterPlatformDataMac*>(platformData());
+    
     CGContextRef cgContext = context->platformContext();
 
     // Use of CGBegin/EndTransparencyLayer around this call causes over release
@@ -86,7 +76,7 @@ void SVGResourceFilter::prepareFilter(GraphicsContext*& context, const FloatRect
     // <http://bugs.webkit.org/show_bug.cgi?id=6947>
     // <rdar://problem/4647735>
     NSAutoreleasePool* filterContextPool = [[NSAutoreleasePool alloc] init];
-    m_filterCIContext = HardRetain([CIContext contextWithCGContext:cgContext options:nil]);
+    platform->m_filterCIContext = HardRetain([CIContext contextWithCGContext:cgContext options:nil]);
     [filterContextPool drain];
 
     FloatRect filterRect = filterBBoxForItemBBox(bbox);
@@ -96,9 +86,9 @@ void SVGResourceFilter::prepareFilter(GraphicsContext*& context, const FloatRect
     float width = filterRect.width();
     float height = filterRect.height();
 
-    m_filterCGLayer = [m_filterCIContext createCGLayerWithSize:CGSizeMake(width, height) info:NULL];
+    platform->m_filterCGLayer = [platform->m_filterCIContext createCGLayerWithSize:CGSizeMake(width, height) info:NULL];
 
-    context = new GraphicsContext(CGLayerGetContext(m_filterCGLayer));
+    context = new GraphicsContext(CGLayerGetContext(platform->m_filterCGLayer));
     context->save();
 
     context->translate(-filterRect.x(), -filterRect.y());
@@ -132,9 +122,11 @@ void SVGResourceFilter::applyFilter(GraphicsContext*& context, const FloatRect&
     if (bbox.isEmpty() || m_effects.isEmpty())
         return;
 
+    SVGResourceFilterPlatformDataMac* platform = static_cast<SVGResourceFilterPlatformDataMac*>(platformData());
+    
     // actually apply the filter effects
-    CIImage* inputImage = [CIImage imageWithCGLayer:m_filterCGLayer];
-    NSArray* filterStack = getCIFilterStack(inputImage, bbox);
+    CIImage* inputImage = [CIImage imageWithCGLayer:platform->m_filterCGLayer];
+    NSArray* filterStack = platform->getCIFilterStack(inputImage, bbox);
     if ([filterStack count]) {
         CIImage* outputImage = [[filterStack lastObject] valueForKey:@"outputImage"];
 
@@ -147,95 +139,20 @@ void SVGResourceFilter::applyFilter(GraphicsContext*& context, const FloatRect&
             FloatPoint destOrigin = filterRect.location();
             filterRect.setLocation(FloatPoint(0.0f, 0.0f));
 
-            [m_filterCIContext drawImage:outputImage atPoint:CGPoint(destOrigin) fromRect:filterRect];
+            [platform->m_filterCIContext drawImage:outputImage atPoint:CGPoint(destOrigin) fromRect:filterRect];
         }
     }
 
-    CGLayerRelease(m_filterCGLayer);
-    m_filterCGLayer = 0;
+    CGLayerRelease(platform->m_filterCGLayer);
+    platform->m_filterCGLayer = 0;
 
-    HardRelease(m_filterCIContext);
-    m_filterCIContext = 0;
+    HardRelease(platform->m_filterCIContext);
+    platform->m_filterCIContext = 0;
 
     delete context;
     context = 0;
 }
 
-NSArray* SVGResourceFilter::getCIFilterStack(CIImage* inputImage, const FloatRect& bbox)
-{
-    NSMutableArray* filterEffects = [NSMutableArray array];
-
-    setImageForName(inputImage, "SourceGraphic"); // input
-
-    for (unsigned int i = 0; i < m_effects.size(); i++) {
-        CIFilter* filter = m_effects[i]->getCIFilter(bbox);
-        if (filter)
-            [filterEffects addObject:filter];
-    }
-
-    [m_imagesByName.get() removeAllObjects]; // clean up before next time.
-
-    return filterEffects;
-}
-
-CIImage* SVGResourceFilter::imageForName(const String& name) const
-{
-    return [m_imagesByName.get() objectForKey:name];
-}
-
-void SVGResourceFilter::setImageForName(CIImage* image, const String& name)
-{
-    [m_imagesByName.get() setValue:image forKey:name];
-}
-
-void SVGResourceFilter::setOutputImage(const SVGFilterEffect* filterEffect, CIImage* output)
-{
-    if (!filterEffect->result().isEmpty())
-        setImageForName(output, filterEffect->result());
-
-    setImageForName(output, SVGPreviousFilterOutputName);
-}
-
-static inline CIImage* alphaImageForImage(CIImage* image)
-{
-    CIFilter* onlyAlpha = [CIFilter filterWithName:@"CIColorMatrix"];
-    CGFloat zero[4] = {0, 0, 0, 0};
-    [onlyAlpha setDefaults];
-    [onlyAlpha setValue:image forKey:@"inputImage"];
-    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputRVector"];
-    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputGVector"];
-    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputBVector"];
-    return [onlyAlpha valueForKey:@"outputImage"];
-}
-
-CIImage* SVGResourceFilter::inputImage(const SVGFilterEffect* filterEffect)
-{
-    if (filterEffect->in().isEmpty()) {
-        CIImage* inImage = imageForName(SVGPreviousFilterOutputName);
-
-        if (!inImage)
-            inImage = imageForName("SourceGraphic");
-
-        return inImage;
-    } else if (filterEffect->in() == "SourceAlpha") {
-        CIImage* sourceAlpha = imageForName(filterEffect->in());
-
-        if (!sourceAlpha) {
-            CIImage* sourceGraphic = imageForName("SourceGraphic");
-
-            if (!sourceGraphic)
-                return nil;
-
-            sourceAlpha = alphaImageForImage(sourceGraphic);
-            setImageForName(sourceAlpha, "SourceAlpha");
-        }
-
-        return sourceAlpha;
-    }
-
-    return imageForName(filterEffect->in());
-}
-
 }
 
 #endif // ENABLE(SVG) ENABLE(SVG_EXPERIMENTAL_FEATURES)
index 35460951e9771850234606bb2ff6312340fea13d..c0e1e89647b03be465e4dba5ccecb3dddca484cd 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 370a0ee6266a6b0e359b6f916467a5f6eda96996..cff5abd39bf761527bc7857f7c56193f5291a379 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index ad1beab09dc865fa945bb29d9a18cd8da0aa2cd8..9ce90fd7faf97ee742d94256e5dbd33cdb0f0cbe 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index deb83abe8a15b0b84ca91a3dcde716eaf8f6e865..a73c5d78cae983e07b876b342a3c3efc67be55c3 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index cc22af5d23308c7d1fcd780cb2c7806998caefd3..50312fe6aacd32fb4cf8b0c526eff12b1fa0bcc9 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 270ee2260729665555e260a400417ae501e9e4c1..f7ab4911a04575b7c8b7bf32b1bafa6f855d2cc6 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index f7e2b619add700d11495ab6ec0c27e75e3e44a11..8c22959d0896dd4a989fd2dd9c657194300f5db1 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 18ec1f5d685e8b1572646ed55fff5cae4ee06daa..d65f5d78494cbdc12004151ddab7a86b0c93008e 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index ce3dfa2b584cb04690edbf014c82856d5994e223..f06d7d6e1b0e3da1154543465e4d25d2661a795b 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 60513ee419b1140d51cabeb9b96624f1bb08f092..dda7ad42189b1dd28c76dbaa68ee146c897dc866 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index ed502701c463105f3ecf8c9c12767e6091800723..f62f42f75c6d4e436c00f7d65e29c3f99d86c502 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 939ed1b5845cb6431fba00527ee31f8b884fc04e..0840bd9c82922373ea3dc9ecff820ee27f48db06 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 1daa021f8ffe76c2e97b47bbca4285ead6f21cba..bc4bd7a062364c90ba3863b1bfe652d6de4b12bf 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index fa24e0927fcd343ea6ac323ccde99af325bfd0fe..1fdf9613b3d39669945fc68c601ab585937dfec4 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 8df4d23b2f264341fe026694318466489a8edc95..4267e92c3c5098821baf054ae9f3cfef8345859c 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 5d76630e8c830b107de249b418adabe949a2dad7..4e6a48ce0a5e0582de9fdbbdbe1dcfcf5e5caadb 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index dd6bdab47feacde6197db7f256c358f10442a2a9..6984fc9cb883ac006b6a4fa2080a238cc2bdb2e6 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index a127e075313667b7f448c5fac81df3ce323d3870..40b0297d3d7e7a6339e4b9c23069dcd1ce473cec 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 2ca161c09de34239d924a1a5dad210294d637409..38da6c06bccc6a67b654dfe18211369cf9384945 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index c6d575824286b958e8f41ed2f51e5249b97645f8..c4d836db2649310bb97068fa9c7a795801881cdf 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 4154656e02e924aaf564e80253124caa0c99250e..e828b9a6f05ee2a69d6e4a5beaed4d7f78708bd9 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 7927ee67c76247f6883e465f477a158b0278615e..81d338f165a4b1c52ad29e8606dfc9086d5e6d30 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 29845e3a6b0d75fe3b13002ccae2f7ce4a63aeac..4c1b9e4c501046adde1d57333a888b135c3a2210 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 36ef57cc4d5fa602d03783925e6f73ee98092833..d046005075c4a89f143035bb96acf128a3e8352d 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index ae8e00ec8e18c51ecf7202a9094636dad7496af8..dc288de0b816292211922f112436448c2f429bea 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 857dd3a3bc0a70979a5ea29bf8e8c90108ed3e1f..bae477e1499015d71eff5d58983d8f49443ff57f 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 7283425be855d47d7b5f756f28d9f766d9332b4e..b15782f1800ac9c6f8c9aa136c0e69105690c00e 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 5de4dd5175da2f18c0e20ab91d4e87a703673698..0399982feea64b5fd68653e3396de6c9b835235b 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index b7213f5e90d175ec569fa9033d65bb6ff487c266..beb8dcbd5b9bad9714d9f94a507c8ff48478b0f7 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index fe8fe65e6dba62796cce4bbfb3b8f89151c2bdc4..0f0bb19a8a8091d953ae186c09b93f3cad5459ef 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 361839a705808bc97ee0b82055443925371fe42b..ca61fad42c5cae2a294c61f9f195e003d4b42429 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 28d3a1d289e00ba39ac0519e92a1fb988f9b70a8..8fc1aa4c1c1ce43059dce978fd33205505e29b18 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 581dede2b1c179d318cc8cb23c393458262cb3b9..e5b046d30aa544c6365c08ba3d925b14d5938ef3 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 817f0919fab2b12816e0770ec5eba083274388ab..f043f05738a748475137880a647903280b10523c 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 84670fa9785a2543836471def03eaa51ba160e5c..1e86f0eece653276815a439a8070d87929283a87 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 6bc98a1aa09b4622ec7fbefa46632d38f74fb246..23b93402f8cf303ed69e3ecdfcacb6f7146cd6d8 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index b726211d5dc1e4127cf34045ad345f8c86e18ac5..05844b9c64588edea5ac7bf6883c7e1060fcd577 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index c42165fddb67153d85fdece0c97dd298781b7a1b..7666810a99514afd50917ad42144a324065dce8b 100644 (file)
@@ -1,9 +1,7 @@
 /*
     Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005 Rob Buis <buis@kde.org>
-                  2005 Eric Seidel <eric.seidel@kdemail.net>
-
-    This file is part of the KDE project
+                  2005 Eric Seidel <eric@webkit.org>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
index 1f7e3c1bf11c9851730d0df1f4a19fec8cc80508..ff115a3b2791076d1ac5629e1aa8c3f4e2b5a7d6 100644 (file)
@@ -30,6 +30,7 @@ namespace WebCore {
 CIFilter* SVGFEBlend::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
 
@@ -59,11 +60,11 @@ CIFilter* SVGFEBlend::getCIFilter(const FloatRect& bbox) const
 
     [filter setDefaults];
 
-    CIImage* inputImage = svgFilter->inputImage(this);
+    CIImage* inputImage = filterPlatformData->inputImage(this);
     FE_QUARTZ_CHECK_INPUT(inputImage);
     [filter setValue:inputImage forKey:@"inputImage"];
 
-    CIImage* backgroundImage = svgFilter->imageForName(in2());
+    CIImage* backgroundImage = filterPlatformData->imageForName(in2());
     FE_QUARTZ_CHECK_INPUT(backgroundImage);
     [filter setValue:backgroundImage forKey:@"inputBackgroundImage"];
 
index 46335355366a4711ba34a7fa0f4cecfd1be3f829..9ebb42ece6c2c4b588cd16f18df4c6e082d34aa3 100644 (file)
@@ -40,6 +40,7 @@ namespace WebCore {
 CIFilter* SVGFEColorMatrix::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     switch (type()) {
@@ -97,7 +98,7 @@ CIFilter* SVGFEColorMatrix::getCIFilter(const FloatRect& bbox) const
     LOG_ERROR("Unhandled ColorMatrix type: %i", type());
     return nil;
     }
-    CIImage *inputImage = svgFilter->inputImage(this);
+    CIImage *inputImage = filterPlatformData->inputImage(this);
     FE_QUARTZ_CHECK_INPUT(inputImage);
     [filter setValue:inputImage forKey:@"inputImage"];
 
index fcff87966986b59ef9a280550fad071c608c4aee..284a5506c2566475b549ee9b1abba4584db5aeaf 100644 (file)
@@ -143,13 +143,14 @@ CIFilter* SVGFEComponentTransfer::getCIFilter(const FloatRect& bbox) const
     [WKGammaTransferFilter class];
 
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     filter = [CIFilter filterWithName:@"WKComponentMerge"];
     if (!filter)
         return nil;
     [filter setDefaults];
-    CIImage* inputImage = svgFilter->inputImage(this);
+    CIImage* inputImage = filterPlatformData->inputImage(this);
     FE_QUARTZ_CHECK_INPUT(inputImage);
 
     [filter setValue:getFunctionFilter(SVG_CHANNEL_R, inputImage) forKey:@"inputFuncR"];
index c40ef4b3ad732c5231d95a66c97fad13acb6633d..4b28ed136e05abde867050c65f2ed103835ae23c 100644 (file)
@@ -32,6 +32,7 @@ namespace WebCore {
 CIFilter* SVGFEComposite::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
 
@@ -61,8 +62,8 @@ CIFilter* SVGFEComposite::getCIFilter(const FloatRect& bbox) const
     }
 
     [filter setDefaults];
-    CIImage* inputImage = svgFilter->inputImage(this);
-    CIImage* backgroundImage = svgFilter->imageForName(in2());
+    CIImage* inputImage = filterPlatformData->inputImage(this);
+    CIImage* backgroundImage = filterPlatformData->imageForName(in2());
     FE_QUARTZ_CHECK_INPUT(inputImage);
     FE_QUARTZ_CHECK_INPUT(backgroundImage);
     [filter setValue:inputImage forKey:@"inputImage"];
index 526e6f073859c30a41a193f277c5ef1e17a32c12..2a537888127b01ff6001a4cd70c3803d1652c006 100644 (file)
@@ -38,6 +38,8 @@ CIFilter* SVGFEDiffuseLighting::getCIFilter(const FloatRect& bbox) const
     [WKDiffuseLightingFilter class];
 
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
+
     CIFilter* filter;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     filter = [CIFilter filterWithName:@"WKDiffuseLighting"];
@@ -45,7 +47,7 @@ CIFilter* SVGFEDiffuseLighting::getCIFilter(const FloatRect& bbox) const
         return nil;
 
     [filter setDefaults];
-    CIImage* inputImage = svgFilter->inputImage(this);
+    CIImage* inputImage = filterPlatformData->inputImage(this);
     FE_QUARTZ_CHECK_INPUT(inputImage);
     CIFilter* normals = getNormalMap(inputImage, surfaceScale());
     if (!normals)
index ec78fa493c4e32e41ce3e80545761d7a4b57f73c..90646d638d57f16d0987b9d12cb720b55b8178f4 100644 (file)
@@ -32,13 +32,15 @@ namespace WebCore {
 CIFilter* SVGFEDisplacementMap::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
+
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     [WKDisplacementMapFilter class];
     filter = [CIFilter filterWithName:@"WKDisplacementMapFilter"];
     [filter setDefaults];
-    CIImage* inputImage = svgFilter->inputImage(this);
-    CIImage* displacementMap = svgFilter->imageForName(in2());
+    CIImage* inputImage = filterPlatformData->inputImage(this);
+    CIImage* displacementMap = filterPlatformData->imageForName(in2());
     FE_QUARTZ_CHECK_INPUT(inputImage);
     FE_QUARTZ_CHECK_INPUT(displacementMap);
     [filter setValue:inputImage forKey:@"inputImage"];
index ba539e30cb5719b252393730ca523fde7dab69a3..8f782aa815b8fae22747912456019b7b51464be5 100644 (file)
@@ -33,6 +33,7 @@ namespace WebCore {
 CIFilter* SVGFEFlood::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     filter = [CIFilter filterWithName:@"CIConstantColorGenerator"];
index 0930fa1d32f00e55ecf232858f52e227b71e19fc..68aef68af538aefd9366cf98861dc45072e7e6ff 100644 (file)
@@ -24,6 +24,7 @@
 #include "BlockExceptions.h"
 #include "SVGFEDisplacementMap.h"
 #include "SVGResourceFilter.h"
+#include "SVGResourceFilterPlatformDataMac.h"
 #include <QuartzCore/CoreImage.h>
 #include <wtf/MathExtras.h>
 
@@ -44,7 +45,8 @@ CIFilter* getNormalMap(CIImage* bumpMap, float scale);
 
 // Macros used by the SVGFE*Cg classes
 #define FE_QUARTZ_SETUP_INPUT(name) \
-    CIImage* inputImage = svgFilter->inputImage(this); \
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData()); \
+    CIImage* inputImage = filterPlatformData->inputImage(this); \
     FE_QUARTZ_CHECK_INPUT(inputImage) \
     CIFilter* filter; \
     BEGIN_BLOCK_OBJC_EXCEPTIONS; \
@@ -57,7 +59,7 @@ CIFilter* getNormalMap(CIImage* bumpMap, float scale);
         return nil;
 
 #define FE_QUARTZ_OUTPUT_RETURN \
-    svgFilter->setOutputImage(this, [filter valueForKey:@"outputImage"]); \
+    filterPlatformData->setOutputImage(this, [filter valueForKey:@"outputImage"]); \
     return filter; \
     END_BLOCK_OBJC_EXCEPTIONS; \
     return nil;
index 9148c64df900ece0b9b07ceb184e8374bc544150..6e94db2ebc3a4031fb1b1eeb7ed61c7eee0c063e 100644 (file)
@@ -36,6 +36,8 @@ CIFilter* SVGFEImage::getCIFilter(const FloatRect& bbox) const
         return nil;
 
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
+
     CIFilter* filter;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     CIImage* ciImage = [CIImage imageWithCGImage:cachedImage()->image()->getCGImageRef()];
index fb50e93de046b511f729e16809d878eb1fbc50b0..dbb23890adc5b7b2feb10eaec9b201662ce580b9 100644 (file)
@@ -30,13 +30,15 @@ namespace WebCore {
 CIFilter* SVGFEMerge::getCIFilter(const FloatRect& bbox) const
 {
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
+
     CIFilter* filter = nil;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     const Vector<String>& inputs = mergeInputs();
 
-    CIImage* previousOutput = svgFilter->inputImage(this);
+    CIImage* previousOutput = filterPlatformData->inputImage(this);
     for (unsigned x = 0; x < inputs.size(); x++) {
-        CIImage* inputImage = svgFilter->imageForName(inputs[x]);
+        CIImage* inputImage = filterPlatformData->imageForName(inputs[x]);
         FE_QUARTZ_CHECK_INPUT(inputImage);
         FE_QUARTZ_CHECK_INPUT(previousOutput);
         filter = [CIFilter filterWithName:@"CISourceOverCompositing"];
index c944e16d1b21ec6fd22b9d43eacb009f5e746f90..b8a208b09f0473eb5e5d6833673aa375f8cd970b 100644 (file)
@@ -38,11 +38,12 @@ CIFilter* SVGFESpecularLighting::getCIFilter(const FloatRect& bbox) const
     [WKSpecularLightingFilter class];
 
     SVGResourceFilter* svgFilter = filter();
+    SVGResourceFilterPlatformDataMac* filterPlatformData = static_cast<SVGResourceFilterPlatformDataMac*>(svgFilter->platformData());
     CIFilter* filter;
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
     filter = [CIFilter filterWithName:@"WKSpecularLighting"];
     [filter setDefaults];
-    CIImage* inputImage = svgFilter->inputImage(this);
+    CIImage* inputImage = filterPlatformData->inputImage(this);
     FE_QUARTZ_CHECK_INPUT(inputImage);
     CIFilter* normals = getNormalMap(inputImage, surfaceScale());
     if (!normals)
diff --git a/WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.h b/WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.h
new file mode 100644 (file)
index 0000000..75c6692
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef SVGResourceFilterPlatformDataMac_h
+#define SVGResourceFilterPlatformDataMac_h
+
+#include "SVGResourceFilter.h"
+
+#include <ApplicationServices/ApplicationServices.h>
+#include <wtf/RetainPtr.h>
+
+@class CIImage;
+@class CIFilter;
+@class CIContext;
+@class NSArray;
+@class NSMutableDictionary;
+
+namespace WebCore {
+    class SVGResourceFilterPlatformDataMac : public SVGResourceFilterPlatformData {
+    public:
+        SVGResourceFilterPlatformDataMac(SVGResourceFilter*);
+        ~SVGResourceFilterPlatformDataMac();
+        
+        CIImage* imageForName(const String&) const;
+        void setImageForName(CIImage*, const String&);
+        
+        void setOutputImage(const SVGFilterEffect*, CIImage*);
+        CIImage* inputImage(const SVGFilterEffect*);
+        
+        NSArray* getCIFilterStack(CIImage* inputImage, const FloatRect& bbox);
+        
+        CIContext* m_filterCIContext;
+        CGLayerRef m_filterCGLayer;
+        RetainPtr<NSMutableDictionary> m_imagesByName;
+        SVGResourceFilter* m_filter;
+    };
+}
+
+#endif // SVGResourceFilterPlatformDataMac_h
+
diff --git a/WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.mm b/WebCore/platform/graphics/svg/mac/SVGResourceFilterPlatformDataMac.mm
new file mode 100644 (file)
index 0000000..1af6847
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "SVGResourceFilterPlatformDataMac.h"
+#include <QuartzCore/CoreImage.h>
+
+namespace WebCore {
+
+static const char* const SVGPreviousFilterOutputName = "__previousOutput__";
+
+SVGResourceFilterPlatformDataMac::SVGResourceFilterPlatformDataMac(SVGResourceFilter* filter)
+    : m_filterCIContext(0)
+    , m_filterCGLayer(0)
+    , m_imagesByName(AdoptNS, [[NSMutableDictionary alloc] init])
+    , m_filter(filter)
+{
+}
+
+SVGResourceFilterPlatformDataMac::~SVGResourceFilterPlatformDataMac()
+{
+    ASSERT(!m_filterCGLayer);
+    ASSERT(!m_filterCIContext);
+}
+
+    
+NSArray* SVGResourceFilterPlatformDataMac::getCIFilterStack(CIImage* inputImage, const FloatRect& bbox)
+{
+    NSMutableArray* filterEffects = [NSMutableArray array];
+    
+    setImageForName(inputImage, "SourceGraphic"); // input
+    
+    for (unsigned int i = 0; i < m_filter->effects().size(); i++) {
+        CIFilter* filter = m_filter->effects()[i]->getCIFilter(bbox);
+        if (filter)
+            [filterEffects addObject:filter];
+    }
+    
+    [m_imagesByName.get() removeAllObjects]; // clean up before next time.
+    
+    return filterEffects;
+}
+    
+static inline CIImage* alphaImageForImage(CIImage* image)
+{
+    CIFilter* onlyAlpha = [CIFilter filterWithName:@"CIColorMatrix"];
+    CGFloat zero[4] = {0, 0, 0, 0};
+    [onlyAlpha setDefaults];
+    [onlyAlpha setValue:image forKey:@"inputImage"];
+    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputRVector"];
+    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputGVector"];
+    [onlyAlpha setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputBVector"];
+    return [onlyAlpha valueForKey:@"outputImage"];
+}
+
+CIImage* SVGResourceFilterPlatformDataMac::imageForName(const String& name) const
+{
+    return [m_imagesByName.get() objectForKey:name];
+}
+
+void SVGResourceFilterPlatformDataMac::setImageForName(CIImage* image, const String& name)
+{
+    [m_imagesByName.get() setValue:image forKey:name];
+}
+
+void SVGResourceFilterPlatformDataMac::setOutputImage(const SVGFilterEffect* filterEffect, CIImage* output)
+{
+    if (!filterEffect->result().isEmpty())
+        setImageForName(output, filterEffect->result());
+    
+    setImageForName(output, SVGPreviousFilterOutputName);
+}
+
+CIImage* SVGResourceFilterPlatformDataMac::inputImage(const SVGFilterEffect* filterEffect)
+{
+    if (filterEffect->in().isEmpty()) {
+        CIImage* inImage = imageForName(SVGPreviousFilterOutputName);
+        
+        if (!inImage)
+            inImage = imageForName("SourceGraphic");
+        
+        return inImage;
+    } else if (filterEffect->in() == "SourceAlpha") {
+        CIImage* sourceAlpha = imageForName(filterEffect->in());
+        
+        if (!sourceAlpha) {
+            CIImage* sourceGraphic = imageForName("SourceGraphic");
+            
+            if (!sourceGraphic)
+                return nil;
+            
+            sourceAlpha = alphaImageForImage(sourceGraphic);
+            setImageForName(sourceAlpha, "SourceAlpha");
+        }
+        
+        return sourceAlpha;
+    }
+    
+    return imageForName(filterEffect->in());
+}
+    
+
+}
index 5493af24587f177b82cd9b6a3dbc8ce17bb0e282..557f3dd731b772d177204018c71231acb4394f03 100644 (file)
 
 namespace WebCore {
 
-SVGResourceFilter::SVGResourceFilter()
-{
-}
-
-SVGResourceFilter::~SVGResourceFilter()
+SVGResourceFilterPlatformData* SVGResourceFilter::createPlatformData()
 {
+    return 0;
 }
 
 void SVGResourceFilter::prepareFilter(GraphicsContext*&, const FloatRect&)