Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f48555f2c5d09dba8dc48ad5383ad982265c84be https://github.com/WebKit/WebKit/commit/f48555f2c5d09dba8dc48ad5383ad982265c84be Author: Simon Fraser <simon.fra...@apple.com> Date: 2024-08-20 (Tue, 20 Aug 2024)
Changed paths: M LayoutTests/interaction-region/border-radii-expected.txt M LayoutTests/interaction-region/position-only-update-expected.txt M LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-columns-expected.txt M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/page/InteractionRegion.cpp M Source/WebCore/platform/graphics/RoundedRect.cpp M Source/WebCore/platform/graphics/RoundedRect.h M Source/WebCore/rendering/BackgroundPainter.cpp M Source/WebCore/rendering/BorderPainter.cpp M Source/WebCore/rendering/BorderPainter.h A Source/WebCore/rendering/BorderShape.cpp A Source/WebCore/rendering/BorderShape.h M Source/WebCore/rendering/MotionPath.cpp M Source/WebCore/rendering/RenderBlock.cpp M Source/WebCore/rendering/RenderBox.cpp M Source/WebCore/rendering/RenderBox.h M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderReplaced.cpp M Source/WebCore/rendering/RenderTable.cpp M Source/WebCore/rendering/RenderTheme.cpp M Source/WebCore/rendering/ios/RenderThemeIOS.h M Source/WebCore/rendering/ios/RenderThemeIOS.mm M Source/WebCore/rendering/shapes/BoxShape.cpp M Source/WebCore/rendering/style/RenderStyle.cpp M Source/WebCore/rendering/style/RenderStyle.h Log Message: ----------- Introduce BorderShape to prepare for non-rounded corner shapes https://bugs.webkit.org/show_bug.cgi?id=278269 rdar://134102043 Reviewed by Antti Koivisto. There's a lot of code currently that assumes that CSS boxes are rects or rounded rects. With `corner-shape`, that's no longer true, so we need a class that hides the complexities of clipping, painting and hit-testing more complex border shapes. This change introduces the `BorderShape` class, and uses it in all the places that used to call `RenderStyle::getRoundedBorderFor()` which can be removed. Many call sites continue to use RoundedRects; these will gradually be migrated to a form where BorderShape itself handles the functionality, but for now, call `BorderShape::deprecated...` functions to keep code working. `RenderBox::borderRadii()` had some surprising code that actually returns a rounded rect for the padding box; noted with a FIXME. This is only called from WebKitLegacy and WebKit. A future change will adopt BorderShape for call sites of `RenderStyle::getRoundedInnerBorderFor()`. * LayoutTests/interaction-region/border-radii-expected.txt: The event region rects are now pixel-snapped. * LayoutTests/interaction-region/position-only-update-expected.txt: Ditto * LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-columns-expected.txt: Ditto * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/page/InteractionRegion.cpp: (WebCore::interactionRegionForRenderedRegion): * Source/WebCore/platform/graphics/RoundedRect.cpp: (WebCore::RoundedRect::Radii::areRenderableInRect const): (WebCore::RoundedRect::Radii::makeRenderableInRect): (WebCore::RoundedRect::isRenderable const): (WebCore::RoundedRect::adjustRadii): * Source/WebCore/platform/graphics/RoundedRect.h: * Source/WebCore/rendering/BackgroundPainter.cpp: (WebCore::BackgroundPainter::backgroundRoundedRect const): (WebCore::BackgroundPainter::paintBoxShadow const): * Source/WebCore/rendering/BorderPainter.cpp: (WebCore::BorderPainter::pathForBorderArea): (WebCore::BorderPainter::paintBorder const): (WebCore::BorderPainter::borderRectAdjustedForBleedAvoidance const): (WebCore::BorderPainter::borderInnerRectAdjustedForBleedAvoidance const): Deleted. * Source/WebCore/rendering/BorderPainter.h: * Source/WebCore/rendering/BorderShape.cpp: Added. (WebCore::calcRadiiFor): (WebCore::BorderShape::shapeForBorderRect): (WebCore::BorderShape::BorderShape): (WebCore::BorderShape::deprecatedRoundedRect const): (WebCore::BorderShape::deprecatedInnerRoundedRect const): (WebCore::BorderShape::deprecatedPixelSnappedRoundedRect const): (WebCore::BorderShape::deprecatedPixelSnappedInnerRoundedRect const): (WebCore::BorderShape::snappedOuterRect const): (WebCore::BorderShape::snappedInnerRect const): (WebCore::addRoundedRectToPath): (WebCore::BorderShape::pathForOuterShape const): (WebCore::BorderShape::pathForInnerShape const): (WebCore::BorderShape::pathForBorderArea const): (WebCore::BorderShape::clipToOuterShape): (WebCore::BorderShape::clipToInnerShape): (WebCore::BorderShape::clipOutInnerShape): (WebCore::BorderShape::fillOuterShape): (WebCore::BorderShape::innerEdgeRoundedRect const): (WebCore::BorderShape::innerEdgeRect const): * Source/WebCore/rendering/BorderShape.h: Added. (WebCore::BorderShape::radii const): (WebCore::BorderShape::setRadii): (WebCore::BorderShape::isRounded const): * Source/WebCore/rendering/MotionPath.cpp: (WebCore::containingBlockRectForRenderer): * Source/WebCore/rendering/RenderBlock.cpp: (WebCore::RenderBlock::paintObject): * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::borderRadii const): (WebCore::RenderBox::hitTestBorderRadius const): (WebCore::RenderBox::paintBoxDecorations): (WebCore::RenderBox::borderRoundedRect const): Deleted. (WebCore::RenderBox::roundedBorderBoxRect const): Deleted. * Source/WebCore/rendering/RenderBox.h: * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::repaintAfterLayoutIfNeeded): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateBackdropFiltersGeometry): (WebCore::RenderLayerBacking::updateConfiguration): * Source/WebCore/rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::paint): * Source/WebCore/rendering/RenderTable.cpp: (WebCore::RenderTable::paintBoxDecorations): * Source/WebCore/rendering/RenderTheme.cpp: (WebCore::RenderTheme::paint): * Source/WebCore/rendering/ios/RenderThemeIOS.h: * Source/WebCore/rendering/ios/RenderThemeIOS.mm: (WebCore::RenderThemeIOS::paintTextFieldDecorations): (WebCore::RenderThemeIOS::addRoundedBorderClip): Deleted. It was unused. * Source/WebCore/rendering/shapes/BoxShape.cpp: (WebCore::computeRoundedRectForBoxShape): * Source/WebCore/rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::getRoundedBorderFor const): Deleted. * Source/WebCore/rendering/style/RenderStyle.h: Canonical link: https://commits.webkit.org/282528@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes