[LFC] Adjust static position with containing block's content box top/left
[WebKit-https.git] / Source / WebCore / layout / displaytree / DisplayBox.cpp
index c4e1c1649fcc9f0cc373ec8a3e9bd51b362abfcb..2bcc6f4aece7712b9a54ea94ede50a3f3fa61019 100644 (file)
 
 #include "config.h"
 #include "DisplayBox.h"
+
+#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
+
+#include "RenderStyle.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+namespace Display {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(Box);
+
+Box::Box(const RenderStyle& style)
+    : m_style(style)
+{
+}
+
+Box::~Box()
+{
+}
+
+Box::Style::Style(const RenderStyle& style)
+    : boxSizing(style.boxSizing())
+{
+}
+
+Box::Rect Box::marginBox() const
+{
+    auto borderBox = this->borderBox();
+
+    Rect marginBox;
+    marginBox.setTop(borderBox.top() - marginTop());
+    marginBox.setLeft(borderBox.left() - marginLeft());
+    marginBox.setHeight(borderBox.height() + marginTop() + marginBottom());
+    marginBox.setWidth(borderBox.width() + marginLeft() + marginRight());
+    return marginBox;
+}
+
+Box::Rect Box::borderBox() const
+{
+    Rect borderBox;
+    borderBox.setTopLeft({ });
+    borderBox.setSize({ width(), height() });
+    return borderBox;
+}
+
+Box::Rect Box::paddingBox() const
+{
+    auto borderBox = this->borderBox();
+
+    Rect paddingBox;
+    paddingBox.setTop(borderBox.top() + borderTop());
+    paddingBox.setLeft(borderBox.left() + borderLeft());
+    paddingBox.setHeight(borderBox.bottom() - borderTop() - borderBottom());
+    paddingBox.setWidth(borderBox.width() - borderLeft() - borderRight());
+    return paddingBox;
+}
+
+Box::Rect Box::contentBox() const
+{
+    Rect contentBox;
+    contentBox.setTop(contentBoxTop());
+    contentBox.setLeft(contentBoxLeft());
+    contentBox.setWidth(contentBoxWidth());
+    contentBox.setHeight(contentBoxHeight());
+    return contentBox;
+}
+
+}
+}
+
+#endif