summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Landwerlin <llandwerlin@gmail.com>2014-02-23 22:56:02 +0000
committerNeil Roberts <neil@linux.intel.com>2014-03-21 14:28:27 +0000
commit12ece8e4a1976aed565ba5707a56c11486d0215a (patch)
tree41a8c0ee7342788f095c83761b71c981b73b6fee
parentb7017ed5b0eefdeccd8ebbb03d0e7ad307bcb490 (diff)
downloadcogl-12ece8e4a1976aed565ba5707a56c11486d0215a.tar.gz
examples: add gjs example
Reviewed-by: Neil Roberts <neil@linux.intel.com>
-rw-r--r--examples/Makefile.am1
-rw-r--r--examples/cogl-gjs.js46
2 files changed, 47 insertions, 0 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 014cc5b2..b7cccec4 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -126,6 +126,7 @@ noinst_PROGRAMS = $(programs)
endif
EXTRA_DIST = \
+ cogl-gjs.js \
crate.jpg \
emscripten-example-js.h \
emscripten-example-js-library.js \
diff --git a/examples/cogl-gjs.js b/examples/cogl-gjs.js
new file mode 100644
index 00000000..6652e166
--- /dev/null
+++ b/examples/cogl-gjs.js
@@ -0,0 +1,46 @@
+const Cogl = imports.gi.Cogl;
+const GLib = imports.gi.GLib;
+const Lang = imports.lang;
+
+let renderer = new Cogl.Renderer();
+let display = new Cogl.Display(renderer, new Cogl.OnscreenTemplate(new Cogl.SwapChain()));
+let ctx = new Cogl.Context(display);
+
+// Should be able to replace the 3 previous lines with :
+// let ctx = new Cogl.Context(null);
+// But crashing for some reason.
+
+// GLib mainloop integration
+let gsource = Cogl.glib_renderer_source_new(renderer, 0);
+let loop = GLib.MainLoop.new(null, false);
+gsource.attach(loop.get_context());
+
+// Onscreen creation
+let onscreen = new Cogl.Onscreen(ctx, 800, 600);
+onscreen.show();
+
+// Drawing pipeline
+let crate = Cogl.Texture2D.new_from_file(ctx, 'crate.jpg');
+let pipeline = new Cogl.Pipeline(ctx);
+pipeline.set_layer_texture(0, crate);
+let clearColor = new Cogl.Color();
+clearColor.init_from_4f(0, 0, 0, 1.0);
+
+// Redraw callback
+let closure = onscreen.add_dirty_callback(Lang.bind(this, function() {
+ onscreen.clear(Cogl.BufferBit.COLOR, clearColor);
+ onscreen.draw_rectangle(pipeline, -1, -1, 1, 1);
+ onscreen.swap_buffers();
+ return true;
+}), null);
+
+// Quit after 5s
+let tm = GLib.timeout_source_new(5000);
+tm.set_callback(Lang.bind(this, function() {
+ loop.quit();
+ return false;
+}), null);
+tm.attach(loop.get_context());
+
+// Run!
+loop.run();