OffscreenCanvasRenderingContext2D.h (1755B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ 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 MOZILLA_DOM_OFFSCREENCANVASRENDERINGCONTEXT2D_H_ 8 #define MOZILLA_DOM_OFFSCREENCANVASRENDERINGCONTEXT2D_H_ 9 10 #include "mozilla/dom/CanvasRenderingContext2D.h" 11 12 struct JSContext; 13 class nsIGlobalObject; 14 15 namespace mozilla::dom { 16 class OffscreenCanvas; 17 18 class OffscreenCanvasRenderingContext2D final 19 : public CanvasRenderingContext2D { 20 public: 21 // nsISupports interface + CC 22 NS_DECL_ISUPPORTS_INHERITED 23 NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS_INHERITED( 24 OffscreenCanvasRenderingContext2D, CanvasRenderingContext2D) 25 26 explicit OffscreenCanvasRenderingContext2D( 27 layers::LayersBackend aCompositorBackend); 28 29 nsIGlobalObject* GetParentObject() const; 30 31 JSObject* WrapObject(JSContext* aCx, 32 JS::Handle<JSObject*> aGivenProto) override; 33 34 OffscreenCanvas* Canvas() { return mOffscreenCanvas; } 35 const OffscreenCanvas* Canvas() const { return mOffscreenCanvas; } 36 37 void Commit(ErrorResult& aRv); 38 39 NS_IMETHOD InitializeWithDrawTarget( 40 nsIDocShell* aShell, NotNull<gfx::DrawTarget*> aTarget) override; 41 42 private: 43 void AddZoneWaitingForGC() override; 44 void AddAssociatedMemory() override; 45 void RemoveAssociatedMemory() override; 46 47 ~OffscreenCanvasRenderingContext2D() override; 48 }; 49 50 size_t BindingJSObjectMallocBytes(OffscreenCanvasRenderingContext2D* aContext); 51 52 } // namespace mozilla::dom 53 54 #endif // MOZILLA_DOM_OFFSCREENCANVASRENDERINGCONTEXT2D_H_