Index: Source/core/rendering/mathml/RenderMathMLBlock.cpp |
diff --git a/Source/core/rendering/mathml/RenderMathMLBlock.cpp b/Source/core/rendering/mathml/RenderMathMLBlock.cpp |
deleted file mode 100644 |
index ea4aab6767d85071ef0861220ef2e54d8420f2a3..0000000000000000000000000000000000000000 |
--- a/Source/core/rendering/mathml/RenderMathMLBlock.cpp |
+++ /dev/null |
@@ -1,161 +0,0 @@ |
-/* |
- * Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved. |
- * Copyright (C) 2012 David Barton (dbarton@mathscribe.com). All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#include "config.h" |
- |
-#if ENABLE(MATHML) |
- |
-#include "core/rendering/mathml/RenderMathMLBlock.h" |
- |
-#include "MathMLNames.h" |
-#include "core/platform/graphics/GraphicsContext.h" |
-#include "core/rendering/RenderView.h" |
- |
-namespace WebCore { |
- |
-using namespace MathMLNames; |
- |
-RenderMathMLBlock::RenderMathMLBlock(Element* container) |
- : RenderFlexibleBox(container) |
- , m_ignoreInAccessibilityTree(false) |
- , m_preferredLogicalHeight(preferredLogicalHeightUnset) |
-{ |
-} |
- |
-bool RenderMathMLBlock::isChildAllowed(RenderObject* child, RenderStyle*) const |
-{ |
- return child->node() && child->node()->nodeType() == Node::ELEMENT_NODE; |
-} |
- |
-void RenderMathMLBlock::computePreferredLogicalWidths() |
-{ |
- ASSERT(preferredLogicalWidthsDirty()); |
- m_preferredLogicalHeight = preferredLogicalHeightUnset; |
- RenderFlexibleBox::computePreferredLogicalWidths(); |
-} |
- |
-RenderMathMLBlock* RenderMathMLBlock::createAnonymousMathMLBlock(EDisplay display) |
-{ |
- RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), display); |
- RenderMathMLBlock* newBlock = new (renderArena()) RenderMathMLBlock(0); |
- newBlock->setDocumentForAnonymous(document()); |
- newBlock->setStyle(newStyle.release()); |
- return newBlock; |
-} |
- |
-// An arbitrary large value, like RenderBlock.cpp BLOCK_MAX_WIDTH or FixedTableLayout.cpp TABLE_MAX_WIDTH. |
-static const int cLargeLogicalWidth = 15000; |
- |
-void RenderMathMLBlock::computeChildrenPreferredLogicalHeights() |
-{ |
- ASSERT(needsLayout()); |
- |
- // This is ugly, but disable fragmentation when computing the preferred heights. |
- FragmentationDisabler fragmentationDisabler(this); |
- |
- // Ensure a full repaint will happen after layout finishes. |
- setNeedsLayout(true, MarkOnlyThis); |
- |
- RenderView* renderView = view(); |
- bool hadLayoutState = renderView->layoutState(); |
- if (!hadLayoutState) |
- renderView->pushLayoutState(this); |
- { |
- LayoutStateDisabler layoutStateDisabler(renderView); |
- |
- LayoutUnit oldAvailableLogicalWidth = availableLogicalWidth(); |
- setLogicalWidth(cLargeLogicalWidth); |
- |
- for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { |
- if (!child->isBox()) |
- continue; |
- |
- // Because our width changed, |child| may need layout. |
- if (child->maxPreferredLogicalWidth() > oldAvailableLogicalWidth) |
- child->setNeedsLayout(true, MarkOnlyThis); |
- |
- RenderMathMLBlock* childMathMLBlock = child->isRenderMathMLBlock() ? toRenderMathMLBlock(child) : 0; |
- if (childMathMLBlock && !childMathMLBlock->isPreferredLogicalHeightDirty()) |
- continue; |
- // Layout our child to compute its preferred logical height. |
- child->layoutIfNeeded(); |
- if (childMathMLBlock) |
- childMathMLBlock->setPreferredLogicalHeight(childMathMLBlock->logicalHeight()); |
- } |
- } |
- if (!hadLayoutState) |
- renderView->popLayoutState(this); |
-} |
- |
-LayoutUnit RenderMathMLBlock::preferredLogicalHeightAfterSizing(RenderObject* child) |
-{ |
- if (child->isRenderMathMLBlock()) |
- return toRenderMathMLBlock(child)->preferredLogicalHeight(); |
- if (child->isBox()) { |
- ASSERT(!child->needsLayout()); |
- return toRenderBox(child)->logicalHeight(); |
- } |
- // This currently ignores -webkit-line-box-contain: |
- return child->style()->fontSize(); |
-} |
- |
-int RenderMathMLBlock::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode direction, LinePositionMode linePositionMode) const |
-{ |
- // mathml.css sets math { -webkit-line-box-contain: glyphs replaced; line-height: 0; }, so when linePositionMode == PositionOfInteriorLineBoxes we want to |
- // return 0 here to match our line-height. This matters when RootInlineBox::ascentAndDescentForBox is called on a RootInlineBox for an inline-block. |
- if (linePositionMode == PositionOfInteriorLineBoxes) |
- return 0; |
- |
- LayoutUnit baseline = firstLineBoxBaseline(); // FIXME: This may be unnecessary after flex baselines are implemented (https://bugs.webkit.org/show_bug.cgi?id=96188). |
- if (baseline != -1) |
- return baseline; |
- |
- return RenderFlexibleBox::baselinePosition(baselineType, firstLine, direction, linePositionMode); |
-} |
- |
-const char* RenderMathMLBlock::renderName() const |
-{ |
- EDisplay display = style()->display(); |
- if (display == FLEX) |
- return isAnonymous() ? "RenderMathMLBlock (anonymous, flex)" : "RenderMathMLBlock (flex)"; |
- if (display == INLINE_FLEX) |
- return isAnonymous() ? "RenderMathMLBlock (anonymous, inline-flex)" : "RenderMathMLBlock (inline-flex)"; |
- // |display| should be one of the above. |
- ASSERT_NOT_REACHED(); |
- return isAnonymous() ? "RenderMathMLBlock (anonymous)" : "RenderMathMLBlock"; |
-} |
- |
-int RenderMathMLTable::firstLineBoxBaseline() const |
-{ |
- // In legal MathML, we'll have a MathML parent. That RenderFlexibleBox parent will use our firstLineBoxBaseline() for baseline alignment, per |
- // http://dev.w3.org/csswg/css3-flexbox/#flex-baselines. We want to vertically center an <mtable>, such as a matrix. Essentially the whole <mtable> element fits on a |
- // single line, whose baseline gives this centering. This is different than RenderTable::firstLineBoxBaseline, which returns the baseline of the first row of a <table>. |
- return (logicalHeight() + style()->fontMetrics().xHeight()) / 2; |
-} |
- |
-} |
- |
-#endif |