MathMLInlineContainerElement.cpp [plain text]
#include "config.h"
#if ENABLE(MATHML)
#include "MathMLInlineContainerElement.h"
#include "MathMLNames.h"
#include "RenderMathMLBlock.h"
#include "RenderMathMLFenced.h"
#include "RenderMathMLFraction.h"
#include "RenderMathMLMenclose.h"
#include "RenderMathMLRoot.h"
#include "RenderMathMLRow.h"
#include "RenderMathMLScripts.h"
#include "RenderMathMLSquareRoot.h"
#include "RenderMathMLUnderOver.h"
namespace WebCore {
using namespace MathMLNames;
MathMLInlineContainerElement::MathMLInlineContainerElement(const QualifiedName& tagName, Document& document)
: MathMLElement(tagName, document)
{
}
PassRefPtr<MathMLInlineContainerElement> MathMLInlineContainerElement::create(const QualifiedName& tagName, Document& document)
{
return adoptRef(new MathMLInlineContainerElement(tagName, document));
}
void MathMLInlineContainerElement::childrenChanged(const ChildChange& change)
{
if (renderer()) {
if (renderer()->isRenderMathMLRow())
toRenderMathMLRow(renderer())->updateOperatorProperties();
else if (hasTagName(mathTag) || hasTagName(msqrtTag)) {
auto childRenderer = renderer()->firstChild();
if (childRenderer && childRenderer->isRenderMathMLRow())
toRenderMathMLRow(childRenderer)->updateOperatorProperties();
}
}
MathMLElement::childrenChanged(change);
}
RenderPtr<RenderElement> MathMLInlineContainerElement::createElementRenderer(PassRef<RenderStyle> style)
{
if (hasTagName(annotation_xmlTag))
return createRenderer<RenderMathMLRow>(*this, WTF::move(style));
if (hasTagName(merrorTag) || hasTagName(mphantomTag) || hasTagName(mrowTag) || hasTagName(mstyleTag))
return createRenderer<RenderMathMLRow>(*this, WTF::move(style));
if (hasTagName(msubTag))
return createRenderer<RenderMathMLScripts>(*this, WTF::move(style));
if (hasTagName(msupTag))
return createRenderer<RenderMathMLScripts>(*this, WTF::move(style));
if (hasTagName(msubsupTag))
return createRenderer<RenderMathMLScripts>(*this, WTF::move(style));
if (hasTagName(mmultiscriptsTag))
return createRenderer<RenderMathMLScripts>(*this, WTF::move(style));
if (hasTagName(moverTag))
return createRenderer<RenderMathMLUnderOver>(*this, WTF::move(style));
if (hasTagName(munderTag))
return createRenderer<RenderMathMLUnderOver>(*this, WTF::move(style));
if (hasTagName(munderoverTag))
return createRenderer<RenderMathMLUnderOver>(*this, WTF::move(style));
if (hasTagName(mfracTag))
return createRenderer<RenderMathMLFraction>(*this, WTF::move(style));
if (hasTagName(msqrtTag))
return createRenderer<RenderMathMLSquareRoot>(*this, WTF::move(style));
if (hasTagName(mrootTag))
return createRenderer<RenderMathMLRoot>(*this, WTF::move(style));
if (hasTagName(mfencedTag))
return createRenderer<RenderMathMLFenced>(*this, WTF::move(style));
if (hasTagName(mtableTag))
return createRenderer<RenderMathMLTable>(*this, WTF::move(style));
return createRenderer<RenderMathMLBlock>(*this, WTF::move(style));
}
}
#endif // ENABLE(MATHML)