diff options
| author | Vasco <[email protected]> | 2026-08-24 17:47:30 +0100 |
|---|---|---|
| committer | Vasco <[email protected]> | 2026-08-24 17:50:52 +0100 |
| commit | cc3429220b19df8c5ca6abf28a02cd38d08de32d (patch) | |
| tree | dd6fe3911535cc75570e5fe34ff84c758028aa81 /demos/multiplatform/demo.c | |
| parent | ad5248a3e1bafc1b7dec4c8af82d56ed324ef314 (diff) | |
Cool 0.0.0. Rend 1.0.4.
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; +} |
