[LFC] Implement LayoutContext::createDisplayBox
[WebKit-https.git] / Source / WebCore / layout / FormattingContext.h
index 3a4f5704e15e2b21474afdb531ce41acfc918e98..5379ebdb3baddf805b6f3ac221b71c5afa6850e3 100644 (file)
 
 namespace WebCore {
 
+namespace Display {
+class Box;
+}
+
 namespace Layout {
 
 class Box;
@@ -52,23 +56,29 @@ public:
     virtual Ref<FloatingState> createOrFindFloatingState() const = 0;
 
 protected:
+    struct LayoutPair {
+        const Box& layoutBox;
+        Display::Box& displayBox;
+    };
+    using LayoutQueue = Vector<std::unique_ptr<LayoutPair>>;
+
     const Box& root() const { return *m_root; }
     const LayoutContext& layoutContext() const { return m_layoutContext; }
 
-    virtual void computeStaticPosition(const Box&) const;
-    virtual void computeInFlowPositionedPosition(const Box&) const;
-    virtual void computeOutOfFlowPosition(const Box&) const;
+    virtual void computeStaticPosition(const Box&, Display::Box&) const;
+    virtual void computeInFlowPositionedPosition(const Box&, Display::Box&) const;
+    virtual void computeOutOfFlowPosition(const Box&, Display::Box&) const;
 
-    virtual void computeWidth(const Box&) const;
-    virtual void computeHeight(const Box&) const;
+    virtual void computeWidth(const Box&, Display::Box&) const;
+    virtual void computeHeight(const Box&, Display::Box&) const;
 
-    virtual void computeOutOfFlowWidth(const Box&) const;
-    virtual void computeFloatingWidth(const Box&) const;
-    virtual void computeInFlowWidth(const Box&) const = 0;
+    virtual void computeOutOfFlowWidth(const Box&, Display::Box&) const;
+    virtual void computeFloatingWidth(const Box&, Display::Box&) const;
+    virtual void computeInFlowWidth(const Box&, Display::Box&) const = 0;
 
-    virtual void computeOutOfFlowHeight(const Box&) const;
-    virtual void computeFloatingHeight(const Box&) const;
-    virtual void computeInFlowHeight(const Box&) const = 0;
+    virtual void computeOutOfFlowHeight(const Box&, Display::Box&) const;
+    virtual void computeFloatingHeight(const Box&, Display::Box&) const;
+    virtual void computeInFlowHeight(const Box&, Display::Box&) const = 0;
 
     virtual LayoutUnit marginTop(const Box&) const;
     virtual LayoutUnit marginLeft(const Box&) const;