2012-10-04 20:35:54 +00:00
|
|
|
/* -*- 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 WEBGLCONTEXTUTILS_H_
|
|
|
|
#define WEBGLCONTEXTUTILS_H_
|
|
|
|
|
|
|
|
#include "WebGLContext.h"
|
|
|
|
#include "mozilla/Assertions.h"
|
|
|
|
#include "mozilla/dom/BindingUtils.h"
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
|
2014-05-02 03:15:58 +00:00
|
|
|
bool IsGLDepthFormat(GLenum webGLFormat);
|
|
|
|
bool IsGLDepthStencilFormat(GLenum webGLFormat);
|
|
|
|
bool FormatHasAlpha(GLenum webGLFormat);
|
|
|
|
void DriverFormatsFromFormatAndType(gl::GLContext* gl, GLenum webGLFormat, GLenum webGLType,
|
|
|
|
GLenum* out_driverInternalFormat, GLenum* out_driverFormat);
|
|
|
|
GLenum DriverTypeFromType(gl::GLContext* gl, GLenum webGLType);
|
2014-01-24 03:53:53 +00:00
|
|
|
|
2012-10-04 20:35:54 +00:00
|
|
|
template <typename WebGLObjectType>
|
|
|
|
JS::Value
|
|
|
|
WebGLContext::WebGLObjectAsJSValue(JSContext *cx, const WebGLObjectType *object, ErrorResult& rv) const
|
|
|
|
{
|
|
|
|
if (!object) {
|
|
|
|
return JS::NullValue();
|
|
|
|
}
|
|
|
|
MOZ_ASSERT(this == object->Context());
|
2013-04-25 16:29:53 +00:00
|
|
|
JS::Rooted<JS::Value> v(cx);
|
|
|
|
JS::Rooted<JSObject*> wrapper(cx, GetWrapper());
|
2012-10-04 20:35:54 +00:00
|
|
|
JSAutoCompartment ac(cx, wrapper);
|
2014-04-08 22:27:19 +00:00
|
|
|
if (!dom::WrapNewBindingObject(cx, const_cast<WebGLObjectType*>(object), &v)) {
|
2012-10-04 20:35:54 +00:00
|
|
|
rv.Throw(NS_ERROR_FAILURE);
|
|
|
|
return JS::NullValue();
|
|
|
|
}
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <typename WebGLObjectType>
|
|
|
|
JSObject*
|
|
|
|
WebGLContext::WebGLObjectAsJSObject(JSContext *cx, const WebGLObjectType *object, ErrorResult& rv) const
|
|
|
|
{
|
|
|
|
JS::Value v = WebGLObjectAsJSValue(cx, object, rv);
|
|
|
|
if (v.isNull()) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
return &v.toObject();
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace mozilla
|
|
|
|
|
|
|
|
#endif // WEBGLCONTEXTUTILS_H_
|