[webkit-changes] [WebKit/WebKit] 843368: [CSS Shape function] Support blending

Simon Fraser noreply at github.com
Tue Aug 6 14:03:52 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 843368984e0b7bcd4bcb91cf99c63f77741a98fa
      https://github.com/WebKit/WebKit/commit/843368984e0b7bcd4bcb91cf99c63f77741a98fa
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2024-08-06 (Tue, 06 Aug 2024)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-008-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-008.html
    M Source/WebCore/rendering/style/BasicShapes.cpp
    M Source/WebCore/rendering/style/BasicShapesShape.cpp
    M Source/WebCore/rendering/style/BasicShapesShape.h

  Log Message:
  -----------
  [CSS Shape function] Support blending
https://bugs.webkit.org/show_bug.cgi?id=277609
rdar://133244319

Reviewed by Antti Koivisto.

Implement the `blend()` function for `BasicShapeShape`, following the rules in [1] but without
the interpolation with the `path()` function [2].

This required making all the shape segment types copy-constructable and assignable

[1] https://drafts.csswg.org/css-shapes-2/#interpolating-shape
[2] https://github.com/w3c/csswg-drafts/issues/10694

* LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/clip-path-interpolation-shape-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-008-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-path-interpolation-008.html: "via" -> "using".

Fix this result:
      test_interpolation({
        property: 'offset-path',
        from: 'shape(from 5% 5px, arc to 15% -15px of 10px 20px, arc by 15% -5px of 30px cw rotate 30deg large, arc to 25% 20px of 10px 5px small)',
        to: 'shape(from 15% 15px, arc to 5% -25px of 20px 30px, arc by 25% -15px of 20px cw rotate 270deg small, arc to 25% 20px of 10px 5px small cw)'
      },

where the 0.3 result should contain "cw" given the spec text "If an arc command has different <arc-sweep> between its starting and ending list,
then the interpolated result uses cw for any progress value between 0 and 1"

* Source/WebCore/rendering/style/BasicShapes.cpp:
(WebCore::BasicShapePolygon::blend const):
* Source/WebCore/rendering/style/BasicShapesShape.cpp:
(WebCore::BasicShapeShape::canBlend):
(WebCore::blendWithPreferredValue):
(WebCore::BasicShapeShape::blend):
(WebCore::BasicShapeShape::canBlend const):
(WebCore::BasicShapeShape::blend const):
* Source/WebCore/rendering/style/BasicShapesShape.h:

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list