Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0a40ee09408123718f111e576ee81442c8815a85
      
https://github.com/WebKit/WebKit/commit/0a40ee09408123718f111e576ee81442c8815a85
  Author: Taher Ali <[email protected]>
  Date:   2025-12-26 (Fri, 26 Dec 2025)

  Changed paths:
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/svg/RenderSVGContainer.h
    M Source/WebCore/rendering/svg/RenderSVGForeignObject.h
    M Source/WebCore/rendering/svg/RenderSVGImage.h
    M Source/WebCore/rendering/svg/RenderSVGInline.cpp
    M Source/WebCore/rendering/svg/RenderSVGInline.h
    M Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
    M Source/WebCore/rendering/svg/RenderSVGRoot.h
    M Source/WebCore/rendering/svg/RenderSVGShape.h
    M Source/WebCore/rendering/svg/RenderSVGText.cpp
    M Source/WebCore/rendering/svg/RenderSVGText.h
    M Source/WebCore/rendering/svg/SVGBoundingBoxComputation.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGContainer.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGContainer.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGForeignObject.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.h

  Log Message:
  -----------
  Introduce decoratedBoundingBox to fix repaint rect and bounding box 
conflation in SVG resources
https://bugs.webkit.org/show_bug.cgi?id=278551
rdar://problem/134573463

Reviewed by Simon Fraser.

SVG mask and gradient incorrectly used repaintRectInLocalCoordinates(Accurate)
when they needed a geometric bounding box. This conflates two distinct
concepts: repaint rects (for damage/invalidation, can be approximate)
and bounding boxes (for geometric calculations, must be accurate).

This change introduces decoratedBoundingBox, which returns the
bounding box including fill, stroke, and markers. It is intended
for use with masks, gradients, and clippers, separate from repaint semantics.

This PR only adds the decoratedBoundingBox infrastructure and updates
call-sites for semantic correctness without altering rendering behavior.
It still forwards to repaintRectInLocalCoordinates(Accurate), so
rendering remains unchanged.

A follow-up PR will remove the dependency on 
repaintRectInLocalCoordinates(Accurate)
and compute decorated bounds directly.

* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::decoratedBoundingBox const):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/svg/RenderSVGContainer.h:
* Source/WebCore/rendering/svg/RenderSVGForeignObject.h:
* Source/WebCore/rendering/svg/RenderSVGImage.h:
* Source/WebCore/rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::decoratedBoundingBox const):
* Source/WebCore/rendering/svg/RenderSVGInline.h:
* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::applyMask):
* Source/WebCore/rendering/svg/RenderSVGRoot.h:
* Source/WebCore/rendering/svg/RenderSVGShape.h:
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::decoratedBoundingBox const):
* Source/WebCore/rendering/svg/RenderSVGText.h:
* Source/WebCore/rendering/svg/SVGBoundingBoxComputation.h:
(WebCore::SVGBoundingBoxComputation::computeDecoratedBoundingBox):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGContainer.cpp:
(WebCore::LegacyRenderSVGContainer::decoratedBoundingBox const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGContainer.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGForeignObject.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp:
(WebCore::calculateGradientGeometry):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp:
(WebCore::LegacyRenderSVGResourceMasker::applyResource):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp:
(WebCore::LegacyRenderSVGRoot::decoratedBoundingBox const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.cpp:
(WebCore::LegacyRenderSVGShape::decoratedBoundingBox const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.h:

Canonical link: https://commits.webkit.org/304945@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to