Я немного сбит с толку, потому что в конце концов звучит так, будто вы хотите просто изменить размер окна до размера объекта, сохраняя при этом определенный минимальный размер.
Таким образом, все, что вам нужно, этопростой вызов std::max()
, чтобы определить большее значение двух входных данных:
unsigned int width = std::max(min_width, object_width);
unsigned int height = std::max(min_height, object_height);
При использовании нового размера оно в основном изменит размер окна, чтобы соответствовать вашему объекту, если объект не меньше вашего минимального размера.
Вы можете использовать этот же шаблон, чтобы также добавить максимальный размер, используя std::min()
в качестве дополнительного слоя:
unsigned int width = std::min(max_width, std::max(min_width, object_width));
unsigned int height = std::min(max_height, std::max(min_height, object_height));
Редактировать: Как правильно подсказал Болов, это можетупростите еще больше для современных компиляторов, использующих новые std::clamp
:
unsigned int width = std::clamp(object_width, min_width, max_width);
unsigned int height = std::clamp(object_height, min_height, max_height);