|
|
|
@ -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."); |
|
|
|
|
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)); } |
|
|
|
|
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(); |
|
|
|
|
} |
|
|
|
|