#pragma once #include "Color.hpp" #include "EditorGuizmo.hpp" #include #include // To check whether a payload is of this type, use starts_with() #define BRUSSEL_TAG_PREFIX_GameObject "GameObject" #define BRUSSEL_TAG_PREFIX_Ires "Ires" #define BRUSSEL_TAG_Level "Level" namespace ImGui { const char* GetKeyNameGlfw(int key); void SetNextWindowSizeRelScreen(float xPercent, float yPercent, ImGuiCond cond = ImGuiCond_None); void SetNextWindowCentered(ImGuiCond cond = ImGuiCond_None); void PushDisabled(); void PopDisabled(); bool Button(const char* label, bool disabled); bool Button(const char* label, const ImVec2& sizeArg, bool disabled); bool ColorEdit3(const char* label, RgbaColor* color, ImGuiColorEditFlags flags = 0); bool ColorEdit4(const char* label, RgbaColor* color, ImGuiColorEditFlags flags = 0); bool ColorPicker3(const char* label, RgbaColor* color, ImGuiColorEditFlags flags = 0); bool ColorPicker4(const char* label, RgbaColor* color, ImGuiColorEditFlags flags = 0); bool Splitter(bool splitVertically, float thickness, float* size1, float* size2, float minSize1, float minSize2, float splitterLongAxisSize = -1.0f); void AddUnderLine(ImColor col); enum class IconType { Flow, Circle, Square, Grid, RoundSquare, Diamond, }; void DrawIcon(ImDrawList* drawList, const ImVec2& a, const ImVec2& b, IconType type, bool filled, ImU32 color, ImU32 innerColor); void Icon(const ImVec2& size, IconType type, bool filled, const ImVec4& color = ImVec4(1, 1, 1, 1), const ImVec4& innerColor = ImVec4(0, 0, 0, 0)); void DrawArrow(ImDrawList* drawList, ImVec2 from, ImVec2 to, ImU32 color, float lineThickness = 1.0f); // NOTE: string is copied into an internal storage void DialogConfirmation(std::string message, std::function callback); void ShowDialogs(); } // namespace ImGui namespace Utils { float CalcImageHeight(glm::vec2 original, int targetWidth); float CalcImageWidth(glm::vec2 original, float targetHeight); ImVec2 FitImage(glm::vec2 original); } // namespace Utils