diff options
author | Moonchild <mcwerewolf@gmail.com> | 2018-08-01 20:45:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-01 20:45:58 +0200 |
commit | f8761cf8c5233f75123a7245a1e6a0aa12e22160 (patch) | |
tree | c85031f115b088d6b60af6f7ad34a9ca9a64a134 /dom/canvas/WebGLExtensionDebugGet.cpp | |
parent | e79f2ee69455df701e559c10f8a9408fe8870281 (diff) | |
parent | d84ee90be10b67358a2a2340041337aec0cf04d8 (diff) | |
download | UXP-f8761cf8c5233f75123a7245a1e6a0aa12e22160.tar UXP-f8761cf8c5233f75123a7245a1e6a0aa12e22160.tar.gz UXP-f8761cf8c5233f75123a7245a1e6a0aa12e22160.tar.lz UXP-f8761cf8c5233f75123a7245a1e6a0aa12e22160.tar.xz UXP-f8761cf8c5233f75123a7245a1e6a0aa12e22160.zip |
Merge pull request #688 from janekptacijarabaci/about-support_WebGL-information_expand_1
Expand about:support WebGL information
Diffstat (limited to 'dom/canvas/WebGLExtensionDebugGet.cpp')
-rw-r--r-- | dom/canvas/WebGLExtensionDebugGet.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/dom/canvas/WebGLExtensionDebugGet.cpp b/dom/canvas/WebGLExtensionDebugGet.cpp new file mode 100644 index 000000000..39bb3c57a --- /dev/null +++ b/dom/canvas/WebGLExtensionDebugGet.cpp @@ -0,0 +1,79 @@ +/* -*- 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/. */ + +#include "WebGLExtensions.h" + +#include "mozilla/dom/WebGLRenderingContextBinding.h" +#include "WebGLContext.h" +#include "WebGLContextUtils.h" + +namespace mozilla { + +WebGLExtensionDebugGet::WebGLExtensionDebugGet(WebGLContext* webgl) + : WebGLExtensionBase(webgl) +{ +} + +WebGLExtensionDebugGet::~WebGLExtensionDebugGet() +{ +} + +void +WebGLExtensionDebugGet::GetParameter(JSContext* cx, GLenum pname, + JS::MutableHandle<JS::Value> retval, + ErrorResult& er) const +{ + const auto& gl = mContext->gl; + gl->MakeCurrent(); + + switch (pname) { + case LOCAL_GL_EXTENSIONS: + { + nsString ret; + if (!gl->IsCoreProfile()) { + const auto rawExts = (const char*)gl->fGetString(LOCAL_GL_EXTENSIONS); + ret = NS_ConvertUTF8toUTF16(rawExts); + } else { + const auto& numExts = gl->GetIntAs<GLuint>(LOCAL_GL_NUM_EXTENSIONS); + for (GLuint i = 0; i < numExts; i++) { + const auto rawExt = (const char*)gl->fGetStringi(LOCAL_GL_EXTENSIONS, + i); + if (i > 0) { + ret.AppendLiteral(" "); + } + ret.Append(NS_ConvertUTF8toUTF16(rawExt)); + } + } + retval.set(StringValue(cx, ret, er)); + return; + } + + case LOCAL_GL_RENDERER: + case LOCAL_GL_VENDOR: + case LOCAL_GL_VERSION: + { + const auto raw = (const char*)gl->fGetString(pname); + retval.set(StringValue(cx, NS_ConvertUTF8toUTF16(raw), er)); + return; + } + + case 0x10000: // "WSI_INFO" + { + nsCString info; + gl->GetWSIInfo(&info); + retval.set(StringValue(cx, NS_ConvertUTF8toUTF16(info), er)); + return; + } + + default: + mContext->ErrorInvalidEnumArg("MOZ_debug_get.getParameter", "pname", pname); + retval.set(JS::NullValue()); + return; + } +} + +IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionDebugGet, MOZ_debug_get) + +} // namespace mozilla |