summaryrefslogtreecommitdiff
path: root/demos/demo.c
diff options
context:
space:
mode:
authorVasco <[email protected]>2026-08-24 03:53:16 +0100
committerVasco <[email protected]>2026-08-24 03:53:16 +0100
commitad5248a3e1bafc1b7dec4c8af82d56ed324ef314 (patch)
treeb575c3b85d6ad314fa9768855bed9aed8642917e /demos/demo.c
parent5dc2716abd43166cd65133625f408ad36a6623b3 (diff)
Slimed out podium. Updated math. Rend kinda works but still bugged.
Diffstat (limited to 'demos/demo.c')
-rw-r--r--demos/demo.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/demos/demo.c b/demos/demo.c
new file mode 100644
index 0000000..c095fdb
--- /dev/null
+++ b/demos/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;
+}