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 DOM_SVG_SVGVIEWELEMENT_H_ 8 #define DOM_SVG_SVGVIEWELEMENT_H_ 9 10 #include "SVGAnimatedEnumeration.h" 11 #include "SVGAnimatedPreserveAspectRatio.h" 12 #include "SVGAnimatedViewBox.h" 13 #include "SVGStringList.h" 14 #include "mozilla/dom/SVGElement.h" 15 16 nsresult NS_NewSVGViewElement( 17 nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); 18 19 namespace mozilla { 20 class SVGFragmentIdentifier; 21 class SVGOuterSVGFrame; 22 23 namespace dom { 24 class SVGViewportElement; 25 26 using SVGViewElementBase = SVGElement; 27 28 class SVGViewElement : public SVGViewElementBase { 29 protected: 30 friend class mozilla::SVGFragmentIdentifier; 31 friend class mozilla::SVGOuterSVGFrame; 32 friend class SVGSVGElement; 33 friend class SVGViewportElement; 34 explicit SVGViewElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); 35 friend nsresult(::NS_NewSVGViewElement( 36 nsIContent** aResult, 37 already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)); 38 virtual JSObject* WrapNode(JSContext* cx, 39 JS::Handle<JSObject*> aGivenProto) override; 40 41 public: 42 virtual nsresult Clone(dom::NodeInfo*, nsINode** aResult) const override; 43 44 // WebIDL ZoomAndPan()45 uint16_t ZoomAndPan() { return mEnumAttributes[ZOOMANDPAN].GetAnimValue(); } 46 void SetZoomAndPan(uint16_t aZoomAndPan, ErrorResult& rv); 47 already_AddRefed<SVGAnimatedRect> ViewBox(); 48 already_AddRefed<DOMSVGAnimatedPreserveAspectRatio> PreserveAspectRatio(); 49 50 private: 51 // SVGElement overrides 52 53 virtual EnumAttributesInfo GetEnumInfo() override; 54 55 enum { ZOOMANDPAN }; 56 SVGAnimatedEnumeration mEnumAttributes[1]; 57 static SVGEnumMapping sZoomAndPanMap[]; 58 static EnumInfo sEnumInfo[1]; 59 60 virtual SVGAnimatedViewBox* GetAnimatedViewBox() override; 61 virtual SVGAnimatedPreserveAspectRatio* GetAnimatedPreserveAspectRatio() 62 override; 63 64 SVGAnimatedViewBox mViewBox; 65 SVGAnimatedPreserveAspectRatio mPreserveAspectRatio; 66 }; 67 68 } // namespace dom 69 } // namespace mozilla 70 71 #endif // DOM_SVG_SVGVIEWELEMENT_H_ 72