summaryrefslogtreecommitdiff
path: root/Peak/demos/demo_run.c
diff options
context:
space:
mode:
authorVasco <[email protected]>2026-08-24 00:56:24 +0100
committerVasco <[email protected]>2026-08-24 00:56:24 +0100
commit5dc2716abd43166cd65133625f408ad36a6623b3 (patch)
tree19d89b838206b6bb11cc0b9f88311d855999d447 /Peak/demos/demo_run.c
parentdc96fcd771bea09d726a760266739906e95c09a6 (diff)
Peak 0.4.0 and Draw
Diffstat (limited to 'Peak/demos/demo_run.c')
-rw-r--r--Peak/demos/demo_run.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/Peak/demos/demo_run.c b/Peak/demos/demo_run.c
new file mode 100644
index 0000000..f5c2f7f
--- /dev/null
+++ b/Peak/demos/demo_run.c
@@ -0,0 +1,76 @@
+#include <stdio.h>
+
+#define PEAK_IMPLEMENTATION
+#include "../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;
+}