/* * Copyright (C) 2016 Igalia, S.L. * 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. */ #pragma once #if ENABLE(MATHML) #include "AccessibilityRenderObject.h" #include "RenderMathMLBlock.h" #include "RenderMathMLFraction.h" #include "RenderMathMLMath.h" #include "RenderMathMLOperator.h" #include "RenderMathMLRoot.h" namespace WebCore { class AccessibilityMathMLElement : public AccessibilityRenderObject { public: static Ref create(RenderObject*, bool isAnonymousOperator); virtual ~AccessibilityMathMLElement(); protected: explicit AccessibilityMathMLElement(RenderObject*, bool isAnonymousOperator); private: AccessibilityRole determineAccessibilityRole() final; String textUnderElement(AccessibilityTextUnderElementMode = AccessibilityTextUnderElementMode()) const override; String stringValue() const override; bool isIgnoredElementWithinMathTree() const final; bool isMathElement() const final { return true; } bool isMathFraction() const override; bool isMathFenced() const override; bool isMathSubscriptSuperscript() const override; bool isMathRow() const override; bool isMathUnderOver() const override; bool isMathRoot() const override; bool isMathSquareRoot() const override; bool isMathText() const override; bool isMathNumber() const override; bool isMathOperator() const override; bool isMathFenceOperator() const override; bool isMathSeparatorOperator() const override; bool isMathIdentifier() const override; bool isMathTable() const override; bool isMathTableRow() const override; bool isMathTableCell() const override; bool isMathMultiscript() const override; bool isMathToken() const override; bool isMathScriptObject(AccessibilityMathScriptObjectType) const override; bool isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType) const override; // Generic components. AXCoreObject* mathBaseObject() override; // Root components. AXCoreObject* mathRadicandObject() override; AXCoreObject* mathRootIndexObject() override; // Fraction components. AXCoreObject* mathNumeratorObject() override; AXCoreObject* mathDenominatorObject() override; // Under over components. AXCoreObject* mathUnderObject() override; AXCoreObject* mathOverObject() override; // Subscript/superscript components. AXCoreObject* mathSubscriptObject() override; AXCoreObject* mathSuperscriptObject() override; // Fenced components. String mathFencedOpenString() const override; String mathFencedCloseString() const override; int mathLineThickness() const override; bool isAnonymousMathOperator() const override; // Multiscripts components. void mathPrescripts(AccessibilityMathMultiscriptPairs&) override; void mathPostscripts(AccessibilityMathMultiscriptPairs&) override; bool m_isAnonymousOperator; }; } // namespace WebCore SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AccessibilityMathMLElement, isMathElement()) #endif // ENABLE(MATHML)