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 std.stdio;
|
||||||
import derelict.opengl;
|
import jes.gui;
|
||||||
|
|
||||||
jtk.Window window;
|
|
||||||
|
|
||||||
static void redraw()
|
|
||||||
{
|
|
||||||
glClearColor(0.5, 0.0, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
window.swap_buffers();
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(string[] args)
|
int main(string[] args)
|
||||||
{
|
{
|
||||||
if (!jtk.init())
|
version(unittest)
|
||||||
{
|
{
|
||||||
stderr.writeln("JTK initialization failed.");
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
try
|
else
|
||||||
{
|
{
|
||||||
window = new jtk.Window();
|
Gui g = new Gui();
|
||||||
bool running = true;
|
g.run();
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user