|
|
@@ -21,22 +21,66 @@ using namespace lol; |
|
|
|
//Imgui extension --------------------------------------------------------------------------------- |
|
|
|
namespace ImGui |
|
|
|
{ |
|
|
|
IMGUI_API void SetNextWindowSizeAndDock(const ImVec2& size, ImGuiSetDock dock, ImGuiSetCond cond) |
|
|
|
IMGUI_API void SetNextWindowDockingAndSize(const ImVec2& size, ImGuiSetDock dock, const ImVec2& padding, ImGuiSetCond cond) |
|
|
|
{ |
|
|
|
vec2 video_size = vec2(Video::GetSize()); |
|
|
|
ImVec2 pos = ImVec2(); |
|
|
|
SetNextWindowDockingAndSize(size, dock, ImVec4(vec2(padding).xyxy), cond); |
|
|
|
} |
|
|
|
IMGUI_API void SetNextWindowDockingAndSize(const ImVec2& size, ImGuiSetDock dock, const ImVec4& padding, ImGuiSetCond cond) |
|
|
|
{ |
|
|
|
vec4 pdg = padding; |
|
|
|
vec2 vsz = vec2(Video::GetSize()); |
|
|
|
vec2 ctr = pdg.xy + (((vsz - pdg.zw) - pdg.xy) * .5f); |
|
|
|
vec2 pos = vec2(); |
|
|
|
|
|
|
|
switch (dock) |
|
|
|
{ |
|
|
|
case ImGuiSetDock_TopLeft: pos = ImVec2(0, 0); break; |
|
|
|
case ImGuiSetDock_TopRight: pos = ImVec2(video_size.x - size.x, 0); break; |
|
|
|
case ImGuiSetDock_BottomLeft: pos = ImVec2(0, video_size.y - size.y); break; |
|
|
|
case ImGuiSetDock_BottomRight: pos = ImVec2(video_size.x - size.x, video_size.y - size.y); break; |
|
|
|
case ImGuiSetDock_Center: pos = vec2(ctr.x - (size.x * .5f), ctr.y - (size.y * .5f)); break; |
|
|
|
case ImGuiSetDock_Top: pos = vec2(ctr.x - (size.x * .5f), pdg.y); break; |
|
|
|
case ImGuiSetDock_TopRight: pos = vec2(vsz.x - (size.x + pdg.z), pdg.y); break; |
|
|
|
case ImGuiSetDock_Right: pos = vec2(vsz.x - (size.x + pdg.z), ctr.y - (size.y * .5f)); break; |
|
|
|
case ImGuiSetDock_BottomRight: pos = vec2(vsz.x - (size.x + pdg.z), vsz.y - (size.y + pdg.w)); break; |
|
|
|
case ImGuiSetDock_Bottom: pos = vec2(ctr.x - (size.x * .5f), vsz.y - (size.y + pdg.w)); break; |
|
|
|
case ImGuiSetDock_BottomLeft: pos = vec2(pdg.x, vsz.y - (size.y + pdg.w)); break; |
|
|
|
case ImGuiSetDock_Left: pos = vec2(pdg.x, ctr.y - (size.y * .5f)); break; |
|
|
|
case ImGuiSetDock_TopLeft: pos = vec2(pdg.x, pdg.y); break; |
|
|
|
} |
|
|
|
|
|
|
|
ImGui::SetNextWindowPos(pos, cond); |
|
|
|
ImGui::SetNextWindowSize(size, cond); |
|
|
|
} |
|
|
|
|
|
|
|
IMGUI_API void SetNextWindowDocking(ImGuiSetDock dock, const ImVec2& padding, ImGuiSetCond cond) |
|
|
|
{ |
|
|
|
SetNextWindowDocking(dock, ImVec4(vec2(padding).xyxy), cond); |
|
|
|
} |
|
|
|
IMGUI_API void SetNextWindowDocking(ImGuiSetDock dock, const ImVec4& padding, ImGuiSetCond cond) |
|
|
|
{ |
|
|
|
vec2 vsz = vec2(Video::GetSize()); |
|
|
|
vec2 size = vec2(); |
|
|
|
vec2 pos = vec2(); |
|
|
|
vec4 pdg = padding; |
|
|
|
|
|
|
|
switch (dock) |
|
|
|
{ |
|
|
|
case ImGuiSetDock_Center: size = vsz - vec2(pdg.x + pdg.z, pdg.y + pdg.w); break; |
|
|
|
case ImGuiSetDock_Top: size = vec2(vsz.x - (pdg.x + pdg.z), vsz.y *.5f - pdg.y); break; |
|
|
|
case ImGuiSetDock_TopRight: size = vec2(vsz.x *.5f - pdg.z, vsz.y *.5f - pdg.y); break; |
|
|
|
case ImGuiSetDock_Right: size = vec2(vsz.x *.5f - pdg.z, vsz.y - (pdg.y + pdg.w)); break; |
|
|
|
case ImGuiSetDock_BottomRight: size = vec2(vsz.x *.5f - pdg.z, vsz.y *.5f - pdg.w); break; |
|
|
|
case ImGuiSetDock_Bottom: size = vec2(vsz.x - (pdg.x + pdg.z), vsz.y *.5f - pdg.w); break; |
|
|
|
case ImGuiSetDock_BottomLeft: size = vec2(vsz.x *.5f - pdg.x, vsz.y *.5f - pdg.w); break; |
|
|
|
case ImGuiSetDock_Left: size = vec2(vsz.x *.5f - pdg.x, vsz.y - (pdg.y + pdg.w)); break; |
|
|
|
case ImGuiSetDock_TopLeft: size = vec2(vsz.x *.5f - pdg.x, vsz.y *.5f - pdg.y); break; |
|
|
|
} |
|
|
|
|
|
|
|
SetNextWindowDockingAndSize(size, dock, padding, cond); |
|
|
|
} |
|
|
|
|
|
|
|
IMGUI_API float GetMainMenuBarHeight() |
|
|
|
{ |
|
|
|
ImGuiContext& g = *GImGui; |
|
|
|
return g.FontBaseSize + g.Style.FramePadding.y * 2.0f; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//LolImGui ---------------------------------------------------------------------------------------- |
|
|
|