From 5d6c6b0e0f0363c78a0359ffc220fd7dfbbaf0c3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 25 Jul 2018 22:04:57 -0400 Subject: [PATCH] start on jtk module --- Rsconsfile | 1 + src/gui/jtk.d | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/gui/jtk.d diff --git a/Rsconsfile b/Rsconsfile index 7b20541..c44a5b5 100644 --- a/Rsconsfile +++ b/Rsconsfile @@ -2,5 +2,6 @@ Rscons::Environment.new do |env| env["sources"] = Dir[ "src/**/*.d", "src/**/*.c"] + env["D_IMPORT_PATH"] += Dir["src/**/"] env.Program("#{env.build_root}/jes", "${sources}") end diff --git a/src/gui/jtk.d b/src/gui/jtk.d new file mode 100644 index 0000000..ef537f4 --- /dev/null +++ b/src/gui/jtk.d @@ -0,0 +1,53 @@ +struct Event +{ + enum Type : ubyte + { + WINDOW_CLOSE, + WINDOW_EXPOSE, + KEY_PRESS, + KEY_RELEASE, + BUTTON_PRESS, + BUTTON_RELEASE, + TIMER, + WINDOW_RESIZE, + }; + + struct KeyEvent + { + bool repeat; + uint key; + uint x_keycode; + }; + + struct ButtonEvent + { + uint mods; + ubyte button; + }; + + struct TimerEvent + { + uint timer_id; + void * user1; + void * user2; + }; + + struct WindowResizeEvent + { + uint width; + uint height; + }; + + Type type; + union + { + KeyEvent key; + ButtonEvent button; + TimerEvent timer; + WindowResizeEvent resize; + }; +} + +class Window +{ +}