summaryrefslogtreecommitdiffstats
path: root/chromium/mojo/apps/js/bindings/gl/context.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/mojo/apps/js/bindings/gl/context.h')
-rw-r--r--chromium/mojo/apps/js/bindings/gl/context.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/chromium/mojo/apps/js/bindings/gl/context.h b/chromium/mojo/apps/js/bindings/gl/context.h
new file mode 100644
index 00000000000..905f0fd00de
--- /dev/null
+++ b/chromium/mojo/apps/js/bindings/gl/context.h
@@ -0,0 +1,77 @@
+// 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 "base/memory/weak_ptr.h"
+#include "gin/handle.h"
+#include "gin/public/wrapper_info.h"
+#include "gin/runner.h"
+#include "gin/wrappable.h"
+#include "mojo/bindings/js/handle.h"
+#include "mojo/public/c/gles2/gles2.h"
+#include "v8/include/v8.h"
+
+namespace gin {
+class Arguments;
+class ArrayBufferView;
+}
+
+namespace mojo {
+namespace js {
+namespace gl {
+
+// Context implements WebGLRenderingContext.
+class Context : public gin::Wrappable<Context> {
+ public:
+ static gin::WrapperInfo kWrapperInfo;
+
+ // TODO(piman): draw animation frame callback.
+ static gin::Handle<Context> Create(
+ v8::Isolate* isolate,
+ mojo::Handle handle,
+ v8::Handle<v8::Function> context_lost_callback);
+
+ static void BufferData(GLenum target, const gin::ArrayBufferView& buffer,
+ GLenum usage);
+ static void CompileShader(const gin::Arguments& args, GLuint shader);
+ static GLuint CreateBuffer();
+ static void DrawElements(GLenum mode, GLsizei count, GLenum type,
+ uint64_t indices);
+ static GLint GetAttribLocation(GLuint program, const std::string& name);
+ static std::string GetProgramInfoLog(GLuint program);
+ static std::string GetShaderInfoLog(GLuint shader);
+ static GLint GetUniformLocation(GLuint program, const std::string& name);
+ static void ShaderSource(GLuint shader, const std::string& source);
+ static void UniformMatrix4fv(GLint location, GLboolean transpose,
+ const gin::ArrayBufferView& buffer);
+ static void VertexAttribPointer(GLuint index, GLint size, GLenum type,
+ GLboolean normalized, GLsizei stride,
+ uint64_t offset);
+
+ private:
+ virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
+ v8::Isolate* isolate) OVERRIDE;
+
+ explicit Context(v8::Isolate* isolate,
+ mojo::Handle handle,
+ v8::Handle<v8::Function> context_lost_callback);
+ virtual ~Context();
+
+ void ContextLost();
+ static void ContextLostThunk(void* closure);
+
+ base::WeakPtr<gin::Runner> runner_;
+ v8::Persistent<v8::Function> context_lost_callback_;
+ MojoGLES2Context context_;
+};
+
+} // namespace gl
+} // namespace js
+} // namespace mojo
+
+#endif // MOJO_APPS_JS_BINDINGS_GL_CONTEXT_H_