// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MOJO_APPS_JS_BINDINGS_GL_CONTEXT_H_
#define MOJO_APPS_JS_BINDINGS_GL_CONTEXT_H_
#include <GLES2/gl2.h>
#include "gin/handle.h"
#include "gin/public/wrapper_info.h"
#include "gin/wrappable.h"
#include "mojo/apps/js/bindings/gl/opaque.h"
#include "v8/include/v8.h"
namespace gin {
class Arguments;
}
namespace mojo {
namespace js {
namespace gl {
typedef Opaque Shader;
// Context implements WebGLRenderingContext.
class Context : public gin::Wrappable<Context> {
public:
static gin::WrapperInfo kWrapperInfo;
static gin::Handle<Context> Create(v8::Isolate* isolate, uint64_t encoded,
int width, int height);
static v8::Handle<v8::ObjectTemplate> GetObjectTemplate(v8::Isolate* isolate);
static gin::Handle<Shader> CreateShader(const gin::Arguments& arguments,
GLenum type);
static void ShaderSource(gin::Handle<Shader> shader,
const std::string& source);
static void CompileShader(const gin::Arguments& arguments,
gin::Handle<Shader> shader);
private:
Context(uint64_t encoded, int width, int height);
uint64_t encoded_;
};
} // namespace gl
} // namespace js
} // namespace mojo
#endif // MOJO_APPS_JS_BINDINGS_GL_CONTEXT_H_