Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ddf4bec3e947abd7bf96aa06ec84f91e1a32d162 https://github.com/WebKit/WebKit/commit/ddf4bec3e947abd7bf96aa06ec84f91e1a32d162 Author: Said Abou-Hallawa <s...@apple.com> Date: 2023-12-14 (Thu, 14 Dec 2023)
Changed paths: A LayoutTests/css3/filters/drop-shadow-filter-overflow-expected.html A LayoutTests/css3/filters/drop-shadow-filter-overflow.html M Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.cpp M Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h M Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp M Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h M Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerFilters.cpp M Source/WebCore/rendering/RenderLayerFilters.h Log Message: ----------- [Filters] GraphicsContext filters have to apply clipping to the target context before drawing https://bugs.webkit.org/show_bug.cgi?id=266383 rdar://118522654 Reviewed by Simon Fraser. Before applying the filter style and calling `beginTransparencyLayer()`, the clipping rectangle of the target element has to be applied to the destination GraphicsContext. Otherwise the hidden overflow drawing will appear once the `endTransparencyLayer()` is called. RenderLayer::paintLayerContents() needs to calculate the clipping rectangle before calling setupFilters() so it can be passed to FilterStyleTargetSwitcher. beginClipAndDrawSourceImage() and endClipAndDrawSourceImage() will be called when applying CSSFilter. beginDrawSourceImage() and endDrawSourceImage() will be called when applying the top-level SVGFilter since we clip to the bounding rectangle of the root element. * LayoutTests/css3/filters/drop-shadow-filter-overflow-expected.html: Added. * LayoutTests/css3/filters/drop-shadow-filter-overflow.html: Added. * Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.cpp: (WebCore::FilterImageTargetSwitcher::beginClipAndDrawSourceImage): * Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h: * Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp: (WebCore::FilterStyleTargetSwitcher::beginClipAndDrawSourceImage): * Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h: * Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h: (WebCore::FilterTargetSwitcher::beginClipAndDrawSourceImage): Deleted. (WebCore::FilterTargetSwitcher::endClipAndDrawSourceImage): Deleted. (WebCore::FilterTargetSwitcher::beginDrawSourceImage): Deleted. (WebCore::FilterTargetSwitcher::endDrawSourceImage): Deleted. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::setupFilters): (WebCore::RenderLayer::applyFilters): (WebCore::RenderLayer::paintLayerContents): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerFilters.cpp: (WebCore::RenderLayerFilters::beginFilterEffect): * Source/WebCore/rendering/RenderLayerFilters.h: Canonical link: https://commits.webkit.org/272078@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes