1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 
6 #ifndef __NS_SVGGENERICCONTAINERFRAME_H__
7 #define __NS_SVGGENERICCONTAINERFRAME_H__
8 
9 #include "mozilla/Attributes.h"
10 #include "gfxMatrix.h"
11 #include "nsFrame.h"
12 #include "nsLiteralString.h"
13 #include "nsQueryFrame.h"
14 #include "nsSVGContainerFrame.h"
15 
16 class nsIAtom;
17 class nsIFrame;
18 class nsIPresShell;
19 class nsStyleContext;
20 
21 class nsSVGGenericContainerFrame : public nsSVGDisplayContainerFrame
22 {
23   friend nsIFrame*
24   NS_NewSVGGenericContainerFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
25 
26 protected:
nsSVGGenericContainerFrame(nsStyleContext * aContext)27   explicit nsSVGGenericContainerFrame(nsStyleContext* aContext)
28     : nsSVGDisplayContainerFrame(aContext) {}
29 
30 public:
31   NS_DECL_FRAMEARENA_HELPERS
32 
33   // nsIFrame:
34   virtual nsresult  AttributeChanged(int32_t         aNameSpaceID,
35                                      nsIAtom*        aAttribute,
36                                      int32_t         aModType) override;
37   /**
38    * Get the "type" of the frame
39    *
40    * @see nsGkAtoms::svgGenericContainerFrame
41    */
42   virtual nsIAtom* GetType() const override;
43 
44 #ifdef DEBUG_FRAME_DUMP
GetFrameName(nsAString & aResult)45   virtual nsresult GetFrameName(nsAString& aResult) const override
46   {
47     return MakeFrameName(NS_LITERAL_STRING("SVGGenericContainer"), aResult);
48   }
49 #endif
50 
51   // nsSVGContainerFrame methods:
52   virtual gfxMatrix GetCanvasTM() override;
53 };
54 
55 #endif // __NS_SVGGENERICCONTAINERFRAME_H__
56