/* * Initialize the list of notations to draw */ void nsMathMLmencloseFrame::InitNotations() { mNotationsToDraw = 0; mLongDivCharIndex = mRadicalCharIndex = -1; mMathMLChar.Clear(); nsAutoString value; if (GetAttribute(mContent, mPresentationData.mstyle, nsGkAtoms::notation_, value)) { // parse the notation attribute nsWhitespaceTokenizer tokenizer(value); while (tokenizer.hasMoreTokens()) AddNotation(tokenizer.nextToken()); if (IsToDraw(NOTATION_UPDIAGONALARROW)) { // For <menclose notation="updiagonalstrike updiagonalarrow">, if // the two notations are drawn then the strike line may cause the point of // the arrow to be too wide. Hence we will only draw the updiagonalarrow // and the arrow shaft may be thought to be the updiagonalstrike. mNotationsToDraw &= ~NOTATION_UPDIAGONALSTRIKE; } } else { // default: longdiv if (NS_FAILED(AllocateMathMLChar(NOTATION_LONGDIV))) return; mNotationsToDraw = NOTATION_LONGDIV; } }
/* * Add a notation to draw, if the argument is the name of a known notation. * @param aNotation string name of a notation */ nsresult nsMathMLmencloseFrame::AddNotation(const nsAString& aNotation) { nsresult rv; if (aNotation.EqualsLiteral("longdiv")) { rv = AllocateMathMLChar(NOTATION_LONGDIV); NS_ENSURE_SUCCESS(rv, rv); mNotationsToDraw |= NOTATION_LONGDIV; } else if (aNotation.EqualsLiteral("actuarial")) { mNotationsToDraw |= (NOTATION_RIGHT | NOTATION_TOP); } else if (aNotation.EqualsLiteral("radical")) { rv = AllocateMathMLChar(NOTATION_RADICAL); NS_ENSURE_SUCCESS(rv, rv); mNotationsToDraw |= NOTATION_RADICAL; } else if (aNotation.EqualsLiteral("box")) { mNotationsToDraw |= (NOTATION_LEFT | NOTATION_RIGHT | NOTATION_TOP | NOTATION_BOTTOM); } else if (aNotation.EqualsLiteral("roundedbox")) { mNotationsToDraw |= NOTATION_ROUNDEDBOX; } else if (aNotation.EqualsLiteral("circle")) { mNotationsToDraw |= NOTATION_CIRCLE; } else if (aNotation.EqualsLiteral("left")) { mNotationsToDraw |= NOTATION_LEFT; } else if (aNotation.EqualsLiteral("right")) { mNotationsToDraw |= NOTATION_RIGHT; } else if (aNotation.EqualsLiteral("top")) { mNotationsToDraw |= NOTATION_TOP; } else if (aNotation.EqualsLiteral("bottom")) { mNotationsToDraw |= NOTATION_BOTTOM; } else if (aNotation.EqualsLiteral("updiagonalstrike")) { mNotationsToDraw |= NOTATION_UPDIAGONALSTRIKE; } else if (aNotation.EqualsLiteral("updiagonalarrow")) { mNotationsToDraw |= NOTATION_UPDIAGONALARROW; } else if (aNotation.EqualsLiteral("downdiagonalstrike")) { mNotationsToDraw |= NOTATION_DOWNDIAGONALSTRIKE; } else if (aNotation.EqualsLiteral("verticalstrike")) { mNotationsToDraw |= NOTATION_VERTICALSTRIKE; } else if (aNotation.EqualsLiteral("horizontalstrike")) { mNotationsToDraw |= NOTATION_HORIZONTALSTRIKE; } else if (aNotation.EqualsLiteral("madruwb")) { mNotationsToDraw |= (NOTATION_RIGHT | NOTATION_BOTTOM); } return NS_OK; }
void nsMathMLmsqrtFrame::Init(nsIContent* aContent, nsIFrame* aParent, nsIFrame* aPrevInFlow) { nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow); AllocateMathMLChar(NOTATION_RADICAL); mNotationsToDraw |= NOTATION_RADICAL; }
/* * Initialize the list of notations to draw */ void nsMathMLmencloseFrame::InitNotations() { nsAutoString value; if (mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::notation_, value)) { // parse the notation attribute nsWhitespaceTokenizer tokenizer(value); while (tokenizer.hasMoreTokens()) AddNotation(tokenizer.nextToken()); } else { // default: longdiv if (NS_FAILED(AllocateMathMLChar(NOTATION_LONGDIV))) return; mNotationsToDraw = NOTATION_LONGDIV; } }
/* * Initialize the list of notations to draw */ void nsMathMLmencloseFrame::InitNotations() { mNotationsToDraw = 0; mLongDivCharIndex = mRadicalCharIndex = -1; mMathMLChar.Clear(); nsAutoString value; if (GetAttribute(mContent, mPresentationData.mstyle, nsGkAtoms::notation_, value)) { // parse the notation attribute nsWhitespaceTokenizer tokenizer(value); while (tokenizer.hasMoreTokens()) AddNotation(tokenizer.nextToken()); } else { // default: longdiv if (NS_FAILED(AllocateMathMLChar(NOTATION_LONGDIV))) return; mNotationsToDraw = NOTATION_LONGDIV; } }