gecko/content/canvas/src/WebGLExtensions.h

125 lines
2.9 KiB
C
Raw Normal View History

/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2012-05-21 04:12:37 -07:00
/* 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_