[webkit-changes] [WebKit/WebKit] 6b3eb0: [Filters] Make ImageBuffer::filteredImage() use Fi...

Said Abou-Hallawa noreply at github.com
Fri Dec 2 00:05:22 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6b3eb0be454e99625e24e9453a48a66ae96ed6f2
      https://github.com/WebKit/WebKit/commit/6b3eb0be454e99625e24e9453a48a66ae96ed6f2
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2022-12-02 (Fri, 02 Dec 2022)

  Changed paths:
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.h
    M Source/WebCore/platform/graphics/filters/Filter.cpp
    M Source/WebCore/platform/graphics/filters/Filter.h
    M Source/WebCore/platform/graphics/filters/FilterEffect.cpp
    M Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp
    M Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h
    M Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.cpp
    M Source/WebCore/rendering/CSSFilter.cpp
    M Source/WebCore/rendering/style/StyleFilterImage.cpp
    M Source/WebCore/svg/graphics/filters/SVGFilter.cpp
    M Source/WebKit/Platform/IPC/FilterReference.h

  Log Message:
  -----------
  [Filters] Make ImageBuffer::filteredImage() use FilterTargetSwitcher to apply the filter
https://bugs.webkit.org/show_bug.cgi?id=248587
rdar://102847191

Reviewed by Simon Fraser.

Filter needs to know all the FilterRenderingModes it can use when it applies its
functions/effects. Instead of holding a single FilterRenderingMode, Filter will
hold a OptionSet<FilterRenderingMode>. So implementing Filter::renderingMode()
will be a lot clearer.

A new overriding ImageBuffer::filteredImage() will be added to take a drawCallback
argument. This method will be used for clean ImageBuffers which has no drawings
yet. If FilterRenderingMode::GraphicsContext can be used, the styles transparency
layers will be begun before calling drawCallback. And they will be ended after
calling drawCallback.

* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::filteredImage):
* Source/WebCore/platform/graphics/ImageBuffer.h:
* Source/WebCore/platform/graphics/filters/Filter.cpp:
(WebCore::Filter::renderingMode const):
(WebCore::Filter::setFilterRenderingModes):
(WebCore::Filter::setFilterRenderingMode): Deleted.
* Source/WebCore/platform/graphics/filters/Filter.h:
(WebCore::Filter::filterRenderingModes const):
(WebCore::Filter::filterRenderingMode const): Deleted.
(WebCore::Filter::setFilterRenderingMode): Deleted.
* Source/WebCore/platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::createApplier const):
* Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp:
(WebCore::FilterStyleTargetSwitcher::FilterStyleTargetSwitcher):
* Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h:
* Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.cpp:
(WebCore::FilterTargetSwitcher::create):
* Source/WebCore/rendering/CSSFilter.cpp:
(WebCore::CSSFilter::create):
* Source/WebCore/rendering/style/StyleFilterImage.cpp:
(WebCore::StyleFilterImage::image const):
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
* Source/WebKit/Platform/IPC/FilterReference.h:
(IPC::FilterReference::encodeFilter):
(IPC::FilterReference::decodeFilter):

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




More information about the webkit-changes mailing list