#ifndef SVGRootInlineBox_h
#define SVGRootInlineBox_h
#include "core/rendering/RootInlineBox.h"
#include "core/rendering/svg/SVGRenderSupport.h"
#include "core/rendering/svg/SVGTextLayoutEngine.h"
namespace WebCore {
class SVGInlineTextBox;
class SVGRootInlineBox FINAL : public RootInlineBox {
public:
SVGRootInlineBox(RenderBlockFlow& block)
: RootInlineBox(block)
, m_logicalHeight(0)
{
}
virtual bool isSVGRootInlineBox() const OVERRIDE { return true; }
virtual float virtualLogicalHeight() const OVERRIDE { return m_logicalHeight; }
void setLogicalHeight(float height) { m_logicalHeight = height; }
virtual void paint(PaintInfo&, const LayoutPoint&, LayoutUnit lineTop, LayoutUnit lineBottom) OVERRIDE;
virtual void markDirty(bool dirty = true) OVERRIDE;
void computePerCharacterLayoutInformation();
InlineBox* closestLeafChildForPosition(const LayoutPoint&);
private:
void reorderValueLists(Vector<SVGTextLayoutAttributes*>&);
void layoutCharactersInTextBoxes(InlineFlowBox*, SVGTextLayoutEngine&);
void layoutChildBoxes(InlineFlowBox*, FloatRect* = 0);
void layoutRootBox(const FloatRect&);
private:
float m_logicalHeight;
};
DEFINE_INLINE_BOX_TYPE_CASTS(SVGRootInlineBox);
}
#endif