Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f5eba498b2d50f4e6721ae2db870cf61715a050e
      
https://github.com/WebKit/WebKit/commit/f5eba498b2d50f4e6721ae2db870cf61715a050e
  Author: lilly <[email protected]>
  Date:   2026-07-18 (Sat, 18 Jul 2026)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/platform/graphics/BezierUtilities.cpp
    M Source/WebCore/platform/graphics/BezierUtilities.h
    M Source/WebCore/platform/graphics/CornerShapeUtilities.cpp
    M Tools/TestWebKitAPI/CMakeLists.txt
    A Tools/TestWebKitAPI/Tests/WebCore/BezierUtilitiesTests.cpp

  Log Message:
  -----------
  corner-shape: Implement trimBezierToRect() to clip a cubic Bézier to a 
rectangle
https://bugs.webkit.org/show_bug.cgi?id=319603
rdar://182432597

Reviewed by Simon Fraser.

This is infrastructure for CSS corner-shape rendering. Drawing corner shapes
using Bezier Curves requires clipping the Bézier segments that describe a
corner to the corner's bounding box, so that a curve extending past the box
is trimmed to just the portion inside it. BezierUtilities is where that
geometry lives, but it previously exposed only unimplemented stubs
(intersectBezierAndLine, splitBezier). This fills in the logic and replaces
those stubs with a single public entry point, trimBezierToRect(), which
returns the sub-curves of a cubic Bézier that lie inside a given FloatRect.

BezierUtilities.h is a private framework header, so it is included via
<WebCore/BezierUtilities.h> (the framework form) rather than a quoted include,
so that the WebCore_Private module picks it up.

Test: Tools/TestWebKitAPI/Tests/WebCore/BezierUtilitiesTests.cpp

* Source/WebCore/Headers.cmake:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/BezierUtilities.cpp:
(WebCore::trimBezierToRect):
(WebCore::intersectBezierAndLine): Deleted.
(WebCore::splitBezier): Deleted.
* Source/WebCore/platform/graphics/BezierUtilities.h:
(): Deleted.
* Tools/TestWebKitAPI/CMakeLists.txt:
* Tools/TestWebKitAPI/Tests/WebCore/BezierUtilitiesTests.cpp: Added.
(TestWebKitAPI::lineCurve):
(TestWebKitAPI::expectPointNear):
(TestWebKitAPI::TEST(BezierUtilities, TrimReturnsStraightCurveInsideUnchanged)):
(TestWebKitAPI::TEST(BezierUtilities, TrimReturnsCurvedBezierInsideUnchanged)):
(TestWebKitAPI::TEST(BezierUtilities, TrimReturnsEmptyForCurveOutside)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimClipsSpanningLineToLeftAndRightEdges)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimKeepsInsideEndpointAndClipsCrossedEdge)):
(TestWebKitAPI::TEST(BezierUtilities, TrimClipsDiagonalLineAtEdgeCrossing)):
(TestWebKitAPI::TEST(BezierUtilities, TrimClipsCurveDippingThroughTopEdge)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimClipsVerticalSpanningLineToTopAndBottomEdges)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimKeepsInsideEndpointAndClipsVerticalCrossedEdge)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimReturnsSinglePointCurveInsideUnchanged)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimReturnsEmptyForSinglePointCurveOutside)):
(TestWebKitAPI::TEST(BezierUtilities, 
TrimReturnsEmptyForHorizontalLineLeftOfRect)):
(TestWebKitAPI::TEST(BezierUtilities, TrimKeepsLineLyingAlongTopEdge)):
* Source/WebCore/platform/graphics/CornerShapeUtilities.cpp:

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



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

Reply via email to