diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /dom/canvas/WebGLExtensions.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | uxp-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz |
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/canvas/WebGLExtensions.h')
-rw-r--r-- | dom/canvas/WebGLExtensions.h | 390 |
1 files changed, 390 insertions, 0 deletions
diff --git a/dom/canvas/WebGLExtensions.h b/dom/canvas/WebGLExtensions.h new file mode 100644 index 0000000000..741f6997f8 --- /dev/null +++ b/dom/canvas/WebGLExtensions.h @@ -0,0 +1,390 @@ +/* -*- 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 WEBGL_EXTENSIONS_H_ +#define WEBGL_EXTENSIONS_H_ + +#include "mozilla/AlreadyAddRefed.h" +#include "nsWrapperCache.h" +#include "WebGLObjectModel.h" +#include "WebGLTypes.h" + +namespace mozilla { + +namespace dom { +template<typename T> +class Sequence; +} // namespace dom + +namespace webgl { +class FormatUsageAuthority; +} // namespace webgl + +class WebGLContext; +class WebGLShader; +class WebGLQuery; +class WebGLVertexArray; + +class WebGLExtensionBase + : public nsWrapperCache + , public WebGLContextBoundObject +{ +public: + explicit WebGLExtensionBase(WebGLContext* webgl); + + WebGLContext* GetParentObject() const { + return mContext; + } + + void MarkLost(); + + NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WebGLExtensionBase) + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WebGLExtensionBase) + +protected: + virtual ~WebGLExtensionBase(); + + virtual void OnMarkLost() { } + + bool mIsLost; +}; + +#define DECL_WEBGL_EXTENSION_GOOP \ + virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> givenProto) override; + +#define IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionType, WebGLBindingType)\ + JSObject* \ + WebGLExtensionType::WrapObject(JSContext* cx, JS::Handle<JSObject*> givenProto) { \ + return dom::WebGLBindingType##Binding::Wrap(cx, this, givenProto); \ + } + +class WebGLExtensionCompressedTextureATC + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionCompressedTextureATC(WebGLContext*); + virtual ~WebGLExtensionCompressedTextureATC(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionCompressedTextureES3 + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionCompressedTextureES3(WebGLContext*); + virtual ~WebGLExtensionCompressedTextureES3(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionCompressedTextureETC1 + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionCompressedTextureETC1(WebGLContext*); + virtual ~WebGLExtensionCompressedTextureETC1(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionCompressedTexturePVRTC + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionCompressedTexturePVRTC(WebGLContext*); + virtual ~WebGLExtensionCompressedTexturePVRTC(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionCompressedTextureS3TC + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionCompressedTextureS3TC(WebGLContext*); + virtual ~WebGLExtensionCompressedTextureS3TC(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionDebugRendererInfo + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionDebugRendererInfo(WebGLContext*); + virtual ~WebGLExtensionDebugRendererInfo(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionDebugShaders + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionDebugShaders(WebGLContext*); + virtual ~WebGLExtensionDebugShaders(); + + void GetTranslatedShaderSource(const WebGLShader& shader, nsAString& retval) const; + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionDepthTexture + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionDepthTexture(WebGLContext*); + virtual ~WebGLExtensionDepthTexture(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionElementIndexUint + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionElementIndexUint(WebGLContext*); + virtual ~WebGLExtensionElementIndexUint(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionEXTColorBufferFloat + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionEXTColorBufferFloat(WebGLContext*); + virtual ~WebGLExtensionEXTColorBufferFloat() { } + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionFragDepth + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionFragDepth(WebGLContext*); + virtual ~WebGLExtensionFragDepth(); + + static bool IsSupported(const WebGLContext* context); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionLoseContext + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionLoseContext(WebGLContext*); + virtual ~WebGLExtensionLoseContext(); + + void LoseContext(); + void RestoreContext(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionSRGB + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionSRGB(WebGLContext*); + virtual ~WebGLExtensionSRGB(); + + static bool IsSupported(const WebGLContext* context); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionStandardDerivatives + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionStandardDerivatives(WebGLContext*); + virtual ~WebGLExtensionStandardDerivatives(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionShaderTextureLod + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionShaderTextureLod(WebGLContext*); + virtual ~WebGLExtensionShaderTextureLod(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionTextureFilterAnisotropic + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionTextureFilterAnisotropic(WebGLContext*); + virtual ~WebGLExtensionTextureFilterAnisotropic(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionTextureFloat + : public WebGLExtensionBase +{ +public: + static void InitWebGLFormats(webgl::FormatUsageAuthority* authority); + + explicit WebGLExtensionTextureFloat(WebGLContext*); + virtual ~WebGLExtensionTextureFloat(); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionTextureFloatLinear + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionTextureFloatLinear(WebGLContext*); + virtual ~WebGLExtensionTextureFloatLinear(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionTextureHalfFloat + : public WebGLExtensionBase +{ +public: + static void InitWebGLFormats(webgl::FormatUsageAuthority* authority); + + explicit WebGLExtensionTextureHalfFloat(WebGLContext*); + virtual ~WebGLExtensionTextureHalfFloat(); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionTextureHalfFloatLinear + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionTextureHalfFloatLinear(WebGLContext*); + virtual ~WebGLExtensionTextureHalfFloatLinear(); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionColorBufferFloat + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionColorBufferFloat(WebGLContext*); + virtual ~WebGLExtensionColorBufferFloat(); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionColorBufferHalfFloat + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionColorBufferHalfFloat(WebGLContext*); + virtual ~WebGLExtensionColorBufferHalfFloat(); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionDrawBuffers + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionDrawBuffers(WebGLContext*); + virtual ~WebGLExtensionDrawBuffers(); + + void DrawBuffersWEBGL(const dom::Sequence<GLenum>& buffers); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionVertexArray + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionVertexArray(WebGLContext* webgl); + virtual ~WebGLExtensionVertexArray(); + + already_AddRefed<WebGLVertexArray> CreateVertexArrayOES(); + void DeleteVertexArrayOES(WebGLVertexArray* array); + bool IsVertexArrayOES(const WebGLVertexArray* array); + void BindVertexArrayOES(WebGLVertexArray* array); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionInstancedArrays + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionInstancedArrays(WebGLContext* webgl); + virtual ~WebGLExtensionInstancedArrays(); + + void DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, + GLsizei primcount); + void DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, + WebGLintptr offset, GLsizei primcount); + void VertexAttribDivisorANGLE(GLuint index, GLuint divisor); + + static bool IsSupported(const WebGLContext* webgl); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionBlendMinMax + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionBlendMinMax(WebGLContext* webgl); + virtual ~WebGLExtensionBlendMinMax(); + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +class WebGLExtensionDisjointTimerQuery + : public WebGLExtensionBase +{ +public: + explicit WebGLExtensionDisjointTimerQuery(WebGLContext* webgl); + virtual ~WebGLExtensionDisjointTimerQuery(); + + already_AddRefed<WebGLQuery> CreateQueryEXT() const; + void DeleteQueryEXT(WebGLQuery* query) const; + bool IsQueryEXT(const WebGLQuery* query) const; + void BeginQueryEXT(GLenum target, WebGLQuery& query) const; + void EndQueryEXT(GLenum target) const; + void QueryCounterEXT(WebGLQuery& query, GLenum target) const; + void GetQueryEXT(JSContext* cx, GLenum target, GLenum pname, + JS::MutableHandleValue retval) const; + void GetQueryObjectEXT(JSContext* cx, const WebGLQuery& query, + GLenum pname, JS::MutableHandleValue retval) const; + + static bool IsSupported(const WebGLContext*); + + DECL_WEBGL_EXTENSION_GOOP +}; + +} // namespace mozilla + +#endif // WEBGL_EXTENSIONS_H_ |