1 module imgui.dbgui;
2 
3 debug
4 {
5     import cimgui = imgui.cimgui;
6     import simgui = sokol.imgui;
7     import sgimgui = sokol.gfximgui;
8     import log = sokol.log;
9     import sapp = sokol.app;
10 
11 extern (C):
12 
13     void __dbgui_setup(int sample_count) @safe @nogc nothrow
14     {
15         // setup debug inspection
16         sgimgui.Desc desc = {};
17         sgimgui.setup(desc);
18 
19         //dfmt off
20         // setup the sokol-imgui utility
21         simgui.Desc simgui_desc = {
22             sample_count: sample_count,
23             logger: {func: &log.slog_func},
24         };
25         //dfmt on
26         simgui.setup(simgui_desc);
27     }
28 
29     void __dbgui_shutdown() @safe @nogc nothrow
30     {
31         sgimgui.shutdown();
32         simgui.shutdown;
33     }
34 
35     void __dbgui_draw() @safe @nogc nothrow
36     {
37         //dfmt off
38         simgui.FrameDesc sframe = {
39             width: sapp.width,
40             height: sapp.height,
41             delta_time: sapp.frameDuration,
42             dpi_scale: sapp.dpiScale,
43         };
44         //dfmt on
45 
46         simgui.newFrame(sframe);
47         if (cimgui.BeginMainMenuBar)
48         {
49             sgimgui.drawMenu("sokol-gfx");
50             cimgui.EndMainMenuBar;
51         }
52         sgimgui.draw();
53         simgui.render;
54     }
55 
56     void __dbgui_event(const(sapp.Event)* ev) @trusted @nogc nothrow
57     {
58         simgui.simgui_handle_event(ev);
59     }
60 }