1
0
Fork 0
mirror of https://github.com/ocornut/imgui.git synced 2026-01-09 23:54:20 +00:00
This commit is contained in:
imdongye 2025-12-27 20:13:33 +00:00 committed by GitHub
commit 5c3d7550b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9651,11 +9651,33 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
static void AspectRatio(ImGuiSizeCallbackData* data)
{
float aspect_ratio = *(float*)data->UserData;
data->DesiredSize.y = (float)(int)(data->DesiredSize.x / aspect_ratio);
int current_cursor = ImGui::GetMouseCursor();
if(current_cursor == ImGuiMouseCursor_ResizeNWSE || current_cursor == ImGuiMouseCursor_ResizeNESW)
{
if(aspect_ratio > data->DesiredSize.x / data->DesiredSize.y)
data->DesiredSize.x = aspect_ratio * data->DesiredSize.y;
else
data->DesiredSize.y = data->DesiredSize.x / aspect_ratio;
}
else if(current_cursor == ImGuiMouseCursor_ResizeNS)
data->DesiredSize.x = aspect_ratio * data->DesiredSize.y;
else if(current_cursor == ImGuiMouseCursor_ResizeEW)
data->DesiredSize.y = data->DesiredSize.x / aspect_ratio;
}
static void Square(ImGuiSizeCallbackData* data)
{
data->DesiredSize.x = data->DesiredSize.y = IM_MAX(data->DesiredSize.x, data->DesiredSize.y);
int current_cursor = ImGui::GetMouseCursor();
if(current_cursor == ImGuiMouseCursor_ResizeNWSE || current_cursor == ImGuiMouseCursor_ResizeNESW)
{
if(1.f > data->DesiredSize.x / data->DesiredSize.y)
data->DesiredSize.x = data->DesiredSize.y;
else
data->DesiredSize.y = data->DesiredSize.x;
}
else if(current_cursor == ImGuiMouseCursor_ResizeNS)
data->DesiredSize.x = data->DesiredSize.y;
else if(current_cursor == ImGuiMouseCursor_ResizeEW)
data->DesiredSize.y = data->DesiredSize.x;
}
static void Step(ImGuiSizeCallbackData* data)
{