Changeset 157940 in webkit
- Timestamp:
- Oct 24, 2013, 11:41:42 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 20 edited
-
ChangeLog (modified) (1 diff)
-
rendering/svg/RenderSVGContainer.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGImage.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGResource.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceClipper.cpp (modified) (2 diffs)
-
rendering/svg/RenderSVGResourceClipper.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceFilter.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGResourceFilter.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceGradient.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceMarker.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceMasker.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGResourceMasker.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourcePattern.h (modified) (1 diff)
-
rendering/svg/RenderSVGResourceSolidColor.h (modified) (1 diff)
-
rendering/svg/RenderSVGRoot.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGShape.cpp (modified) (1 diff)
-
rendering/svg/RenderSVGText.cpp (modified) (1 diff)
-
rendering/svg/SVGRenderSupport.cpp (modified) (1 diff)
-
rendering/svg/SVGRenderSupport.h (modified) (1 diff)
-
rendering/svg/SVGRenderTreeAsText.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r157939 r157940 1 2013-10-24 Andreas Kling <akling@apple.com> 2 3 SVG: RenderElement-ize intersectRepaintRectWithResources(). 4 <https://webkit.org/b/123278> 5 6 SVGRenderSupport::intersectRepaintRectWithResources() is only ever 7 called with non-text renderers so make it take RenderElement&. 8 9 Had to tweak RenderSVGResource::resourceBoundingBox() to take the 10 renderer by reference. 11 12 Reviewed by Antti Koivisto. 13 1 14 2013-10-24 Joseph Pecoraro <pecoraro@apple.com> 2 15 -
trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp
r157515 r157940 170 170 { 171 171 SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_repaintBoundingBox); 172 SVGRenderSupport::intersectRepaintRectWithResources( this, m_repaintBoundingBox);172 SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBox); 173 173 } 174 174 -
trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp
r156876 r157940 99 99 if (m_needsBoundariesUpdate) { 100 100 m_repaintBoundingBoxExcludingShadow = m_objectBoundingBox; 101 SVGRenderSupport::intersectRepaintRectWithResources( this, m_repaintBoundingBoxExcludingShadow);101 SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow); 102 102 103 103 m_repaintBoundingBox = m_repaintBoundingBoxExcludingShadow; -
trunk/Source/WebCore/rendering/svg/RenderSVGResource.h
r157919 r157940 65 65 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode) = 0; 66 66 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short, const Path*, const RenderSVGShape*) { } 67 virtual FloatRect resourceBoundingBox( RenderObject*) = 0;67 virtual FloatRect resourceBoundingBox(const RenderObject&) = 0; 68 68 69 69 virtual RenderSVGResourceType resourceType() const = 0; -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp
r157924 r157940 310 310 } 311 311 312 FloatRect RenderSVGResourceClipper::resourceBoundingBox( RenderObject*object)312 FloatRect RenderSVGResourceClipper::resourceBoundingBox(const RenderObject& object) 313 313 { 314 314 // Resource was not layouted yet. Give back the boundingBox of the object. 315 315 if (selfNeedsLayout()) 316 return object ->objectBoundingBox();316 return object.objectBoundingBox(); 317 317 318 318 if (m_clipBoundaries.isEmpty()) … … 320 320 321 321 if (clipPathElement().clipPathUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) { 322 FloatRect objectBoundingBox = object ->objectBoundingBox();322 FloatRect objectBoundingBox = object.objectBoundingBox(); 323 323 AffineTransform transform; 324 324 transform.translate(objectBoundingBox.x(), objectBoundingBox.y()); -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h
r156968 r157940 57 57 // FIXME: We made applyClippingToContext public because we cannot call applyResource on HTML elements (it asserts on RenderObject::objectBoundingBox) 58 58 bool applyClippingToContext(RenderObject*, const FloatRect&, const FloatRect&, GraphicsContext*); 59 virtual FloatRect resourceBoundingBox( RenderObject*);59 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE; 60 60 61 61 virtual RenderSVGResourceType resourceType() const { return ClipperResourceType; } -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
r157924 r157940 312 312 } 313 313 314 FloatRect RenderSVGResourceFilter::resourceBoundingBox( RenderObject*object)315 { 316 return SVGLengthContext::resolveRectangle<SVGFilterElement>(&filterElement(), filterElement().filterUnits(), object ->objectBoundingBox());314 FloatRect RenderSVGResourceFilter::resourceBoundingBox(const RenderObject& object) 315 { 316 return SVGLengthContext::resolveRectangle<SVGFilterElement>(&filterElement(), filterElement().filterUnits(), object.objectBoundingBox()); 317 317 } 318 318 -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h
r157907 r157940 78 78 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*); 79 79 80 virtual FloatRect resourceBoundingBox( RenderObject*);80 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE; 81 81 82 82 std::unique_ptr<SVGFilterBuilder> buildPrimitives(SVGFilter*); -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.h
r157653 r157940 53 53 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode) OVERRIDE FINAL; 54 54 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*) OVERRIDE FINAL; 55 virtual FloatRect resourceBoundingBox( RenderObject*) OVERRIDE FINAL { return FloatRect(); }55 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE FINAL { return FloatRect(); } 56 56 57 57 protected: -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h
r155755 r157940 57 57 58 58 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short) { return false; } 59 virtual FloatRect resourceBoundingBox( RenderObject*){ return FloatRect(); }59 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); } 60 60 61 61 FloatPoint referencePoint() const; -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
r157924 r157940 162 162 } 163 163 164 FloatRect RenderSVGResourceMasker::resourceBoundingBox( RenderObject*object)164 FloatRect RenderSVGResourceMasker::resourceBoundingBox(const RenderObject& object) 165 165 { 166 FloatRect objectBoundingBox = object ->objectBoundingBox();166 FloatRect objectBoundingBox = object.objectBoundingBox(); 167 167 FloatRect maskBoundaries = SVGLengthContext::resolveRectangle<SVGMaskElement>(&maskElement(), maskElement().maskUnits(), objectBoundingBox); 168 168 -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h
r156968 r157940 49 49 virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true); 50 50 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode); 51 virtual FloatRect resourceBoundingBox( RenderObject*);51 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE; 52 52 53 53 SVGUnitTypes::SVGUnitType maskUnits() const { return maskElement().maskUnits(); } -
trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.h
r157653 r157940 54 54 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode); 55 55 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*); 56 virtual FloatRect resourceBoundingBox( RenderObject*){ return FloatRect(); }56 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); } 57 57 58 58 virtual RenderSVGResourceType resourceType() const { return s_resourceType; } -
trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.h
r101517 r157940 38 38 virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode); 39 39 virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*); 40 virtual FloatRect resourceBoundingBox( RenderObject*){ return FloatRect(); }40 virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); } 41 41 42 42 virtual RenderSVGResourceType resourceType() const { return s_resourceType; } -
trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp
r157828 r157940 400 400 { 401 401 SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_repaintBoundingBoxExcludingShadow); 402 SVGRenderSupport::intersectRepaintRectWithResources( this, m_repaintBoundingBoxExcludingShadow);402 SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow); 403 403 m_repaintBoundingBoxExcludingShadow.inflate(borderAndPaddingWidth()); 404 404 -
trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp
r157919 r157940 405 405 { 406 406 m_repaintBoundingBoxExcludingShadow = strokeBoundingBox(); 407 SVGRenderSupport::intersectRepaintRectWithResources( this, m_repaintBoundingBoxExcludingShadow);407 SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow); 408 408 409 409 m_repaintBoundingBox = m_repaintBoundingBoxExcludingShadow; -
trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp
r157515 r157940 528 528 { 529 529 FloatRect repaintRect = strokeBoundingBox(); 530 SVGRenderSupport::intersectRepaintRectWithResources( this, repaintRect);530 SVGRenderSupport::intersectRepaintRectWithResources(*this, repaintRect); 531 531 532 532 if (const ShadowData* textShadow = style()->textShadow()) -
trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp
r157222 r157940 372 372 } 373 373 374 void SVGRenderSupport::intersectRepaintRectWithResources(const RenderObject* object, FloatRect& repaintRect) 375 { 376 ASSERT(object); 377 378 RenderObject* renderer = const_cast<RenderObject*>(object); 379 SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(renderer); 374 void SVGRenderSupport::intersectRepaintRectWithResources(const RenderElement& renderer, FloatRect& repaintRect) 375 { 376 SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(&renderer); 380 377 if (!resources) 381 378 return; -
trunk/Source/WebCore/rendering/svg/SVGRenderSupport.h
r156285 r157940 55 55 56 56 // Calculates the repaintRect in combination with filter, clipper and masker in local coordinates. 57 static void intersectRepaintRectWithResources(const Render Object*, FloatRect&);57 static void intersectRepaintRectWithResources(const RenderElement&, FloatRect&); 58 58 59 59 // Determines whether a container needs to be laid out because it's filtered and a child is being laid out. -
trunk/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp
r157919 r157940 650 650 ts << " "; 651 651 writeStandardPrefix(ts, *masker, 0); 652 ts << " " << masker->resourceBoundingBox( &renderer) << "\n";652 ts << " " << masker->resourceBoundingBox(renderer) << "\n"; 653 653 } 654 654 } … … 660 660 ts << " "; 661 661 writeStandardPrefix(ts, *clipper, 0); 662 ts << " " << clipper->resourceBoundingBox( &renderer) << "\n";662 ts << " " << clipper->resourceBoundingBox(renderer) << "\n"; 663 663 } 664 664 } … … 671 671 ts << " "; 672 672 writeStandardPrefix(ts, *filter, 0); 673 ts << " " << filter->resourceBoundingBox( &renderer) << "\n";673 ts << " " << filter->resourceBoundingBox(renderer) << "\n"; 674 674 } 675 675 }
Note:
See TracChangeset
for help on using the changeset viewer.