Title: [269298] trunk/Source/WebCore
Revision
269298
Author
[email protected]
Date
2020-11-03 06:14:45 -0800 (Tue, 03 Nov 2020)

Log Message

[LFC] showInlineTreeAndRuns should print the inline level boxes in visual order
https://bugs.webkit.org/show_bug.cgi?id=218478

Reviewed by Antti Koivisto.

* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::rootInlineBox const):
(WebCore::Layout::LineBox::nonRootInlineLevelBoxes const):
(WebCore::Layout::LineBox::rootInlineBox):
* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::showInlineTreeAndRuns):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (269297 => 269298)


--- trunk/Source/WebCore/ChangeLog	2020-11-03 14:09:35 UTC (rev 269297)
+++ trunk/Source/WebCore/ChangeLog	2020-11-03 14:14:45 UTC (rev 269298)
@@ -1,3 +1,17 @@
+2020-11-03  Zalan Bujtas  <[email protected]>
+
+        [LFC] showInlineTreeAndRuns should print the inline level boxes in visual order
+        https://bugs.webkit.org/show_bug.cgi?id=218478
+
+        Reviewed by Antti Koivisto.
+
+        * layout/inlineformatting/InlineLineBox.h:
+        (WebCore::Layout::LineBox::rootInlineBox const):
+        (WebCore::Layout::LineBox::nonRootInlineLevelBoxes const):
+        (WebCore::Layout::LineBox::rootInlineBox):
+        * layout/layouttree/LayoutTreeBuilder.cpp:
+        (WebCore::Layout::showInlineTreeAndRuns):
+
 2020-11-03  Youenn Fablet  <[email protected]>
 
         REGRESSION (r269244?): ASSERTION FAILED: m_idHashSalt.isEmpty() || m_idHashSalt == salt in WebCore::Document::setDeviceIDHashSalt

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLineBox.h (269297 => 269298)


--- trunk/Source/WebCore/layout/inlineformatting/InlineLineBox.h	2020-11-03 14:09:35 UTC (rev 269297)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLineBox.h	2020-11-03 14:14:45 UTC (rev 269298)
@@ -146,6 +146,10 @@
     auto inlineLevelBoxList() const { return m_inlineLevelBoxRectMap.values(); }
     bool containsInlineLevelBox(const Box& layoutBox) const { return m_inlineLevelBoxRectMap.contains(&layoutBox); }
 
+    const InlineLevelBox& rootInlineBox() const { return *m_rootInlineBox; }
+    using InlineLevelBoxList = Vector<std::unique_ptr<InlineLevelBox>>;
+    const InlineLevelBoxList& nonRootInlineLevelBoxes() const { return m_nonRootInlineLevelBoxList; }
+
     InlineLayoutUnit alignmentBaseline() const { return m_rootInlineBox->logicalTop() + m_rootInlineBox->baseline(); }
 
 private:
@@ -158,8 +162,6 @@
     void addInlineLevelBox(std::unique_ptr<InlineLevelBox>&&);
 
     InlineLevelBox& rootInlineBox() { return *m_rootInlineBox; }
-    using InlineLevelBoxList = Vector<std::unique_ptr<InlineLevelBox>>;
-    const InlineLevelBoxList& nonRootInlineLevelBoxes() const { return m_nonRootInlineLevelBoxList; }
 
     InlineLevelBox& inlineLevelBoxForLayoutBox(const Box& layoutBox) { return *m_inlineLevelBoxRectMap.get(&layoutBox); }
 

Modified: trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp (269297 => 269298)


--- trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp	2020-11-03 14:09:35 UTC (rev 269297)
+++ trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp	2020-11-03 14:14:45 UTC (rev 269298)
@@ -400,29 +400,33 @@
         addSpacing();
         stream << "  Inline level boxes:";
         stream.nextLine();
+
         auto& lineBox = lineBoxes[lineIndex];
-        for (auto& inlineLevelBox : lineBox.inlineLevelBoxList()) {
+        auto outputInlineLevelBox = [&](const auto& inlineLevelBox) {
             addSpacing();
             stream << "    ";
-            if (inlineLevelBox->isRootInlineBox())
+            if (inlineLevelBox.isRootInlineBox())
                 stream << "Root inline box";
-            else if (inlineLevelBox->isAtomicInlineLevelBox())
+            else if (inlineLevelBox.isAtomicInlineLevelBox())
                 stream << "Atomic inline level box";
-            else if (inlineLevelBox->isLineBreakBox())
+            else if (inlineLevelBox.isLineBreakBox())
                 stream << "Line break box";
-            else if (inlineLevelBox->isInlineBox())
+            else if (inlineLevelBox.isInlineBox())
                 stream << "Generic inline box";
             else
                 stream << "Generic inline level box";
-            auto logicalRect = lineBox.logicalRectForInlineLevelBox(inlineLevelBox->layoutBox());
+            auto logicalRect = lineBox.logicalRectForInlineLevelBox(inlineLevelBox.layoutBox());
             stream
                 << " at (" << logicalRect.left() << "," << logicalRect.top() << ")"
                 << " size (" << logicalRect.width() << "x" << logicalRect.height() << ")"
-                << " baseline (" << logicalRect.top() + inlineLevelBox->baseline() << ")"
-                << " ascent (" << inlineLevelBox->baseline() << "/" << inlineLevelBox->layoutBounds().ascent << ")"
-                << " descent (" << inlineLevelBox->descent().valueOr(0.0f) << "/" << inlineLevelBox->layoutBounds().descent << ")";
+                << " baseline (" << logicalRect.top() + inlineLevelBox.baseline() << ")"
+                << " ascent (" << inlineLevelBox.baseline() << "/" << inlineLevelBox.layoutBounds().ascent << ")"
+                << " descent (" << inlineLevelBox.descent().valueOr(0.0f) << "/" << inlineLevelBox.layoutBounds().descent << ")";
             stream.nextLine();
-        }
+        };
+        outputInlineLevelBox(lineBox.rootInlineBox());
+        for (auto& inlineLevelBox : lineBox.nonRootInlineLevelBoxes())
+            outputInlineLevelBox(*inlineLevelBox);
 
         addSpacing();
         stream << "  Runs:";
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to