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

Reply via email to