[webkit-changes] cvs commit: SVGSupport/ksvg2/svg SVGComponentTransferFunctionElementImpl.cpp SVGComponentTransferFunctionElementImpl.h SVGFEBlendElementImpl.cpp SVGFEBlendElementImpl.h SVGFEColorMatrixElementImpl.cpp SVGFEColorMatrixElementImpl.h SVGFEComponentTransferElementImpl.cpp SVGFEComponentTransferElementImpl.h SVGFECompositeElementImpl.cpp SVGFECompositeElementImpl.h SVGFEFloodElementImpl.cpp SVGFEFloodElementImpl.h SVGFEGaussianBlurElementImpl.cpp SVGFEGaussianBlurElementImpl.h SVGFEImageElementImpl.cpp SVGFEMergeElementImpl.cpp SVGFEMergeElementImpl.h SVGFEOffsetElementImpl.cpp SVGFEOffsetElementImpl.h SVGFETileElementImpl.cpp SVGFETileElementImpl.h SVGFETurbulenceElementImpl.cpp SVGFETurbulenceElementImpl.h SVGFilterElementImpl.cpp SVGFilterPrimitiveStandardAttributesImpl.cpp SVGImageElementImpl.cpp SVGStyledElementImpl.h SVGURIReferenceImpl.cpp

Eric eseidel at opensource.apple.com
Tue Nov 22 04:03:22 PST 2005


eseidel     05/11/22 04:03:21

  Modified:    .        ChangeLog
               kcanvas  KCanvasFilters.cpp KCanvasFilters.h
               kcanvas/device/quartz KCanvasFilterQuartz.mm
                        KCanvasResourcesQuartz.h
                        KRenderingPaintServerQuartz.mm
               ksvg2/svg SVGComponentTransferFunctionElementImpl.cpp
                        SVGComponentTransferFunctionElementImpl.h
                        SVGFEBlendElementImpl.cpp SVGFEBlendElementImpl.h
                        SVGFEColorMatrixElementImpl.cpp
                        SVGFEColorMatrixElementImpl.h
                        SVGFEComponentTransferElementImpl.cpp
                        SVGFEComponentTransferElementImpl.h
                        SVGFECompositeElementImpl.cpp
                        SVGFECompositeElementImpl.h
                        SVGFEFloodElementImpl.cpp SVGFEFloodElementImpl.h
                        SVGFEGaussianBlurElementImpl.cpp
                        SVGFEGaussianBlurElementImpl.h
                        SVGFEImageElementImpl.cpp SVGFEMergeElementImpl.cpp
                        SVGFEMergeElementImpl.h SVGFEOffsetElementImpl.cpp
                        SVGFEOffsetElementImpl.h SVGFETileElementImpl.cpp
                        SVGFETileElementImpl.h
                        SVGFETurbulenceElementImpl.cpp
                        SVGFETurbulenceElementImpl.h
                        SVGFilterElementImpl.cpp
                        SVGFilterPrimitiveStandardAttributesImpl.cpp
                        SVGImageElementImpl.cpp SVGStyledElementImpl.h
                        SVGURIReferenceImpl.cpp
  Log:
  Bug #: none
  Submitted by: eseidel
  Reviewed by: mjs
          No additional test cases needed, this fixes 10+ existing tests.
  
          Moved filter code off of createRenderer format, fixing filters.
          Hacked in support for <image> and <feImage> (Pixmap only)
          Simplified FEComponentTransfer function construction.
  
          * kcanvas/KCanvasFilters.cpp:
          * kcanvas/KCanvasFilters.h:
          (KCanvasFEImage::KCanvasFEImage):
          (KCanvasFEImage::~KCanvasFEImage):
          (KCanvasFEImage::pixmap): added
          (KCanvasFEImage::setPixmap): added
          * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
          (KCanvasFEImageQuartz::getCIFilter): added
          * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
          * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
          (KRenderingPaintServerImageQuartz::draw): added
          * ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp:
          (SVGComponentTransferFunctionElementImpl::transferFunction):
          * ksvg2/svg/SVGComponentTransferFunctionElementImpl.h:
          * ksvg2/svg/SVGFEBlendElementImpl.cpp:
          (SVGFEBlendElementImpl::filterEffect):
          * ksvg2/svg/SVGFEBlendElementImpl.h:
          * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
          (SVGFEColorMatrixElementImpl::filterEffect):
          * ksvg2/svg/SVGFEColorMatrixElementImpl.h:
          * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
          (SVGFEComponentTransferElementImpl::filterEffect):
          * ksvg2/svg/SVGFEComponentTransferElementImpl.h:
          * ksvg2/svg/SVGFECompositeElementImpl.cpp:
          (SVGFECompositeElementImpl::filterEffect):
          * ksvg2/svg/SVGFECompositeElementImpl.h:
          * ksvg2/svg/SVGFEFloodElementImpl.cpp:
          (SVGFEFloodElementImpl::filterEffect):
          * ksvg2/svg/SVGFEFloodElementImpl.h:
          * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
          (SVGFEGaussianBlurElementImpl::filterEffect):
          * ksvg2/svg/SVGFEGaussianBlurElementImpl.h:
          * ksvg2/svg/SVGFEImageElementImpl.cpp:
          (SVGFEImageElementImpl::filterEffect):
          * ksvg2/svg/SVGFEMergeElementImpl.cpp:
          (SVGFEMergeElementImpl::filterEffect):
          * ksvg2/svg/SVGFEMergeElementImpl.h:
          * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
          (SVGFEOffsetElementImpl::filterEffect):
          * ksvg2/svg/SVGFEOffsetElementImpl.h:
          * ksvg2/svg/SVGFETileElementImpl.cpp:
          (SVGFETileElementImpl::filterEffect):
          * ksvg2/svg/SVGFETileElementImpl.h:
          * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
          (SVGFETurbulenceElementImpl::filterEffect):
          * ksvg2/svg/SVGFETurbulenceElementImpl.h:
          * ksvg2/svg/SVGFilterElementImpl.cpp:
          (SVGFilterElementImpl::x):
          (SVGFilterElementImpl::y):
          (SVGFilterElementImpl::width):
          (SVGFilterElementImpl::height):
          (SVGFilterElementImpl::canvasResource):
          * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
          (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
          * ksvg2/svg/SVGImageElementImpl.cpp:
          (SVGImageElementImpl::notifyFinished):
          (SVGImageElementImpl::finalizeStyle):
          * ksvg2/svg/SVGStyledElementImpl.h:
          * ksvg2/svg/SVGURIReferenceImpl.cpp:
          (SVGURIReferenceImpl::parseMappedAttribute):
  
  Revision  Changes    Path
  1.393     +71 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.392
  retrieving revision 1.393
  diff -u -r1.392 -r1.393
  --- ChangeLog	22 Nov 2005 10:03:22 -0000	1.392
  +++ ChangeLog	22 Nov 2005 12:03:13 -0000	1.393
  @@ -1,5 +1,76 @@
   2005-11-22  eseidel  <eseidel at apple.com>
   
  +        Reviewed by mjs.
  +
  +        No additional test cases needed, this fixes 10+ existing tests.
  +
  +        Moved filter code off of createRenderer format, fixing filters.
  +        Hacked in support for <image> and <feImage> (Pixmap only)
  +        Simplified FEComponentTransfer function construction.
  +
  +        * kcanvas/KCanvasFilters.cpp:
  +        * kcanvas/KCanvasFilters.h:
  +        (KCanvasFEImage::KCanvasFEImage):
  +        (KCanvasFEImage::~KCanvasFEImage):
  +        (KCanvasFEImage::pixmap): added
  +        (KCanvasFEImage::setPixmap): added
  +        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
  +        (KCanvasFEImageQuartz::getCIFilter): added
  +        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
  +        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
  +        (KRenderingPaintServerImageQuartz::draw): added
  +        * ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp:
  +        (SVGComponentTransferFunctionElementImpl::transferFunction):
  +        * ksvg2/svg/SVGComponentTransferFunctionElementImpl.h:
  +        * ksvg2/svg/SVGFEBlendElementImpl.cpp:
  +        (SVGFEBlendElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEBlendElementImpl.h:
  +        * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
  +        (SVGFEColorMatrixElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEColorMatrixElementImpl.h:
  +        * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
  +        (SVGFEComponentTransferElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEComponentTransferElementImpl.h:
  +        * ksvg2/svg/SVGFECompositeElementImpl.cpp:
  +        (SVGFECompositeElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFECompositeElementImpl.h:
  +        * ksvg2/svg/SVGFEFloodElementImpl.cpp:
  +        (SVGFEFloodElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEFloodElementImpl.h:
  +        * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
  +        (SVGFEGaussianBlurElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEGaussianBlurElementImpl.h:
  +        * ksvg2/svg/SVGFEImageElementImpl.cpp:
  +        (SVGFEImageElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEMergeElementImpl.cpp:
  +        (SVGFEMergeElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEMergeElementImpl.h:
  +        * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
  +        (SVGFEOffsetElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFEOffsetElementImpl.h:
  +        * ksvg2/svg/SVGFETileElementImpl.cpp:
  +        (SVGFETileElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFETileElementImpl.h:
  +        * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
  +        (SVGFETurbulenceElementImpl::filterEffect):
  +        * ksvg2/svg/SVGFETurbulenceElementImpl.h:
  +        * ksvg2/svg/SVGFilterElementImpl.cpp:
  +        (SVGFilterElementImpl::x):
  +        (SVGFilterElementImpl::y):
  +        (SVGFilterElementImpl::width):
  +        (SVGFilterElementImpl::height):
  +        (SVGFilterElementImpl::canvasResource):
  +        * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
  +        (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
  +        * ksvg2/svg/SVGImageElementImpl.cpp:
  +        (SVGImageElementImpl::notifyFinished):
  +        (SVGImageElementImpl::finalizeStyle):
  +        * ksvg2/svg/SVGStyledElementImpl.h:
  +        * ksvg2/svg/SVGURIReferenceImpl.cpp:
  +        (SVGURIReferenceImpl::parseMappedAttribute):
  +
  +2005-11-22  eseidel  <eseidel at apple.com>
  +
           SVG build fix only, no review.
   
           I used debug-only method DOMString::ascii(), broke Deployment.
  
  
  
  1.9       +0 -5      SVGSupport/kcanvas/KCanvasFilters.cpp
  
  Index: KCanvasFilters.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasFilters.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KCanvasFilters.cpp	22 Nov 2005 00:09:09 -0000	1.8
  +++ KCanvasFilters.cpp	22 Nov 2005 12:03:15 -0000	1.9
  @@ -337,11 +337,6 @@
       return ts;
   }
   
  -KCanvasFEImage::~KCanvasFEImage()
  -{
  -    delete m_image;
  -}
  -
   QTextStream &KCanvasFEImage::externalRepresentation(QTextStream &ts) const
   {
       ts << "[type=IMAGE] "; 
  
  
  
  1.9       +9 -6      SVGSupport/kcanvas/KCanvasFilters.h
  
  Index: KCanvasFilters.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasFilters.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KCanvasFilters.h	22 Nov 2005 00:09:10 -0000	1.8
  +++ KCanvasFilters.h	22 Nov 2005 12:03:15 -0000	1.9
  @@ -423,16 +423,19 @@
   class KCanvasFEImage : public KCanvasFilterEffect
   {
   public:
  -    KCanvasFEImage() : m_image(0) {}
  -    virtual ~KCanvasFEImage();
  -
  -    khtml::RenderObject *image() const { return m_image; }
  -    void setImage(khtml::RenderObject *image) { m_image = image; }
  +    KCanvasFEImage() { }
  +    virtual ~KCanvasFEImage() { };
  +    
  +    // FIXME: Eventually we need to support <svg> (RenderObject *) as well as pixmap data.
  +    
  +    QPixmap pixmap() const { return m_pixmap; }
  +    void setPixmap(const QPixmap& pixmap) { m_pixmap = pixmap; }
   
       QTextStream &externalRepresentation(QTextStream &) const;
       
   private:
  -    khtml::RenderObject *m_image;
  +    khtml::RenderObject *m_renderObject;
  +    QPixmap m_pixmap;
   };
   
   class KCanvasFEMerge : public KCanvasFilterEffect
  
  
  
  1.12      +5 -7      SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm
  
  Index: KCanvasFilterQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- KCanvasFilterQuartz.mm	21 Nov 2005 08:29:15 -0000	1.11
  +++ KCanvasFilterQuartz.mm	22 Nov 2005 12:03:15 -0000	1.12
  @@ -522,13 +522,11 @@
   
   CIFilter *KCanvasFEImageQuartz::getCIFilter(KCanvasFilterQuartz *quartzFilter) const
   {
  -	// FIXME: incomplete.
  -//	KCanvasImage *item = image();
  -//	// actually draw the item into an image...
  -//	CIImage *ciImage = [CIImage imageWithCGLayer:cgLayer];
  -//	quartzFilter->setOutputImage(this, ciImage);
  -	
  -	return nil;  // really want a noop filter... or better design.
  +    // FIXME: This is just a hack for now, and only support pixmaps
  +    CIImage *ciImage = [CIImage imageWithCGImage:pixmap().imageRef()];
  +    quartzFilter->setOutputImage(this, ciImage);
  +    
  +    return nil;  // really want a noop filter... or better design.
   }
   
   CIFilter *KCanvasFEGaussianBlurQuartz::getCIFilter(KCanvasFilterQuartz *quartzFilter) const
  
  
  
  1.5       +1 -1      SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.h
  
  Index: KCanvasResourcesQuartz.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KCanvasResourcesQuartz.h	21 Nov 2005 08:29:15 -0000	1.4
  +++ KCanvasResourcesQuartz.h	22 Nov 2005 12:03:15 -0000	1.5
  @@ -76,7 +76,7 @@
   
       QSize size() { return m_size; }
       
  -    private:
  +private:
       QSize m_size;
       CGLayerRef m_cgLayer;
   };
  
  
  
  1.9       +6 -1      SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm
  
  Index: KRenderingPaintServerQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KRenderingPaintServerQuartz.mm	21 Nov 2005 08:29:15 -0000	1.8
  +++ KRenderingPaintServerQuartz.mm	22 Nov 2005 12:03:15 -0000	1.9
  @@ -149,5 +149,10 @@
   
   void KRenderingPaintServerImageQuartz::draw(KRenderingDeviceContext *renderingContext, const KCanvasCommonArgs &args, KCPaintTargetType type) const
   {
  -    // FIXME: NOT IMPLEMENTED
  +    // FIXME: total hack
  +    KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
  +    CGContextRef context = quartzContext->cgContext();
  +    CGRect objectBBox = CGContextGetPathBoundingBox(context);
  +    QPainter p;
  +    p.drawPixmap(QPoint(objectBBox.origin), image(), image().rect());
   }
  
  
  
  1.9       +12 -0     SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp
  
  Index: SVGComponentTransferFunctionElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGComponentTransferFunctionElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.8
  +++ SVGComponentTransferFunctionElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -141,4 +141,16 @@
           SVGElementImpl::parseMappedAttribute(attr);
   }
   
  +KCComponentTransferFunction SVGComponentTransferFunctionElementImpl::transferFunction() const
  +{
  +    KCComponentTransferFunction func;
  +    func.type = (KCComponentTransferType)(type()->baseVal() - 1);
  +    func.slope = slope()->baseVal();
  +    func.intercept = intercept()->baseVal();
  +    func.amplitude = amplitude()->baseVal();
  +    func.exponent = exponent()->baseVal();
  +    func.offset = offset()->baseVal();
  +    return func;
  +}
  +
   // vim:ts=4:noet
  
  
  
  1.6       +3 -2      SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.h
  
  Index: SVGComponentTransferFunctionElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGComponentTransferFunctionElementImpl.h	21 Nov 2005 08:29:35 -0000	1.5
  +++ SVGComponentTransferFunctionElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -24,8 +24,7 @@
   #define KSVG_SVGComponentTransferFunctionElementImpl_H
   
   #include "SVGElementImpl.h"
  -
  -class KCanvasComponentTransferFunctionElement;
  +#include "KCanvasFilters.h"
   
   namespace KSVG
   {
  @@ -50,6 +49,8 @@
   
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  +        
  +        KCComponentTransferFunction transferFunction() const;
   
       private:
           mutable SVGAnimatedEnumerationImpl *m_type;
  
  
  
  1.8       +5 -7      SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp
  
  Index: SVGFEBlendElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEBlendElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.7
  +++ SVGFEBlendElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.8
  @@ -99,18 +99,16 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEBlendElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFEBlendElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEBlend *>(canvas()->renderingDevice()->createFilterEffect(FE_BLEND));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEBlend *>(canvas()->renderingDevice()->createFilterEffect(FE_BLEND));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setBlendMode((KCBlendModeType)(mode()->baseVal()-1));
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFEBlendElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.7       +0 -4      SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.h
  
  Index: SVGFEBlendElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEBlendElementImpl.h	21 Nov 2005 08:29:37 -0000	1.6
  +++ SVGFEBlendElementImpl.h	22 Nov 2005 12:03:16 -0000	1.7
  @@ -47,10 +47,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.9       +7 -7      SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp
  
  Index: SVGFEColorMatrixElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFEColorMatrixElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.8
  +++ SVGFEColorMatrixElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -102,9 +102,13 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEColorMatrixElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *)
  +KCanvasFilterEffect *SVGFEColorMatrixElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEColorMatrix *>(canvas()->renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
  +    if (!m_filterEffect)
  +          m_filterEffect = static_cast<KCanvasFEColorMatrix *>(canvas()->renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
  +    if (!m_filterEffect)
  +        return 0;
  +        
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       Q3ValueList<float> _values;
  @@ -114,11 +118,7 @@
           _values.append(numbers->getItem(i)->value());
       m_filterEffect->setValues(_values);
       m_filterEffect->setType((KCColorMatrixType)(type()->baseVal() - 1));
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFEColorMatrixElementImpl::filterEffect() const
  -{
  +    
       return m_filterEffect;
   }
   
  
  
  
  1.6       +1 -5      SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.h
  
  Index: SVGFEColorMatrixElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEColorMatrixElementImpl.h	21 Nov 2005 08:29:37 -0000	1.5
  +++ SVGFEColorMatrixElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -47,11 +47,7 @@
   
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  -
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
  +        
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.9       +15 -62    SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp
  
  Index: SVGFEComponentTransferElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFEComponentTransferElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.8
  +++ SVGFEComponentTransferElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -73,75 +73,28 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEComponentTransferElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFEComponentTransferElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
       if (!m_filterEffect)
           return 0;
  -
  +    
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
  -    return 0;
  -}
  +    
  +    for (KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling()) {
  +        if (n->hasTagName(SVGNames::feFuncRTag))
  +            m_filterEffect->setRedFunction(static_cast<SVGFEFuncRElementImpl *>(n)->transferFunction());
  +        else if (n->hasTagName(SVGNames::feFuncGTag))
  +            m_filterEffect->setGreenFunction(static_cast<SVGFEFuncGElementImpl *>(n)->transferFunction());
  +        else if (n->hasTagName(SVGNames::feFuncBTag))
  +            m_filterEffect->setBlueFunction(static_cast<SVGFEFuncBElementImpl *>(n)->transferFunction());
  +        else if (n->hasTagName(SVGNames::feFuncATag))
  +            m_filterEffect->setAlphaFunction(static_cast<SVGFEFuncAElementImpl *>(n)->transferFunction());
  +    }
   
  -KCanvasFilterEffect *SVGFEComponentTransferElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  -void SVGFEComponentTransferElementImpl::closeRenderer()
  -{
  -    if (!m_filterEffect)
  -        return;
  -
  -    for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
  -    {
  -        KCComponentTransferFunction func;
  -        if(n->hasTagName(SVGNames::feFuncRTag))
  -        {
  -            SVGFEFuncRElementImpl *funcR = static_cast<SVGFEFuncRElementImpl *>(n);
  -            func.type = (KCComponentTransferType)(funcR->type()->baseVal() - 1);
  -            func.slope = funcR->slope()->baseVal();
  -            func.intercept = funcR->intercept()->baseVal();
  -            func.amplitude = funcR->amplitude()->baseVal();
  -            func.exponent = funcR->exponent()->baseVal();
  -            func.offset = funcR->offset()->baseVal();
  -            m_filterEffect->setRedFunction(func);
  -        }
  -        else if(n->hasTagName(SVGNames::feFuncGTag))
  -        {
  -            SVGFEFuncGElementImpl *funcG = static_cast<SVGFEFuncGElementImpl *>(n);
  -            func.type = (KCComponentTransferType)(funcG->type()->baseVal() - 1);
  -            func.slope = funcG->slope()->baseVal();
  -            func.intercept = funcG->intercept()->baseVal();
  -            func.amplitude = funcG->amplitude()->baseVal();
  -            func.exponent = funcG->exponent()->baseVal();
  -            func.offset = funcG->offset()->baseVal();
  -            m_filterEffect->setGreenFunction(func);
  -        }
  -        else if(n->hasTagName(SVGNames::feFuncBTag))
  -        {
  -            SVGFEFuncBElementImpl *funcB = static_cast<SVGFEFuncBElementImpl *>(n);
  -            func.type = (KCComponentTransferType)(funcB->type()->baseVal() - 1);
  -            func.slope = funcB->slope()->baseVal();
  -            func.intercept = funcB->intercept()->baseVal();
  -            func.amplitude = funcB->amplitude()->baseVal();
  -            func.exponent = funcB->exponent()->baseVal();
  -            func.offset = funcB->offset()->baseVal();
  -            m_filterEffect->setBlueFunction(func);
  -        }
  -        else if(n->hasTagName(SVGNames::feFuncATag))
  -        {
  -            SVGFEFuncAElementImpl *funcA = static_cast<SVGFEFuncAElementImpl *>(n);
  -            func.type = (KCComponentTransferType)(funcA->type()->baseVal() - 1);
  -            func.slope = funcA->slope()->baseVal();
  -            func.intercept = funcA->intercept()->baseVal();
  -            func.amplitude = funcA->amplitude()->baseVal();
  -            func.exponent = funcA->exponent()->baseVal();
  -            func.offset = funcA->offset()->baseVal();
  -            m_filterEffect->setAlphaFunction(func);
  -        }
  -    }
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.6       +0 -6      SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.h
  
  Index: SVGFEComponentTransferElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEComponentTransferElementImpl.h	21 Nov 2005 08:29:37 -0000	1.5
  +++ SVGFEComponentTransferElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -44,14 +44,8 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
  -        virtual void closeRenderer();
  -
       private:
           mutable SVGAnimatedStringImpl *m_in1;
           mutable KCanvasFEComponentTransfer *m_filterEffect;
  
  
  
  1.8       +5 -7      SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp
  
  Index: SVGFECompositeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFECompositeElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.7
  +++ SVGFECompositeElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.8
  @@ -138,9 +138,12 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFECompositeElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFECompositeElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEComposite *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPOSITE));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEComposite *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPOSITE));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setOperation((KCCompositeOperationType)(_operator()->baseVal() - 1));
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).qstring());
  @@ -149,11 +152,6 @@
       m_filterEffect->setK2(k2()->baseVal());
       m_filterEffect->setK3(k3()->baseVal());
       m_filterEffect->setK4(k4()->baseVal());
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFECompositeElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.6       +0 -4      SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.h
  
  Index: SVGFECompositeElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFECompositeElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  +++ SVGFECompositeElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -52,10 +52,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.8       +9 -8      SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp
  
  Index: SVGFEFloodElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEFloodElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.7
  +++ SVGFEFloodElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.8
  @@ -66,18 +66,19 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEFloodElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFEFloodElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEFlood *>(canvas()->renderingDevice()->createFilterEffect(FE_FLOOD));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEFlood *>(canvas()->renderingDevice()->createFilterEffect(FE_FLOOD));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
  -    //m_filterEffect->setFloodColor(static_cast<SVGRenderStyle *>(renderStyle())->floodColor());
  -    //m_filterEffect->setFloodOpacity(static_cast<SVGRenderStyle *>(renderStyle())->floodOpacity());
  -    return 0;
  -}
  +    // 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());
   
  -KCanvasFilterEffect *SVGFEFloodElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.7       +0 -4      SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.h
  
  Index: SVGFEFloodElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEFloodElementImpl.h	21 Nov 2005 08:29:38 -0000	1.6
  +++ SVGFEFloodElementImpl.h	22 Nov 2005 12:03:16 -0000	1.7
  @@ -44,10 +44,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.9       +5 -7      SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp
  
  Index: SVGFEGaussianBlurElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFEGaussianBlurElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.8
  +++ SVGFEGaussianBlurElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -99,18 +99,16 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEGaussianBlurElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFEGaussianBlurElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(canvas()->renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(canvas()->renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       m_filterEffect->setStdDeviationX(stdDeviationX()->baseVal());
       m_filterEffect->setStdDeviationY(stdDeviationY()->baseVal());
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFEGaussianBlurElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.6       +0 -4      SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.h
  
  Index: SVGFEGaussianBlurElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEGaussianBlurElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  +++ SVGFEGaussianBlurElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -49,10 +49,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.9       +4 -3      SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp
  
  Index: SVGFEImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFEImageElementImpl.cpp	22 Nov 2005 00:09:03 -0000	1.8
  +++ SVGFEImageElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -101,10 +101,11 @@
   
   KCanvasFilterEffect *SVGFEImageElementImpl::filterEffect() const
   {
  -    if (!m_filterEffect) {
  +    if (!m_filterEffect)
           m_filterEffect = static_cast<KCanvasFEImage *>(canvas()->renderingDevice()->createFilterEffect(FE_IMAGE));
  -        setStandardAttributes(m_filterEffect);
  -    }
  +    if (!m_filterEffect)
  +        return 0;
  +    setStandardAttributes(m_filterEffect);
       return m_filterEffect;
   }
   
  
  
  
  1.8       +10 -15    SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp
  
  Index: SVGFEMergeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEMergeElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  +++ SVGFEMergeElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.8
  @@ -50,32 +50,27 @@
   {
   }
   
  -khtml::RenderObject *SVGFEMergeElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *)
  -{
  -    m_filterEffect = static_cast<KCanvasFEMerge *>(canvas()->renderingDevice()->createFilterEffect(FE_MERGE));
  -    setStandardAttributes(m_filterEffect);
  -    return 0;
  -}
  -
   KCanvasFilterEffect *SVGFEMergeElementImpl::filterEffect() const
   {
  -    return m_filterEffect;
  -}
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEMerge *>(canvas()->renderingDevice()->createFilterEffect(FE_MERGE));
  +    if (!m_filterEffect)
  +        return 0;
  +    setStandardAttributes(m_filterEffect);
   
  -void SVGFEMergeElementImpl::closeRenderer()
  -{
       QStringList mergeInputs;
       for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
           if(n->hasTagName(SVGNames::feMergeNodeTag))
           {
  -            SVGFEMergeNodeElementImpl *mergeNode = static_cast<SVGFEMergeNodeElementImpl *>(n);
  -            mergeInputs.append(KDOM::DOMString(mergeNode->in1()->baseVal()).qstring());
  +            KDOM::DOMString mergeInput = static_cast<SVGFEMergeNodeElementImpl *>(n)->in1()->baseVal();
  +            mergeInputs.append(mergeInput.qstring());
           }
       }
   
  -    if(m_filterEffect) // we may not be attached...
  -        m_filterEffect->setMergeInputs(mergeInputs);
  +    m_filterEffect->setMergeInputs(mergeInputs);
  +
  +    return m_filterEffect;
   }
   
   // vim:ts=4:noet
  
  
  
  1.6       +0 -6      SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.h
  
  Index: SVGFEMergeElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEMergeElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  +++ SVGFEMergeElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -36,14 +36,8 @@
           SVGFEMergeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEMergeElementImpl();
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
  -        virtual void closeRenderer();
  -
       private:
           mutable KCanvasFEMerge *m_filterEffect;
       };
  
  
  
  1.9       +5 -7      SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp
  
  Index: SVGFEOffsetElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFEOffsetElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.8
  +++ SVGFEOffsetElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -90,18 +90,16 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFEOffsetElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFEOffsetElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFEOffset *>(canvas()->renderingDevice()->createFilterEffect(FE_OFFSET));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFEOffset *>(canvas()->renderingDevice()->createFilterEffect(FE_OFFSET));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       m_filterEffect->setDx(dx()->baseVal());
       m_filterEffect->setDy(dy()->baseVal());
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFEOffsetElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.6       +0 -4      SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.h
  
  Index: SVGFEOffsetElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEOffsetElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  +++ SVGFEOffsetElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -47,10 +47,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.8       +5 -7      SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp
  
  Index: SVGFETileElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFETileElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  +++ SVGFETileElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.8
  @@ -65,16 +65,14 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFETileElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFETileElementImpl::filterEffect() const
   {
  -    m_filterEffect = static_cast<KCanvasFETile *>(canvas()->renderingDevice()->createFilterEffect(FE_TILE));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFETile *>(canvas()->renderingDevice()->createFilterEffect(FE_TILE));
  +    if (!m_filterEffect)
  +        return 0;
       m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFETileElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.6       +0 -4      SVGSupport/ksvg2/svg/SVGFETileElementImpl.h
  
  Index: SVGFETileElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETileElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFETileElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  +++ SVGFETileElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -44,10 +44,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.10      +3 -8      SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp
  
  Index: SVGFETurbulenceElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGFETurbulenceElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.9
  +++ SVGFETurbulenceElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.10
  @@ -137,10 +137,10 @@
           SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -khtml::RenderObject *SVGFETurbulenceElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
  +KCanvasFilterEffect *SVGFETurbulenceElementImpl::filterEffect() const
   {
  -
  -    m_filterEffect = static_cast<KCanvasFETurbulence *>(canvas()->renderingDevice()->createFilterEffect(FE_TURBULENCE));
  +    if (!m_filterEffect)
  +        m_filterEffect = static_cast<KCanvasFETurbulence *>(canvas()->renderingDevice()->createFilterEffect(FE_TURBULENCE));
       if (!m_filterEffect)
           return 0;
       
  @@ -151,11 +151,6 @@
       m_filterEffect->setNumOctaves(numOctaves()->baseVal());
       m_filterEffect->setSeed(seed()->baseVal());
       m_filterEffect->setStitchTiles(stitchTiles()->baseVal() == SVG_STITCHTYPE_STITCH);
  -    return 0;
  -}
  -
  -KCanvasFilterEffect *SVGFETurbulenceElementImpl::filterEffect() const
  -{
       return m_filterEffect;
   }
   
  
  
  
  1.6       +0 -4      SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.h
  
  Index: SVGFETurbulenceElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFETurbulenceElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  +++ SVGFETurbulenceElementImpl.h	22 Nov 2005 12:03:16 -0000	1.6
  @@ -51,10 +51,6 @@
           // Derived from: 'ElementImpl'
           virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  -
  -        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  -
           virtual KCanvasFilterEffect *filterEffect() const;
   
       private:
  
  
  
  1.9       +5 -5      SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp
  
  Index: SVGFilterElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFilterElementImpl.cpp	22 Nov 2005 00:09:04 -0000	1.8
  +++ SVGFilterElementImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -95,7 +95,7 @@
       // Spec : If the attribute is not specified, the effect is as if a value of "-10%" were specified.
       if(!m_x)
       {
  -         lazy_create<SVGAnimatedLengthImpl>(m_x, this, LM_WIDTH, viewportElement());
  +        lazy_create<SVGAnimatedLengthImpl>(m_x, this, LM_WIDTH, viewportElement());
           m_x->baseVal()->setValueAsString(KDOM::DOMString("-10%").impl());
           return m_x;
       }
  @@ -108,7 +108,7 @@
       // Spec : If the attribute is not specified, the effect is as if a value of "-10%" were specified.
       if(!m_y)
       {
  -         lazy_create<SVGAnimatedLengthImpl>(m_y, this, LM_HEIGHT, viewportElement());
  +        lazy_create<SVGAnimatedLengthImpl>(m_y, this, LM_HEIGHT, viewportElement());
           m_y->baseVal()->setValueAsString(KDOM::DOMString("-10%").impl());
           return m_y;
       }
  @@ -121,7 +121,7 @@
       // Spec : If the attribute is not specified, the effect is as if a value of "120%" were specified.
       if(!m_width)
       {
  -         lazy_create<SVGAnimatedLengthImpl>(m_width, this, LM_WIDTH, viewportElement());
  +        lazy_create<SVGAnimatedLengthImpl>(m_width, this, LM_WIDTH, viewportElement());
           m_width->baseVal()->setValueAsString(KDOM::DOMString("120%").impl());
           return m_width;
       }
  @@ -134,7 +134,7 @@
       // Spec : If the attribute is not specified, the effect is as if a value of "120%" were specified.
       if(!m_height)
       {
  -         lazy_create<SVGAnimatedLengthImpl>(m_height, this, LM_HEIGHT, viewportElement());
  +        lazy_create<SVGAnimatedLengthImpl>(m_height, this, LM_HEIGHT, viewportElement());
           m_height->baseVal()->setValueAsString(KDOM::DOMString("120%").impl());
           return m_height;
       }
  @@ -193,7 +193,7 @@
   
   KCanvasFilter *SVGFilterElementImpl::canvasResource()
   {
  -    if(!canvas())
  +    if(!attached())
           return 0;
   
       if(!m_filter)
  
  
  
  1.9       +4 -1      SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp
  
  Index: SVGFilterPrimitiveStandardAttributesImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFilterPrimitiveStandardAttributesImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  +++ SVGFilterPrimitiveStandardAttributesImpl.cpp	22 Nov 2005 12:03:16 -0000	1.9
  @@ -22,6 +22,7 @@
   
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
  +#include <kxmlcore/Assertions.h>
   
   #include "ksvg.h"
   #include "SVGNames.h"
  @@ -119,7 +120,9 @@
   
   void SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes(KCanvasFilterEffect *filterEffect) const
   {
  -    if (!filterEffect) return;
  +    ASSERT(filterEffect);
  +    if (!filterEffect)
  +        return;
       bool bbox = false;
       if(parentNode() && parentNode()->hasTagName(SVGNames::filterTag))
           bbox = static_cast<SVGFilterElementImpl *>(parentNode())->primitiveUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
  
  
  
  1.9       +10 -14    SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp
  
  Index: SVGImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGImageElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  +++ SVGImageElementImpl.cpp	22 Nov 2005 12:03:17 -0000	1.9
  @@ -201,32 +201,28 @@
           m_cachedDocument = 0;
       }
       else
  +#endif
       if(finishedObj == m_cachedImage)
       {
  -        if(m_canvasItem && m_canvasItem->style())
  -        {    
  -            KRenderingFillPainter *fillPainter = m_canvasItem->style()->fillPainter();
  +        if(renderer() && renderer()->isRenderPath() && renderer()->style())
  +        {
  +            RenderPath *item = static_cast<RenderPath *>(renderer());
  +            KRenderingFillPainter *fillPainter = item->canvasStyle()->fillPainter();
               if(!fillPainter)
                   return;
   
               KRenderingPaintServer *fillPaintServer = fillPainter->paintServer();
  +            if (fillPaintServer->type() != PS_IMAGE)
  +                return;
               KRenderingPaintServerImage *fillPaintServerImage = static_cast<KRenderingPaintServerImage *>(fillPaintServer);
  +            fillPaintServerImage->setImage(m_cachedImage->pixmap());
   
  -            QPixmap pixm(m_cachedImage->pixmap_size());
  -			kdDebug() << "pixm w : " << pixm.size() << endl;
  -			QPainter p(&pixm);
  -			ImagePainter ip(m_cachedImage->image());
  -			ip.paint(0, 0, &p, 0, 0, pixm.width(), pixm.height());
  -            KCanvasImageBuffer *imageBuffer = new KCanvasImageBuffer(pixm);
  -            fillPaintServerImage->setImage(imageBuffer);
  -
  -            m_canvasItem->invalidate();
  +            item->setNeedsLayout(true);
           }
   
           m_cachedImage->deref(this);
           m_cachedImage = 0;
       }
  -#endif
   }
   
   void SVGImageElementImpl::finalizeStyle(KCanvasRenderingStyle *style, bool /* needFillStrokeUpdate */)
  @@ -242,7 +238,7 @@
       style->disableFillPainter();
       style->disableStrokePainter();
   
  -    KRenderingPaintServer *fillPaintServer = canvas()->renderingDevice()->createPaintServer(KCPaintServerType(PS_IMAGE));
  +    KRenderingPaintServer *fillPaintServer = canvas()->renderingDevice()->createPaintServer(PS_IMAGE);
       style->fillPainter()->setPaintServer(fillPaintServer);
   
   //    if(!m_cachedDocument) // bitmap
  
  
  
  1.8       +0 -3      SVGSupport/ksvg2/svg/SVGStyledElementImpl.h
  
  Index: SVGStyledElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyledElementImpl.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGStyledElementImpl.h	21 Nov 2005 08:29:42 -0000	1.7
  +++ SVGStyledElementImpl.h	22 Nov 2005 12:03:17 -0000	1.8
  @@ -74,9 +74,6 @@
           virtual const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
   
       protected:
  -        friend class SVGDocumentImpl; // Needs renderStyle accesss...
  -        friend class SVGClipPathElementImpl; // Needs renderStyle access..
  -
           virtual void finalizeStyle(KCanvasRenderingStyle *style, bool needFillStrokeUpdate = true);
   
           void updateCanvasItem(); // Handles "path data" object changes... (not for style/transform!)
  
  
  
  1.8       +1 -1      SVGSupport/ksvg2/svg/SVGURIReferenceImpl.cpp
  
  Index: SVGURIReferenceImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGURIReferenceImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGURIReferenceImpl.cpp	21 Nov 2005 08:29:43 -0000	1.7
  +++ SVGURIReferenceImpl.cpp	22 Nov 2005 12:03:17 -0000	1.8
  @@ -51,7 +51,7 @@
   
   bool SVGURIReferenceImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    if (attr->name() == SVGNames::hrefAttr) // || attr->name() == XLinkNames::hrefAttr)
  +    if (attr->name() == SVGNames::hrefAttr || attr->name().localName() == "href") // || attr->name() == XLinkNames::hrefAttr)
       {
           href()->setBaseVal(attr->value().impl());
           return true;
  
  
  



More information about the webkit-changes mailing list