/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsMathMLmsqrtFrame.h" #include "mozilla/gfx/2D.h" // // -- form a radical - implementation // //NOTE: // The code assumes that TeX fonts are picked. // There is no fall-back to draw the branches of the sqrt explicitly // in the case where TeX fonts are not there. In general, there are no // fall-back(s) in MathML when some (freely-downloadable) fonts are missing. // Otherwise, this will add much work and unnecessary complexity to the core // MathML engine. Assuming that authors have the free fonts is part of the // deal. We are not responsible for cases of misconfigurations out there. nsIFrame* NS_NewMathMLmsqrtFrame(nsIPresShell* aPresShell, nsStyleContext* aContext) { return new (aPresShell) nsMathMLmsqrtFrame(aContext); } NS_IMPL_FRAMEARENA_HELPERS(nsMathMLmsqrtFrame) nsMathMLmsqrtFrame::nsMathMLmsqrtFrame(nsStyleContext* aContext) : nsMathMLmencloseFrame(aContext) { } nsMathMLmsqrtFrame::~nsMathMLmsqrtFrame() { } void nsMathMLmsqrtFrame::Init(nsIContent* aContent, nsIFrame* aParent, nsIFrame* aPrevInFlow) { nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow); AllocateMathMLChar(NOTATION_RADICAL); mNotationsToDraw |= NOTATION_RADICAL; } NS_IMETHODIMP nsMathMLmsqrtFrame::InheritAutomaticData(nsIFrame* aParent) { nsMathMLContainerFrame::InheritAutomaticData(aParent); mPresentationData.flags |= NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY; return NS_OK; } nsresult nsMathMLmsqrtFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { return nsMathMLContainerFrame:: AttributeChanged(aNameSpaceID, aAttribute, aModType); }