diff options
Diffstat (limited to 'Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h')
-rw-r--r-- | Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h | 55 |
1 files changed, 38 insertions, 17 deletions
diff --git a/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h b/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h index 940979775..6c08d47b2 100644 --- a/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h +++ b/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved. + * Copyright (C) 2016 Igalia S.L. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,33 +24,53 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef RenderMathMLUnderOver_h -#define RenderMathMLUnderOver_h +#pragma once #if ENABLE(MATHML) -#include "RenderMathMLBlock.h" +#include "RenderMathMLScripts.h" namespace WebCore { - -class RenderMathMLUnderOver : public RenderMathMLBlock { + +class MathMLUnderOverElement; + +class RenderMathMLUnderOver final : public RenderMathMLScripts { public: - RenderMathMLUnderOver(Element&, PassRef<RenderStyle>); - - virtual RenderMathMLOperator* unembellishedOperator(); + RenderMathMLUnderOver(MathMLUnderOverElement&, RenderStyle&&); - virtual int firstLineBaseline() const override; - private: - virtual bool isRenderMathMLUnderOver() const override { return true; } - virtual const char* renderName() const override { return "RenderMathMLUnderOver"; } + 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; - enum UnderOverType { Under, Over, UnderOver }; - UnderOverType m_kind; + void computeOperatorsHorizontalStretch(); + 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; }; - + } -#endif // ENABLE(MATHML) +SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLUnderOver, isRenderMathMLUnderOver()) -#endif // RenderMathMLUnderOver_h +#endif // ENABLE(MATHML) |