Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2b7e3e7edde7e861866efb5796cdcf6bedb513c1
      
https://github.com/WebKit/WebKit/commit/2b7e3e7edde7e861866efb5796cdcf6bedb513c1
  Author: Said Abou-Hallawa <[email protected]>
  Date:   2024-06-18 (Tue, 18 Jun 2024)

  Changed paths:
    A LayoutTests/fast/canvas/canvas-layer-alpha-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-layer-alpha-drawing.html
    A LayoutTests/fast/canvas/canvas-layer-composite-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-layer-composite-drawing.html
    A LayoutTests/fast/canvas/canvas-layer-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-layer-drawing.html
    A LayoutTests/fast/canvas/canvas-layer-filter-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-layer-filter-drawing.html
    A LayoutTests/fast/canvas/canvas-multiple-layer-filter-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-multiple-layer-filter-drawing.html
    A 
LayoutTests/fast/canvas/canvas-multiple-nested-layer-filter-drawing-expected.html
    A LayoutTests/fast/canvas/canvas-multiple-nested-layer-filter-drawing.html
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-input.xcfilelist
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/html/canvas/CanvasFilterContextSwitcher.cpp
    A Source/WebCore/html/canvas/CanvasFilterContextSwitcher.h
    R Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.cpp
    R Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.h
    A Source/WebCore/html/canvas/CanvasLayerContextSwitcher.cpp
    A Source/WebCore/html/canvas/CanvasLayerContextSwitcher.h
    A Source/WebCore/html/canvas/CanvasLayers.idl
    M Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext2D.h
    M Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h
    M Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.idl
    A Source/WebCore/platform/graphics/GraphicsContextSwitcher.cpp
    A Source/WebCore/platform/graphics/GraphicsContextSwitcher.h
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    A Source/WebCore/platform/graphics/ImageBufferContextSwitcher.cpp
    A Source/WebCore/platform/graphics/ImageBufferContextSwitcher.h
    A Source/WebCore/platform/graphics/TransparencyLayerContextSwitcher.cpp
    A Source/WebCore/platform/graphics/TransparencyLayerContextSwitcher.h
    R Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.cpp
    R Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h
    R Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp
    R Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h
    R Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.cpp
    R Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h
    M Source/WebCore/rendering/RenderLayerFilters.cpp
    M Source/WebCore/rendering/RenderLayerFilters.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h

  Log Message:
  -----------
  Support CanvasRenderingContext2D layers
https://bugs.webkit.org/show_bug.cgi?id=273923
rdar://127789082

Reviewed by Kimmo Kinnunen.

This is a draft patch for the canvas layers API. The discussion of this API is
in https://github.com/whatwg/html/pull/9537.

Unlike what is stated in the discussion above, this PR adds the filter to the
layer rendering states. This means like other members in layer rendering state,
the filter will be cleared out from the context state once beginLayer() is 
called.
It will restored to the context state once endLayer() is called. Then the 
restored
filter will be applied to the layer before compositing it to the canvas context.

* LayoutTests/fast/canvas/canvas-layer-alpha-drawing-expected.html: Added.
* LayoutTests/fast/canvas/canvas-layer-alpha-drawing.html: Added.
* LayoutTests/fast/canvas/canvas-layer-composite-drawing-expected.html: Added.
* LayoutTests/fast/canvas/canvas-layer-composite-drawing.html: Added.
* LayoutTests/fast/canvas/canvas-layer-drawing-expected.html: Added.
* LayoutTests/fast/canvas/canvas-layer-drawing.html: Added.
* LayoutTests/fast/canvas/canvas-layer-filter-drawing-expected.html: Added.
* LayoutTests/fast/canvas/canvas-layer-filter-drawing.html: Added.
* LayoutTests/fast/canvas/canvas-multiple-layer-filter-drawing-expected.html: 
Added.
* LayoutTests/fast/canvas/canvas-multiple-layer-filter-drawing.html: Added.
* 
LayoutTests/fast/canvas/canvas-multiple-nested-layer-filter-drawing-expected.html:
 Added.
* LayoutTests/fast/canvas/canvas-multiple-nested-layer-filter-drawing.html: 
Added.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/canvas/CanvasFilterContextSwitcher.cpp: Copied from 
Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.h.
(WebCore::CanvasFilterContextSwitcher::create):
(WebCore::CanvasFilterContextSwitcher::CanvasFilterContextSwitcher):
(WebCore::CanvasFilterContextSwitcher::~CanvasFilterContextSwitcher):
(WebCore::CanvasFilterContextSwitcher::expandedBounds const):
* Source/WebCore/html/canvas/CanvasFilterContextSwitcher.h: Copied from 
Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.h.
* Source/WebCore/html/canvas/CanvasLayerContextSwitcher.cpp: Renamed from 
Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.cpp.
(WebCore::CanvasLayerContextSwitcher::create):
(WebCore::CanvasLayerContextSwitcher::CanvasLayerContextSwitcher):
(WebCore::CanvasLayerContextSwitcher::~CanvasLayerContextSwitcher):
(WebCore::CanvasLayerContextSwitcher::drawingContext const):
(WebCore::CanvasLayerContextSwitcher::outsets const):
* Source/WebCore/html/canvas/CanvasLayerContextSwitcher.h: Renamed from 
Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.h.
* Source/WebCore/html/canvas/CanvasLayers.idl: Added.
* Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createFilter const):
* Source/WebCore/html/canvas/CanvasRenderingContext2D.h:
* Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::beginLayer):
(WebCore::CanvasRenderingContext2DBase::endLayer):
(WebCore::CanvasRenderingContext2DBase::fillInternal):
(WebCore::CanvasRenderingContext2DBase::strokeInternal):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawingContext const):
(WebCore::CanvasRenderingContext2DBase::effectiveDrawingContext const):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h:
(WebCore::CanvasRenderingContext2DBase::createFilter const):
(WebCore::CanvasRenderingContext2DBase::setFilterTargetSwitcher): Deleted.
* Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.idl:
* Source/WebCore/platform/graphics/GraphicsContextSwitcher.cpp: Renamed from 
Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.cpp.
(WebCore::GraphicsContextSwitcher::create):
(WebCore::GraphicsContextSwitcher::GraphicsContextSwitcher):
* Source/WebCore/platform/graphics/GraphicsContextSwitcher.h: Renamed from 
Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h.
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::filteredNativeImage):
* Source/WebCore/platform/graphics/ImageBufferContextSwitcher.cpp: Renamed from 
Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.cpp.
(WebCore::ImageBufferContextSwitcher::ImageBufferContextSwitcher):
(WebCore::ImageBufferContextSwitcher::drawingContext const):
(WebCore::ImageBufferContextSwitcher::beginClipAndDrawSourceImage):
(WebCore::ImageBufferContextSwitcher::endClipAndDrawSourceImage):
(WebCore::ImageBufferContextSwitcher::endDrawSourceImage):
* Source/WebCore/platform/graphics/ImageBufferContextSwitcher.h: Renamed from 
Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h.
* Source/WebCore/platform/graphics/TransparencyLayerContextSwitcher.cpp: 
Renamed from 
Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.cpp.
(WebCore::TransparencyLayerContextSwitcher::TransparencyLayerContextSwitcher):
(WebCore::TransparencyLayerContextSwitcher::beginClipAndDrawSourceImage):
(WebCore::TransparencyLayerContextSwitcher::beginDrawSourceImage):
(WebCore::TransparencyLayerContextSwitcher::endDrawSourceImage):
* Source/WebCore/platform/graphics/TransparencyLayerContextSwitcher.h: Renamed 
from Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h.
* Source/WebCore/rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::beginFilterEffect):
* Source/WebCore/rendering/RenderLayerFilters.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp:
(WebCore::LegacyRenderSVGResourceFilter::applyResource):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to