mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Examples: Constrained Resize: Added more test cases (for #1417)
This commit is contained in:
		@@ -2145,31 +2145,40 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
 | 
			
		||||
        static void Step(ImGuiSizeConstraintCallbackData* data)   { float step = (float)(int)(intptr_t)data->UserData; data->DesiredSize = ImVec2((int)(data->DesiredSize.x / step + 0.5f) * step, (int)(data->DesiredSize.y / step + 0.5f) * step); }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    static bool auto_resize = false;
 | 
			
		||||
    static int type = 0;
 | 
			
		||||
    static int display_lines = 10;
 | 
			
		||||
    if (type == 0) ImGui::SetNextWindowSizeConstraints(ImVec2(-1, 0),    ImVec2(-1, FLT_MAX));      // Vertical only
 | 
			
		||||
    if (type == 1) ImGui::SetNextWindowSizeConstraints(ImVec2(0, -1),    ImVec2(FLT_MAX, -1));      // Horizontal only
 | 
			
		||||
    if (type == 2) ImGui::SetNextWindowSizeConstraints(ImVec2(100, 100), ImVec2(FLT_MAX, FLT_MAX)); // Width > 100, Height > 100
 | 
			
		||||
    if (type == 3) ImGui::SetNextWindowSizeConstraints(ImVec2(300, 0),   ImVec2(400, FLT_MAX));     // Width 300-400
 | 
			
		||||
    if (type == 4) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0),     ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square);          // Always Square
 | 
			
		||||
    if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0),     ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)100);// Fixed Step
 | 
			
		||||
    if (type == 3) ImGui::SetNextWindowSizeConstraints(ImVec2(400, -1),  ImVec2(500, -1));          // Width 400-500
 | 
			
		||||
    if (type == 4) ImGui::SetNextWindowSizeConstraints(ImVec2(-1, 400),  ImVec2(-1, 500));          // Height 400-500
 | 
			
		||||
    if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0),     ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square);          // Always Square
 | 
			
		||||
    if (type == 6) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0),     ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)100);// Fixed Step
 | 
			
		||||
 | 
			
		||||
    if (ImGui::Begin("Example: Constrained Resize", p_open))
 | 
			
		||||
    ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0;
 | 
			
		||||
    if (ImGui::Begin("Example: Constrained Resize", p_open, flags))
 | 
			
		||||
    {
 | 
			
		||||
        const char* desc[] = 
 | 
			
		||||
        {
 | 
			
		||||
            "Resize vertical only",
 | 
			
		||||
            "Resize horizontal only",
 | 
			
		||||
            "Width > 100, Height > 100",
 | 
			
		||||
            "Width 300-400",
 | 
			
		||||
            "Width 400-500",
 | 
			
		||||
            "Height 400-500",
 | 
			
		||||
            "Custom: Always Square",
 | 
			
		||||
            "Custom: Fixed Steps (100)",
 | 
			
		||||
        };
 | 
			
		||||
        ImGui::Combo("Constraint", &type, desc, IM_ARRAYSIZE(desc)); 
 | 
			
		||||
        if (ImGui::Button("200x200")) { ImGui::SetWindowSize(ImVec2(200, 200)); } ImGui::SameLine();
 | 
			
		||||
        if (ImGui::Button("500x500")) { ImGui::SetWindowSize(ImVec2(500, 500)); } ImGui::SameLine();
 | 
			
		||||
        if (ImGui::Button("800x200")) { ImGui::SetWindowSize(ImVec2(800, 200)); }
 | 
			
		||||
        for (int i = 0; i < 10; i++) 
 | 
			
		||||
            ImGui::Text("Hello, sailor! Making this line long enough for the example.");
 | 
			
		||||
        ImGui::PushItemWidth(200);
 | 
			
		||||
        ImGui::Combo("Constraint", &type, desc, IM_ARRAYSIZE(desc));
 | 
			
		||||
        ImGui::DragInt("Lines", &display_lines, 0.2f, 1, 100);
 | 
			
		||||
        ImGui::PopItemWidth();
 | 
			
		||||
        ImGui::Checkbox("Auto-resize", &auto_resize);
 | 
			
		||||
        for (int i = 0; i < display_lines; i++)
 | 
			
		||||
            ImGui::Text("%*sHello, sailor! Making this line long enough for the example.", i * 4, "");
 | 
			
		||||
    }
 | 
			
		||||
    ImGui::End();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user