[webkit-changes] [WebKit/WebKit] 98a4d8: [motion-path] Incorrect anchoring when SVG rendere...
Tim Nguyen
noreply at github.com
Sun Oct 22 22:09:47 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 98a4d85150264a070b7957c27fd465eeb6a93366
https://github.com/WebKit/WebKit/commit/98a4d85150264a070b7957c27fd465eeb6a93366
Author: Tim Nguyen <ntim at apple.com>
Date: 2023-10-22 (Sun, 22 Oct 2023)
Changed paths:
M LayoutTests/TestExpectations
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/animation/KeyframeEffect.cpp
M Source/WebCore/css/ComputedStyleExtractor.cpp
M Source/WebCore/platform/animation/AcceleratedEffectValues.cpp
M Source/WebCore/rendering/MotionPath.cpp
M Source/WebCore/rendering/MotionPath.h
M Source/WebCore/rendering/PathOperation.h
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerModelObject.cpp
A Source/WebCore/rendering/TransformOperationData.cpp
A Source/WebCore/rendering/TransformOperationData.h
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/svg/SVGRenderSupport.cpp
M Source/WebCore/svg/SVGGraphicsElement.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Log Message:
-----------
[motion-path] Incorrect anchoring when SVG renderers are used
https://bugs.webkit.org/show_bug.cgi?id=255684
rdar://108285569
Reviewed by Darin Adler.
When we use SVG layout, and transform-box is not view-box, the current
implementation makes the object not align with offset-path because there
may be an offset (SVG x and y values) between the anchor point and offset-path.
We have to tweak the anchor point to fix the alignment.
This solution is analogous to Gecko's code: https://searchfox.org/mozilla-central/rev/47be6b9a0719f4311356695d9eed48de97b432b2/layout/base/MotionPathUtils.cpp#30
We also split out TransformOperationData into its own files, to avoid circular dependencies.
This brings the Interop Motion Path score from 96% to 99%.
* LayoutTests/TestExpectations:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/KeyframeEffect.cpp:
* Source/WebCore/css/ComputedStyleExtractor.cpp:
* Source/WebCore/platform/animation/AcceleratedEffectValues.cpp:
* Source/WebCore/rendering/MotionPath.cpp:
(WebCore::MotionPath::applyMotionPathTransform):
(WebCore::MotionPath::computePathForRay):
(WebCore::MotionPath::computePathForBox):
(WebCore::MotionPath::computePathForShape):
* Source/WebCore/rendering/MotionPath.h:
(WebCore::TransformOperationData::TransformOperationData): Deleted.
(WebCore::TransformOperationData::boundingBox const): Deleted.
(WebCore::TransformOperationData::motionPathData const): Deleted.
* Source/WebCore/rendering/PathOperation.h:
* Source/WebCore/rendering/RenderBox.cpp:
* Source/WebCore/rendering/RenderLayer.cpp:
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
* Source/WebCore/rendering/TransformOperationData.cpp: Added.
(WebCore::TransformOperationData::TransformOperationData):
* Source/WebCore/rendering/TransformOperationData.h: Added.
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::applyTransform const):
(WebCore::RenderStyle::applyCSSTransform const):
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:
* Source/WebCore/svg/SVGGraphicsElement.cpp:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
Canonical link: https://commits.webkit.org/269642@main
More information about the webkit-changes
mailing list