Title: [289051] trunk/Source/WebCore
Revision
289051
Author
za...@apple.com
Date
2022-02-03 06:51:37 -0800 (Thu, 03 Feb 2022)

Log Message

[LFC][IFC] imported/w3c/web-platform-tests/css/css-writing-modes/text-align-vlr* tests are failing
https://bugs.webkit.org/show_bug.cgi?id=236059

Reviewed by Antti Koivisto.

Content (alignment) offset should be flipped for vertical writing mode.

* layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::flipLogicalRectToVisualForWritingMode):
(WebCore::Layout::InlineDisplayContentBuilder::movePointHorizontallyForWritingMode const):
* layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (289050 => 289051)


--- trunk/Source/WebCore/ChangeLog	2022-02-03 14:31:17 UTC (rev 289050)
+++ trunk/Source/WebCore/ChangeLog	2022-02-03 14:51:37 UTC (rev 289051)
@@ -1,3 +1,18 @@
+2022-02-03  Alan Bujtas  <za...@apple.com>
+
+        [LFC][IFC] imported/w3c/web-platform-tests/css/css-writing-modes/text-align-vlr* tests are failing
+        https://bugs.webkit.org/show_bug.cgi?id=236059
+
+        Reviewed by Antti Koivisto.
+
+        Content (alignment) offset should be flipped for vertical writing mode. 
+
+        * layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
+        (WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
+        (WebCore::Layout::InlineDisplayContentBuilder::flipLogicalRectToVisualForWritingMode):
+        (WebCore::Layout::InlineDisplayContentBuilder::movePointHorizontallyForWritingMode const):
+        * layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h:
+
 2022-02-03  Youenn Fablet  <you...@apple.com>
 
         RealtimeIncomingVideoSourceCocoa should not need to create IOSurfaces

Modified: trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp (289050 => 289051)


--- trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp	2022-02-03 14:31:17 UTC (rev 289050)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp	2022-02-03 14:51:37 UTC (rev 289051)
@@ -327,7 +327,7 @@
     ASSERT(lineContent.inlineBaseDirection == TextDirection::LTR || !hasContent);
 #endif
     auto writingMode = root().style().writingMode();
-    auto contentStartInVisualOrder = displayLine.left() + displayLine.contentLeft();
+    auto contentStartInVisualOrder = movePointHorizontallyForWritingMode(displayLine.topLeft(), displayLine.contentLeft(), writingMode);
 
     for (auto& lineRun : lineContent.runs) {
         auto& layoutBox = lineRun.layoutBox();
@@ -334,7 +334,7 @@
 
         auto visualRectRelativeToRoot = [&](auto logicalRect) {
             auto visualRect = flipLogicalRectToVisualForWritingMode(logicalRect, writingMode);
-            visualRect.moveBy({ contentStartInVisualOrder, displayLine.top() });
+            visualRect.moveBy(contentStartInVisualOrder);
             return visualRect;
         };
 
@@ -789,7 +789,7 @@
     case WritingMode::LeftToRight:
     case WritingMode::RightToLeft: {
         // See InlineFormattingGeometry for more info.
-        return InlineRect { logicalRect.left(), logicalRect.top(), logicalRect.height(), logicalRect.width() };
+        return { logicalRect.left(), logicalRect.top(), logicalRect.height(), logicalRect.width() };
     }
     default:
         ASSERT_NOT_REACHED();
@@ -798,7 +798,26 @@
     return logicalRect;
 }
 
+InlineLayoutPoint InlineDisplayContentBuilder::movePointHorizontallyForWritingMode(const InlineLayoutPoint& logicalPoint, InlineLayoutUnit horizontalOffset, WritingMode writingMode) const
+{
+    auto visualPoint = logicalPoint;
+    switch (writingMode) {
+    case WritingMode::TopToBottom:
+        visualPoint.moveBy(FloatPoint { horizontalOffset, { } });
+        break;
+    case WritingMode::LeftToRight:
+    case WritingMode::RightToLeft: {
+        visualPoint.moveBy(FloatPoint { { }, horizontalOffset });
+        break;
+    }
+    default:
+        ASSERT_NOT_REACHED();
+        break;
+    }
+    return visualPoint;
 }
+
 }
+}
 
 #endif

Modified: trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h (289050 => 289051)


--- trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h	2022-02-03 14:31:17 UTC (rev 289050)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h	2022-02-03 14:51:37 UTC (rev 289051)
@@ -67,6 +67,8 @@
     void adjustVisualGeometryForDisplayBox(size_t displayBoxNodeIndex, InlineLayoutUnit& accumulatedOffset, InlineLayoutUnit lineBoxTop, const DisplayBoxTree&, DisplayBoxes&, const LineBox&, const HashMap<const Box*, IsFirstLastIndex>&);
     size_t ensureDisplayBoxForContainer(const ContainerBox&, DisplayBoxTree&, AncestorStack&, DisplayBoxes&);
 
+    InlineLayoutPoint movePointHorizontallyForWritingMode(const InlineLayoutPoint& topLeft, InlineLayoutUnit horizontalOffset, WritingMode) const;
+
     const ContainerBox& root() const { return m_formattingContextRoot; }
     InlineFormattingState& formattingState() const { return m_formattingState; } 
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to