sculpto
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
scl::gui Class Reference

#include <gui.h>

Public Member Functions

 gui ()=default
 
 ~gui ()=default
 

Static Public Member Functions

static void Init ()
 
static void Close ()
 
static void BeginUpdate ()
 
static void SubmitUpdate ()
 

Static Public Attributes

static bool IsDockspace { true }
 

Detailed Description

Application graphics user interface layer class.

Definition at line 17 of file gui.h.

Constructor & Destructor Documentation

◆ gui()

scl::gui::gui ( )
default

Default layer constructor.

◆ ~gui()

scl::gui::~gui ( )
default

Default layer destcuctor.

Member Function Documentation

◆ BeginUpdate()

void scl::gui::BeginUpdate ( )
static
  • Begining GUI rendering pipeline function.
Parameters
None.
Returns
None.

Definition at line 89 of file gui.cpp.

90{
91 ImGui_ImplOpenGL3_NewFrame();
92 ImGui_ImplWin32_NewFrame();
93 ImGui::NewFrame();
94
95 if (IsDockspace) DrawDockspace();
96}
static bool IsDockspace
Definition: gui.h:20

◆ Close()

void scl::gui::Close ( )
static
  • Layer deinitialisation virtual callback function.
Parameters
None.
Returns
None.

Definition at line 67 of file gui.cpp.

68{
69 // Deinitialise render context dependent ImGui Implementation
70 switch (render_context::GetApi())
71 {
72 case render_context_api::OpenGL: ImGui_ImplOpenGL3_Shutdown(); break;
73 case render_context_api::DirectX: SCL_CORE_ASSERT(0, "DirectX currently dont support GUI"); return;
74 default: SCL_CORE_ASSERT(0, "Other render APIs currently dont support GUI"); return;
75 }
76
77 // Deinitialise ImGui render api dependent context
78#ifdef SCL_PLATFORM_WINDOWS
79 ImGui_ImplWin32_Shutdown();
80#else
81# error Other platforms currently dont support GUI
82#endif
83
84 // Deinitialise ImGui core conext
85 ImGui::DestroyContext();
86 SCL_CORE_SUCCES("GUI system deinitialised.");
87}
#define SCL_CORE_ASSERT(expr,...)
Definition: assert.h:69
static render_context_api GetApi()
#define SCL_CORE_SUCCES(...)
Definition: log.h:42

◆ Init()

void scl::gui::Init ( )
static
  • Layer initialisation virtual callback function.
Parameters
None.
Returns
None.

Definition at line 23 of file gui.cpp.

24{
25 // Setup ImGui context
26 IMGUI_CHECKVERSION();
27 ImGui::CreateContext();
28 ImGui::StyleColorsClassic();
29
30 // Setting ImGui backend flags
31 ImGuiIO &io = ImGui::GetIO(); (void)io;
32 io.ConfigWindowsMoveFromTitleBarOnly = true;
33 io.ConfigFlags |= ImGuiConfigFlags_NavNoCaptureKeyboard; // Disable Keyboard Controls
34 io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking
35 io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
36 io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable && // Enable Multi-Viewport / Platform Windows / Not OpenGL
38
39 // Configuring ImGui styles
40 SetUpTheme();
41
42 // Initialise platform depended ImGui context
43#ifdef SCL_PLATFORM_WINDOWS
44 const application &app = application::Get();
45 ImGui_ImplWin32_Init(app.GetWindow().GetHandle());
46#else
47# error Other platforms currently dont support GUI
48#endif
49
50 // Initialise ImGui render api dependent context
51 switch (render_context::GetApi())
52 {
53 case render_context_api::OpenGL: ImGui_ImplOpenGL3_Init("#version 450 core"); break;
54 case render_context_api::DirectX: SCL_CORE_ASSERT(0, "DirectX currently dont support GUI"); return;
55 default: SCL_CORE_ASSERT(0, "Other platforms currently dont support GUI"); return;
56 }
57
58 // Set up event handlers
59 event_dispatcher::AddEventListner<keyboard_event>([&io](keyboard_event &) { return io.WantCaptureKeyboard; });
60 event_dispatcher::AddEventListner<mouse_button_event>([&io](mouse_button_event &) { return io.WantCaptureMouse; });
61 event_dispatcher::AddEventListner<mouse_move_event>([&io](mouse_move_event &) { return io.WantCaptureMouse; });
62 event_dispatcher::AddEventListner<mouse_wheel_event>([&io](mouse_wheel_event &) { return io.WantCaptureMouse; });
63
64 SCL_CORE_SUCCES("GUI system initialised.");
65}

◆ SubmitUpdate()

void scl::gui::SubmitUpdate ( )
static
  • Submit rendered GUI function.
Parameters
None.
Returns
None.

Definition at line 98 of file gui.cpp.

99{
100 ImGuiIO &io = ImGui::GetIO();
101 const window::data &win_data = application::Get().GetWindow().GetWindowData();
102 io.DisplaySize = ImVec2((float)win_data.Width, (float)win_data.Height);
103
104 ImGui::Render();
105 ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
106
107 if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
108 {
109#ifdef SCL_PLATFORM_WINDOWS
110 ImGui::UpdatePlatformWindows();
111 ImGui::RenderPlatformWindowsDefault();
112#else
113# error Other platforms currently dont support GUI
114#endif
115 }
116}

Member Data Documentation

◆ IsDockspace

bool scl::gui::IsDockspace { true }
static

Application graphics user interface layer data.

Definition at line 20 of file gui.h.


The documentation for this class was generated from the following files: