/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef WEBGLEXTENSIONS_H_ #define WEBGLEXTENSIONS_H_ #include "WebGLContext.h" namespace mozilla { class WebGLExtensionBase : public nsISupports , public WebGLContextBoundObject , public nsWrapperCache { public: WebGLExtensionBase(WebGLContext*); virtual ~WebGLExtensionBase(); WebGLContext *GetParentObject() const { return Context(); } NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(WebGLExtensionBase) }; #define DECL_WEBGL_EXTENSION_GOOP \ JSObject* WrapObject(JSContext *cx, JSObject *scope, bool *triedToWrap); #define IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionType) \ JSObject* \ WebGLExtensionType::WrapObject(JSContext *cx, JSObject *scope, bool *triedToWrap) { \ return dom::WebGLExtensionType##Binding::Wrap(cx, scope, this, triedToWrap); \ } class WebGLExtensionCompressedTextureATC : public WebGLExtensionBase { public: WebGLExtensionCompressedTextureATC(WebGLContext*); virtual ~WebGLExtensionCompressedTextureATC(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionCompressedTexturePVRTC : public WebGLExtensionBase { public: WebGLExtensionCompressedTexturePVRTC(WebGLContext*); virtual ~WebGLExtensionCompressedTexturePVRTC(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionCompressedTextureS3TC : public WebGLExtensionBase { public: WebGLExtensionCompressedTextureS3TC(WebGLContext*); virtual ~WebGLExtensionCompressedTextureS3TC(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionDepthTexture : public WebGLExtensionBase { public: WebGLExtensionDepthTexture(WebGLContext*); virtual ~WebGLExtensionDepthTexture(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionLoseContext : public WebGLExtensionBase { public: WebGLExtensionLoseContext(WebGLContext*); virtual ~WebGLExtensionLoseContext(); void LoseContext(); void RestoreContext(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionStandardDerivatives : public WebGLExtensionBase { public: WebGLExtensionStandardDerivatives(WebGLContext*); virtual ~WebGLExtensionStandardDerivatives(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionTextureFilterAnisotropic : public WebGLExtensionBase { public: WebGLExtensionTextureFilterAnisotropic(WebGLContext*); virtual ~WebGLExtensionTextureFilterAnisotropic(); DECL_WEBGL_EXTENSION_GOOP }; class WebGLExtensionTextureFloat : public WebGLExtensionBase { public: WebGLExtensionTextureFloat(WebGLContext*); virtual ~WebGLExtensionTextureFloat(); DECL_WEBGL_EXTENSION_GOOP }; } // namespace mozilla #endif // WEBGLEXTENSIONS_H_