diff --git a/private/raid/application.cpp b/private/raid/application.cpp index 80f470b..32fb999 100644 --- a/private/raid/application.cpp +++ b/private/raid/application.cpp @@ -96,8 +96,16 @@ int Application::run(int argc, char** argv) ImGui::SetNextWindowPos(ImGui::GetMainViewport()->Pos); ImGui::SetNextWindowSize(ImGui::GetMainViewport()->Size); ImGui::SetNextWindowViewport(ImGui::GetMainViewport()->ID); + + for (const auto& [variable, value] : mMainWindowStyles) { + std::visit([&](auto val) { + ImGui::PushStyleVar(variable, val); + }, value); + } ImGui::Begin("##main", nullptr, mMainWindowFlags); + ImGui::PopStyleVar(static_cast(mMainWindowStyles.size())); + render(); mTaskLoop.tick(); diff --git a/public/raid/raid.hpp b/public/raid/raid.hpp index 3491353..8fcd33a 100644 --- a/public/raid/raid.hpp +++ b/public/raid/raid.hpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -63,6 +64,7 @@ private: bool mRunning = true; ImGuiWindowFlags mMainWindowFlags = DEFAULT_MAIN_WINDOW_FLAGS; + std::unordered_map> mMainWindowStyles; using GLbitfield = std::uint32_t; using GLint = std::int32_t; @@ -108,6 +110,8 @@ public: ImGuiWindowFlags getMainWindowFlags() const { return mMainWindowFlags; } void setMainWindowFlags(ImGuiWindowFlags flags) { mMainWindowFlags = flags; } + void setMainWindowStyle(ImGuiStyleVar variable, std::variant value) { mMainWindowStyles.emplace(variable, value); } + void unsetMainWindowStyle(ImGuiStyleVar variable) { mMainWindowStyles.erase(variable); } void requestQuit() { mRunning = false; } [[nodiscard]]