From 5385718e91eb7e9c999dac8693ee8e6649cdb674 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 3 Dec 2020 10:00:34 -0500 Subject: [PATCH] Add Gui class and move GUI logic from main module to it. --- src/jes/gui/package.d | 63 +++++++++++++++++++++++++++++++++++++++++++ src/main.d | 45 ++++--------------------------- 2 files changed, 68 insertions(+), 40 deletions(-) create mode 100644 src/jes/gui/package.d diff --git a/src/jes/gui/package.d b/src/jes/gui/package.d new file mode 100644 index 0000000..e4aff42 --- /dev/null +++ b/src/jes/gui/package.d @@ -0,0 +1,63 @@ +module jes.gui; + +static import jtk; +import derelict.opengl; +import std.stdio; + +class Gui +{ + jtk.Window[] m_windows; + + this() + { + if (!jtk.init()) + { + throw new Exception("JTK initialization failed."); + } + } + + void run() + { + try + { + m_windows ~= new jtk.Window(); + event_loop(); + m_windows[0].close(); + } + finally + { + jtk.quit(); + } + } + + private void event_loop() + { + bool running = true; + while (running) + { + jtk.Event event = jtk.wait_event(); + switch (event.type) + { + case jtk.Event.WINDOW_CLOSE: + running = false; + break; + + case jtk.Event.WINDOW_RESIZE: + glViewport(0, 0, event.window_resize.width, event.window_resize.height); + redraw_window(event.window_resize.window); + break; + + default: + break; + } + } + } + + private void redraw_window(jtk.Window window) + { + glClearColor(0.5, 0.0, 1.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + m_windows[0].swap_buffers(); + } + +} diff --git a/src/main.d b/src/main.d index 2f9dc02..28a53cb 100644 --- a/src/main.d +++ b/src/main.d @@ -1,50 +1,15 @@ -static import jtk; import std.stdio; -import derelict.opengl; - -jtk.Window window; - -static void redraw() -{ - glClearColor(0.5, 0.0, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - window.swap_buffers(); -} +import jes.gui; int main(string[] args) { - if (!jtk.init()) + version(unittest) { - stderr.writeln("JTK initialization failed."); - return 1; } - try + else { - window = new jtk.Window(); - bool running = true; - while (running) - { - jtk.Event event = jtk.wait_event(); - switch (event.type) - { - case jtk.Event.WINDOW_CLOSE: - running = false; - break; - - case jtk.Event.WINDOW_RESIZE: - glViewport(0, 0, event.window_resize.width, event.window_resize.height); - redraw(); - break; - - default: - break; - } - } - window.close(); - } - finally - { - jtk.quit(); + Gui g = new Gui(); + g.run(); } return 0; }