Changeset 52580 in webkit


Ignore:
Timestamp:
Dec 27, 2009 9:08:50 AM (14 years ago)
Author:
krit@webkit.org
Message:

2009-12-27 Dirk Schulze <krit@webkit.org>

Reviewed by Nikolas Zimmermann.

SVG Mask result wrong, if two different objects call the same mask id
https://bugs.webkit.org/show_bug.cgi?id=32787

At the moment we create one resource per maskId. Some resources (like mask)
create ImageBuffers and depends on the properties of the RenderObject,
thus we can't use it for a second object.
This patch stores multiple mask resources for one maskId and different
RenderObject can use the same maskId.
Clipper, Filter and Patterns also need to store multiple resources later.

Test: svg/custom/mask-on-multiple-objects.svg

  • rendering/RenderPath.cpp: (WebCore::RenderPath::drawMarkersIfNeeded):
  • rendering/RenderSVGContainer.cpp: (WebCore::RenderSVGContainer::selfWillPaint):
  • rendering/RenderSVGGradientStop.cpp: (WebCore::RenderSVGGradientStop::styleDidChange):
  • rendering/RenderSVGRoot.cpp: (WebCore::RenderSVGRoot::selfWillPaint):
  • rendering/SVGRenderSupport.cpp: (WebCore::SVGRenderBase::prepareToRenderSVGContent): (WebCore::SVGRenderBase::filterBoundingBoxForRenderer):
  • rendering/SVGRenderTreeAsText.cpp: (WebCore::writeRenderResources):
  • svg/SVGClipPathElement.cpp: (WebCore::SVGClipPathElement::canvasResource):
  • svg/SVGClipPathElement.h:
  • svg/SVGFilterElement.cpp: (WebCore::SVGFilterElement::canvasResource):
  • svg/SVGFilterElement.h:
  • svg/SVGGradientElement.cpp: (WebCore::SVGGradientElement::canvasResource):
  • svg/SVGGradientElement.h:
  • svg/SVGMarkerElement.cpp: (WebCore::SVGMarkerElement::canvasResource):
  • svg/SVGMarkerElement.h:
  • svg/SVGMaskElement.cpp: (WebCore::SVGMaskElement::svgAttributeChanged): (WebCore::SVGMaskElement::childrenChanged): (WebCore::SVGMaskElement::canvasResource):
  • svg/SVGMaskElement.h:
  • svg/SVGPatternElement.cpp: (WebCore::SVGPatternElement::canvasResource):
  • svg/SVGPatternElement.h:
  • svg/SVGStyledElement.cpp: (WebCore::SVGStyledElement::invalidateResourcesInAncestorChain):
  • svg/SVGStyledElement.h: (WebCore::SVGStyledElement::canvasResource):
  • svg/graphics/SVGPaintServer.cpp: (WebCore::getPaintServerById): (WebCore::SVGPaintServer::fillPaintServer): (WebCore::SVGPaintServer::strokePaintServer):
  • svg/graphics/SVGPaintServer.h:
  • svg/graphics/SVGResource.cpp: (WebCore::getResourceById):
  • svg/graphics/SVGResource.h:
  • svg/graphics/SVGResourceClipper.cpp: (WebCore::getClipperById):
  • svg/graphics/SVGResourceClipper.h:
  • svg/graphics/SVGResourceFilter.cpp: (WebCore::getFilterById):
  • svg/graphics/SVGResourceFilter.h:
  • svg/graphics/SVGResourceMarker.cpp: (WebCore::getMarkerById):
  • svg/graphics/SVGResourceMarker.h:
  • svg/graphics/SVGResourceMasker.cpp: (WebCore::getMaskerById):
  • svg/graphics/SVGResourceMasker.h:

2009-12-27 Dirk Schulze <krit@webkit.org>

Reviewed by Nikolas Zimmermann.

SVG Mask result wrong, if two different objects call the same mask id
https://bugs.webkit.org/show_bug.cgi?id=32787

Two rects with different sizes and positions call the same mask id. Both
rects should be masked to two circles, dependent on the properties of the
rects.

  • platform/mac/svg/custom/mask-on-multiple-objects-expected.checksum: Added.
  • platform/mac/svg/custom/mask-on-multiple-objects-expected.png: Added.
  • platform/mac/svg/custom/mask-on-multiple-objects-expected.txt: Added.
  • svg/custom/mask-on-multiple-objects.svg: Added.
Location:
trunk
Files:
4 added
34 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r52578 r52580  
     12009-12-27  Dirk Schulze  <krit@webkit.org>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        SVG Mask result wrong, if two different objects call the same mask id
     6        https://bugs.webkit.org/show_bug.cgi?id=32787
     7
     8        Two rects with different sizes and positions call the same mask id. Both
     9        rects should be masked to two circles, dependent on the properties of the
     10        rects.
     11
     12        * platform/mac/svg/custom/mask-on-multiple-objects-expected.checksum: Added.
     13        * platform/mac/svg/custom/mask-on-multiple-objects-expected.png: Added.
     14        * platform/mac/svg/custom/mask-on-multiple-objects-expected.txt: Added.
     15        * svg/custom/mask-on-multiple-objects.svg: Added.
     16
    1172009-12-27  Csaba Osztrogonác  <ossy@webkit.org>
    218
  • trunk/WebCore/ChangeLog

    r52579 r52580  
     12009-12-27  Dirk Schulze  <krit@webkit.org>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        SVG Mask result wrong, if two different objects call the same mask id
     6        https://bugs.webkit.org/show_bug.cgi?id=32787
     7
     8        At the moment we create one resource per maskId. Some resources (like mask)
     9        create ImageBuffers and depends on the properties of the RenderObject,
     10        thus we can't use it for a second object.
     11        This patch stores multiple mask resources for one maskId and different
     12        RenderObject can use the same maskId.
     13        Clipper, Filter and Patterns also need to store multiple resources later.
     14
     15        Test: svg/custom/mask-on-multiple-objects.svg
     16
     17        * rendering/RenderPath.cpp:
     18        (WebCore::RenderPath::drawMarkersIfNeeded):
     19        * rendering/RenderSVGContainer.cpp:
     20        (WebCore::RenderSVGContainer::selfWillPaint):
     21        * rendering/RenderSVGGradientStop.cpp:
     22        (WebCore::RenderSVGGradientStop::styleDidChange):
     23        * rendering/RenderSVGRoot.cpp:
     24        (WebCore::RenderSVGRoot::selfWillPaint):
     25        * rendering/SVGRenderSupport.cpp:
     26        (WebCore::SVGRenderBase::prepareToRenderSVGContent):
     27        (WebCore::SVGRenderBase::filterBoundingBoxForRenderer):
     28        * rendering/SVGRenderTreeAsText.cpp:
     29        (WebCore::writeRenderResources):
     30        * svg/SVGClipPathElement.cpp:
     31        (WebCore::SVGClipPathElement::canvasResource):
     32        * svg/SVGClipPathElement.h:
     33        * svg/SVGFilterElement.cpp:
     34        (WebCore::SVGFilterElement::canvasResource):
     35        * svg/SVGFilterElement.h:
     36        * svg/SVGGradientElement.cpp:
     37        (WebCore::SVGGradientElement::canvasResource):
     38        * svg/SVGGradientElement.h:
     39        * svg/SVGMarkerElement.cpp:
     40        (WebCore::SVGMarkerElement::canvasResource):
     41        * svg/SVGMarkerElement.h:
     42        * svg/SVGMaskElement.cpp:
     43        (WebCore::SVGMaskElement::svgAttributeChanged):
     44        (WebCore::SVGMaskElement::childrenChanged):
     45        (WebCore::SVGMaskElement::canvasResource):
     46        * svg/SVGMaskElement.h:
     47        * svg/SVGPatternElement.cpp:
     48        (WebCore::SVGPatternElement::canvasResource):
     49        * svg/SVGPatternElement.h:
     50        * svg/SVGStyledElement.cpp:
     51        (WebCore::SVGStyledElement::invalidateResourcesInAncestorChain):
     52        * svg/SVGStyledElement.h:
     53        (WebCore::SVGStyledElement::canvasResource):
     54        * svg/graphics/SVGPaintServer.cpp:
     55        (WebCore::getPaintServerById):
     56        (WebCore::SVGPaintServer::fillPaintServer):
     57        (WebCore::SVGPaintServer::strokePaintServer):
     58        * svg/graphics/SVGPaintServer.h:
     59        * svg/graphics/SVGResource.cpp:
     60        (WebCore::getResourceById):
     61        * svg/graphics/SVGResource.h:
     62        * svg/graphics/SVGResourceClipper.cpp:
     63        (WebCore::getClipperById):
     64        * svg/graphics/SVGResourceClipper.h:
     65        * svg/graphics/SVGResourceFilter.cpp:
     66        (WebCore::getFilterById):
     67        * svg/graphics/SVGResourceFilter.h:
     68        * svg/graphics/SVGResourceMarker.cpp:
     69        (WebCore::getMarkerById):
     70        * svg/graphics/SVGResourceMarker.h:
     71        * svg/graphics/SVGResourceMasker.cpp:
     72        (WebCore::getMaskerById):
     73        * svg/graphics/SVGResourceMasker.h:
     74
    1752009-12-27  Nikolas Zimmermann  <nzimmermann@rim.com>
    276
  • trunk/WebCore/rendering/RenderPath.cpp

    r52579 r52580  
    372372    AtomicString endMarkerId(svgStyle->endMarker());
    373373
    374     SVGResourceMarker* startMarker = getMarkerById(doc, startMarkerId);
    375     SVGResourceMarker* midMarker = getMarkerById(doc, midMarkerId);
    376     SVGResourceMarker* endMarker = getMarkerById(doc, endMarkerId);
     374    SVGResourceMarker* startMarker = getMarkerById(doc, startMarkerId, this);
     375    SVGResourceMarker* midMarker = getMarkerById(doc, midMarkerId, this);
     376    SVGResourceMarker* endMarker = getMarkerById(doc, endMarkerId, this);
    377377
    378378    if (!startMarker && !startMarkerId.isEmpty())
  • trunk/WebCore/rendering/RenderSVGContainer.cpp

    r46815 r52580  
    8383#if ENABLE(FILTERS)
    8484    const SVGRenderStyle* svgStyle = style()->svgStyle();
    85     SVGResourceFilter* filter = getFilterById(document(), svgStyle->filter());
     85    SVGResourceFilter* filter = getFilterById(document(), svgStyle->filter(), this);
    8686    if (filter)
    8787        return true;
  • trunk/WebCore/rendering/RenderSVGGradientStop.cpp

    r40871 r52580  
    5050    // but I can imagine a few cases we might not be catching, so let's not crash if our parent isn't a gradient.
    5151    if (SVGGradientElement* gradient = gradientElement()) {
    52         if (SVGResource* resource = gradient->canvasResource())
     52        if (SVGResource* resource = gradient->canvasResource(this))
    5353            resource->invalidate();
    5454    }
  • trunk/WebCore/rendering/RenderSVGRoot.cpp

    r46815 r52580  
    114114#if ENABLE(FILTERS)
    115115    const SVGRenderStyle* svgStyle = style()->svgStyle();
    116     SVGResourceFilter* filter = getFilterById(document(), svgStyle->filter());
     116    SVGResourceFilter* filter = getFilterById(document(), svgStyle->filter(), this);
    117117    if (filter)
    118118        return true;
  • trunk/WebCore/rendering/SVGRenderSupport.cpp

    r52394 r52580  
    117117
    118118#if ENABLE(FILTERS)
    119     SVGResourceFilter* newFilter = getFilterById(document, filterId);
     119    SVGResourceFilter* newFilter = getFilterById(document, filterId, object);
    120120    if (newFilter == rootFilter) {
    121121        // Catch <text filter="url(#foo)">Test<tspan filter="url(#foo)">123</tspan></text>.
     
    127127#endif
    128128
    129     SVGResourceClipper* clipper = getClipperById(document, clipperId);
    130     SVGResourceMasker* masker = getMaskerById(document, maskerId);
     129    SVGResourceClipper* clipper = getClipperById(document, clipperId, object);
     130    SVGResourceMasker* masker = getMaskerById(document, maskerId, object);
    131131
    132132    if (masker) {
     
    236236{
    237237#if ENABLE(FILTERS)
    238     SVGResourceFilter* filter = getFilterById(object->document(), object->style()->svgStyle()->filter());
     238    SVGResourceFilter* filter = getFilterById(object->document(), object->style()->svgStyle()->filter(), object);
    239239    if (filter)
    240240        return filter->filterBoundingBox();
  • trunk/WebCore/rendering/SVGRenderTreeAsText.cpp

    r52312 r52580  
    522522
    523523        SVGStyledElement* styled = static_cast<SVGStyledElement*>(svgElement);
    524         RefPtr<SVGResource> resource(styled->canvasResource());
     524        RefPtr<SVGResource> resource(styled->canvasResource(node->renderer()));
    525525        if (!resource)
    526526            continue;
  • trunk/WebCore/svg/SVGClipPathElement.cpp

    r50583 r52580  
    9090}
    9191
    92 SVGResource* SVGClipPathElement::canvasResource()
     92SVGResource* SVGClipPathElement::canvasResource(const RenderObject*)
    9393{
    9494    if (!m_clipper)
  • trunk/WebCore/svg/SVGClipPathElement.h

    r49602 r52580  
    2323
    2424#if ENABLE(SVG)
     25#include "RenderObject.h"
    2526#include "SVGExternalResourcesRequired.h"
    2627#include "SVGLangSpace.h"
     
    4647        virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
    4748
    48         virtual SVGResource* canvasResource();
     49        virtual SVGResource* canvasResource(const RenderObject*);
    4950
    5051    private:
  • trunk/WebCore/svg/SVGFilterElement.cpp

    r51310 r52580  
    161161}
    162162
    163 SVGResource* SVGFilterElement::canvasResource()
     163SVGResource* SVGFilterElement::canvasResource(const RenderObject*)
    164164{
    165165    if (!attached())
  • trunk/WebCore/svg/SVGFilterElement.h

    r49602 r52580  
    2424
    2525#if ENABLE(SVG) && ENABLE(FILTERS)
     26#include "RenderObject.h"
    2627#include "SVGResourceFilter.h"
    2728#include "SVGExternalResourcesRequired.h"
     
    4344        virtual ~SVGFilterElement();
    4445
    45         virtual SVGResource* canvasResource();
     46        virtual SVGResource* canvasResource(const RenderObject*);
    4647
    4748        void setFilterRes(unsigned long filterResX, unsigned long filterResY) const;
  • trunk/WebCore/svg/SVGGradientElement.cpp

    r50583 r52580  
    115115}
    116116
    117 SVGResource* SVGGradientElement::canvasResource()
     117SVGResource* SVGGradientElement::canvasResource(const RenderObject*)
    118118{
    119119    if (!m_resource) {
  • trunk/WebCore/svg/SVGGradientElement.h

    r49602 r52580  
    2323
    2424#if ENABLE(SVG)
     25#include "RenderObject.h"
    2526#include "SVGPaintServerGradient.h"
    2627#include "SVGExternalResourcesRequired.h"
     
    4647        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    4748
    48         virtual SVGResource* canvasResource();
     49        virtual SVGResource* canvasResource(const RenderObject*);
    4950
    5051    protected:
  • trunk/WebCore/svg/SVGMarkerElement.cpp

    r52373 r52580  
    171171}
    172172
    173 SVGResource* SVGMarkerElement::canvasResource()
     173SVGResource* SVGMarkerElement::canvasResource(const RenderObject*)
    174174{
    175175    if (!m_marker)
  • trunk/WebCore/svg/SVGMarkerElement.h

    r52373 r52580  
    2323
    2424#if ENABLE(SVG)
    25 
     25#include "RenderObject.h"
    2626#include "SVGAngle.h"
    2727#include "SVGExternalResourcesRequired.h"
     
    6868
    6969        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    70         virtual SVGResource* canvasResource();
     70        virtual SVGResource* canvasResource(const RenderObject*);
    7171
    7272    private:
  • trunk/WebCore/svg/SVGMaskElement.cpp

    r52449 r52580  
    3333#include "ImageData.h"
    3434#include "MappedAttribute.h"
     35#include "RenderObject.h"
    3536#include "RenderSVGContainer.h"
    3637#include "SVGLength.h"
     
    107108    SVGStyledElement::svgAttributeChanged(attrName);
    108109
    109     if (!m_masker)
     110    if (m_masker.isEmpty())
    110111        return;
    111112
     
    118119        SVGExternalResourcesRequired::isKnownAttribute(attrName) ||
    119120        SVGStyledElement::isKnownAttribute(attrName))
    120         m_masker->invalidate();
     121        for (HashMap<const RenderObject*, RefPtr<SVGResourceMasker> >::iterator it = m_masker.begin(); it != m_masker.end(); ++it)
     122            it->second->invalidate();
    121123}
    122124
     
    125127    SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
    126128
    127     if (!m_masker)
     129    if (m_masker.isEmpty())
    128130        return;
    129131
    130     m_masker->invalidate();
     132    for (HashMap<const RenderObject*, RefPtr<SVGResourceMasker> >::iterator it = m_masker.begin(); it != m_masker.end(); ++it)
     133        it->second->invalidate();
    131134}
    132135
     
    229232}
    230233
    231 SVGResource* SVGMaskElement::canvasResource()
    232 {
    233     if (!m_masker)
    234         m_masker = SVGResourceMasker::create(this);
    235     return m_masker.get();
     234SVGResource* SVGMaskElement::canvasResource(const RenderObject* object)
     235{
     236    ASSERT(object);
     237
     238    if (m_masker.contains(object))
     239        return m_masker.get(object).get();
     240
     241    RefPtr<SVGResourceMasker> masker = SVGResourceMasker::create(this);
     242    SVGResourceMasker* maskerPtr = masker.get();
     243    m_masker.set(object, masker.release());
     244
     245    return maskerPtr;
    236246}
    237247
  • trunk/WebCore/svg/SVGMaskElement.h

    r52403 r52580  
    2828#include "SVGTests.h"
    2929#include "SVGURIReference.h"
     30#include <wtf/HashMap.h>
    3031#include <wtf/PassOwnPtr.h>
    3132
     
    4950
    5051        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    51         virtual SVGResource* canvasResource();
     52        virtual SVGResource* canvasResource(const RenderObject*);
    5253
    5354        PassOwnPtr<ImageBuffer> drawMaskerContent(const FloatRect& targetRect, FloatRect& maskRect) const;
     
    6970                                       ExternalResourcesRequired, externalResourcesRequired)
    7071
    71         RefPtr<SVGResourceMasker> m_masker;
     72        HashMap<const RenderObject*, RefPtr<SVGResourceMasker> > m_masker;
    7273    };
    7374
  • trunk/WebCore/svg/SVGPatternElement.cpp

    r52373 r52580  
    264264}
    265265
    266 SVGResource* SVGPatternElement::canvasResource()
     266SVGResource* SVGPatternElement::canvasResource(const RenderObject*)
    267267{
    268268    if (!m_resource)
  • trunk/WebCore/svg/SVGPatternElement.h

    r49602 r52580  
    2323
    2424#if ENABLE(SVG)
     25#include "RenderObject.h"
    2526#include "SVGExternalResourcesRequired.h"
    2627#include "SVGFitToViewBox.h"
     
    5556
    5657        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    57         virtual SVGResource* canvasResource();
     58        virtual SVGResource* canvasResource(const RenderObject*);
    5859
    5960    private:
  • trunk/WebCore/svg/SVGStyledElement.cpp

    r52312 r52580  
    216216        SVGElement* element = static_cast<SVGElement*>(node);
    217217        if (SVGStyledElement* styledElement = static_cast<SVGStyledElement*>(element->isStyled() ? element : 0)) {
    218             if (SVGResource* resource = styledElement->canvasResource())
     218            if (SVGResource* resource = styledElement->canvasResource(node->renderer()))
    219219                resource->invalidate();
    220220        }
  • trunk/WebCore/svg/SVGStyledElement.h

    r52288 r52580  
    4949
    5050        virtual bool rendererIsNeeded(RenderStyle*);
    51         virtual SVGResource* canvasResource() { return 0; }
     51        virtual SVGResource* canvasResource(const RenderObject*) { return 0; }
    5252       
    5353        virtual bool mapToEntry(const QualifiedName&, MappedAttributeEntry&) const;
  • trunk/WebCore/svg/graphics/SVGPaintServer.cpp

    r46017 r52580  
    5858}
    5959
    60 SVGPaintServer* getPaintServerById(Document* document, const AtomicString& id)
    61 {
    62     SVGResource* resource = getResourceById(document, id);
     60SVGPaintServer* getPaintServerById(Document* document, const AtomicString& id, const RenderObject* object)
     61{
     62    SVGResource* resource = getResourceById(document, id, object);
    6363    if (resource && resource->isPaintServer())
    6464        return static_cast<SVGPaintServer*>(resource);
     
    8686        paintType == SVGPaint::SVG_PAINTTYPE_URI_RGBCOLOR) {
    8787        AtomicString id(SVGURIReference::getTarget(fill->uri()));
    88         fillPaintServer = getPaintServerById(item->document(), id);
     88        fillPaintServer = getPaintServerById(item->document(), id, item);
    8989
    9090        SVGElement* svgElement = static_cast<SVGElement*>(item->node());
     
    127127        paintType == SVGPaint::SVG_PAINTTYPE_URI_RGBCOLOR) {
    128128        AtomicString id(SVGURIReference::getTarget(stroke->uri()));
    129         strokePaintServer = getPaintServerById(item->document(), id);
     129        strokePaintServer = getPaintServerById(item->document(), id, item);
    130130
    131131        SVGElement* svgElement = static_cast<SVGElement*>(item->node());
  • trunk/WebCore/svg/graphics/SVGPaintServer.h

    r45919 r52580  
    3030
    3131#include "DashArray.h"
     32#include "RenderObject.h"
    3233#include "SVGResource.h"
    3334
     
    8384    TextStream& operator<<(TextStream&, const SVGPaintServer&);
    8485
    85     SVGPaintServer* getPaintServerById(Document*, const AtomicString&);
     86    SVGPaintServer* getPaintServerById(Document*, const AtomicString&, const RenderObject*);
    8687
    8788    void applyStrokeStyleToContext(GraphicsContext*, RenderStyle*, const RenderObject*);
  • trunk/WebCore/svg/graphics/SVGResource.cpp

    r51685 r52580  
    161161}
    162162
    163 SVGResource* getResourceById(Document* document, const AtomicString& id)
     163SVGResource* getResourceById(Document* document, const AtomicString& id, const RenderObject* object)
    164164{
    165165    if (id.isEmpty())
     
    172172
    173173    if (svgElement && svgElement->isStyled())
    174         return static_cast<SVGStyledElement*>(svgElement)->canvasResource();
     174        return static_cast<SVGStyledElement*>(svgElement)->canvasResource(object);
    175175
    176176    return 0;
  • trunk/WebCore/svg/graphics/SVGResource.h

    r30430 r52580  
    2929#if ENABLE(SVG)
    3030#include "PlatformString.h"
     31#include "RenderObject.h"
    3132#include "StringHash.h"
    3233
     
    9293    };
    9394
    94     SVGResource* getResourceById(Document*, const AtomicString&);
     95    SVGResource* getResourceById(Document*, const AtomicString&, const RenderObject*);
    9596   
    9697    TextStream& operator<<(TextStream&, const SVGResource&);
  • trunk/WebCore/svg/graphics/SVGResourceClipper.cpp

    r40761 r52580  
    126126}
    127127
    128 SVGResourceClipper* getClipperById(Document* document, const AtomicString& id)
     128SVGResourceClipper* getClipperById(Document* document, const AtomicString& id, const RenderObject* object)
    129129{
    130     SVGResource* resource = getResourceById(document, id);
     130    SVGResource* resource = getResourceById(document, id, object);
    131131    if (resource && resource->isClipper())
    132132        return static_cast<SVGResourceClipper*>(resource);
  • trunk/WebCore/svg/graphics/SVGResourceClipper.h

    r30430 r52580  
    2828
    2929#if ENABLE(SVG)
    30 
     30#include "Path.h"
     31#include "RenderObject.h"
    3132#include "SVGResource.h"
    32 #include "Path.h"
    3333
    3434namespace WebCore {
     
    8585    TextStream& operator<<(TextStream&, const ClipData&);
    8686
    87     SVGResourceClipper* getClipperById(Document*, const AtomicString&);
     87    SVGResourceClipper* getClipperById(Document*, const AtomicString&, const RenderObject*);
    8888
    8989} // namespace WebCore
  • trunk/WebCore/svg/graphics/SVGResourceFilter.cpp

    r52202 r52580  
    5353    , m_sourceGraphicBuffer(0)
    5454{
    55     m_filterBuilder.set(new SVGFilterBuilder());
     55    m_filterBuilder.set(new SVGFilterBuilder());   
    5656}
    5757
     
    205205}
    206206
    207 SVGResourceFilter* getFilterById(Document* document, const AtomicString& id)
    208 {
    209     SVGResource* resource = getResourceById(document, id);
     207SVGResourceFilter* getFilterById(Document* document, const AtomicString& id, const RenderObject* object)
     208{
     209    SVGResource* resource = getResourceById(document, id, object);
    210210    if (resource && resource->isFilter())
    211211        return static_cast<SVGResourceFilter*>(resource);
  • trunk/WebCore/svg/graphics/SVGResourceFilter.h

    r51310 r52580  
    104104};
    105105
    106 SVGResourceFilter* getFilterById(Document*, const AtomicString&);
     106SVGResourceFilter* getFilterById(Document*, const AtomicString&, const RenderObject*);
    107107
    108108} // namespace WebCore
  • trunk/WebCore/svg/graphics/SVGResourceMarker.cpp

    r52579 r52580  
    123123}
    124124
    125 SVGResourceMarker* getMarkerById(Document* document, const AtomicString& id)
     125SVGResourceMarker* getMarkerById(Document* document, const AtomicString& id, const RenderObject* object)
    126126{
    127     SVGResource* resource = getResourceById(document, id);
     127    SVGResource* resource = getResourceById(document, id, object);
    128128    if (resource && resource->isMarker())
    129129        return static_cast<SVGResourceMarker*>(resource);
  • trunk/WebCore/svg/graphics/SVGResourceMarker.h

    r52579 r52580  
    7070    };
    7171
    72     SVGResourceMarker* getMarkerById(Document*, const AtomicString&);
     72    SVGResourceMarker* getMarkerById(Document*, const AtomicString&, const RenderObject*);
    7373
    7474} // namespace WebCore
  • trunk/WebCore/svg/graphics/SVGResourceMasker.cpp

    r52449 r52580  
    7777}
    7878
    79 SVGResourceMasker* getMaskerById(Document* document, const AtomicString& id)
     79SVGResourceMasker* getMaskerById(Document* document, const AtomicString& id, const RenderObject* object)
    8080{
    81     SVGResource* resource = getResourceById(document, id);
     81    SVGResource* resource = getResourceById(document, id, object);
    8282    if (resource && resource->isMasker())
    8383        return static_cast<SVGResourceMasker*>(resource);
  • trunk/WebCore/svg/graphics/SVGResourceMasker.h

    r52403 r52580  
    3030
    3131#include "GraphicsContext.h"
     32#include "RenderObject.h"
    3233#include "SVGResource.h"
    3334
     
    6566    };
    6667
    67     SVGResourceMasker* getMaskerById(Document*, const AtomicString&);
     68    SVGResourceMasker* getMaskerById(Document*, const AtomicString&, const RenderObject* object);
    6869
    6970} // namespace WebCore
Note: See TracChangeset for help on using the changeset viewer.