summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h')
-rw-r--r--Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h55
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)