aboutsummaryrefslogtreecommitdiffstats
path: root/test/pugl_print_events.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-10-27 13:19:23 +0100
committerDavid Robillard <d@drobilla.net>2019-11-03 21:03:18 +0100
commit5491a443b03cdc0f49b259873b7fc5919242a36c (patch)
tree91ef4046d2deb8dc21aa6488acf9d05c0e79e77e /test/pugl_print_events.c
parentc75c10d2385aaa1bbf7d8f5ae437ccd5d1e3803f (diff)
downloadpugl-5491a443b03cdc0f49b259873b7fc5919242a36c.tar.gz
pugl-5491a443b03cdc0f49b259873b7fc5919242a36c.tar.bz2
pugl-5491a443b03cdc0f49b259873b7fc5919242a36c.zip
Add pugl_print_events test program
Diffstat (limited to 'test/pugl_print_events.c')
-rw-r--r--test/pugl_print_events.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/test/pugl_print_events.c b/test/pugl_print_events.c
new file mode 100644
index 0000000..c61b7f9
--- /dev/null
+++ b/test/pugl_print_events.c
@@ -0,0 +1,83 @@
+/*
+ Copyright 2012-2019 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_print_events.c A simple Pugl test that prints events.
+*/
+
+#include "test_utils.h"
+
+#include "pugl/pugl.h"
+#include "pugl/pugl_stub_backend.h"
+
+#include <math.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct
+{
+ PuglWorld* world;
+ PuglView* view;
+ int quit;
+} PuglPrintEventsApp;
+
+static PuglStatus
+onEvent(PuglView* view, const PuglEvent* event)
+{
+ PuglPrintEventsApp* app = (PuglPrintEventsApp*)puglGetHandle(view);
+
+ printEvent(event, "Event: ", true);
+
+ switch (event->type) {
+ case PUGL_CLOSE: app->quit = 1; break;
+ default: break;
+ }
+
+ return PUGL_SUCCESS;
+}
+
+int
+main(void)
+{
+ PuglPrintEventsApp app = {NULL, NULL, 0};
+
+ app.world = puglNewWorld();
+ app.view = puglNewView(app.world);
+
+ puglSetClassName(app.world, "Pugl Print Events");
+ puglSetBackend(app.view, puglStubBackend());
+ puglSetHandle(app.view, &app);
+ puglSetEventFunc(app.view, onEvent);
+
+ if (puglCreateWindow(app.view, "Pugl Event Printer")) {
+ fprintf(stderr, "error: Failed to create window\n");
+ return 1;
+ }
+
+ puglShowWindow(app.view);
+
+ while (!app.quit) {
+ puglPollEvents(app.world, -1);
+ puglDispatchEvents(app.world);
+ }
+
+ puglFreeView(app.view);
+ puglFreeWorld(app.world);
+
+ return 0;
+}