mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Internals: Renaming window size calc functions.
This commit is contained in:
		
							
								
								
									
										26
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -4857,7 +4857,7 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl
 | 
				
			|||||||
    return window;
 | 
					    return window;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ImVec2 CalcSizeAfterConstraint(ImGuiWindow* window, ImVec2 new_size)
 | 
					static ImVec2 CalcWindowSizeAfterConstraint(ImGuiWindow* window, ImVec2 new_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiContext& g = *GImGui;
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
    if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint)
 | 
					    if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint)
 | 
				
			||||||
@@ -4889,7 +4889,7 @@ static ImVec2 CalcSizeAfterConstraint(ImGuiWindow* window, ImVec2 new_size)
 | 
				
			|||||||
    return new_size;
 | 
					    return new_size;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ImVec2 CalcContentSize(ImGuiWindow* window)
 | 
					static ImVec2 CalcWindowContentSize(ImGuiWindow* window)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (window->Collapsed)
 | 
					    if (window->Collapsed)
 | 
				
			||||||
        if (window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0)
 | 
					        if (window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0)
 | 
				
			||||||
@@ -4903,7 +4903,7 @@ static ImVec2 CalcContentSize(ImGuiWindow* window)
 | 
				
			|||||||
    return sz;
 | 
					    return sz;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents)
 | 
					static ImVec2 CalcWindowAutoFitSize(ImGuiWindow* window, const ImVec2& size_contents)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiContext& g = *GImGui;
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
    ImGuiStyle& style = g.Style;
 | 
					    ImGuiStyle& style = g.Style;
 | 
				
			||||||
@@ -4927,7 +4927,7 @@ static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // When the window cannot fit all contents (either because of constraints, either because screen is too small),
 | 
					        // When the window cannot fit all contents (either because of constraints, either because screen is too small),
 | 
				
			||||||
        // we are growing the size on the other axis to compensate for expected scrollbar. FIXME: Might turn bigger than ViewportSize-WindowPadding.
 | 
					        // we are growing the size on the other axis to compensate for expected scrollbar. FIXME: Might turn bigger than ViewportSize-WindowPadding.
 | 
				
			||||||
        ImVec2 size_auto_fit_after_constraint = CalcSizeAfterConstraint(window, size_auto_fit);
 | 
					        ImVec2 size_auto_fit_after_constraint = CalcWindowSizeAfterConstraint(window, size_auto_fit);
 | 
				
			||||||
        bool will_have_scrollbar_x = (size_auto_fit_after_constraint.x - size_pad.x - size_decorations.x < size_contents.x && !(window->Flags & ImGuiWindowFlags_NoScrollbar) && (window->Flags & ImGuiWindowFlags_HorizontalScrollbar)) || (window->Flags & ImGuiWindowFlags_AlwaysHorizontalScrollbar);
 | 
					        bool will_have_scrollbar_x = (size_auto_fit_after_constraint.x - size_pad.x - size_decorations.x < size_contents.x && !(window->Flags & ImGuiWindowFlags_NoScrollbar) && (window->Flags & ImGuiWindowFlags_HorizontalScrollbar)) || (window->Flags & ImGuiWindowFlags_AlwaysHorizontalScrollbar);
 | 
				
			||||||
        bool will_have_scrollbar_y = (size_auto_fit_after_constraint.y - size_pad.y - size_decorations.y < size_contents.y && !(window->Flags & ImGuiWindowFlags_NoScrollbar)) || (window->Flags & ImGuiWindowFlags_AlwaysVerticalScrollbar);
 | 
					        bool will_have_scrollbar_y = (size_auto_fit_after_constraint.y - size_pad.y - size_decorations.y < size_contents.y && !(window->Flags & ImGuiWindowFlags_NoScrollbar)) || (window->Flags & ImGuiWindowFlags_AlwaysVerticalScrollbar);
 | 
				
			||||||
        if (will_have_scrollbar_x)
 | 
					        if (will_have_scrollbar_x)
 | 
				
			||||||
@@ -4940,8 +4940,10 @@ static ImVec2 CalcSizeAutoFit(ImGuiWindow* window, const ImVec2& size_contents)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ImVec2 ImGui::CalcWindowExpectedSize(ImGuiWindow* window)
 | 
					ImVec2 ImGui::CalcWindowExpectedSize(ImGuiWindow* window)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImVec2 size_contents = CalcContentSize(window);
 | 
					    ImVec2 size_contents = CalcWindowContentSize(window);
 | 
				
			||||||
    return CalcSizeAfterConstraint(window, CalcSizeAutoFit(window, size_contents));
 | 
					    ImVec2 size_auto_fit = CalcWindowAutoFitSize(window, size_contents);
 | 
				
			||||||
 | 
					    ImVec2 size_final = CalcWindowSizeAfterConstraint(window, size_auto_fit);
 | 
				
			||||||
 | 
					    return size_final;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ImGuiCol GetWindowBgColorIdxFromFlags(ImGuiWindowFlags flags)
 | 
					static ImGuiCol GetWindowBgColorIdxFromFlags(ImGuiWindowFlags flags)
 | 
				
			||||||
@@ -4958,7 +4960,7 @@ static void CalcResizePosSizeFromAnyCorner(ImGuiWindow* window, const ImVec2& co
 | 
				
			|||||||
    ImVec2 pos_min = ImLerp(corner_target, window->Pos, corner_norm);                // Expected window upper-left
 | 
					    ImVec2 pos_min = ImLerp(corner_target, window->Pos, corner_norm);                // Expected window upper-left
 | 
				
			||||||
    ImVec2 pos_max = ImLerp(window->Pos + window->Size, corner_target, corner_norm); // Expected window lower-right
 | 
					    ImVec2 pos_max = ImLerp(window->Pos + window->Size, corner_target, corner_norm); // Expected window lower-right
 | 
				
			||||||
    ImVec2 size_expected = pos_max - pos_min;
 | 
					    ImVec2 size_expected = pos_max - pos_min;
 | 
				
			||||||
    ImVec2 size_constrained = CalcSizeAfterConstraint(window, size_expected);
 | 
					    ImVec2 size_constrained = CalcWindowSizeAfterConstraint(window, size_expected);
 | 
				
			||||||
    *out_pos = pos_min;
 | 
					    *out_pos = pos_min;
 | 
				
			||||||
    if (corner_norm.x == 0.0f)
 | 
					    if (corner_norm.x == 0.0f)
 | 
				
			||||||
        out_pos->x -= (size_constrained.x - size_expected.x);
 | 
					        out_pos->x -= (size_constrained.x - size_expected.x);
 | 
				
			||||||
@@ -5039,7 +5041,7 @@ static bool ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au
 | 
				
			|||||||
        if (held && g.IO.MouseDoubleClicked[0] && resize_grip_n == 0)
 | 
					        if (held && g.IO.MouseDoubleClicked[0] && resize_grip_n == 0)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // Manual auto-fit when double-clicking
 | 
					            // Manual auto-fit when double-clicking
 | 
				
			||||||
            size_target = CalcSizeAfterConstraint(window, size_auto_fit);
 | 
					            size_target = CalcWindowSizeAfterConstraint(window, size_auto_fit);
 | 
				
			||||||
            ret_auto_fit = true;
 | 
					            ret_auto_fit = true;
 | 
				
			||||||
            ClearActiveID();
 | 
					            ClearActiveID();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -5094,7 +5096,7 @@ static bool ImGui::UpdateManualResize(ImGuiWindow* window, const ImVec2& size_au
 | 
				
			|||||||
            g.NavDisableMouseHover = true;
 | 
					            g.NavDisableMouseHover = true;
 | 
				
			||||||
            resize_grip_col[0] = GetColorU32(ImGuiCol_ResizeGripActive);
 | 
					            resize_grip_col[0] = GetColorU32(ImGuiCol_ResizeGripActive);
 | 
				
			||||||
            // FIXME-NAV: Should store and accumulate into a separate size buffer to handle sizing constraints properly, right now a constraint will make us stuck.
 | 
					            // FIXME-NAV: Should store and accumulate into a separate size buffer to handle sizing constraints properly, right now a constraint will make us stuck.
 | 
				
			||||||
            size_target = CalcSizeAfterConstraint(window, window->SizeFull + nav_resize_delta);
 | 
					            size_target = CalcWindowSizeAfterConstraint(window, window->SizeFull + nav_resize_delta);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -5481,7 +5483,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
				
			|||||||
        // UPDATE CONTENTS SIZE, UPDATE HIDDEN STATUS
 | 
					        // UPDATE CONTENTS SIZE, UPDATE HIDDEN STATUS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Update contents size from last frame for auto-fitting (or use explicit size)
 | 
					        // Update contents size from last frame for auto-fitting (or use explicit size)
 | 
				
			||||||
        window->ContentSize = CalcContentSize(window);
 | 
					        window->ContentSize = CalcWindowContentSize(window);
 | 
				
			||||||
        if (window->HiddenFramesCanSkipItems > 0)
 | 
					        if (window->HiddenFramesCanSkipItems > 0)
 | 
				
			||||||
            window->HiddenFramesCanSkipItems--;
 | 
					            window->HiddenFramesCanSkipItems--;
 | 
				
			||||||
        if (window->HiddenFramesCannotSkipItems > 0)
 | 
					        if (window->HiddenFramesCannotSkipItems > 0)
 | 
				
			||||||
@@ -5545,7 +5547,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
				
			|||||||
        // SIZE
 | 
					        // SIZE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Calculate auto-fit size, handle automatic resize
 | 
					        // Calculate auto-fit size, handle automatic resize
 | 
				
			||||||
        const ImVec2 size_auto_fit = CalcSizeAutoFit(window, window->ContentSize);
 | 
					        const ImVec2 size_auto_fit = CalcWindowAutoFitSize(window, window->ContentSize);
 | 
				
			||||||
        bool use_current_size_for_scrollbar_x = window_just_created;
 | 
					        bool use_current_size_for_scrollbar_x = window_just_created;
 | 
				
			||||||
        bool use_current_size_for_scrollbar_y = window_just_created;
 | 
					        bool use_current_size_for_scrollbar_y = window_just_created;
 | 
				
			||||||
        if ((flags & ImGuiWindowFlags_AlwaysAutoResize) && !window->Collapsed)
 | 
					        if ((flags & ImGuiWindowFlags_AlwaysAutoResize) && !window->Collapsed)
 | 
				
			||||||
@@ -5581,7 +5583,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Apply minimum/maximum window size constraints and final size
 | 
					        // Apply minimum/maximum window size constraints and final size
 | 
				
			||||||
        window->SizeFull = CalcSizeAfterConstraint(window, window->SizeFull);
 | 
					        window->SizeFull = CalcWindowSizeAfterConstraint(window, window->SizeFull);
 | 
				
			||||||
        window->Size = window->Collapsed && !(flags & ImGuiWindowFlags_ChildWindow) ? window->TitleBarRect().GetSize() : window->SizeFull;
 | 
					        window->Size = window->Collapsed && !(flags & ImGuiWindowFlags_ChildWindow) ? window->TitleBarRect().GetSize() : window->SizeFull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Decoration size
 | 
					        // Decoration size
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user