RenderMathMLRoot.h [plain text]
#ifndef RenderMathMLRoot_h
#define RenderMathMLRoot_h
#if ENABLE(MATHML)
#include "RenderMathMLBlock.h"
#include "RenderMathMLRow.h"
namespace WebCore {
class RenderMathMLRadicalOperator;
class RenderMathMLRootWrapper;
class RenderMathMLRoot : public RenderMathMLBlock {
friend class RenderMathMLRootWrapper;
public:
RenderMathMLRoot(Element&, Ref<RenderStyle>&&);
RenderMathMLRoot(Document&, Ref<RenderStyle>&&);
virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) override;
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
virtual void updateFromElement() override;
RenderMathMLRootWrapper* baseWrapper() const;
RenderMathMLRootWrapper* indexWrapper() const;
protected:
virtual void layout() override;
virtual void paint(PaintInfo&, const LayoutPoint&) override;
private:
virtual bool isRenderMathMLRoot() const override final { return true; }
virtual const char* renderName() const override { return "RenderMathMLRoot"; }
virtual Optional<int> firstLineBaseline() const override;
void updateStyle();
void restructureWrappers();
RenderMathMLBlock* radicalWrapper() const;
RenderMathMLRadicalOperator* radicalOperator() const;
LayoutUnit m_verticalGap;
LayoutUnit m_ruleThickness;
LayoutUnit m_extraAscender;
float m_degreeBottomRaisePercent;
};
class RenderMathMLRootWrapper final : public RenderMathMLRow {
friend class RenderMathMLRoot;
public:
RenderMathMLRootWrapper(Document& document, Ref<RenderStyle>&& style)
: RenderMathMLRow(document, WTF::move(style)) { }
private:
void removeChildWithoutRestructuring(RenderObject&);
virtual void removeChild(RenderObject&) override;
static RenderPtr<RenderMathMLRootWrapper> createAnonymousWrapper(RenderMathMLRoot* renderObject);
virtual bool isRenderMathMLRootWrapper() const override { return true; }
virtual const char* renderName() const override { return "RenderMathMLRootWrapper"; }
};
}
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRoot, isRenderMathMLRoot())
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRootWrapper, isRenderMathMLRootWrapper())
#endif // ENABLE(MATHML)
#endif // RenderMathMLRoot_h