diff options
author | David Robillard <d@drobilla.net> | 2019-10-27 13:19:23 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-11-03 21:03:18 +0100 |
commit | 5491a443b03cdc0f49b259873b7fc5919242a36c (patch) | |
tree | 91ef4046d2deb8dc21aa6488acf9d05c0e79e77e | |
parent | c75c10d2385aaa1bbf7d8f5ae437ccd5d1e3803f (diff) |
Add pugl_print_events test program
-rw-r--r-- | test/pugl_print_events.c | 83 | ||||
-rw-r--r-- | wscript | 2 |
2 files changed, 85 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; +} @@ -264,6 +264,8 @@ def build(bld): if bld.is_defined('HAVE_GL'): build_test('pugl_test', ['test/pugl_test.c'], platform, 'gl', uselib=['M']) + build_test('pugl_print_events', ['test/pugl_print_events.c'], + platform, 'stub') build_test('pugl_gl3_test', ['test/pugl_gl3_test.c', 'test/glad/glad.c'], platform, 'gl', uselib=['M', 'DL']) |