LayoutIntegrationLineIteratorLegacyPath.h [plain text]
#pragma once
#include "LayoutIntegrationInlineContent.h"
#include "LayoutIntegrationRunIteratorLegacyPath.h"
#include "RootInlineBox.h"
namespace WebCore {
namespace LayoutIntegration {
class LineIteratorLegacyPath {
public:
LineIteratorLegacyPath(const RootInlineBox* rootInlineBox)
: m_rootInlineBox(rootInlineBox)
{
}
LineIteratorLegacyPath(LineIteratorLegacyPath&&) = default;
LineIteratorLegacyPath(const LineIteratorLegacyPath&) = default;
LineIteratorLegacyPath& operator=(const LineIteratorLegacyPath&) = default;
LineIteratorLegacyPath& operator=(LineIteratorLegacyPath&&) = default;
LayoutUnit top() const { return m_rootInlineBox->lineTop(); }
LayoutUnit bottom() const { return m_rootInlineBox->lineBottom(); }
LayoutUnit selectionTop() const { return m_rootInlineBox->selectionTop(); }
LayoutUnit selectionTopForHitTesting() const { return m_rootInlineBox->selectionTop(RootInlineBox::ForHitTesting::Yes); }
LayoutUnit selectionBottom() const { return m_rootInlineBox->selectionBottom(); }
LayoutUnit lineBoxTop() const { return m_rootInlineBox->lineBoxTop(); }
LayoutUnit lineBoxBottom() const { return m_rootInlineBox->lineBoxBottom(); }
float y() const { return m_rootInlineBox->y(); }
float contentLogicalLeft() const { return m_rootInlineBox->logicalLeft(); }
float contentLogicalRight() const { return m_rootInlineBox->logicalRight(); }
float logicalHeight() const { return m_rootInlineBox->logicalHeight(); }
bool isHorizontal() const { return m_rootInlineBox->isHorizontal(); }
const RenderBlockFlow& containingBlock() const { return m_rootInlineBox->blockFlow(); }
const RootInlineBox* legacyRootInlineBox() const { return m_rootInlineBox; }
void traverseNext()
{
m_rootInlineBox = m_rootInlineBox->nextRootBox();
}
void traversePrevious()
{
m_rootInlineBox = m_rootInlineBox->prevRootBox();
}
bool operator==(const LineIteratorLegacyPath& other) const { return m_rootInlineBox == other.m_rootInlineBox; }
bool atEnd() const { return !m_rootInlineBox; }
void setAtEnd() { m_rootInlineBox = nullptr; }
RunIteratorLegacyPath firstRun() const
{
return { m_rootInlineBox->firstLeafDescendant() };
}
RunIteratorLegacyPath lastRun() const
{
return { m_rootInlineBox->lastLeafDescendant() };
}
RunIteratorLegacyPath logicalStartRun() const
{
return { *m_rootInlineBox, RunIteratorLegacyPath::LogicalOrder::Start };
}
RunIteratorLegacyPath logicalEndRun() const
{
return { *m_rootInlineBox, RunIteratorLegacyPath::LogicalOrder::End };
}
private:
const RootInlineBox* m_rootInlineBox;
};
}
}