Line data Source code
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_SVGVIEWPORTFRAME_H__
7 : #define __NS_SVGVIEWPORTFRAME_H__
8 :
9 : #include "mozilla/Attributes.h"
10 : #include "nsAutoPtr.h"
11 : #include "nsSVGContainerFrame.h"
12 : #include "nsISVGSVGFrame.h"
13 :
14 : class gfxContext;
15 : /**
16 : * Superclass for inner SVG frames and symbol frames.
17 : */
18 0 : class nsSVGViewportFrame
19 : : public nsSVGDisplayContainerFrame
20 : , public nsISVGSVGFrame
21 : {
22 : protected:
23 0 : nsSVGViewportFrame(nsStyleContext* aContext, nsIFrame::ClassID aID)
24 0 : : nsSVGDisplayContainerFrame(aContext, aID)
25 : {
26 0 : }
27 : public:
28 : NS_DECL_ABSTRACT_FRAME(nsSVGViewportFrame)
29 :
30 : virtual nsresult AttributeChanged(int32_t aNameSpaceID,
31 : nsIAtom* aAttribute,
32 : int32_t aModType) override;
33 :
34 : // nsSVGDisplayableFrame interface:
35 : virtual void PaintSVG(gfxContext& aContext,
36 : const gfxMatrix& aTransform,
37 : imgDrawingParams& aImgParams,
38 : const nsIntRect* aDirtyRect = nullptr) override;
39 : virtual void ReflowSVG() override;
40 : virtual void NotifySVGChanged(uint32_t aFlags) override;
41 : SVGBBox GetBBoxContribution(const Matrix &aToBBoxUserspace,
42 : uint32_t aFlags) override;
43 : virtual nsIFrame* GetFrameForPoint(const gfxPoint& aPoint) override;
44 :
45 : // nsSVGContainerFrame methods:
46 : virtual gfxMatrix GetCanvasTM() override;
47 :
48 : virtual bool HasChildrenOnlyTransform(Matrix *aTransform) const override;
49 :
50 : // nsISVGSVGFrame interface:
51 : virtual void NotifyViewportOrTransformChanged(uint32_t aFlags) override;
52 :
53 : protected:
54 :
55 : nsAutoPtr<gfxMatrix> mCanvasTM;
56 : };
57 :
58 : #endif // __NS_SVGVIEWPORTFRAME_H__
59 :
|