#pragma once
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
#include "DisplayInlineRect.h"
namespace WebCore {
namespace Display {
class LineBox {
WTF_MAKE_FAST_ALLOCATED;
public:
struct Baseline {
Baseline(InlineLayoutUnit ascent, InlineLayoutUnit descent);
InlineLayoutUnit height() const { return ascent() + descent(); }
InlineLayoutUnit ascent() const { return m_ascent; }
InlineLayoutUnit descent() const { return m_descent; }
private:
InlineLayoutUnit m_ascent { 0 };
InlineLayoutUnit m_descent { 0 };
};
LineBox(const InlineRect&, const InlineRect& scrollableOverflow, const InlineRect& inkOverflow, const Baseline&, InlineLayoutUnit baselineOffset);
const InlineRect& rect() const { return m_rect; }
const InlineRect& scrollableOverflow() const { return m_scrollableOverflow; }
const InlineRect& inkOverflow() const { return m_inkOverflow; }
InlineLayoutUnit left() const { return m_rect.left(); }
InlineLayoutUnit right() const { return m_rect.right(); }
InlineLayoutUnit top() const { return m_rect.top(); }
InlineLayoutUnit bottom() const { return m_rect.bottom(); }
InlineLayoutUnit width() const { return m_rect.width(); }
InlineLayoutUnit height() const { return m_rect.height(); }
void moveVertically(InlineLayoutUnit);
const Baseline& baseline() const { return m_baseline; }
InlineLayoutUnit baselineOffset() const { return m_baselineOffset; }
private:
InlineRect m_rect;
InlineRect m_scrollableOverflow;
InlineRect m_inkOverflow;
Baseline m_baseline;
InlineLayoutUnit m_baselineOffset { 0 };
};
inline LineBox::LineBox(const InlineRect& rect, const InlineRect& scrollableOverflow, const InlineRect& inkOverflow, const Baseline& baseline, InlineLayoutUnit baselineOffset)
: m_rect(rect)
, m_scrollableOverflow(scrollableOverflow)
, m_inkOverflow(inkOverflow)
, m_baseline(baseline)
, m_baselineOffset(baselineOffset)
{
}
inline LineBox::Baseline::Baseline(InlineLayoutUnit ascent, InlineLayoutUnit descent)
: m_ascent(ascent)
, m_descent(descent)
{
}
inline void LineBox::moveVertically(InlineLayoutUnit offset)
{
m_rect.moveVertically(offset);
m_inkOverflow.moveVertically(offset);
}
}
}
#endif