Skip to content

Commit 18929bd

Browse files
committed
Internals: merge ScaleWindowsInViewport() from docking branch.
1 parent 2a600bd commit 18929bd

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

imgui.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14788,6 +14788,7 @@ void ImGui::LocalizeRegisterEntries(const ImGuiLocEntry* entries, int count)
1478814788
//-----------------------------------------------------------------------------
1478914789
// - GetMainViewport()
1479014790
// - SetWindowViewport() [Internal]
14791+
// - ScaleWindowsInViewport() [Internal]
1479114792
// - UpdateViewportsNewFrame() [Internal]
1479214793
// (this section is more complete in the 'docking' branch)
1479314794
//-----------------------------------------------------------------------------
@@ -14803,6 +14804,24 @@ void ImGui::SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
1480314804
window->Viewport = viewport;
1480414805
}
1480514806

14807+
static void ScaleWindow(ImGuiWindow* window, float scale)
14808+
{
14809+
ImVec2 origin = window->Viewport->Pos;
14810+
window->Pos = ImFloor((window->Pos - origin) * scale + origin);
14811+
window->Size = ImTrunc(window->Size * scale);
14812+
window->SizeFull = ImTrunc(window->SizeFull * scale);
14813+
window->ContentSize = ImTrunc(window->ContentSize * scale);
14814+
}
14815+
14816+
// Scale all windows (position, size). Use when e.g. changing DPI. (This is a lossy operation!)
14817+
void ImGui::ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale)
14818+
{
14819+
ImGuiContext& g = *GImGui;
14820+
for (ImGuiWindow* window : g.Windows)
14821+
if (window->Viewport == viewport)
14822+
ScaleWindow(window, scale);
14823+
}
14824+
1480614825
// Update viewports and monitor infos
1480714826
static void ImGui::UpdateViewportsNewFrame()
1480814827
{

imgui_internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3020,6 +3020,7 @@ namespace ImGui
30203020
IMGUI_API void CallContextHooks(ImGuiContext* context, ImGuiContextHookType type);
30213021

30223022
// Viewports
3023+
IMGUI_API void ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale);
30233024
IMGUI_API void SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport);
30243025

30253026
// Settings

0 commit comments

Comments
 (0)