[webkit-changes] [WebKit/WebKit] 2b69c8: [LBSE] Take transforms into account on mask/clip c...
Rob Buis
noreply at github.com
Mon Jan 15 11:05:13 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2b69c8b0d1bf5df630b1e099a0e9af04fef6353f
https://github.com/WebKit/WebKit/commit/2b69c8b0d1bf5df630b1e099a0e9af04fef6353f
Author: Rob Buis <rbuis at igalia.com>
Date: 2024-01-15 (Mon, 15 Jan 2024)
Changed paths:
A LayoutTests/platform/ios/svg/repaint/clip-path-object-bounding-box-transformed-expected.txt
A LayoutTests/platform/ios/svg/repaint/mask-object-bounding-box-transformed-expected.txt
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations
M LayoutTests/platform/mac-sonoma-wk2-pixel/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png
M LayoutTests/platform/mac-sonoma-wk2-pixel/svg/W3C-SVG-1.1/masking-path-01-b-expected.png
M LayoutTests/svg/repaint/clip-path-object-bounding-box-transformed-expected.txt
M LayoutTests/svg/repaint/clip-path-user-space-on-use-transformed-expected.txt
M LayoutTests/svg/repaint/mask-object-bounding-box-transformed-expected.txt
M LayoutTests/svg/repaint/mask-user-space-on-use-transformed-expected.txt
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp
M Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
M Source/WebCore/svg/SVGClipPathElement.cpp
M Source/WebCore/svg/SVGMaskElement.cpp
Log Message:
-----------
[LBSE] Take transforms into account on mask/clip content
https://bugs.webkit.org/show_bug.cgi?id=267075
Reviewed by Nikolas Zimmermann.
Take transforms into account on mask/clip content by adding logic to calculateClipContentRepaintRect
and calculateMaskContentRepaintRect, which is used by LBSE only.
Fix another clip problem related to transforms since for <use> computeClipPath did not take
the transform on the referenced element into account.
Also, clipper uses masks once it is determined masks are needed, and does not switch to clips for referenced clipPaths.
Finally, when resource bounding box for masks is fully outside of the object bounding box )no intersection), use
object bounding box rect as fallback.
* LayoutTests/platform/ios/svg/repaint/clip-path-object-bounding-box-transformed-expected.txt: Added.
* LayoutTests/platform/ios/svg/repaint/mask-object-bounding-box-transformed-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png:
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/W3C-SVG-1.1/masking-path-01-b-expected.png:
* LayoutTests/svg/repaint/clip-path-object-bounding-box-transformed-expected.txt:
* LayoutTests/svg/repaint/clip-path-user-space-on-use-transformed-expected.txt:
* LayoutTests/svg/repaint/mask-object-bounding-box-transformed-expected.txt:
* LayoutTests/svg/repaint/mask-user-space-on-use-transformed-expected.txt:
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::computeClipPath const):
* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::resourceBoundingBox):
* Source/WebCore/svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::calculateClipContentRepaintRect):
* Source/WebCore/svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::calculateMaskContentRepaintRect):
Canonical link: https://commits.webkit.org/273046@main
More information about the webkit-changes
mailing list