aboutsummaryrefslogtreecommitdiffstats
path: root/pugl_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'pugl_test.c')
-rw-r--r--pugl_test.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/pugl_test.c b/pugl_test.c
new file mode 100644
index 0000000..3122a89
--- /dev/null
+++ b/pugl_test.c
@@ -0,0 +1,88 @@
+/*
+ Copyright 2012 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+ @file pugl_test.c A simple Pugl test that creates a top-level window.
+*/
+
+#include <stdio.h>
+
+#include "GL/gl.h"
+#include "pugl/pugl.h"
+
+static int quit = 0;
+static float xAngle = 0.0f;
+static float yAngle = 0.0f;
+
+#define KEY_ESCAPE 27
+
+static void
+onDisplay(PuglWindow* win)
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+
+ glRotatef(xAngle, 1.0f, 0.0f, 0.0f);
+ glRotatef(xAngle, 0.0f, 1.0f, 0.0f);
+
+ glBegin(GL_TRIANGLES);
+ glColor3f(1.0f, 0.0f, 0.0f);
+ glVertex3f(0.0f, 1.0f, 0.0f);
+ glColor3f(0.0f, 1.0f, 0.0f);
+ glVertex3f(-1.0f, -1.0f, 0.0f);
+ glColor3f(0.0f, 0.0f, 1.0f);
+ glVertex3f(1.0f, -1.0f, 0.0f);
+ glEnd();
+}
+
+static void
+onKeyboard(PuglWindow* win, bool press, uint32_t key)
+{
+ if (key == 'q' || key == KEY_ESCAPE) {
+ quit = 1;
+ }
+}
+
+static void
+onMotion(PuglWindow* win, int x, int y)
+{
+ xAngle = x % 360;
+ yAngle = y % 360;
+ puglPostRedisplay(win);
+}
+
+static void
+onClose(PuglWindow* win)
+{
+ quit = 1;
+}
+
+int
+main(int argc, char** argv)
+{
+ PuglWindow* win = puglCreate(0, "Pugl Test", 512, 512);
+ puglSetKeyboardFunc(win, onKeyboard);
+ puglSetMotionFunc(win, onMotion);
+ puglSetDisplayFunc(win, onDisplay);
+ puglSetCloseFunc(win, onClose);
+
+ while (!quit) {
+ puglProcessEvents(win);
+ }
+
+ puglDestroy(win);
+ return 0;
+}