Add Gui class and move GUI logic from main module to it.
This commit is contained in:
parent
19a1ae222a
commit
5385718e91
63
src/jes/gui/package.d
Normal file
63
src/jes/gui/package.d
Normal file
@ -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();
|
||||
}
|
||||
|
||||
}
|
45
src/main.d
45
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user