[webkit-changes] [WebKit/WebKit] d451c7: [IFC][SVG text] Layout and paint using IFC
Antti Koivisto
noreply at github.com
Wed Dec 4 10:22:19 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d451c7bd69057a86cd6e4bd733ac94fc215ed915
https://github.com/WebKit/WebKit/commit/d451c7bd69057a86cd6e4bd733ac94fc215ed915
Author: Antti Koivisto <antti at apple.com>
Date: 2024-12-04 (Wed, 04 Dec 2024)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/Headers.cmake
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp
M Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp
M Source/WebCore/layout/integration/inline/InlineIteratorBoxLegacyPath.h
M Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h
M Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.cpp
M Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.h
M Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.cpp
M Source/WebCore/layout/integration/inline/LayoutIntegrationInlineContent.h
M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
M Source/WebCore/rendering/svg/RenderSVGText.cpp
M Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
M Source/WebCore/rendering/svg/SVGInlineTextBox.h
M Source/WebCore/rendering/svg/SVGTextBoxPainter.cpp
M Source/WebCore/rendering/svg/SVGTextBoxPainter.h
Log Message:
-----------
[IFC][SVG text] Layout and paint using IFC
https://bugs.webkit.org/show_bug.cgi?id=284031
rdar://140907758
Reviewed by Alan Baradlay.
Also add a setting. It is not enabled yet.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/integration/LayoutIntegrationBoxGeometryUpdater.cpp:
(WebCore::LayoutIntegration::BoxGeometryUpdater::formattingContextConstraints):
No horizontal constraint, everything is on a single line.
* Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp:
(WebCore::LayoutIntegration::canUseForLineLayout):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxLegacyPath.h:
(WebCore::InlineIterator::BoxLegacyPath::svgTextFragments const):
(WebCore::InlineIterator::BoxLegacyPath::svgInlineTextBox const):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::traverseNextBoxOnLineSkippingChildren):
(WebCore::InlineIterator::BoxModernPath::svgTextFragments const):
(WebCore::InlineIterator::BoxModernPath::boxIndex const):
(WebCore::InlineIterator::BoxModernPath::isWithinInlineBox):
Root inline boxes have the block box as a layout box. Only bail after testing.
* Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.cpp:
(WebCore::InlineIterator::SVGTextBox::calculateBoundariesIncludingSVGTransform const):
Copy from the legacy inline box.
(WebCore::InlineIterator::SVGTextBox::textFragments const):
(WebCore::InlineIterator::svgTextBoxFor):
* Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.h:
Save SVG text fragments per-box to a vector in InlineContent.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::applySVGTextFragments):
Apply the computed fragments to InlineContent.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::computePerCharacterLayoutInformation):
Apply the fragments and compute box position and size after layout.
(WebCore::RenderSVGText::paintInlineChildren):
Paint IFC boxes with the painter.
* Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::setTextFragments):
* Source/WebCore/rendering/svg/SVGInlineTextBox.h:
* Source/WebCore/rendering/svg/SVGTextBoxPainter.cpp:
(WebCore::ModernSVGTextBoxPainter::ModernSVGTextBoxPainter):
* Source/WebCore/rendering/svg/SVGTextBoxPainter.h:
Canonical link: https://commits.webkit.org/287350@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