nsMathMLmmultiscriptsFrame.h (1784B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef nsMathMLmmultiscriptsFrame_h___ 8 #define nsMathMLmmultiscriptsFrame_h___ 9 10 #include "nsMathMLContainerFrame.h" 11 12 namespace mozilla { 13 class PresShell; 14 } // namespace mozilla 15 16 // 17 // <mmultiscripts> -- attach prescripts and tensor indices to a base 18 // <msub> -- attach a subscript to a base 19 // <msubsup> -- attach a subscript-superscript pair to a base 20 // <msup> -- attach a superscript to a base 21 // 22 23 class nsMathMLmmultiscriptsFrame final : public nsMathMLContainerFrame { 24 public: 25 NS_DECL_FRAMEARENA_HELPERS(nsMathMLmmultiscriptsFrame) 26 27 friend nsIFrame* NS_NewMathMLmmultiscriptsFrame( 28 mozilla::PresShell* aPresShell, ComputedStyle* aStyle); 29 30 NS_IMETHOD 31 TransmitAutomaticData() override; 32 33 void Place(DrawTarget* aDrawTarget, const PlaceFlags& aFlags, 34 ReflowOutput& aDesiredSize) override; 35 36 static void PlaceMultiScript( 37 nsPresContext* aPresContext, DrawTarget* aDrawTarget, 38 const PlaceFlags& aFlags, ReflowOutput& aDesiredSize, 39 nsMathMLContainerFrame* aFrame, nscoord aUserSubScriptShift, 40 nscoord aUserSupScriptShift, float aFontSizeInflation); 41 42 uint8_t ScriptIncrement(nsIFrame* aFrame) override; 43 44 protected: 45 explicit nsMathMLmmultiscriptsFrame(ComputedStyle* aStyle, 46 nsPresContext* aPresContext) 47 : nsMathMLContainerFrame(aStyle, aPresContext, kClassID) {} 48 virtual ~nsMathMLmmultiscriptsFrame(); 49 }; 50 51 #endif /* nsMathMLmmultiscriptsFrame_h___ */