[LFC][IFC] Adjust current line with float constraints.
[WebKit-https.git] / Source / WebCore / layout / inlineformatting / InlineRun.h
index c277758..28d3276 100644 (file)
@@ -35,34 +35,46 @@ namespace Layout {
 
 struct InlineRun {
     InlineRun(LayoutUnit logcialLeft, LayoutUnit width, const InlineItem&);
-    InlineRun(LayoutUnit logcialLeft, LayoutUnit width, ItemPosition, unsigned length, const InlineItem&);
 
     LayoutUnit logicalLeft() const { return m_logicalLeft; }
     LayoutUnit logicalRight() const { return logicalLeft() + width(); }
     LayoutUnit width() const { return m_width; }
 
     void setWidth(LayoutUnit width) { m_width = width; }
+    void setLogicalLeft(LayoutUnit logicalLeft) { m_logicalLeft = logicalLeft; }
     void setLogicalRight(LayoutUnit logicalRight) { m_width -= (this->logicalRight() - logicalRight); }
+    void moveHorizontally(LayoutUnit delta) { m_logicalLeft += delta; }
+
+    struct ExpansionOpportunity {
+        unsigned count { 0 };
+        ExpansionBehavior behavior { ForbidLeadingExpansion | ForbidTrailingExpansion };
+        LayoutUnit expansion;
+    };
+    ExpansionOpportunity& expansionOpportunity() { return m_expansionOpportunity; }
 
     struct TextContext {
     public:
         TextContext(ItemPosition, unsigned length);
 
-        ItemPosition position() const { return m_position; }
-        unsigned length() const { return m_length; }
-
+        void setStart(ItemPosition start) { m_start = start; }
         void setLength(unsigned length) { m_length = length; }
 
+        ItemPosition start() const { return m_start; }
+        unsigned length() const { return m_length; }
+
     private:
-        ItemPosition m_position;
+        ItemPosition m_start;
         unsigned m_length;
     };
+    void setTextContext(TextContext textContext) { m_textContext.emplace(textContext); }
     std::optional<TextContext>& textContext() { return m_textContext; }
+
     const InlineItem& inlineItem() const { return m_inlineItem; }
 
 private:
     LayoutUnit m_logicalLeft;
     LayoutUnit m_width;
+    ExpansionOpportunity m_expansionOpportunity;
 
     const InlineItem& m_inlineItem;
     std::optional<TextContext> m_textContext;
@@ -77,16 +89,8 @@ inline InlineRun::InlineRun(LayoutUnit logicalLeft, LayoutUnit width, const Inli
 {
 }
 
-inline InlineRun::InlineRun(LayoutUnit logicalLeft, LayoutUnit width, ItemPosition position, unsigned length, const InlineItem& inlineItem)
-    : m_logicalLeft(logicalLeft)
-    , m_width(width)
-    , m_inlineItem(inlineItem)
-    , m_textContext(TextContext { position, length })
-{
-}
-
-inline InlineRun::TextContext::TextContext(ItemPosition position, unsigned length)
-    : m_position(position)
+inline InlineRun::TextContext::TextContext(ItemPosition start, unsigned length)
+    : m_start(start)
     , m_length(length)
 {
 }