VenomEngine
Cross-Platform Modern Graphics Engine
Loading...
Searching...
No Matches
GUI.h
Go to the documentation of this file.
1
8#pragma once
10
11#include <imgui.h>
12#if !defined(VENOM_DISABLE_GLFW)
13#include <imgui_impl_glfw.h>
14#endif
15#include <imgui_impl_vulkan.h>
16
17namespace venom
18{
19namespace vulkan
20{
21class VulkanGUI : public vc::GUI
22{
23public:
24 VulkanGUI();
25 ~VulkanGUI() override;
26
27 vc::Error _Initialize() override;
28private:
29#if defined(VENOM_PLATFORM_APPLE)
30 vc::Error _InitializeApple();
31 vc::Error _DestroyApple();
32 vc::Error _NewFrameApple();
33#endif
34
35protected:
36 void _EntityGuizmo(vc::Transform3D* transform3D, const vcm::Vec2 & renderingSize) override;
37
38 vc::Error _Reset() override;
39
40 void _ClearFonts() override;
41 void _AddFont(const char* fontPath, float fontSize, const uint16_t* glyphRanges) override;
42 void _AddFont(const char* fontPath, float fontSize) override;
43
44 void _SetNextWindowPos(const vcm::Vec2 & pos, vc::GUICond cond, const vcm::Vec2 & pivot) override;
45 void _SetNextWindowSize(const vcm::Vec2& size, vc::GUICond cond) override;
46 void _SetNextWindowViewport(vc::GUIViewport viewport) override;
47
48 vcm::Vec2 _GetContentRegionAvail() override;
49
50 vcm::Vec2 _GetWindowSize() override;
51 vcm::Vec2 _GetWindowPos() override;
52 vc::GUIViewport _GetMainViewport() override;
53
54 void _NewFrame() override;
55 void _Begin(const char * name, bool * p_open, vc::GUIWindowFlags flags) override;
56 void _End() override;
57 void _Text(const char* fmt, va_list args) override;
58 void _TextColored(const vcm::Vec4 & col, const char* fmt, va_list args) override;
59 void _LabelText(const char* label, const char* fmt, va_list args) override;
60
61 void _Image(const vc::Texture* texture, const vcm::Vec2 & size, bool centering) override;
62
63 bool _InputText(const char* label, char* buf, size_t buf_size, vc::GUIInputTextFlags flags) override;
64
65 bool _TreeNode(const char* label) override;
66 void _TreePop() override;
67 void _TreePush(const char* str_id) override;
68
69 void _SeparatorText(const char* text) override;
70 void _Separator() override;
71 void _Spacing() override;
72 void _Dummy(const vcm::Vec2& size) override;
73
74 bool _SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format) override;
75 bool _SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format) override;
76
77 bool _InputFloat(const char* label, float* v, float step, float step_fast, const char* format, vc::GUIColorEditFlags flags) override;
78 bool _InputFloat3(const char* label, float v[3], const char* format, vc::GUIColorEditFlags flags) override;
79
80 void _ColorEdit3(const char* label, float col[3], vc::GUIColorEditFlags flags) override;
81
82 bool _CollapsingHeader(const char* label, vc::GUITreeNodeFlags flags) override;
83
84 bool _Button(const char* label, const vcm::Vec2 & size) override;
85 bool _Checkbox(const char* label, bool* v) override;
86 void _ProgressBar(float fraction, const vcm::Vec2 & size_arg, const char* overlay) override;
87
88 bool _Selectable(const char* label, bool selected, vc::GUISelectableFlags flags, const vcm::Vec2 & size) override;
89
90 bool _BeginCombo(const char* label, const char* preview_value, vc::GUIComboFlags flags) override;
91 void _EndCombo() override;
92
93 bool _BeginMenu(const char* label, bool enabled) override;
94 void _EndMenu() override;
95
96 bool _BeginMainMenuBar() override;
97 void _EndMainMenuBar() override;
98
99 bool _BeginMenuBar() override;
100 void _EndMenuBar() override;
101
102 bool _BeginChild(const char* str_id, const vcm::Vec2 & size, vc::GUIChildFlags childFlags, vc::GUIWindowFlags extra_flags) override;
103 void _EndChild() override;
104
105 bool _MenuItem(const char* str, const char* text) override;
106
107 void _SetNextItemWidth(float item_width) override;
108 void _SetItemDefaultFocus() override;
109
110 void _SameLine(float offset_from_start_x, float spacing) override;
111
112 void _PushItemWidth(float item_width) override;
113 void _PopItemWidth() override;
114
115 void _PushButtonTextAlign(const vcm::Vec2& padding) override;
116 void _PushWindowPadding(const vcm::Vec2& padding) override;
117 void _PopStyleVar() override;
118
119 vc::GUIId _DockSpace(vc::GUIId id, const vcm::Vec2& size, vc::GUIDockNodeFlags flags) override;
120 vc::GUIId _DockSpace(const char* id, const vcm::Vec2& size, vc::GUIDockNodeFlags flags) override;
121 vc::GUIId _DockSpaceOverViewport() override;
122
123 vc::GUIId _DockSpaceAddNode(vc::GUIId id, vc::GUIDockNodeFlags flags) override;
124 void _DockSpaceRemoveNode(vc::GUIId id) override;
125 void _DockSpaceSetNodeSize(vc::GUIId id, const vcm::Vec2& size) override;
126
127 vc::GUIId _DockSpaceSplitNode(vc::GUIId id, vc::GUIDir split_dir, float size_ratio, vc::GUIId* out_id_at_dir, vc::GUIId* out_id_at_opposite_dir) override;
128
129 void _DockWindow(const char* str_id, vc::GUIId id) override;
130 void _DockFinish(vc::GUIId id) override;
131
132 void _OpenPopup(const char* str_id, vc::GUIPopupFlags flags) override;
133 bool _BeginPopup(const char* str_id, vc::GUIWindowFlags flags) override;
134 bool _BeginPopupModal(const char* name, bool* p_open, vc::GUIWindowFlags flags) override;
135 bool _BeginPopupContextItem(const char* str_id, common::GUIPopupFlags flags) override;
136 void _EndPopup() override;
137 void _CloseCurrentPopup() override;
138
139 vc::GUIId _GetID(const char* str_id) override;
140
141 vc::Error _PreUpdate() override;
142 void _Render() override;
143
144 void _Test() override;
145
146private:
147 void __SetStyle();
148
149 float __imageVerticalOffset;
150
151private:
152 ImGui_ImplVulkan_InitInfo initInfo;
153};
154}
155}
Definition GUI.h:33
Definition Texture.h:178
Definition Transform3D.h:18
Encapsulation of Vulkan for the front end of VenomEngine.
Definition Allocator.h:18
Contains the entirety of the code of the VenomEngine project.
Definition Callback.h:13