[webkit-changes] [WebKit/WebKit] db4c99: [LBSE] Implement support for patterns
Rob Buis
noreply at github.com
Tue Jan 30 08:14:20 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: db4c995fc7b47368c3f67671b89c42dc632402a7
https://github.com/WebKit/WebKit/commit/db4c995fc7b47368c3f67671b89c42dc632402a7
Author: Rob Buis <rbuis at igalia.com>
Date: 2024-01-30 (Tue, 30 Jan 2024)
Changed paths:
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/pservers-grad-03-b-expected.txt
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/batik/paints/patternRegionA-expected.txt
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-root-position-masking-expected.txt
M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-sized-content-with-resources-expected.png
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-update-pattern-child-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-update-pattern-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/oversized-pattern-scale-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-cycle-detection-expected.png
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-cycle-detection-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-excessive-malloc-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-in-defs-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-no-pixelation-expected.png
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-no-pixelation-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-rotate-gaps-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-size-bigger-than-target-size-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-y-offset-expected.png
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-y-offset-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pending-resource-after-removal-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/recursive-pattern-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/pattern-object-bounding-box-update-pattern-content-expected.txt
A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/pattern-user-space-on-use-update-pattern-content-expected.txt
M LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-no-pixelation-expected.png
R LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-skew-transformed-expected.png
M LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-y-offset-expected.png
M LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/recursive-pattern-expected.png
A LayoutTests/svg/repaint/pattern-object-bounding-box-expected.txt
A LayoutTests/svg/repaint/pattern-object-bounding-box-transformed-expected.txt
A LayoutTests/svg/repaint/pattern-object-bounding-box-transformed.html
A LayoutTests/svg/repaint/pattern-object-bounding-box-update-pattern-content-expected.txt
A LayoutTests/svg/repaint/pattern-object-bounding-box-update-pattern-content.html
A LayoutTests/svg/repaint/pattern-object-bounding-box.html
A LayoutTests/svg/repaint/pattern-user-space-on-use-expected.txt
A LayoutTests/svg/repaint/pattern-user-space-on-use-transformed-expected.txt
A LayoutTests/svg/repaint/pattern-user-space-on-use-transformed.html
A LayoutTests/svg/repaint/pattern-user-space-on-use-update-pattern-content-expected.txt
A LayoutTests/svg/repaint/pattern-user-space-on-use-update-pattern-content.html
A LayoutTests/svg/repaint/pattern-user-space-on-use.html
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/rendering/ReferencedSVGResources.cpp
M Source/WebCore/rendering/RenderLayerModelObject.cpp
M Source/WebCore/rendering/RenderObject.h
A Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp
A Source/WebCore/rendering/svg/RenderSVGResourcePattern.h
A Source/WebCore/rendering/svg/RenderSVGResourcePatternInlines.h
M Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
M Source/WebCore/rendering/svg/SVGRenderSupport.cpp
M Source/WebCore/rendering/svg/SVGRenderSupport.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp
M Source/WebCore/svg/SVGElement.cpp
M Source/WebCore/svg/SVGPatternElement.cpp
Log Message:
-----------
[LBSE] Implement support for patterns
https://bugs.webkit.org/show_bug.cgi?id=267041
Reviewed by Nikolas Zimmermann.
Implement pattern support using a different approach to legacy including the
use of RenderLayer::paintSVGLayer ro paint the pattern contents. Right now
there is no caching of pattern tiles (unlike in legacy) at all to keep things simple.
Note that there are still various pattern test failures due to problems with hidpi.
Adding convenient pattern API for stroke painting in GraphicsContext is left for later (see SVGInlineTextBox.cpp).
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/pservers-grad-03-b-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/batik/paints/patternRegionA-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-root-position-masking-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-sized-content-with-resources-expected.png:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-update-pattern-child-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-update-pattern-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/oversized-pattern-scale-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-cycle-detection-expected.png: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-cycle-detection-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-excessive-malloc-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-in-defs-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-no-pixelation-expected.png: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-no-pixelation-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-rotate-gaps-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-size-bigger-than-target-size-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-y-offset-expected.png: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pattern-y-offset-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/pending-resource-after-removal-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/recursive-pattern-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/pattern-object-bounding-box-update-pattern-content-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/pattern-user-space-on-use-update-pattern-content-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-no-pixelation-expected.png:
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-skew-transformed-expected.png: Removed.
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/pattern-y-offset-expected.png:
* LayoutTests/platform/mac-sonoma-wk2-pixel/svg/custom/recursive-pattern-expected.png:
* LayoutTests/svg/repaint/pattern-object-bounding-box-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-object-bounding-box-transformed-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-object-bounding-box-transformed.html: Added.
* LayoutTests/svg/repaint/pattern-object-bounding-box-update-pattern-content-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-object-bounding-box-update-pattern-content.html: Added.
* LayoutTests/svg/repaint/pattern-object-bounding-box.html: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use-transformed-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use-transformed.html: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use-update-pattern-content-expected.txt: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use-update-pattern-content.html: Added.
* LayoutTests/svg/repaint/pattern-user-space-on-use.html: Added.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/rendering/ReferencedSVGResources.cpp:
(WebCore::ReferencedSVGResources::referencedSVGResourceIDs):
(WebCore::ReferencedSVGResources::referencedPaintServerElement):
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::svgFillPaintServerResourceFromStyle const):
(WebCore::RenderLayerModelObject::svgStrokePaintServerResourceFromStyle const):
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isRenderSVGResourcePaintServer const):
(WebCore::RenderObject::isRenderSVGResourcePattern const):
* Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp: Added.
(WebCore::RenderSVGResourcePattern::RenderSVGResourcePattern):
(WebCore::RenderSVGResourcePattern::collectPatternAttributesIfNeeded):
(WebCore::clear2DRotation):
(WebCore::RenderSVGResourcePattern::buildPattern):
(WebCore::RenderSVGResourcePattern::prepareFillOperation):
(WebCore::RenderSVGResourcePattern::prepareStrokeOperation):
(WebCore::RenderSVGResourcePattern::buildTileImageTransform const):
(WebCore::RenderSVGResourcePattern::createTileImage const):
* Source/WebCore/rendering/svg/RenderSVGResourcePattern.h: Added.
(WebCore::RenderSVGResourcePattern::invalidatePattern):
* Source/WebCore/rendering/svg/RenderSVGResourcePatternInlines.h: Added.
(WebCore::RenderSVGResourcePattern::patternElement const):
(WebCore::calculatePatternBoundaries):
* Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::acquirePaintingResource):
(WebCore::SVGInlineTextBox::releasePaintingResource):
(WebCore::SVGInlineTextBox::paintTextWithShadows):
* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGHitTestCycleDetectionScope::SVGHitTestCycleDetectionScope):
(WebCore::SVGHitTestCycleDetectionScope::~SVGHitTestCycleDetectionScope):
* Source/WebCore/rendering/svg/SVGRenderSupport.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp:
(WebCore::LegacyRenderSVGResourcePattern::LegacyRenderSVGResourcePattern):
* Source/WebCore/svg/SVGElement.cpp:
(WebCore::isSVGLayerAwareElement):
* Source/WebCore/svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::createElementRenderer):
Canonical link: https://commits.webkit.org/273757@main
More information about the webkit-changes
mailing list