diff options
Diffstat (limited to 'demos/multiplatform/demo.c')
| -rw-r--r-- | demos/multiplatform/demo.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/demos/multiplatform/demo.c b/demos/multiplatform/demo.c new file mode 100644 index 0000000..4e8295f --- /dev/null +++ b/demos/multiplatform/demo.c @@ -0,0 +1,61 @@ +#include <stdio.h> + +#define PEAK_IMPLEMENTATION +#include "../../Peak/peak.h" + +void print_window_resize(PeakEvent ev) { + printf("window: %u %u\n", ev.resize.width, ev.resize.height); +} + +void print_window_close(PeakEvent ev) { + (void)ev; + printf("WINDOW CLOSE!!!!!!\nWOWWWOWAAAAAAAAAAAAAAAAAAAAAAAAh\n"); +} + +void print_mouse(PeakEvent ev) { + printf("mouse: state=%d type=%d pos=(%f, %f)\n", ev.pointer.state, ev.pointer.type, ev.pointer.x, ev.pointer.y); +} + +void print_key(PeakEvent ev) { + printf("key: key=%d mod=%d\n", ev.key.key, ev.key.mod); +} + +typedef void (*print_event_func)(PeakEvent ev); +print_event_func print_event[PEAK_EVENT_LAST] = { + [PEAK_EVENT_NONE] = print_mouse, + [PEAK_EVENT_WINDOW_RESIZE] = print_window_resize, + [PEAK_EVENT_WINDOW_CLOSE] = print_window_close, + [PEAK_EVENT_POINTER] = print_mouse, + [PEAK_EVENT_POINTER_CONNECTED] = print_mouse, + [PEAK_EVENT_POINTER_DISCONNECTED] = print_mouse, + [PEAK_EVENT_KEY_DOWN] = print_key, + [PEAK_EVENT_KEY_UP] = print_key, +}; + +int main(int argc, char **argv) { + (void)argc; + (void)argv; + + if (!peak_init()) return 1; + + PeakWindow win = peak_window_open("Demo", 800, 600, 0); + peak_window_clear(&win, 0.5, 0.5, 0, 1); + + PeakEvent ev; + while (win.running) { + while (peak_window_epoll(&win, &ev)) { + if (ev.type == PEAK_EVENT_NONE) continue; + print_event[ev.type](ev); + if (ev.type == PEAK_EVENT_WINDOW_CLOSE) { + win.running = 0; + break; + } + } + if (!win.running) break; + + } + + peak_window_close(&win); + peak_quit(); + return 0; +} |
