9 #include "imguistyle.h"
12 #include <nap/service.h>
13 #include <renderwindow.h>
14 #include <inputevent.h>
15 #include <nap/resourceptr.h>
16 #include <descriptorsetallocator.h>
17 #include <nap/signalslot.h>
41 inline constexpr
const char*
save =
"save.png";
42 inline constexpr
const char*
saveAs =
"save_as.png";
43 inline constexpr
const char*
cancel =
"cancel.png";
44 inline constexpr
const char*
ok =
"ok.png";
45 inline constexpr
const char*
del =
"delete.png";
46 inline constexpr
const char*
file =
"file.png";
47 inline constexpr
const char*
help =
"help.png";
48 inline constexpr
const char*
settings =
"settings.png";
49 inline constexpr
const char*
reload =
"reload.png";
50 inline constexpr
const char*
folder =
"folder.png";
51 inline constexpr
const char*
load =
"load.png";
52 inline constexpr
const char*
info =
"info.png";
53 inline constexpr
const char*
warning =
"warning.png";
54 inline constexpr
const char*
error =
"error.png";
55 inline constexpr
const char*
copy =
"copy.png";
56 inline constexpr
const char*
paste =
"paste.png";
57 inline constexpr
const char*
insert =
"insert.png";
58 inline constexpr
const char*
edit =
"edit.png";
59 inline constexpr
const char*
remove =
"remove.png";
60 inline constexpr
const char*
add =
"add.png";
61 inline constexpr
const char*
change =
"change.png";
62 inline constexpr
const char*
subtract =
"subtract.png";
63 inline constexpr
const char*
frame =
"frame.png";
75 float mFontSize = 17.0f;
77 std::string mFontFile =
"";
78 glm::ivec2 mFontOversampling = { 5, 3 };
79 float mFontSpacing = 0.25f;
98 friend class GuiWindow;
163 ImGuiContext* findContext(
int windowID);
171 float getScale() const;
180 float getScale(const ImGuiContext* context) const;
186 const gui::ColorPalette& getPalette() const;
192 void setPalette(gui::EColorScheme palette);
198 ImGuiContext* processInputEvent(const
InputEvent& event);
203 bool isCapturingKeyboard(ImGuiContext* context);
208 bool isCapturingMouse(ImGuiContext* context);
215 void addInputCharachter(ImGuiContext* context,
nap::
uint character);
230 ImTextureID getTextureHandle(const
nap::
Texture2D& texture) const;
245 nap::
Icon& getIcon(std::
string&& name);
269 bool loadIcon(const std::
string& name, const
nap::
Module& module, utility::ErrorState& error);
278 bool init(utility::ErrorState& error) override;
284 void getDependentServices(std::vector<rtti::
TypeInfo>& dependencies) override;
290 void update(
double deltaTime) override;
295 void postUpdate(
double deltaTime) override;
300 void preShutdown() override;
305 void shutdown() override;
310 void registerObjectCreators(rtti::
Factory& factory) override;
317 struct NAPAPI GUIContext
319 GUIContext(ImGuiContext* context, ImGuiStyle* style);
323 static constexpr
int keyCount = 512;
324 using KeyArray = std::array<bool, keyCount>;
326 std::array<bool,3> mMousePressed = {
false };
327 std::array<bool,3> mMouseRelease = {
false };
328 std::array<bool,3> mModPressed = {
false };
329 std::array<bool,3> mModRelease = {
false };
331 KeyArray mKeyPressed = {
false };
332 std::vector<int> mKeyRelease;
333 glm::ivec2 mMousePosition = { 0, 0 };
334 float mMouseWheel = 0.0f;
336 int mDisplayIndex = -1;
337 ImGuiContext* mContext =
nullptr;
338 ImGuiContext* mPreviousContext =
nullptr;
339 ImGuiStyle* mStyle =
nullptr;
357 void onWindowRemoved(RenderWindow& window);
363 void onWindowEvent(
const WindowEvent& windowEvent);
374 void newFrame(RenderWindow& window, GUIContext& context,
double deltaTime);
384 void handleKeyEvent(
const KeyEvent& keyEvent, GUIContext& context);
389 void handlePointerEvent(
const PointerEvent& pointerEvent, GUIContext& context);
394 void handleTouchEvent(
const TouchEvent& touchEvent, GUIContext& context);
397 RenderService* mRenderService =
nullptr;
398 std::unordered_map<RenderWindow*, std::unique_ptr<GUIContext>> mContexts;
399 std::unique_ptr<ImFontAtlas> mFontAtlas =
nullptr;
400 std::unique_ptr<ImGuiStyle> mStyle =
nullptr;
401 float mGuiScale = 1.0f;
402 float mReferenceScale = 1.0f;
405 IMGuiServiceConfiguration* mConfiguration =
nullptr;
406 const gui::ColorPalette* mColorPalette =
nullptr;
409 std::unordered_map<std::string, std::unique_ptr<Icon>> mIcons;
412 std::unique_ptr<DescriptorSetAllocator> mAllocator;
413 VkDescriptorPool mDescriptorPool = VK_NULL_HANDLE;
414 VkDescriptorSetLayout mDescriptorSetLayout = VK_NULL_HANDLE;
415 VkSampler mSampler = VK_NULL_HANDLE;
416 mutable std::unordered_map<const Texture2D*, VkDescriptorSet> mDescriptors;
unsigned int uint
Definition: numeric.h:23
Definition: renderwindow.h:43
constexpr const char * paste
Definition: imguiservice.h:56
virtual rtti::TypeInfo getServiceType() const override
Definition: imguiservice.h:82
constexpr const char * add
Definition: imguiservice.h:60
constexpr const char * saveAs
Definition: imguiservice.h:42
constexpr const char * file
Definition: imguiservice.h:46
constexpr const char * error
Definition: imguiservice.h:54
Definition: signalslot.h:18
@ Dark
Darker color scheme (default)
constexpr const char * remove
Definition: imguiservice.h:59
constexpr const char * help
Definition: imguiservice.h:47
constexpr const char * subtract
Definition: imguiservice.h:62
constexpr const char * save
Definition: imguiservice.h:41
Definition: objectptr.h:150
constexpr const char * load
Definition: imguiservice.h:51
constexpr const char * insert
Definition: imguiservice.h:57
constexpr const char * edit
Definition: imguiservice.h:58
EColorScheme
Definition: imguistyle.h:26
constexpr const char * settings
Definition: imguiservice.h:48
Definition: imguiservice.h:70
constexpr int pointerInvalidID
Invalid pointer ID.
Definition: imguistyle.h:19
constexpr const char * warning
Definition: imguiservice.h:53
constexpr const char * cancel
Definition: imguiservice.h:43
Definition: imguiicon.h:24
constexpr const char * change
Definition: imguiservice.h:61
Definition: imguistyle.h:38
constexpr const char * ok
Definition: imguiservice.h:44
Definition: texture.h:117
constexpr const char * frame
Definition: imguiservice.h:63
Definition: templateservice.h:8
constexpr const char * info
Definition: imguiservice.h:52
constexpr const char * folder
Definition: imguiservice.h:50
constexpr const char * del
Definition: imguiservice.h:45
Definition: imguiservice.h:95
Definition: imguistyle.h:58
Definition: templateapp.h:17
ESource
Definition: inputevent.h:135
constexpr const char * reload
Definition: imguiservice.h:49
constexpr const char * copy
Definition: imguiservice.h:55
rttr::type TypeInfo
Definition: typeinfo.h:141
gui::ColorPalette mCustomColors
Property: 'Colors' Color overrides if scheme is set to custom.
Definition: imguiservice.h:80
gui::Style mStyle
Property: 'Style' Configurable style elements.
Definition: imguiservice.h:81
Definition: modulecache.h:26