[webkit-changes] cvs commit: WebCore/kwq KWQPainter.h KWQPainter.mm KWQRenderTreeDebug.cpp

Eric eseidel at opensource.apple.com
Sun Nov 27 03:02:38 PST 2005


eseidel     05/11/27 03:02:37

  Modified:    .        ChangeLog
               kcanvas  KCanvasItem.cpp KCanvasTreeDebug.cpp
                        KCanvasTreeDebug.h
               kcanvas/device KRenderingPaintServerGradient.cpp
               kcanvas/device/quartz KCanvasFilterQuartz.mm
                        KCanvasItemQuartz.mm KCanvasResourcesQuartz.mm
                        KRenderingPaintServerGradientQuartz.mm
                        KRenderingPaintServerQuartz.mm
               khtml/rendering render_canvas.cpp render_canvas.h
                        render_style.cpp
               ksvg2/css SVGRenderStyle.cpp
               ksvg2/misc KCanvasRenderingStyle.cpp KCanvasRenderingStyle.h
               ksvg2/svg SVGAElementImpl.cpp SVGClipPathElementImpl.cpp
                        SVGFEBlendElementImpl.cpp
                        SVGFEColorMatrixElementImpl.cpp
                        SVGFEComponentTransferElementImpl.cpp
                        SVGFECompositeElementImpl.cpp
                        SVGFEFloodElementImpl.cpp
                        SVGFEGaussianBlurElementImpl.cpp
                        SVGFEImageElementImpl.cpp SVGFEMergeElementImpl.cpp
                        SVGFEOffsetElementImpl.cpp SVGFETileElementImpl.cpp
                        SVGFETurbulenceElementImpl.cpp
                        SVGFilterElementImpl.cpp SVGGElementImpl.cpp
                        SVGGradientElementImpl.cpp SVGImageElementImpl.cpp
                        SVGMarkerElementImpl.cpp SVGPatternElementImpl.cpp
                        SVGSVGElementImpl.cpp SVGStyledElementImpl.cpp
                        SVGSwitchElementImpl.cpp SVGUseElementImpl.cpp
               kwq      KWQPainter.h KWQPainter.mm KWQRenderTreeDebug.cpp
  Log:
  Bug #: 5839
  Submitted by: eseidel
  Reviewed by: mjs
          No additional test cases necessary, fixes text dumps for all tests.
  
          Fixes included in this patch:
          - Closes all known leaks in WebKit+SVG
          - adds static KRenderingDevice *QPainter::renderingDevice()
          - removes RenderCanvas::renderingDevice()
          - removed RenderCanvas usage from KCanvasRenderingStyle
          Bug: http://bugzilla.opendarwin.org/show_bug.cgi?id=5839
  
          * kcanvas/KCanvasItem.cpp:
          (RenderPath::RenderPath): remove canvas from KCanvasRenderingStyle
          (RenderPath::~RenderPath): use QPainter::renderingDevice()
          (RenderPath::fillContains): remove unnecessary code.
          (RenderPath::strokeContains): remove unnecessary code.
          (RenderPath::relativeBBox): remove unnecessary code.
          (RenderPath::setupForDraw): remove unnecessary code.
          (RenderPath::changePath): added ASSERT
          * kcanvas/KCanvasTreeDebug.cpp:
          (operator<<): print absolute bbox instead of relative
          (getTagName): removed KSVG::
          (writeRenderResources): added
          * kcanvas/KCanvasTreeDebug.h: added writeRenderResources
          * kcanvas/device/KRenderingPaintServerGradient.cpp:
          (operator<<): style update
          * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
          (KCanvasFilterQuartz::applyFilter): delete filter context
          * kcanvas/device/quartz/KCanvasItemQuartz.mm:
          (KCanvasItemQuartz::paint): only push context if necessary
          * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
          (KCanvasContainerQuartz::paint): only push context if necessary
          * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
          (drawShadingWithStyle): use QPainter
          * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
          (KRenderingPaintServerSolidQuartz::draw): spacing cleanup
          * khtml/rendering/render_canvas.cpp: remove renderingDevice()
          (RenderCanvas::RenderCanvas): remove m_renderingDevice
          (RenderCanvas::~RenderCanvas): remove m_renderingDevice
          * khtml/rendering/render_canvas.h:
          * khtml/rendering/render_style.cpp:
          (RenderStyle::~RenderStyle): delete SVGRenderStyle
          * ksvg2/css/SVGRenderStyle.cpp:
          (SVGRenderStyle::~SVGRenderStyle): added
          * ksvg2/misc/KCanvasRenderingStyle.cpp:
          (KCanvasRenderingStyle::KCanvasRenderingStyle): remove canvas arg
          (KCanvasRenderingStyle::updateFill): use QPainter
          (KCanvasRenderingStyle::updateStroke): use QPainter
          * ksvg2/misc/KCanvasRenderingStyle.h:
          * ksvg2/svg/SVGAElementImpl.cpp:
          (SVGAElementImpl::createRenderer): use QPainter
          * ksvg2/svg/SVGClipPathElementImpl.cpp:
          (SVGClipPathElementImpl::~SVGClipPathElementImpl): delete resource
          (SVGClipPathElementImpl::canvasResource): use QPainter
          * ksvg2/svg/SVGFEBlendElementImpl.cpp:
          (SVGFEBlendElementImpl::~SVGFEBlendElementImpl): delete resource
          (SVGFEBlendElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
          (SVGFEColorMatrixElementImpl::~SVGFEColorMatrixElementImpl):
          (SVGFEColorMatrixElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
          (SVGFEComponentTransferElementImpl::~SVGFEComponentTransferElementImpl):
          (SVGFEComponentTransferElementImpl::filterEffect):  use QPainter
          * ksvg2/svg/SVGFECompositeElementImpl.cpp:
          (SVGFECompositeElementImpl::~SVGFECompositeElementImpl): delete rsc
          (SVGFECompositeElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEFloodElementImpl.cpp:
          (SVGFEFloodElementImpl::~SVGFEFloodElementImpl): delete resource
          (SVGFEFloodElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
          (SVGFEGaussianBlurElementImpl::~SVGFEGaussianBlurElementImpl):
          (SVGFEGaussianBlurElementImpl::filterEffect):  use QPainter
          * ksvg2/svg/SVGFEImageElementImpl.cpp:
          (SVGFEImageElementImpl::~SVGFEImageElementImpl): delete resource
          (SVGFEImageElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEMergeElementImpl.cpp:
          (SVGFEMergeElementImpl::~SVGFEMergeElementImpl): delete resource
          (SVGFEMergeElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
          (SVGFEOffsetElementImpl::~SVGFEOffsetElementImpl): delete resource
          (SVGFEOffsetElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFETileElementImpl.cpp:
          (SVGFETileElementImpl::~SVGFETileElementImpl): delete resource
          (SVGFETileElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
          (SVGFETurbulenceElementImpl::~SVGFETurbulenceElementImpl):
          (SVGFETurbulenceElementImpl::filterEffect): use QPainter
          * ksvg2/svg/SVGFilterElementImpl.cpp:
          (SVGFilterElementImpl::~SVGFilterElementImpl): delete resource
          (SVGFilterElementImpl::canvasResource): use QPainter
          * ksvg2/svg/SVGGElementImpl.cpp:
          (SVGGElementImpl::createRenderer): use QPainter
          * ksvg2/svg/SVGGradientElementImpl.cpp:
          (SVGGradientElementImpl::~SVGGradientElementImpl): delete resource
          (SVGGradientElementImpl::canvasResource): use QPainter
          (SVGGradientElementImpl::rebuildStops): deref style
          * ksvg2/svg/SVGImageElementImpl.cpp:
          (SVGImageElementImpl::createRenderer): use QPainter
          (SVGImageElementImpl::notifyFinished): use QPainter
          * ksvg2/svg/SVGMarkerElementImpl.cpp:
          (SVGMarkerElementImpl::~SVGMarkerElementImpl): delete resource
          (SVGMarkerElementImpl::canvasResource): use QPainter
          (SVGMarkerElementImpl::createRenderer): use QPainter
          * ksvg2/svg/SVGPatternElementImpl.cpp:
          (SVGPatternElementImpl::~SVGPatternElementImpl): delete resource
          (SVGPatternElementImpl::drawPatternContentIntoTile): use QPainter
          (SVGPatternElementImpl::createRenderer): use QPainter
          (SVGPatternElementImpl::canvasResource): use QPainter
          * ksvg2/svg/SVGSVGElementImpl.cpp:
          (SVGSVGElementImpl::createRenderer): use QPainter
          * ksvg2/svg/SVGStyledElementImpl.cpp:
          (SVGStyledElementImpl::createRenderer): use QPainter
          (SVGStyledElementImpl::updateCanvasItem): use QPainter
          (SVGStyledElementImpl::pushAttributeContext): use QPainter
          * ksvg2/svg/SVGSwitchElementImpl.cpp:
          (SVGSwitchElementImpl::createRenderer): use QPainter
          * ksvg2/svg/SVGUseElementImpl.cpp:
          (SVGUseElementImpl::createRenderer): use QPainter
          * kwq/KWQPainter.h:
          * kwq/KWQPainter.mm:
          (QPainter::renderingDevice): added
          * kwq/KWQRenderTreeDebug.cpp:
          (externalRepresentation): call writeRenderResources
  
  Revision  Changes    Path
  1.408     +126 -0    WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.407
  retrieving revision 1.408
  diff -u -r1.407 -r1.408
  --- ChangeLog	27 Nov 2005 07:54:46 -0000	1.407
  +++ ChangeLog	27 Nov 2005 11:02:10 -0000	1.408
  @@ -1,3 +1,129 @@
  +2005-11-26  Eric Seidel  <eseidel at apple.com>
  +
  +        Reviewed by mjs.
  +
  +        No additional test cases necessary, fixes text dumps for all tests.
  +
  +        Fixes included in this patch:
  +        - Closes all known leaks in WebKit+SVG
  +        - adds static KRenderingDevice *QPainter::renderingDevice()
  +        - removes RenderCanvas::renderingDevice()
  +        - removed RenderCanvas usage from KCanvasRenderingStyle
  +        Bug: http://bugzilla.opendarwin.org/show_bug.cgi?id=5839
  +
  +        * kcanvas/KCanvasItem.cpp:
  +        (RenderPath::RenderPath): remove canvas from KCanvasRenderingStyle
  +        (RenderPath::~RenderPath): use QPainter::renderingDevice()
  +        (RenderPath::fillContains): remove unnecessary code.
  +        (RenderPath::strokeContains): remove unnecessary code.
  +        (RenderPath::relativeBBox): remove unnecessary code.
  +        (RenderPath::setupForDraw): remove unnecessary code.
  +        (RenderPath::changePath): added ASSERT
  +        * kcanvas/KCanvasTreeDebug.cpp:
  +        (operator<<): print absolute bbox instead of relative
  +        (getTagName): removed KSVG::
  +        (writeRenderResources): added
  +        * kcanvas/KCanvasTreeDebug.h: added writeRenderResources
  +        * kcanvas/device/KRenderingPaintServerGradient.cpp:
  +        (operator<<): style update
  +        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
  +        (KCanvasFilterQuartz::applyFilter): delete filter context
  +        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
  +        (KCanvasItemQuartz::paint): only push context if necessary
  +        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
  +        (KCanvasContainerQuartz::paint): only push context if necessary
  +        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
  +        (drawShadingWithStyle): use QPainter
  +        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
  +        (KRenderingPaintServerSolidQuartz::draw): spacing cleanup
  +        * khtml/rendering/render_canvas.cpp: remove renderingDevice()
  +        (RenderCanvas::RenderCanvas): remove m_renderingDevice
  +        (RenderCanvas::~RenderCanvas): remove m_renderingDevice
  +        * khtml/rendering/render_canvas.h:
  +        * khtml/rendering/render_style.cpp:
  +        (RenderStyle::~RenderStyle): delete SVGRenderStyle
  +        * ksvg2/css/SVGRenderStyle.cpp:
  +        (SVGRenderStyle::~SVGRenderStyle): added
  +        * ksvg2/misc/KCanvasRenderingStyle.cpp:
  +        (KCanvasRenderingStyle::KCanvasRenderingStyle): remove canvas arg
  +        (KCanvasRenderingStyle::updateFill): use QPainter
  +        (KCanvasRenderingStyle::updateStroke): use QPainter
  +        * ksvg2/misc/KCanvasRenderingStyle.h:
  +        * ksvg2/svg/SVGAElementImpl.cpp:
  +        (SVGAElementImpl::createRenderer): use QPainter
  +        * ksvg2/svg/SVGClipPathElementImpl.cpp:
  +        (SVGClipPathElementImpl::~SVGClipPathElementImpl): delete resource
  +        (SVGClipPathElementImpl::canvasResource): use QPainter
  +        * ksvg2/svg/SVGFEBlendElementImpl.cpp:
  +        (SVGFEBlendElementImpl::~SVGFEBlendElementImpl): delete resource
  +        (SVGFEBlendElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
  +        (SVGFEColorMatrixElementImpl::~SVGFEColorMatrixElementImpl):
  +        (SVGFEColorMatrixElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
  +        (SVGFEComponentTransferElementImpl::~SVGFEComponentTransferElementImpl):
  +        (SVGFEComponentTransferElementImpl::filterEffect):  use QPainter
  +        * ksvg2/svg/SVGFECompositeElementImpl.cpp:
  +        (SVGFECompositeElementImpl::~SVGFECompositeElementImpl): delete rsc
  +        (SVGFECompositeElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEFloodElementImpl.cpp:
  +        (SVGFEFloodElementImpl::~SVGFEFloodElementImpl): delete resource
  +        (SVGFEFloodElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
  +        (SVGFEGaussianBlurElementImpl::~SVGFEGaussianBlurElementImpl):
  +        (SVGFEGaussianBlurElementImpl::filterEffect):  use QPainter
  +        * ksvg2/svg/SVGFEImageElementImpl.cpp:
  +        (SVGFEImageElementImpl::~SVGFEImageElementImpl): delete resource
  +        (SVGFEImageElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEMergeElementImpl.cpp:
  +        (SVGFEMergeElementImpl::~SVGFEMergeElementImpl): delete resource
  +        (SVGFEMergeElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
  +        (SVGFEOffsetElementImpl::~SVGFEOffsetElementImpl): delete resource
  +        (SVGFEOffsetElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFETileElementImpl.cpp:
  +        (SVGFETileElementImpl::~SVGFETileElementImpl): delete resource
  +        (SVGFETileElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
  +        (SVGFETurbulenceElementImpl::~SVGFETurbulenceElementImpl):
  +        (SVGFETurbulenceElementImpl::filterEffect): use QPainter
  +        * ksvg2/svg/SVGFilterElementImpl.cpp:
  +        (SVGFilterElementImpl::~SVGFilterElementImpl): delete resource
  +        (SVGFilterElementImpl::canvasResource): use QPainter
  +        * ksvg2/svg/SVGGElementImpl.cpp:
  +        (SVGGElementImpl::createRenderer): use QPainter
  +        * ksvg2/svg/SVGGradientElementImpl.cpp:
  +        (SVGGradientElementImpl::~SVGGradientElementImpl): delete resource
  +        (SVGGradientElementImpl::canvasResource): use QPainter
  +        (SVGGradientElementImpl::rebuildStops): deref style
  +        * ksvg2/svg/SVGImageElementImpl.cpp:
  +        (SVGImageElementImpl::createRenderer): use QPainter
  +        (SVGImageElementImpl::notifyFinished): use QPainter
  +        * ksvg2/svg/SVGMarkerElementImpl.cpp:
  +        (SVGMarkerElementImpl::~SVGMarkerElementImpl): delete resource
  +        (SVGMarkerElementImpl::canvasResource): use QPainter
  +        (SVGMarkerElementImpl::createRenderer): use QPainter
  +        * ksvg2/svg/SVGPatternElementImpl.cpp:
  +        (SVGPatternElementImpl::~SVGPatternElementImpl): delete resource
  +        (SVGPatternElementImpl::drawPatternContentIntoTile): use QPainter
  +        (SVGPatternElementImpl::createRenderer): use QPainter
  +        (SVGPatternElementImpl::canvasResource): use QPainter
  +        * ksvg2/svg/SVGSVGElementImpl.cpp:
  +        (SVGSVGElementImpl::createRenderer): use QPainter
  +        * ksvg2/svg/SVGStyledElementImpl.cpp:
  +        (SVGStyledElementImpl::createRenderer): use QPainter
  +        (SVGStyledElementImpl::updateCanvasItem): use QPainter
  +        (SVGStyledElementImpl::pushAttributeContext): use QPainter
  +        * ksvg2/svg/SVGSwitchElementImpl.cpp:
  +        (SVGSwitchElementImpl::createRenderer): use QPainter
  +        * ksvg2/svg/SVGUseElementImpl.cpp:
  +        (SVGUseElementImpl::createRenderer): use QPainter
  +        * kwq/KWQPainter.h:
  +        * kwq/KWQPainter.mm:
  +        (QPainter::renderingDevice): added
  +        * kwq/KWQRenderTreeDebug.cpp:
  +        (externalRepresentation): call writeRenderResources
  +
   2005-11-26  Maciej Stachowiak  <mjs at apple.com>
   
           Rubber stamped by Eric.
  
  
  
  1.9       +13 -14    SVGSupport/kcanvas/KCanvasItem.cpp
  
  Index: KCanvasItem.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasItem.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KCanvasItem.cpp	23 Nov 2005 15:14:05 -0000	1.8
  +++ KCanvasItem.cpp	27 Nov 2005 11:02:15 -0000	1.9
  @@ -24,6 +24,7 @@
   #include "config.h"
   #include <qrect.h>
   #include <kdebug.h>
  +#include <kxmlcore/Assertions.h>
   
   #include "kcanvas/KCanvas.h"
   #include "kcanvas/RenderPath.h"
  @@ -61,13 +62,13 @@
   RenderPath::RenderPath(khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) : RenderObject((DOM::NodeImpl *)node), d(new Private())
   {
       Q_ASSERT(style != 0);
  -    d->style = new KSVG::KCanvasRenderingStyle(canvas(), style);
  +    d->style = new KSVG::KCanvasRenderingStyle(style);
   }
   
   RenderPath::~RenderPath()
   {
  -    if(d->path && canvas() && canvas()->renderingDevice())
  -        canvas()->renderingDevice()->deletePath(d->path);
  +    if(d->path)
  +        QPainter::renderingDevice()->deletePath(d->path);
       delete d;
   }
   
  @@ -89,7 +90,7 @@
   
   bool RenderPath::fillContains(const QPoint &p) const
   {
  -    if(d->path && d->style && canvas() && canvas()->renderingDevice())
  +    if(d->path && d->style)
           return hitsPath(p, true);
   
       return false;
  @@ -97,7 +98,7 @@
   
   bool RenderPath::strokeContains(const QPoint &p) const
   {
  -    if(d->path && d->style && canvas() && canvas()->renderingDevice())
  +    if(d->path && d->style)
           return hitsPath(p, false);
   
       return false;
  @@ -107,7 +108,7 @@
   {
       QRect result;
       
  -    if (!d->path || !canvas() || !canvas()->renderingDevice())
  +    if (!d->path)
           return result;
   
       if (includeStroke) {
  @@ -125,7 +126,7 @@
   
   void RenderPath::setupForDraw() const
   {
  -    if(d->path && d->style && canvas() && canvas()->renderingDevice())
  +    if(d->path && d->style)
       {
           if(d->style->fillPainter() && d->style->fillPainter()->paintServer())
               d->style->fillPainter()->paintServer()->setActiveClient(this);
  @@ -137,14 +138,12 @@
   
   void RenderPath::changePath(KCanvasUserData newPath)
   {
  -    if(canvas() && canvas()->renderingDevice())
  -    {
  -        canvas()->renderingDevice()->setCurrentPath(newPath);
  -        if (d->path)
  -            canvas()->renderingDevice()->deletePath(d->path);
  +    ASSERT(newPath);
  +    QPainter::renderingDevice()->setCurrentPath(newPath);
  +    if (d->path)
  +        QPainter::renderingDevice()->deletePath(d->path);
   
  -        d->path = newPath;
  -    }
  +    d->path = newPath;
   }
   
   KCanvasUserData RenderPath::path() const
  
  
  
  1.10      +32 -4     SVGSupport/kcanvas/KCanvasTreeDebug.cpp
  
  Index: KCanvasTreeDebug.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasTreeDebug.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- KCanvasTreeDebug.cpp	23 Nov 2005 15:14:06 -0000	1.9
  +++ KCanvasTreeDebug.cpp	27 Nov 2005 11:02:15 -0000	1.10
  @@ -46,10 +46,14 @@
   #include "KWQRenderTreeDebug.h"
   #endif
   
  +#include <kxmlcore/Assertions.h>
  +
   #include "SVGRenderStyle.h"
   #include <ksvg2/svg/SVGStyledElementImpl.h>
   
   #include <kdom/DOMString.h>
  +#include "dom_atomicstring.h"
  +#include "HTMLNames.h"
   
   #include <qtextstream.h>
   
  @@ -247,18 +251,18 @@
   
   static QTextStream &operator<<(QTextStream &ts, const RenderPath &o)
   {
  -    ts << " " << o.relativeBBox();
  +    ts << " " << o.absoluteTransform().mapRect(o.relativeBBox());
       
       writeStyle(ts, o);
       
  -    ts << " [data=\"" << o.canvas()->renderingDevice()->stringForPath(o.path()) << "\"]";
  +    ts << " [data=\"" << QPainter::renderingDevice()->stringForPath(o.path()) << "\"]";
       
       return ts;
   }
   
   static QTextStream &operator<<(QTextStream &ts, const KCanvasContainer &o)
   {
  -    ts << " " << o.relativeBBox();
  +    ts << " " << o.absoluteTransform().mapRect(o.relativeBBox());
       
       writeStyle(ts, o);
       
  @@ -267,7 +271,7 @@
   
   static QString getTagName(void *node)
   {
  -    KSVG::SVGStyledElementImpl *elem = static_cast<KSVG::SVGStyledElementImpl *>(node);
  +    SVGStyledElementImpl *elem = static_cast<SVGStyledElementImpl *>(node);
       if (elem)
           return KDOM::DOMString(elem->nodeName()).qstring();
       return QString();
  @@ -304,6 +308,30 @@
       ts << path << endl;
   }
   
  +void writeRenderResources(QTextStream &ts, KDOM::NodeImpl *parent)
  +{
  +    ASSERT(parent);
  +    KDOM::NodeImpl *node = parent;
  +    do {
  +        if (!node->isSVGElement())
  +            continue;
  +        SVGElementImpl *svgElement = static_cast<SVGElementImpl *>(node);
  +        if (!svgElement->isStyled())
  +            continue;
  +
  +        SVGStyledElementImpl *styled = static_cast<SVGStyledElementImpl *>(svgElement);
  +        KCanvasResource *resource = styled->canvasResource();
  +        if (!resource)
  +            continue;
  +        
  +        QString elementId = svgElement->getAttribute(DOM::HTMLNames::idAttr).qstring();
  +        if (resource->isPaintServer())
  +            ts << "KRenderingPaintServer {id=\"" << elementId << "\" " << *static_cast<KRenderingPaintServer *>(resource) << "}" << endl;
  +        else
  +            ts << "KCanvasResource {id=\"" << elementId << "\" " << *resource << "}" << endl;
  +    } while ((node = node->traverseNextNode(parent)));
  +}
  +
   QTextStream &operator<<(QTextStream &ts, const QStringList &l)
   {
       ts << "[";
  
  
  
  1.5       +5 -0      SVGSupport/kcanvas/KCanvasTreeDebug.h
  
  Index: KCanvasTreeDebug.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasTreeDebug.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KCanvasTreeDebug.h	21 Nov 2005 08:29:11 -0000	1.4
  +++ KCanvasTreeDebug.h	27 Nov 2005 11:02:15 -0000	1.5
  @@ -38,9 +38,14 @@
   class RenderPath;
   class KCanvasContainer;
   
  +namespace KDOM {
  +    class NodeImpl;
  +}
  +
   // functions used by the main KWQRenderTreeDebug code
   void write(QTextStream &ts, const KCanvasContainer &container, int indent = 0);
   void write(QTextStream &ts, const RenderPath &path, int indent = 0);
  +void writeRenderResources(QTextStream &ts, KDOM::NodeImpl *parent);
   
   // helper operators defined used in various classes to dump the render tree. 
   QTextStream &operator<<(QTextStream &ts, const QMatrix &);
  
  
  
  1.9       +2 -1      SVGSupport/kcanvas/device/KRenderingPaintServerGradient.cpp
  
  Index: KRenderingPaintServerGradient.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingPaintServerGradient.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KRenderingPaintServerGradient.cpp	21 Nov 2005 08:29:14 -0000	1.8
  +++ KRenderingPaintServerGradient.cpp	27 Nov 2005 11:02:16 -0000	1.9
  @@ -81,7 +81,8 @@
       {
           ts << "(" << (*it)->offset << "," << (*it)->color << ")";
           ++it;
  -        if (*it) ts << ", ";
  +        if (*it)
  +            ts << ", ";
       }
       ts << "]";
       return ts;
  
  
  
  1.16      +2 -2      SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm
  
  Index: KCanvasFilterQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- KCanvasFilterQuartz.mm	26 Nov 2005 22:27:05 -0000	1.15
  +++ KCanvasFilterQuartz.mm	27 Nov 2005 11:02:16 -0000	1.16
  @@ -93,8 +93,8 @@
       if (!bbox.isValid() || !KRenderingDeviceQuartz::filtersEnabled() || m_effects.isEmpty())
           return;
       
  -    // restore the previous context.
  -    device->popContext();
  +    // restore the previous context, delete the filter context.
  +    delete (device->popContext());
   
       // actually apply the filter effects
       CIImage *inputImage = [CIImage imageWithCGLayer:m_filterCGLayer];
  
  
  
  1.11      +11 -3     SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.mm
  
  Index: KCanvasItemQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.mm,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- KCanvasItemQuartz.mm	26 Nov 2005 22:35:43 -0000	1.10
  +++ KCanvasItemQuartz.mm	27 Nov 2005 11:02:16 -0000	1.11
  @@ -71,8 +71,13 @@
       if (paintInfo.p->paintingDisabled() || (paintInfo.phase != PaintActionForeground) || style()->visibility() == khtml::HIDDEN)
           return;
       
  -    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(canvas()->renderingDevice());
  -    quartzDevice->pushContext(paintInfo.p->createRenderingDeviceContext());
  +    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(QPainter::renderingDevice());
  +    KRenderingDeviceContext *deviceContext = 0;
  +    if (!parent()->isKCanvasContainer()) {
  +        // I only need to setup for KCanvas rendering if it hasn't already been done.
  +        deviceContext = paintInfo.p->createRenderingDeviceContext();
  +        quartzDevice->pushContext(deviceContext);
  +    }
       paintInfo.p->save();
       CGContextRef context = quartzDevice->currentCGContext();
   
  @@ -122,7 +127,10 @@
       
       // restore drawing state
       paintInfo.p->restore();
  -    quartzDevice->popContext();
  +    if (!parent()->isKCanvasContainer()) {
  +        quartzDevice->popContext();
  +        delete deviceContext;
  +    }
   }
   
   #pragma mark -
  
  
  
  1.10      +12 -4     SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.mm
  
  Index: KCanvasResourcesQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.mm,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- KCanvasResourcesQuartz.mm	26 Nov 2005 22:27:05 -0000	1.9
  +++ KCanvasResourcesQuartz.mm	27 Nov 2005 11:02:16 -0000	1.10
  @@ -108,15 +108,20 @@
       if (paintInfo.phase == PaintActionOutline && style()->outlineWidth() && style()->visibility() == khtml::VISIBLE)
           paintOutline(paintInfo.p, absoluteX, absoluteY, width(), height(), style());
       
  -    if (paintInfo.phase != PaintActionForeground || !drawsContents())
  +    if (paintInfo.phase != PaintActionForeground || !drawsContents() || style()->visibility() == khtml::HIDDEN)
           return;
       
       KCanvasFilter *filter = getFilterById(document(), style()->svgStyle()->filter().mid(1));
       if (!firstChild() && !filter)
           return; // Spec: groups w/o children still may render filter content.
       
  -    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(canvas()->renderingDevice());
  -    quartzDevice->pushContext(paintInfo.p->createRenderingDeviceContext());
  +    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(QPainter::renderingDevice());
  +    KRenderingDeviceContext *deviceContext = 0;
  +    if (!parent()->isKCanvasContainer()) {
  +        // I only need to setup for KCanvas rendering if it hasn't already been done.
  +        deviceContext = paintInfo.p->createRenderingDeviceContext();
  +        quartzDevice->pushContext(deviceContext);
  +    }
       paintInfo.p->save();
       
       CGContextRef context = paintInfo.p->currentContext();
  @@ -158,7 +163,10 @@
       
       // restore drawing state
       paintInfo.p->restore();
  -    quartzDevice->popContext();
  +    if (!parent()->isKCanvasContainer()) {
  +        quartzDevice->popContext();
  +        delete deviceContext;
  +    }
   }
   
   void KCanvasContainerQuartz::setViewport(const QRect &viewport)
  
  
  
  1.9       +1 -1      SVGSupport/kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm
  
  Index: KRenderingPaintServerGradientQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KRenderingPaintServerGradientQuartz.mm	21 Nov 2005 08:29:15 -0000	1.8
  +++ KRenderingPaintServerGradientQuartz.mm	27 Nov 2005 11:02:17 -0000	1.9
  @@ -42,7 +42,7 @@
   // Maybe this should be in a base class instead...
   static void drawShadingWithStyle(const KRenderingPaintServerGradient *server, CGShadingRef shading, KSVG::KCanvasRenderingStyle *canvasStyle, KCPaintTargetType type)
   {
  -    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(server->activeClient()->canvas()->renderingDevice());
  +    KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(QPainter::renderingDevice());
       CGContextRef context = quartzDevice->currentCGContext();
       ASSERT(context != NULL);
       
  
  
  
  1.11      +29 -30    SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm
  
  Index: KRenderingPaintServerQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- KRenderingPaintServerQuartz.mm	23 Nov 2005 15:14:07 -0000	1.10
  +++ KRenderingPaintServerQuartz.mm	27 Nov 2005 11:02:17 -0000	1.11
  @@ -41,36 +41,35 @@
   
   void KRenderingPaintServerSolidQuartz::draw(KRenderingDeviceContext *renderingContext, const KCanvasCommonArgs &args, KCPaintTargetType type) const
   {
  -	KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
  -	CGContextRef context = quartzContext->cgContext();
  -	KSVG::KCanvasRenderingStyle *canvasStyle = args.canvasStyle();
  -	
  -        CGContextSetAlpha(context, canvasStyle->renderStyle()->opacity());
  -		
  -	if ( (type & APPLY_TO_FILL) && canvasStyle->isFilled() ) {
  -            CGColorRef colorCG = cgColor(color());
  -		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->fillPainter()->opacity());
  -		CGContextSetFillColorWithColor(context, withAlpha);
  -		CGColorRelease(colorCG);
  -		CGColorRelease(withAlpha);
  -		if (canvasStyle->fillPainter()->fillRule() == RULE_EVENODD) {
  -			CGContextEOFillPath(context);
  -		} else {
  -			CGContextFillPath(context);
  -		}
  -	}
  -	
  -	if ( (type & APPLY_TO_STROKE) && canvasStyle->isStroked() ) {
  -		CGColorRef colorCG = cgColor(color());
  -		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->strokePainter()->opacity());		
  -		CGContextSetStrokeColorWithColor(context, withAlpha);
  -		CGColorRelease(colorCG);
  -		CGColorRelease(withAlpha);
  -		
  -		applyStrokeStyleToContext(context, canvasStyle);
  -		
  -		CGContextStrokePath(context);
  -	}
  +    KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
  +    CGContextRef context = quartzContext->cgContext();
  +    KSVG::KCanvasRenderingStyle *canvasStyle = args.canvasStyle();
  +
  +    CGContextSetAlpha(context, canvasStyle->renderStyle()->opacity());
  +        
  +    if ( (type & APPLY_TO_FILL) && canvasStyle->isFilled() ) {
  +        CGColorRef colorCG = cgColor(color());
  +        CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->fillPainter()->opacity());
  +        CGContextSetFillColorWithColor(context, withAlpha);
  +        CGColorRelease(colorCG);
  +        CGColorRelease(withAlpha);
  +        if (canvasStyle->fillPainter()->fillRule() == RULE_EVENODD)
  +            CGContextEOFillPath(context);
  +        else
  +            CGContextFillPath(context);
  +    }
  +
  +    if ( (type & APPLY_TO_STROKE) && canvasStyle->isStroked() ) {
  +        CGColorRef colorCG = cgColor(color());
  +        CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->strokePainter()->opacity());		
  +        CGContextSetStrokeColorWithColor(context, withAlpha);
  +        CGColorRelease(colorCG);
  +        CGColorRelease(withAlpha);
  +        
  +        applyStrokeStyleToContext(context, canvasStyle);
  +        
  +        CGContextStrokePath(context);
  +    }
   }
   
   
  
  
  
  1.37      +0 -16     WebCore/khtml/rendering/render_canvas.cpp
  
  Index: render_canvas.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_canvas.cpp,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- render_canvas.cpp	21 Nov 2005 04:01:55 -0000	1.36
  +++ render_canvas.cpp	27 Nov 2005 11:02:18 -0000	1.37
  @@ -73,17 +73,10 @@
   
       // Create a new root layer for our layer hierarchy.
       m_layer = new (node->getDocument()->renderArena()) RenderLayer(this);
  -    
  -#if SVG_SUPPORT
  -    m_renderingDevice = 0;
  -#endif
   }
   
   RenderCanvas::~RenderCanvas()
   {
  -#if SVG_SUPPORT
  -    delete m_renderingDevice;
  -#endif
   }
   
   void RenderCanvas::calcHeight()
  @@ -653,12 +646,3 @@
           m_bestTruncatedAt = y;
       }
   }
  -
  -#if SVG_SUPPORT
  -KRenderingDevice *RenderCanvas::renderingDevice()
  -{
  -    if (!m_renderingDevice)
  -        m_renderingDevice = new KRenderingDeviceQuartz();
  -    return m_renderingDevice;
  -}
  -#endif
  
  
  
  1.15      +0 -12     WebCore/khtml/rendering/render_canvas.h
  
  Index: render_canvas.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_canvas.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- render_canvas.h	21 Nov 2005 04:01:55 -0000	1.14
  +++ render_canvas.h	27 Nov 2005 11:02:19 -0000	1.15
  @@ -28,10 +28,6 @@
   class KHTMLView;
   class QScrollView;
   
  -#if SVG_SUPPORT
  -class KRenderingDevice;
  -#endif
  -
   namespace khtml {
   
   class RenderCanvas : public RenderBlock
  @@ -106,10 +102,6 @@
       void updateWidgetPositions();
       void addWidget(RenderObject *);
       void removeWidget(RenderObject *);
  -    
  -#if SVG_SUPPORT
  -    KRenderingDevice *renderingDevice();
  -#endif
   
   protected:
   
  @@ -137,10 +129,6 @@
       typedef HashSet<RenderObject *, PointerHash<RenderObject *> > RenderObjectSet;
   
       RenderObjectSet m_widgets;
  -    
  -#if SVG_SUPPORT
  -    KRenderingDevice *m_renderingDevice;
  -#endif
   };
   
   };
  
  
  
  1.76      +3 -0      WebCore/khtml/rendering/render_style.cpp
  
  Index: render_style.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_style.cpp,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- render_style.cpp	21 Nov 2005 04:01:56 -0000	1.75
  +++ render_style.cpp	27 Nov 2005 11:02:19 -0000	1.76
  @@ -588,6 +588,9 @@
   
   RenderStyle::~RenderStyle()
   {
  +#if SVG_SUPPORT
  +    delete m_svgStyle;
  +#endif
   }
   
   bool RenderStyle::operator==(const RenderStyle& o) const
  
  
  
  1.6       +4 -0      SVGSupport/ksvg2/css/SVGRenderStyle.cpp
  
  Index: SVGRenderStyle.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGRenderStyle.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGRenderStyle.cpp	21 Nov 2005 08:29:28 -0000	1.5
  +++ SVGRenderStyle.cpp	27 Nov 2005 11:02:20 -0000	1.6
  @@ -73,6 +73,10 @@
       svg_noninherited_flags = other.svg_noninherited_flags;
   }
   
  +SVGRenderStyle::~SVGRenderStyle()
  +{
  +}
  +
   bool SVGRenderStyle::equals(SVGRenderStyle *svgOther) const
   {
       if(!svgOther)
  
  
  
  1.11      +4 -11     SVGSupport/ksvg2/misc/KCanvasRenderingStyle.cpp
  
  Index: KCanvasRenderingStyle.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KCanvasRenderingStyle.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- KCanvasRenderingStyle.cpp	21 Nov 2005 08:29:31 -0000	1.10
  +++ KCanvasRenderingStyle.cpp	27 Nov 2005 11:02:20 -0000	1.11
  @@ -47,10 +47,9 @@
   
   using namespace KSVG;
   
  -KCanvasRenderingStyle::KCanvasRenderingStyle(khtml::RenderCanvas *canvas, const khtml::RenderStyle *style)
  +KCanvasRenderingStyle::KCanvasRenderingStyle(const khtml::RenderStyle *style)
   {
       m_style = style;
  -    m_canvas = canvas;
       m_fillPainter = 0;
       m_strokePainter = 0;
   }
  @@ -63,9 +62,6 @@
   
   void KCanvasRenderingStyle::updateFill(RenderPath *item)
   {
  -    if(!m_canvas || !m_canvas->renderingDevice())
  -        return;
  -
       SVGPaintImpl *fill = m_style->svgStyle()->fillPaint();
   
       if (fill && fill->paintType() == SVG_PAINTTYPE_NONE)
  @@ -73,7 +69,7 @@
   
       if(!fill) // initial value (black)
       {
  -        KRenderingPaintServer *fillPaintServer = m_canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
  +        KRenderingPaintServer *fillPaintServer = QPainter::renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
           KRenderingPaintServerSolid *fillPaintServerSolid = static_cast<KRenderingPaintServerSolid *>(fillPaintServer);
           fillPaintServerSolid->setColor(Qt::black);
   
  @@ -91,7 +87,7 @@
       }
       else
       {
  -        KRenderingPaintServer *fillPaintServer = m_canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
  +        KRenderingPaintServer *fillPaintServer = QPainter::renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
           KRenderingPaintServerSolid *fillPaintServerSolid = static_cast<KRenderingPaintServerSolid *>(fillPaintServer);
   
           if(fill->paintType() == SVG_PAINTTYPE_CURRENTCOLOR)
  @@ -108,9 +104,6 @@
   
   void KCanvasRenderingStyle::updateStroke(RenderPath *item)
   {
  -    if(!m_canvas || !m_canvas->renderingDevice())
  -        return;
  -
       SVGPaintImpl *stroke = m_style->svgStyle()->strokePaint();
   
       if (!stroke || stroke->paintType() == SVG_PAINTTYPE_NONE)
  @@ -128,7 +121,7 @@
       }
       else
       {
  -        KRenderingPaintServer *strokePaintServer = m_canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
  +        KRenderingPaintServer *strokePaintServer = QPainter::renderingDevice()->createPaintServer(KCPaintServerType(PS_SOLID));
           KRenderingPaintServerSolid *strokePaintServerSolid = static_cast<KRenderingPaintServerSolid *>(strokePaintServer);
   
           if(stroke->paintType() == SVG_PAINTTYPE_CURRENTCOLOR)
  
  
  
  1.7       +1 -2      SVGSupport/ksvg2/misc/KCanvasRenderingStyle.h
  
  Index: KCanvasRenderingStyle.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KCanvasRenderingStyle.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasRenderingStyle.h	21 Nov 2005 08:29:31 -0000	1.6
  +++ KCanvasRenderingStyle.h	27 Nov 2005 11:02:20 -0000	1.7
  @@ -62,7 +62,7 @@
       class KCanvasRenderingStyle
       {
       public:
  -        KCanvasRenderingStyle(khtml::RenderCanvas *canvas, const khtml::RenderStyle *style);
  +        KCanvasRenderingStyle(const khtml::RenderStyle *style);
           ~KCanvasRenderingStyle();
   
           void updateFill(RenderPath *item);
  @@ -92,7 +92,6 @@
           const khtml::RenderStyle *m_style;
   
           // KCanvas stuff
  -        khtml::RenderCanvas *m_canvas;
           KRenderingFillPainter *m_fillPainter;
           KRenderingStrokePainter *m_strokePainter;
       };
  
  
  
  1.9       +1 -1      SVGSupport/ksvg2/svg/SVGAElementImpl.cpp
  
  Index: SVGAElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGAElementImpl.cpp	26 Nov 2005 22:19:03 -0000	1.8
  +++ SVGAElementImpl.cpp	27 Nov 2005 11:02:21 -0000	1.9
  @@ -72,7 +72,7 @@
   
   khtml::RenderObject *SVGAElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return canvas()->renderingDevice()->createContainer(arena, style, this);
  +    return QPainter::renderingDevice()->createContainer(arena, style, this);
   }
   
   void SVGAElementImpl::defaultEventHandler(KDOM::EventImpl *evt)
  
  
  
  1.11      +7 -4      SVGSupport/ksvg2/svg/SVGClipPathElementImpl.cpp
  
  Index: SVGClipPathElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGClipPathElementImpl.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SVGClipPathElementImpl.cpp	26 Nov 2005 22:27:06 -0000	1.10
  +++ SVGClipPathElementImpl.cpp	27 Nov 2005 11:02:21 -0000	1.11
  @@ -44,6 +44,7 @@
   
   SVGClipPathElementImpl::~SVGClipPathElementImpl()
   {
  +    delete m_clipper;
   }
   
   SVGAnimatedEnumerationImpl *SVGClipPathElementImpl::clipPathUnits() const
  @@ -81,22 +82,24 @@
       if (!canvas())
           return 0;
       if (!m_clipper)
  -        m_clipper = static_cast<KCanvasClipper *>(canvas()->renderingDevice()->createResource(RS_CLIPPER));
  +        m_clipper = static_cast<KCanvasClipper *>(QPainter::renderingDevice()->createResource(RS_CLIPPER));
       else
           m_clipper->resetClipData();
   
       bool bbox = clipPathUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
   
  -    khtml::RenderStyle *clipPathStyle = styleForRenderer(parent()->renderer());
  +    khtml::RenderStyle *clipPathStyle = styleForRenderer(parent()->renderer()); // FIXME: Manual style resolution is a hack
       for (KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
           SVGElementImpl *e = svg_dynamic_cast(n);
           if (e && e->isStyled()) {
               SVGStyledElementImpl *styled = static_cast<SVGStyledElementImpl *>(e);
  -            SVGRenderStyle *style = getDocument()->styleSelector()->styleForElement(styled, clipPathStyle)->svgStyle();
  -            m_clipper->addClipData(styled->toPathData(), (KCWindRule) style->clipRule(), bbox);
  +            khtml::RenderStyle *pathStyle = getDocument()->styleSelector()->styleForElement(styled, clipPathStyle);
  +            m_clipper->addClipData(styled->toPathData(), (KCWindRule) pathStyle->svgStyle()->clipRule(), bbox);
  +            pathStyle->deref(canvas()->renderArena());
           }
       }
  +    clipPathStyle->deref(canvas()->renderArena());
       return m_clipper;
   }
   
  
  
  
  1.11      +2 -1      SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp
  
  Index: SVGFEBlendElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SVGFEBlendElementImpl.cpp	26 Nov 2005 22:19:07 -0000	1.10
  +++ SVGFEBlendElementImpl.cpp	27 Nov 2005 11:02:21 -0000	1.11
  @@ -47,6 +47,7 @@
   
   SVGFEBlendElementImpl::~SVGFEBlendElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEBlendElementImpl::in1() const
  @@ -94,7 +95,7 @@
   KCanvasFEBlend *SVGFEBlendElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEBlend *>(canvas()->renderingDevice()->createFilterEffect(FE_BLEND));
  +        m_filterEffect = static_cast<KCanvasFEBlend *>(QPainter::renderingDevice()->createFilterEffect(FE_BLEND));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setBlendMode((KCBlendModeType)(mode()->baseVal()-1));
  
  
  
  1.13      +2 -1      SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp
  
  Index: SVGFEColorMatrixElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SVGFEColorMatrixElementImpl.cpp	26 Nov 2005 22:27:06 -0000	1.12
  +++ SVGFEColorMatrixElementImpl.cpp	27 Nov 2005 11:02:21 -0000	1.13
  @@ -51,6 +51,7 @@
   
   SVGFEColorMatrixElementImpl::~SVGFEColorMatrixElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEColorMatrixElementImpl::in1() const
  @@ -96,7 +97,7 @@
   KCanvasFEColorMatrix *SVGFEColorMatrixElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEColorMatrix *>(canvas()->renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
  +        m_filterEffect = static_cast<KCanvasFEColorMatrix *>(QPainter::renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
       if (!m_filterEffect)
           return 0;
           
  
  
  
  1.12      +2 -1      SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp
  
  Index: SVGFEComponentTransferElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGFEComponentTransferElementImpl.cpp	26 Nov 2005 22:19:08 -0000	1.11
  +++ SVGFEComponentTransferElementImpl.cpp	27 Nov 2005 11:02:22 -0000	1.12
  @@ -53,6 +53,7 @@
   
   SVGFEComponentTransferElementImpl::~SVGFEComponentTransferElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEComponentTransferElementImpl::in1() const
  @@ -73,7 +74,7 @@
   KCanvasFEComponentTransfer *SVGFEComponentTransferElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
  +        m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(QPainter::renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
       if (!m_filterEffect)
           return 0;
       
  
  
  
  1.11      +2 -1      SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp
  
  Index: SVGFECompositeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SVGFECompositeElementImpl.cpp	26 Nov 2005 22:19:08 -0000	1.10
  +++ SVGFECompositeElementImpl.cpp	27 Nov 2005 11:02:22 -0000	1.11
  @@ -51,6 +51,7 @@
   
   SVGFECompositeElementImpl::~SVGFECompositeElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFECompositeElementImpl::in1() const
  @@ -124,7 +125,7 @@
   KCanvasFEComposite *SVGFECompositeElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEComposite *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPOSITE));
  +        m_filterEffect = static_cast<KCanvasFEComposite *>(QPainter::renderingDevice()->createFilterEffect(FE_COMPOSITE));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setOperation((KCCompositeOperationType)(_operator()->baseVal() - 1));
  
  
  
  1.11      +7 -4      SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp
  
  Index: SVGFEFloodElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SVGFEFloodElementImpl.cpp	26 Nov 2005 22:19:09 -0000	1.10
  +++ SVGFEFloodElementImpl.cpp	27 Nov 2005 11:02:23 -0000	1.11
  @@ -46,6 +46,7 @@
   
   SVGFEFloodElementImpl::~SVGFEFloodElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEFloodElementImpl::in1() const
  @@ -66,15 +67,17 @@
   KCanvasFEFlood *SVGFEFloodElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEFlood *>(canvas()->renderingDevice()->createFilterEffect(FE_FLOOD));
  +        m_filterEffect = static_cast<KCanvasFEFlood *>(QPainter::renderingDevice()->createFilterEffect(FE_FLOOD));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       // FIXME: I don't think this will work, the parent does not have a renderer
  -    SVGRenderStyle *filterStyle = const_cast<SVGFEFloodElementImpl *>(this)->styleForRenderer(parentNode()->renderer())->svgStyle();
  -    m_filterEffect->setFloodColor(filterStyle->floodColor());
  -    m_filterEffect->setFloodOpacity(filterStyle->floodOpacity());
  +    khtml::RenderStyle *filterStyle = const_cast<SVGFEFloodElementImpl *>(this)->styleForRenderer(parentNode()->renderer());
  +    SVGRenderStyle *svgStyle = filterStyle->svgStyle();
  +    m_filterEffect->setFloodColor(svgStyle->floodColor());
  +    m_filterEffect->setFloodOpacity(svgStyle->floodOpacity());
  +    filterStyle->deref(canvas()->renderArena());
   
       return m_filterEffect;
   }
  
  
  
  1.12      +2 -1      SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp
  
  Index: SVGFEGaussianBlurElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGFEGaussianBlurElementImpl.cpp	26 Nov 2005 22:19:09 -0000	1.11
  +++ SVGFEGaussianBlurElementImpl.cpp	27 Nov 2005 11:02:23 -0000	1.12
  @@ -49,6 +49,7 @@
   
   SVGFEGaussianBlurElementImpl::~SVGFEGaussianBlurElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEGaussianBlurElementImpl::in1() const
  @@ -93,7 +94,7 @@
   KCanvasFEGaussianBlur *SVGFEGaussianBlurElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(canvas()->renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
  +        m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(QPainter::renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
  
  
  
  1.12      +2 -1      SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp
  
  Index: SVGFEImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGFEImageElementImpl.cpp	26 Nov 2005 22:19:09 -0000	1.11
  +++ SVGFEImageElementImpl.cpp	27 Nov 2005 11:02:23 -0000	1.12
  @@ -54,6 +54,7 @@
   
   SVGFEImageElementImpl::~SVGFEImageElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedPreserveAspectRatioImpl *SVGFEImageElementImpl::preserveAspectRatio() const
  @@ -97,7 +98,7 @@
   KCanvasFEImage *SVGFEImageElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEImage *>(canvas()->renderingDevice()->createFilterEffect(FE_IMAGE));
  +        m_filterEffect = static_cast<KCanvasFEImage *>(QPainter::renderingDevice()->createFilterEffect(FE_IMAGE));
       if (!m_filterEffect)
           return 0;
       setStandardAttributes(m_filterEffect);
  
  
  
  1.10      +2 -1      SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp
  
  Index: SVGFEMergeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGFEMergeElementImpl.cpp	22 Nov 2005 23:04:30 -0000	1.9
  +++ SVGFEMergeElementImpl.cpp	27 Nov 2005 11:02:24 -0000	1.10
  @@ -48,12 +48,13 @@
   
   SVGFEMergeElementImpl::~SVGFEMergeElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   KCanvasFEMerge *SVGFEMergeElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEMerge *>(canvas()->renderingDevice()->createFilterEffect(FE_MERGE));
  +        m_filterEffect = static_cast<KCanvasFEMerge *>(QPainter::renderingDevice()->createFilterEffect(FE_MERGE));
       if (!m_filterEffect)
           return 0;
       setStandardAttributes(m_filterEffect);
  
  
  
  1.12      +2 -1      SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp
  
  Index: SVGFEOffsetElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGFEOffsetElementImpl.cpp	26 Nov 2005 22:19:10 -0000	1.11
  +++ SVGFEOffsetElementImpl.cpp	27 Nov 2005 11:02:24 -0000	1.12
  @@ -48,6 +48,7 @@
   
   SVGFEOffsetElementImpl::~SVGFEOffsetElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFEOffsetElementImpl::in1() const
  @@ -84,7 +85,7 @@
   KCanvasFEOffset *SVGFEOffsetElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFEOffset *>(canvas()->renderingDevice()->createFilterEffect(FE_OFFSET));
  +        m_filterEffect = static_cast<KCanvasFEOffset *>(QPainter::renderingDevice()->createFilterEffect(FE_OFFSET));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
  
  
  
  1.11      +2 -1      SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp
  
  Index: SVGFETileElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SVGFETileElementImpl.cpp	26 Nov 2005 22:19:10 -0000	1.10
  +++ SVGFETileElementImpl.cpp	27 Nov 2005 11:02:24 -0000	1.11
  @@ -45,6 +45,7 @@
   
   SVGFETileElementImpl::~SVGFETileElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedStringImpl *SVGFETileElementImpl::in1() const
  @@ -65,7 +66,7 @@
   KCanvasFETile *SVGFETileElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFETile *>(canvas()->renderingDevice()->createFilterEffect(FE_TILE));
  +        m_filterEffect = static_cast<KCanvasFETile *>(QPainter::renderingDevice()->createFilterEffect(FE_TILE));
       if (!m_filterEffect)
           return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
  
  
  
  1.13      +2 -1      SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp
  
  Index: SVGFETurbulenceElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SVGFETurbulenceElementImpl.cpp	26 Nov 2005 22:19:10 -0000	1.12
  +++ SVGFETurbulenceElementImpl.cpp	27 Nov 2005 11:02:24 -0000	1.13
  @@ -50,6 +50,7 @@
   
   SVGFETurbulenceElementImpl::~SVGFETurbulenceElementImpl()
   {
  +    delete m_filterEffect;
   }
   
   SVGAnimatedNumberImpl *SVGFETurbulenceElementImpl::baseFrequencyX() const
  @@ -125,7 +126,7 @@
   KCanvasFETurbulence *SVGFETurbulenceElementImpl::filterEffect() const
   {
       if (!m_filterEffect)
  -        m_filterEffect = static_cast<KCanvasFETurbulence *>(canvas()->renderingDevice()->createFilterEffect(FE_TURBULENCE));
  +        m_filterEffect = static_cast<KCanvasFETurbulence *>(QPainter::renderingDevice()->createFilterEffect(FE_TURBULENCE));
       if (!m_filterEffect)
           return 0;
       
  
  
  
  1.12      +2 -1      SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp
  
  Index: SVGFilterElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGFilterElementImpl.cpp	26 Nov 2005 22:19:10 -0000	1.11
  +++ SVGFilterElementImpl.cpp	27 Nov 2005 11:02:25 -0000	1.12
  @@ -47,6 +47,7 @@
   
   SVGFilterElementImpl::~SVGFilterElementImpl()
   {
  +    delete m_filter;
   }
   
   SVGAnimatedEnumerationImpl *SVGFilterElementImpl::filterUnits() const
  @@ -168,7 +169,7 @@
           return 0;
   
       if(!m_filter)
  -        m_filter = static_cast<KCanvasFilter *>(canvas()->renderingDevice()->createResource(RS_FILTER));
  +        m_filter = static_cast<KCanvasFilter *>(QPainter::renderingDevice()->createResource(RS_FILTER));
   
       bool filterBBoxMode = filterUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
       m_filter->setFilterBoundingBoxMode(filterBBoxMode);
  
  
  
  1.7       +1 -1      SVGSupport/ksvg2/svg/SVGGElementImpl.cpp
  
  Index: SVGGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGGElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.6
  +++ SVGGElementImpl.cpp	27 Nov 2005 11:02:25 -0000	1.7
  @@ -54,7 +54,7 @@
   
   khtml::RenderObject *SVGGElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return canvas()->renderingDevice()->createContainer(arena, style, this);
  +    return QPainter::renderingDevice()->createContainer(arena, style, this);
   }
   
   // Helper class for <use> support
  
  
  
  1.12      +8 -4      SVGSupport/ksvg2/svg/SVGGradientElementImpl.cpp
  
  Index: SVGGradientElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGradientElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGGradientElementImpl.cpp	26 Nov 2005 22:19:11 -0000	1.11
  +++ SVGGradientElementImpl.cpp	27 Nov 2005 11:02:25 -0000	1.12
  @@ -48,6 +48,7 @@
   
   SVGGradientElementImpl::~SVGGradientElementImpl()
   {
  +    delete m_resource;
   }
   
   SVGAnimatedEnumerationImpl *SVGGradientElementImpl::gradientUnits() const
  @@ -126,7 +127,7 @@
   KRenderingPaintServerGradient *SVGGradientElementImpl::canvasResource()
   {
       if (!m_resource) {
  -        KRenderingPaintServer *temp = canvas()->renderingDevice()->createPaintServer(gradientType());
  +        KRenderingPaintServer *temp = QPainter::renderingDevice()->createPaintServer(gradientType());
           m_resource = static_cast<KRenderingPaintServerGradient *>(temp);
           m_resource->setListener(this);
           buildGradient(m_resource);
  @@ -145,6 +146,7 @@
       if (m_resource && !ownerDocument()->parsing()) {
           KCSortedGradientStopList &stops = m_resource->gradientStops();
           stops.clear();
  +         // FIXME: Manual style resolution is a hack
           khtml::RenderStyle *gradientStyle = const_cast<SVGGradientElementImpl *>(this)->styleForRenderer(parent()->renderer());
           for (KDOM::NodeImpl *n = firstChild(); n; n = n->nextSibling()) {
               SVGElementImpl *element = svg_dynamic_cast(n);
  @@ -152,13 +154,15 @@
                   SVGStopElementImpl *stop = static_cast<SVGStopElementImpl *>(element);
                   float stopOffset = stop->offset()->baseVal();
                   
  -                SVGRenderStyle *stopStyle = getDocument()->styleSelector()->styleForElement(stop, gradientStyle)->svgStyle();
  -                QColor c = stopStyle->stopColor();
  -                float opacity = stopStyle->stopOpacity();
  +                khtml::RenderStyle *stopStyle = getDocument()->styleSelector()->styleForElement(stop, gradientStyle);
  +                QColor c = stopStyle->svgStyle()->stopColor();
  +                float opacity = stopStyle->svgStyle()->stopOpacity();
                   
                   stops.addStop(stopOffset, qRgba(c.red(), c.green(), c.blue(), int(opacity * 255.)));
  +                stopStyle->deref(canvas()->renderArena());
               }
           }
  +        gradientStyle->deref(canvas()->renderArena());
       }
   }
   
  
  
  
  1.12      +4 -4      SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp
  
  Index: SVGImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGImageElementImpl.cpp	26 Nov 2005 22:19:12 -0000	1.11
  +++ SVGImageElementImpl.cpp	27 Nov 2005 11:02:26 -0000	1.12
  @@ -130,7 +130,7 @@
       KMimeType::Ptr mimeType = KMimeType::findByURL(fullUrl);
       if(mimeType->is(QString::fromLatin1("image/svg+xml"))) // does it have svg content?
       {
  -        RenderPath *ret = canvas()->renderingDevice()->createContainer(style, this);
  +        RenderPath *ret = QPainter::renderingDevice()->createContainer(style, this);
           m_cachedDocument = ownerDocument()->docLoader()->requestDocument(fullUrl, QString());
   
           if(m_cachedDocument)
  @@ -147,8 +147,8 @@
       if(pathData.isEmpty())
           return 0;
   
  -    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), pathData);
  -    return canvas()->renderingDevice()->createItem(arena, style, this, path);
  +    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(QPainter::renderingDevice(), pathData);
  +    return QPainter::renderingDevice()->createItem(arena, style, this, path);
   }
   
   void SVGImageElementImpl::attach()
  @@ -175,7 +175,7 @@
       canvasStyle->disableFillPainter();
       canvasStyle->disableStrokePainter();
   
  -    KRenderingPaintServer *fillPaintServer = canvas()->renderingDevice()->createPaintServer(PS_IMAGE);
  +    KRenderingPaintServer *fillPaintServer = QPainter::renderingDevice()->createPaintServer(PS_IMAGE);
       canvasStyle->fillPainter()->setPaintServer(fillPaintServer);
   
   #ifndef APPLE_COMPILE_HACK
  
  
  
  1.10      +3 -2      SVGSupport/ksvg2/svg/SVGMarkerElementImpl.cpp
  
  Index: SVGMarkerElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGMarkerElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGMarkerElementImpl.cpp	26 Nov 2005 22:19:13 -0000	1.9
  +++ SVGMarkerElementImpl.cpp	27 Nov 2005 11:02:26 -0000	1.10
  @@ -53,6 +53,7 @@
   
   SVGMarkerElementImpl::~SVGMarkerElementImpl()
   {
  +    delete m_marker;
   }
   
   void SVGMarkerElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
  @@ -141,7 +142,7 @@
   KCanvasMarker *SVGMarkerElementImpl::canvasResource()
   {
       if(!m_marker)
  -        m_marker = static_cast<KCanvasMarker *>(canvas()->renderingDevice()->createResource(RS_MARKER));
  +        m_marker = static_cast<KCanvasMarker *>(QPainter::renderingDevice()->createResource(RS_MARKER));
       
       m_marker->setMarker(renderer());
   
  @@ -166,7 +167,7 @@
   
   khtml::RenderObject *SVGMarkerElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    KCanvasContainer *markerContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
  +    KCanvasContainer *markerContainer = QPainter::renderingDevice()->createContainer(arena, style, this);
       markerContainer->setDrawsContents(false); // Marker contents will be explicitly drawn.
       return markerContainer;
   }
  
  
  
  1.14      +4 -3      SVGSupport/ksvg2/svg/SVGPatternElementImpl.cpp
  
  Index: SVGPatternElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPatternElementImpl.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SVGPatternElementImpl.cpp	26 Nov 2005 22:35:48 -0000	1.13
  +++ SVGPatternElementImpl.cpp	27 Nov 2005 11:02:26 -0000	1.14
  @@ -57,6 +57,7 @@
   
   SVGPatternElementImpl::~SVGPatternElementImpl()
   {
  +    delete m_paintServer;
   }
   
   SVGAnimatedEnumerationImpl *SVGPatternElementImpl::patternUnits() const
  @@ -199,7 +200,7 @@
   
   void SVGPatternElementImpl::drawPatternContentIntoTile(const SVGPatternElementImpl *target, const QSize &newSize, KCanvasMatrix patternTransformMatrix) const
   {
  -    KRenderingDevice *device = canvas()->renderingDevice();
  +    KRenderingDevice *device = QPainter::renderingDevice();
       
       SVGStyledElementImpl *activeElement = static_cast<SVGStyledElementImpl *>(m_paintServer->activeClient()->element());
   
  @@ -359,7 +360,7 @@
   
   khtml::RenderObject *SVGPatternElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    KCanvasContainer *patternContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
  +    KCanvasContainer *patternContainer = QPainter::renderingDevice()->createContainer(arena, style, this);
       patternContainer->setDrawsContents(false);
       return patternContainer;
   }
  @@ -367,7 +368,7 @@
   KRenderingPaintServerPattern *SVGPatternElementImpl::canvasResource()
   {
       if (!m_paintServer) {
  -        KRenderingPaintServer *pserver = canvas()->renderingDevice()->createPaintServer(KCPaintServerType(PS_PATTERN));
  +        KRenderingPaintServer *pserver = QPainter::renderingDevice()->createPaintServer(KCPaintServerType(PS_PATTERN));
           m_paintServer = static_cast<KRenderingPaintServerPattern *>(pserver);
           m_paintServer->setListener(const_cast<SVGPatternElementImpl *>(this));
       }
  
  
  
  1.14      +1 -1      SVGSupport/ksvg2/svg/SVGSVGElementImpl.cpp
  
  Index: SVGSVGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSVGElementImpl.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SVGSVGElementImpl.cpp	26 Nov 2005 22:35:48 -0000	1.13
  +++ SVGSVGElementImpl.cpp	27 Nov 2005 11:02:26 -0000	1.14
  @@ -444,7 +444,7 @@
   
   khtml::RenderObject *SVGSVGElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    KCanvasContainer *rootContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
  +    KCanvasContainer *rootContainer = QPainter::renderingDevice()->createContainer(arena, style, this);
   
       // FIXME: all this setup should be done after attributesChanged, not here.
       float _x = x()->baseVal()->value();
  
  
  
  1.13      +4 -4      SVGSupport/ksvg2/svg/SVGStyledElementImpl.cpp
  
  Index: SVGStyledElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyledElementImpl.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SVGStyledElementImpl.cpp	26 Nov 2005 22:35:48 -0000	1.12
  +++ SVGStyledElementImpl.cpp	27 Nov 2005 11:02:27 -0000	1.13
  @@ -73,8 +73,8 @@
       KCPathDataList pathData = toPathData();
       if (pathData.isEmpty())
           return 0;
  -    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), pathData);
  -    return canvas()->renderingDevice()->createItem(arena, style, this, path);
  +    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(QPainter::renderingDevice(), pathData);
  +    return QPainter::renderingDevice()->createItem(arena, style, this, path);
   }
   
   void SVGStyledElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
  @@ -145,7 +145,7 @@
           && parentElement->childShouldCreateRenderer(this))
           renderSection = true;
   
  -    KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), toPathData());
  +    KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(QPainter::renderingDevice(), toPathData());
       renderPath->changePath(newPath);
   
       if(renderSection)
  @@ -158,7 +158,7 @@
   {
       if(canvas())
       {
  -        KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), toPathData());
  +        KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(QPainter::renderingDevice(), toPathData());
           static_cast<RenderPath *>(renderer())->changePath(newPath);
       }
   
  
  
  
  1.9       +1 -1      SVGSupport/ksvg2/svg/SVGSwitchElementImpl.cpp
  
  Index: SVGSwitchElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSwitchElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGSwitchElementImpl.cpp	26 Nov 2005 22:35:49 -0000	1.8
  +++ SVGSwitchElementImpl.cpp	27 Nov 2005 11:02:27 -0000	1.9
  @@ -57,7 +57,7 @@
   
   khtml::RenderObject *SVGSwitchElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return canvas()->renderingDevice()->createContainer(arena, style, this);
  +    return QPainter::renderingDevice()->createContainer(arena, style, this);
   }
   
   // vim:ts=4:noet
  
  
  
  1.12      +1 -1      SVGSupport/ksvg2/svg/SVGUseElementImpl.cpp
  
  Index: SVGUseElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGUseElementImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGUseElementImpl.cpp	26 Nov 2005 22:19:18 -0000	1.11
  +++ SVGUseElementImpl.cpp	27 Nov 2005 11:02:28 -0000	1.12
  @@ -171,7 +171,7 @@
   
   khtml::RenderObject *SVGUseElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return canvas()->renderingDevice()->createContainer(arena, style, this);
  +    return QPainter::renderingDevice()->createContainer(arena, style, this);
   }
   
   // vim:ts=4:noet
  
  
  
  1.84      +2 -0      WebCore/kwq/KWQPainter.h
  
  Index: KWQPainter.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQPainter.h,v
  retrieving revision 1.83
  retrieving revision 1.84
  diff -u -r1.83 -r1.84
  --- KWQPainter.h	22 Nov 2005 23:04:28 -0000	1.83
  +++ KWQPainter.h	27 Nov 2005 11:02:35 -0000	1.84
  @@ -43,6 +43,7 @@
   class QString;
   
   #if SVG_SUPPORT
  +class KRenderingDevice;
   class KRenderingDeviceContext;
   #endif
   
  @@ -142,6 +143,7 @@
       
   #if SVG_SUPPORT
       KRenderingDeviceContext *createRenderingDeviceContext();
  +    static KRenderingDevice *renderingDevice();
   #endif
       
       static int compositeOperatorFromString (const QString &aString);
  
  
  
  1.148     +9 -0      WebCore/kwq/KWQPainter.mm
  
  Index: KWQPainter.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQPainter.mm,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- KWQPainter.mm	22 Nov 2005 23:04:28 -0000	1.147
  +++ KWQPainter.mm	27 Nov 2005 11:02:35 -0000	1.148
  @@ -72,6 +72,9 @@
       int focusRingOffset;
       bool hasFocusRingColor;
       QColor focusRingColor;
  +#if SVG_SUPPORT
  +    KRenderingDevice *renderingDevice;
  +#endif
   };
   
   QPainterPrivate::QPainterPrivate() : textRenderer(0), focusRingPath(0), focusRingWidth(0), focusRingOffset(0),
  @@ -883,6 +886,12 @@
   {
       return new KRenderingDeviceContextQuartz(currentContext());
   }
  +
  +KRenderingDevice *QPainter::renderingDevice()
  +{
  +    static KRenderingDevice *sharedRenderingDevice = new KRenderingDeviceQuartz();
  +    return sharedRenderingDevice;
  +}
   #endif
   
   void QPainter::beginTransparencyLayer(float opacity)
  
  
  
  1.49      +1 -0      WebCore/kwq/KWQRenderTreeDebug.cpp
  
  Index: KWQRenderTreeDebug.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQRenderTreeDebug.cpp,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- KWQRenderTreeDebug.cpp	21 Nov 2005 04:02:02 -0000	1.48
  +++ KWQRenderTreeDebug.cpp	27 Nov 2005 11:02:36 -0000	1.49
  @@ -442,6 +442,7 @@
           QTextStream ts(&s);
   #if SVG_SUPPORT
           ts.precision(2);
  +        writeRenderResources(ts, o->document());
   #endif
           if (o) {
               o->canvas()->view()->layout();
  
  
  



More information about the webkit-changes mailing list