diff --git a/include/CSFML/Graphics/RenderWindow.h b/include/CSFML/Graphics/RenderWindow.h index c9362708..007244a8 100644 --- a/include/CSFML/Graphics/RenderWindow.h +++ b/include/CSFML/Graphics/RenderWindow.h @@ -216,6 +216,28 @@ CSFML_GRAPHICS_API bool sfRenderWindow_isSrgb(const sfRenderWindow* renderWindow //////////////////////////////////////////////////////////// CSFML_GRAPHICS_API void sfRenderWindow_setSize(sfRenderWindow* renderWindow, sfVector2u size); +//////////////////////////////////////////////////////////// +/// \brief Set the minimum window rendering region size +/// +/// Pass a `NULL` vector to unset the minimum size +/// +/// \param renderWindow Render window object +/// \param minimumSize New minimum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_GRAPHICS_API void sfRenderWindow_setMinimumSize(sfRenderWindow* renderWindow, const sfVector2u* minimumSize); + +//////////////////////////////////////////////////////////// +/// \brief Set the maximum window rendering region size +/// +/// Pass a `NULL` vector to unset the maximum size +/// +/// \param renderWindow Render window object +/// \param maximumSize New maximum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_GRAPHICS_API void sfRenderWindow_setMaximumSize(sfRenderWindow* renderWindow, const sfVector2u* maximumSize); + //////////////////////////////////////////////////////////// /// \brief Change the title of a render window /// diff --git a/include/CSFML/Window/Window.h b/include/CSFML/Window/Window.h index 8c32cd88..c60ea33a 100644 --- a/include/CSFML/Window/Window.h +++ b/include/CSFML/Window/Window.h @@ -280,6 +280,28 @@ CSFML_WINDOW_API sfVector2u sfWindow_getSize(const sfWindow* window); //////////////////////////////////////////////////////////// CSFML_WINDOW_API void sfWindow_setSize(sfWindow* window, sfVector2u size); +//////////////////////////////////////////////////////////// +/// \brief Set the minimum window rendering region size +/// +/// Pass a `NULL` vector to unset the minimum size +/// +/// \param window Window object +/// \param minimumSize New minimum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API void sfWindow_setMinimumSize(sfWindow* window, const sfVector2u* minimumSize); + +//////////////////////////////////////////////////////////// +/// \brief Set the maximum window rendering region size +/// +/// Pass a `NULL` vector to unset the maximum size +/// +/// \param window Window object +/// \param maximumSize New maximum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API void sfWindow_setMaximumSize(sfWindow* window, const sfVector2u* maximumSize); + //////////////////////////////////////////////////////////// /// \brief Change the title of a window /// diff --git a/include/CSFML/Window/WindowBase.h b/include/CSFML/Window/WindowBase.h index 4d922c01..427c4c34 100644 --- a/include/CSFML/Window/WindowBase.h +++ b/include/CSFML/Window/WindowBase.h @@ -236,6 +236,28 @@ CSFML_WINDOW_API sfVector2u sfWindowBase_getSize(const sfWindowBase* windowBase) //////////////////////////////////////////////////////////// CSFML_WINDOW_API void sfWindowBase_setSize(sfWindowBase* windowBase, sfVector2u size); +//////////////////////////////////////////////////////////// +/// \brief Set the minimum window rendering region size +/// +/// Pass a `NULL` vector to unset the minimum size +/// +/// \param windowBase Window object +/// \param minimumSize New minimum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API void sfWindowBase_setMinimumSize(sfWindowBase* windowBase, const sfVector2u* minimumSize); + +//////////////////////////////////////////////////////////// +/// \brief Set the maximum window rendering region size +/// +/// Pass a `NULL` vector to unset the maximum size +/// +/// \param windowBase Window object +/// \param maximumSize New maximum size, in pixels +/// +//////////////////////////////////////////////////////////// +CSFML_WINDOW_API void sfWindowBase_setMaximumSize(sfWindowBase* windowBase, const sfVector2u* maximumSize); + //////////////////////////////////////////////////////////// /// \brief Change the title of a window /// diff --git a/src/CSFML/Graphics/RenderWindow.cpp b/src/CSFML/Graphics/RenderWindow.cpp index ad77b49f..d2e881e0 100644 --- a/src/CSFML/Graphics/RenderWindow.cpp +++ b/src/CSFML/Graphics/RenderWindow.cpp @@ -198,6 +198,38 @@ void sfRenderWindow_setSize(sfRenderWindow* renderWindow, sfVector2u size) } +//////////////////////////////////////////////////////////// +void sfRenderWindow_setMinimumSize(sfRenderWindow* renderWindow, const sfVector2u* minimumSize) +{ + assert(renderWindow); + + if (minimumSize == nullptr) + { + renderWindow->setMinimumSize(std::nullopt); + } + else + { + renderWindow->setMinimumSize(convertVector2(*minimumSize)); + } +} + + +//////////////////////////////////////////////////////////// +void sfRenderWindow_setMaximumSize(sfRenderWindow* renderWindow, const sfVector2u* maximumSize) +{ + assert(renderWindow); + + if (maximumSize == nullptr) + { + renderWindow->setMaximumSize(std::nullopt); + } + else + { + renderWindow->setMaximumSize(convertVector2(*maximumSize)); + } +} + + //////////////////////////////////////////////////////////// void sfRenderWindow_setTitle(sfRenderWindow* renderWindow, const char* title) { diff --git a/src/CSFML/Window/Window.cpp b/src/CSFML/Window/Window.cpp index 7d73027f..07989f4b 100644 --- a/src/CSFML/Window/Window.cpp +++ b/src/CSFML/Window/Window.cpp @@ -159,6 +159,38 @@ void sfWindow_setSize(sfWindow* window, sfVector2u size) } +//////////////////////////////////////////////////////////// +void sfWindow_setMinimumSize(sfWindow* window, const sfVector2u* minimumSize) +{ + assert(window); + + if (minimumSize == nullptr) + { + window->setMinimumSize(std::nullopt); + } + else + { + window->setMinimumSize(convertVector2(*minimumSize)); + } +} + + +//////////////////////////////////////////////////////////// +void sfWindow_setMaximumSize(sfWindow* window, const sfVector2u* maximumSize) +{ + assert(window); + + if (maximumSize == nullptr) + { + window->setMaximumSize(std::nullopt); + } + else + { + window->setMaximumSize(convertVector2(*maximumSize)); + } +} + + //////////////////////////////////////////////////////////// void sfWindow_setTitle(sfWindow* window, const char* title) { diff --git a/src/CSFML/Window/WindowBase.cpp b/src/CSFML/Window/WindowBase.cpp index 3cdb6274..70af7fd7 100644 --- a/src/CSFML/Window/WindowBase.cpp +++ b/src/CSFML/Window/WindowBase.cpp @@ -34,6 +34,8 @@ #include +#include + //////////////////////////////////////////////////////////// sfWindowBase* sfWindowBase_create(sfVideoMode mode, const char* title, uint32_t style, sfWindowState state) @@ -141,6 +143,38 @@ void sfWindowBase_setSize(sfWindowBase* windowBase, sfVector2u size) } +//////////////////////////////////////////////////////////// +void sfWindowBase_setMinimumSize(sfWindowBase* windowBase, const sfVector2u* minimumSize) +{ + assert(windowBase); + + if (minimumSize == nullptr) + { + windowBase->setMinimumSize(std::nullopt); + } + else + { + windowBase->setMinimumSize(convertVector2(*minimumSize)); + } +} + + +//////////////////////////////////////////////////////////// +void sfWindowBase_setMaximumSize(sfWindowBase* windowBase, const sfVector2u* maximumSize) +{ + assert(windowBase); + + if (maximumSize == nullptr) + { + windowBase->setMaximumSize(std::nullopt); + } + else + { + windowBase->setMaximumSize(convertVector2(*maximumSize)); + } +} + + //////////////////////////////////////////////////////////// void sfWindowBase_setTitle(sfWindowBase* windowBase, const char* title) {