Title: [290672] trunk/Source/WebCore
Revision
290672
Author
[email protected]
Date
2022-03-01 13:28:07 -0800 (Tue, 01 Mar 2022)

Log Message

[IFC][Integration] Add InlineIterator::Box::visualRect
https://bugs.webkit.org/show_bug.cgi?id=237309

Reviewed by Antti Koivisto.

This is the final, flipped version of the box rect.

* layout/integration/InlineIteratorBox.h:
(WebCore::InlineIterator::Box::visualRect const):
* rendering/InlineBoxPainter.cpp:
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
* rendering/TextBoxPainter.cpp:
(WebCore::TextBoxPainter::computePaintRect):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (290671 => 290672)


--- trunk/Source/WebCore/ChangeLog	2022-03-01 21:19:10 UTC (rev 290671)
+++ trunk/Source/WebCore/ChangeLog	2022-03-01 21:28:07 UTC (rev 290672)
@@ -1,3 +1,20 @@
+2022-03-01  Alan Bujtas  <[email protected]>
+
+        [IFC][Integration] Add InlineIterator::Box::visualRect
+        https://bugs.webkit.org/show_bug.cgi?id=237309
+
+        Reviewed by Antti Koivisto.
+
+        This is the final, flipped version of the box rect.
+
+        * layout/integration/InlineIteratorBox.h:
+        (WebCore::InlineIterator::Box::visualRect const):
+        * rendering/InlineBoxPainter.cpp:
+        (WebCore::InlineBoxPainter::paintMask):
+        (WebCore::InlineBoxPainter::paintDecorations):
+        * rendering/TextBoxPainter.cpp:
+        (WebCore::TextBoxPainter::computePaintRect):
+
 2022-03-01  Patrick Angle  <[email protected]>
 
         Web app fails only when dev tools is open

Modified: trunk/Source/WebCore/layout/integration/InlineIteratorBox.h (290671 => 290672)


--- trunk/Source/WebCore/layout/integration/InlineIteratorBox.h	2022-03-01 21:19:10 UTC (rev 290671)
+++ trunk/Source/WebCore/layout/integration/InlineIteratorBox.h	2022-03-01 21:28:07 UTC (rev 290672)
@@ -60,6 +60,7 @@
     bool isInlineBox() const;
     bool isRootInlineBox() const;
 
+    FloatRect visualRect(float formattingRootSizeInBlockDirection) const;
     FloatRect visualRectIgnoringBlockDirection() const;
 
     float logicalTop() const { return isHorizontal() ? visualRectIgnoringBlockDirection().y() : visualRectIgnoringBlockDirection().x(); }
@@ -183,6 +184,19 @@
     });
 }
 
+inline FloatRect Box::visualRect(float formattingRootSizeInBlockDirection) const
+{
+    auto visualRect = visualRectIgnoringBlockDirection();
+    if (!style().isFlippedBlocksWritingMode())
+        return visualRect;
+
+    if (style().isHorizontalWritingMode())
+        visualRect.setY(formattingRootSizeInBlockDirection - visualRect.maxY());
+    else
+        visualRect.setX(formattingRootSizeInBlockDirection - visualRect.maxX());
+    return visualRect;
+}
+
 inline FloatRect Box::visualRectIgnoringBlockDirection() const
 {
     return WTF::switchOn(m_pathVariant, [](auto& path) {

Modified: trunk/Source/WebCore/rendering/InlineBoxPainter.cpp (290671 => 290672)


--- trunk/Source/WebCore/rendering/InlineBoxPainter.cpp	2022-03-01 21:19:10 UTC (rev 290671)
+++ trunk/Source/WebCore/rendering/InlineBoxPainter.cpp	2022-03-01 21:28:07 UTC (rev 290672)
@@ -141,8 +141,7 @@
         return;
 
     // Move x/y to our coordinates.
-    LayoutRect localRect(m_inlineBox.visualRectIgnoringBlockDirection());
-    m_inlineBox.line()->containingBlock().flipForWritingMode(localRect);
+    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
     LayoutPoint adjustedPaintOffset = m_paintOffset + localRect.location();
 
     const NinePieceImage& maskNinePieceImage = renderer().style().maskBoxImage();
@@ -218,9 +217,7 @@
         return;
 
     // Move x/y to our coordinates.
-    LayoutRect localRect(m_inlineBox.visualRectIgnoringBlockDirection());
-    m_inlineBox.line()->containingBlock().flipForWritingMode(localRect);
-
+    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
     LayoutPoint adjustedPaintoffset = m_paintOffset + localRect.location();
     GraphicsContext& context = m_paintInfo.context();
     LayoutRect paintRect = LayoutRect(adjustedPaintoffset, localRect.size());

Modified: trunk/Source/WebCore/rendering/TextBoxPainter.cpp (290671 => 290672)


--- trunk/Source/WebCore/rendering/TextBoxPainter.cpp	2022-03-01 21:19:10 UTC (rev 290671)
+++ trunk/Source/WebCore/rendering/TextBoxPainter.cpp	2022-03-01 21:28:07 UTC (rev 290672)
@@ -572,17 +572,7 @@
 
     localPaintOffset.move(0, m_style.isHorizontalWritingMode() ? 0 : -textBox().logicalHeight());
 
-    auto locationIncludingFlipping = [&]() -> FloatPoint {
-        auto rect = textBox().visualRectIgnoringBlockDirection();
-        if (!m_style.isFlippedBlocksWritingMode())
-            return rect.location();
-        auto& block = textBox().line()->containingBlock();
-        if (block.style().isHorizontalWritingMode())
-            return { rect.x(), block.height() - rect.height() - rect.y() };
-        return { block.width() - rect.width() - rect.x(), rect.y() };
-    };
-
-    FloatPoint boxOrigin = locationIncludingFlipping();
+    auto boxOrigin = textBox().visualRect(textBox().line()->containingBlock().logicalHeight()).location();
     boxOrigin.moveBy(localPaintOffset);
     return { boxOrigin, FloatSize(textBox().logicalWidth(), textBox().logicalHeight()) };
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to