From ad5248a3e1bafc1b7dec4c8af82d56ed324ef314 Mon Sep 17 00:00:00 2001 From: Vasco Date: Mon, 24 Aug 2026 03:53:16 +0100 Subject: Slimed out podium. Updated math. Rend kinda works but still bugged. --- demos/demo_run.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 demos/demo_run.c (limited to 'demos/demo_run.c') diff --git a/demos/demo_run.c b/demos/demo_run.c new file mode 100644 index 0000000..db3e56a --- /dev/null +++ b/demos/demo_run.c @@ -0,0 +1,76 @@ +#include + +#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) { + 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, +}; + + +typedef struct { + char *msg; +} AppData; + +static AppData data; + +static int +peak_run_func(PeakWindow *win, void *userdata) +{ + AppData d = *(AppData*) userdata; + static PeakEvent ev; + while (peak_window_epoll(win, &ev)) { + switch (ev.type) { + case PEAK_EVENT_NONE: + continue; + case PEAK_EVENT_WINDOW_CLOSE: + return 0; + default: + print_event[ev.type](ev); + continue; + } + } + printf("%s\n", d.msg); + return 1; +} + +int +main(int argc, char**argv) +{ + data.msg = "Hello World"; + + if (!peak_init()) { + return 1; + } + + PeakWindow win = peak_window_open("demo", 400, 400, 0); + peak_window_run(&win, peak_run_func, &data); + peak_window_close(&win); + peak_quit(); + return 0; +} -- cgit v1.3.1