tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

WebGLExtensions.h (8658B)


      1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #ifndef WEBGL_EXTENSIONS_H_
      7 #define WEBGL_EXTENSIONS_H_
      8 
      9 #include "WebGLObjectModel.h"
     10 #include "WebGLTypes.h"
     11 #include "nsString.h"
     12 #include "nsTArray.h"
     13 #include "nsWrapperCache.h"
     14 
     15 namespace mozilla {
     16 class ErrorResult;
     17 
     18 namespace dom {
     19 template <typename>
     20 struct Nullable;
     21 template <typename>
     22 class Sequence;
     23 }  // namespace dom
     24 
     25 namespace webgl {
     26 struct FormatRenderableState;
     27 class FormatUsageAuthority;
     28 }  // namespace webgl
     29 
     30 class WebGLContext;
     31 class WebGLQuery;
     32 class WebGLShader;
     33 class WebGLTexture;
     34 class WebGLVertexArray;
     35 
     36 class WebGLExtensionBase {
     37 protected:
     38  WebGLContext* const mContext;
     39 
     40 private:
     41  bool mIsExplicit = false;
     42 
     43 protected:
     44  explicit WebGLExtensionBase(WebGLContext* context) : mContext(context) {}
     45 
     46 public:
     47  virtual ~WebGLExtensionBase() = default;
     48 
     49 private:
     50  virtual void OnSetExplicit() {}
     51 
     52 public:
     53  void SetExplicit() {
     54    mIsExplicit = true;
     55    OnSetExplicit();
     56  }
     57 
     58  bool IsExplicit() const { return mIsExplicit; }
     59 };
     60 
     61 ////
     62 
     63 class WebGLExtensionCompressedTextureASTC : public WebGLExtensionBase {
     64 public:
     65  explicit WebGLExtensionCompressedTextureASTC(WebGLContext* webgl);
     66  static bool IsSupported(const WebGLContext* webgl);
     67 };
     68 
     69 class WebGLExtensionCompressedTextureBPTC final : public WebGLExtensionBase {
     70 public:
     71  explicit WebGLExtensionCompressedTextureBPTC(WebGLContext* webgl);
     72  static bool IsSupported(const WebGLContext* webgl);
     73 };
     74 
     75 class WebGLExtensionCompressedTextureES3 : public WebGLExtensionBase {
     76 public:
     77  explicit WebGLExtensionCompressedTextureES3(WebGLContext*);
     78 };
     79 
     80 class WebGLExtensionCompressedTextureETC1 : public WebGLExtensionBase {
     81 public:
     82  explicit WebGLExtensionCompressedTextureETC1(WebGLContext*);
     83 };
     84 
     85 class WebGLExtensionCompressedTexturePVRTC : public WebGLExtensionBase {
     86 public:
     87  explicit WebGLExtensionCompressedTexturePVRTC(WebGLContext*);
     88 };
     89 
     90 class WebGLExtensionCompressedTextureRGTC final : public WebGLExtensionBase {
     91 public:
     92  explicit WebGLExtensionCompressedTextureRGTC(WebGLContext* webgl);
     93  static bool IsSupported(const WebGLContext* webgl);
     94 };
     95 
     96 class WebGLExtensionCompressedTextureS3TC : public WebGLExtensionBase {
     97 public:
     98  explicit WebGLExtensionCompressedTextureS3TC(WebGLContext*);
     99  static bool IsSupported(const WebGLContext*);
    100 };
    101 
    102 class WebGLExtensionCompressedTextureS3TC_SRGB : public WebGLExtensionBase {
    103 public:
    104  explicit WebGLExtensionCompressedTextureS3TC_SRGB(WebGLContext*);
    105  static bool IsSupported(const WebGLContext*);
    106 };
    107 
    108 class WebGLExtensionDebugRendererInfo : public WebGLExtensionBase {
    109 public:
    110  explicit WebGLExtensionDebugRendererInfo(WebGLContext* webgl)
    111      : WebGLExtensionBase(webgl) {}
    112 };
    113 
    114 class WebGLExtensionDebugShaders : public WebGLExtensionBase {
    115 public:
    116  explicit WebGLExtensionDebugShaders(WebGLContext* webgl)
    117      : WebGLExtensionBase(webgl) {}
    118 };
    119 
    120 class WebGLExtensionDepthClamp : public WebGLExtensionBase {
    121 public:
    122  explicit WebGLExtensionDepthClamp(WebGLContext* webgl);
    123 };
    124 
    125 class WebGLExtensionDepthTexture : public WebGLExtensionBase {
    126 public:
    127  explicit WebGLExtensionDepthTexture(WebGLContext*);
    128  static bool IsSupported(const WebGLContext*);
    129 };
    130 
    131 class WebGLExtensionDrawBuffersIndexed : public WebGLExtensionBase {
    132 public:
    133  explicit WebGLExtensionDrawBuffersIndexed(WebGLContext* webgl)
    134      : WebGLExtensionBase(webgl) {}
    135 };
    136 
    137 class WebGLExtensionElementIndexUint : public WebGLExtensionBase {
    138 public:
    139  explicit WebGLExtensionElementIndexUint(WebGLContext* webgl)
    140      : WebGLExtensionBase(webgl) {}
    141 };
    142 
    143 class WebGLExtensionExplicitPresent : public WebGLExtensionBase {
    144 public:
    145  explicit WebGLExtensionExplicitPresent(WebGLContext*);
    146  static bool IsSupported(const WebGLContext*);
    147 };
    148 
    149 class WebGLExtensionEXTColorBufferFloat : public WebGLExtensionBase {
    150 public:
    151  explicit WebGLExtensionEXTColorBufferFloat(WebGLContext*);
    152  static bool IsSupported(const WebGLContext*);
    153 };
    154 
    155 class WebGLExtensionFBORenderMipmap : public WebGLExtensionBase {
    156 public:
    157  explicit WebGLExtensionFBORenderMipmap(WebGLContext* webgl);
    158  static bool IsSupported(const WebGLContext*);
    159 };
    160 
    161 class WebGLExtensionFloatBlend : public WebGLExtensionBase {
    162 public:
    163  explicit WebGLExtensionFloatBlend(WebGLContext* webgl);
    164  static bool IsSupported(const WebGLContext*);
    165 };
    166 
    167 class WebGLExtensionFragDepth : public WebGLExtensionBase {
    168 public:
    169  explicit WebGLExtensionFragDepth(WebGLContext*);
    170  static bool IsSupported(const WebGLContext* context);
    171 };
    172 
    173 class WebGLExtensionLoseContext : public WebGLExtensionBase {
    174 public:
    175  explicit WebGLExtensionLoseContext(WebGLContext* webgl)
    176      : WebGLExtensionBase(webgl) {}
    177 };
    178 
    179 class WebGLExtensionMultiview : public WebGLExtensionBase {
    180 public:
    181  explicit WebGLExtensionMultiview(WebGLContext*);
    182  static bool IsSupported(const WebGLContext*);
    183 };
    184 
    185 class WebGLExtensionProvokingVertex : public WebGLExtensionBase {
    186 public:
    187  explicit WebGLExtensionProvokingVertex(WebGLContext* webgl)
    188      : WebGLExtensionBase(webgl) {}
    189 };
    190 
    191 class WebGLExtensionSRGB : public WebGLExtensionBase {
    192 public:
    193  explicit WebGLExtensionSRGB(WebGLContext*);
    194  static bool IsSupported(const WebGLContext* context);
    195 };
    196 
    197 class WebGLExtensionStandardDerivatives : public WebGLExtensionBase {
    198 public:
    199  explicit WebGLExtensionStandardDerivatives(WebGLContext* webgl)
    200      : WebGLExtensionBase(webgl) {}
    201 };
    202 
    203 class WebGLExtensionShaderTextureLod : public WebGLExtensionBase {
    204 public:
    205  explicit WebGLExtensionShaderTextureLod(WebGLContext*);
    206  static bool IsSupported(const WebGLContext* context);
    207 };
    208 
    209 class WebGLExtensionTextureFilterAnisotropic : public WebGLExtensionBase {
    210 public:
    211  explicit WebGLExtensionTextureFilterAnisotropic(WebGLContext* webgl)
    212      : WebGLExtensionBase(webgl) {}
    213 };
    214 
    215 class WebGLExtensionTextureFloat : public WebGLExtensionBase {
    216 public:
    217  static void InitWebGLFormats(webgl::FormatUsageAuthority* authority);
    218 
    219  explicit WebGLExtensionTextureFloat(WebGLContext*);
    220  static bool IsSupported(const WebGLContext*);
    221 };
    222 
    223 class WebGLExtensionTextureFloatLinear : public WebGLExtensionBase {
    224 public:
    225  explicit WebGLExtensionTextureFloatLinear(WebGLContext*);
    226 };
    227 
    228 class WebGLExtensionTextureHalfFloat : public WebGLExtensionBase {
    229 public:
    230  static void InitWebGLFormats(webgl::FormatUsageAuthority* authority);
    231 
    232  explicit WebGLExtensionTextureHalfFloat(WebGLContext*);
    233  static bool IsSupported(const WebGLContext*);
    234 };
    235 
    236 class WebGLExtensionTextureHalfFloatLinear : public WebGLExtensionBase {
    237 public:
    238  explicit WebGLExtensionTextureHalfFloatLinear(WebGLContext*);
    239 };
    240 
    241 class WebGLExtensionTextureNorm16 : public WebGLExtensionBase {
    242 public:
    243  static bool IsSupported(const WebGLContext*);
    244  explicit WebGLExtensionTextureNorm16(WebGLContext*);
    245 };
    246 
    247 class WebGLExtensionColorBufferFloat : public WebGLExtensionBase {
    248 public:
    249  explicit WebGLExtensionColorBufferFloat(WebGLContext*);
    250  static bool IsSupported(const WebGLContext*);
    251 
    252  void SetRenderable(const webgl::FormatRenderableState&);
    253  void OnSetExplicit() override;
    254 };
    255 
    256 class WebGLExtensionColorBufferHalfFloat : public WebGLExtensionBase {
    257 public:
    258  explicit WebGLExtensionColorBufferHalfFloat(WebGLContext*);
    259  static bool IsSupported(const WebGLContext*);
    260 
    261  void SetRenderable(const webgl::FormatRenderableState&);
    262  void OnSetExplicit() override;
    263 };
    264 
    265 class WebGLExtensionDrawBuffers : public WebGLExtensionBase {
    266 public:
    267  explicit WebGLExtensionDrawBuffers(WebGLContext*);
    268  static bool IsSupported(const WebGLContext*);
    269 };
    270 
    271 class WebGLExtensionVertexArray : public WebGLExtensionBase {
    272 public:
    273  explicit WebGLExtensionVertexArray(WebGLContext* webgl)
    274      : WebGLExtensionBase(webgl) {}
    275 };
    276 
    277 class WebGLExtensionInstancedArrays : public WebGLExtensionBase {
    278 public:
    279  explicit WebGLExtensionInstancedArrays(WebGLContext* webgl);
    280  static bool IsSupported(const WebGLContext* webgl);
    281 };
    282 
    283 class WebGLExtensionBlendMinMax : public WebGLExtensionBase {
    284 public:
    285  explicit WebGLExtensionBlendMinMax(WebGLContext* webgl);
    286  static bool IsSupported(const WebGLContext*);
    287 };
    288 
    289 class WebGLExtensionDisjointTimerQuery : public WebGLExtensionBase {
    290 public:
    291  explicit WebGLExtensionDisjointTimerQuery(WebGLContext* webgl);
    292  static bool IsSupported(const WebGLContext*);
    293 };
    294 
    295 class WebGLExtensionMOZDebug final : public WebGLExtensionBase {
    296 public:
    297  explicit WebGLExtensionMOZDebug(WebGLContext* webgl)
    298      : WebGLExtensionBase(webgl) {}
    299 };
    300 
    301 }  // namespace mozilla
    302 
    303 #endif  // WEBGL_EXTENSIONS_H_