RenderMathMLUnderOver.h [plain text]
#pragma once
#if ENABLE(MATHML)
#include "RenderMathMLScripts.h"
namespace WebCore {
class MathMLUnderOverElement;
class RenderMathMLUnderOver final : public RenderMathMLScripts {
WTF_MAKE_ISO_ALLOCATED(RenderMathMLUnderOver);
public:
RenderMathMLUnderOver(MathMLUnderOverElement&, RenderStyle&&);
private:
bool isRenderMathMLScripts() const final { return false; }
bool isRenderMathMLUnderOver() const final { return true; }
const char* renderName() const final { return "RenderMathMLUnderOver"; }
MathMLUnderOverElement& element() const;
void computePreferredLogicalWidths() final;
void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) final;
void stretchHorizontalOperatorsAndLayoutChildren();
bool isValid() const;
bool shouldMoveLimits();
RenderBox& base() const;
RenderBox& under() const;
RenderBox& over() const;
LayoutUnit horizontalOffset(const RenderBox&) const;
bool hasAccent(bool accentUnder = false) const;
bool hasAccentUnder() const { return hasAccent(true); };
struct VerticalParameters {
bool useUnderOverBarFallBack;
LayoutUnit underGapMin;
LayoutUnit overGapMin;
LayoutUnit underShiftMin;
LayoutUnit overShiftMin;
LayoutUnit underExtraDescender;
LayoutUnit overExtraAscender;
LayoutUnit accentBaseHeight;
};
VerticalParameters verticalParameters() const;
};
}
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLUnderOver, isRenderMathMLUnderOver())
#endif // ENABLE(MATHML)