Browse Source

Platform: improve {Glfw,Sdl2}Application.

Two new methods, setMinWindowSize() and setMaxWindowSize(), were added.
They use the underlying library's API to achieve their purpose.
pull/338/head
Guillaume Jacquemin 7 years ago committed by Vladimír Vondruš
parent
commit
b4dac78ef3
  1. 16
      src/Magnum/Platform/GlfwApplication.cpp
  2. 27
      src/Magnum/Platform/GlfwApplication.h
  3. 12
      src/Magnum/Platform/Sdl2Application.cpp
  4. 24
      src/Magnum/Platform/Sdl2Application.h

16
src/Magnum/Platform/GlfwApplication.cpp

@ -534,6 +534,22 @@ Vector2i GlfwApplication::windowSize() const {
return size;
}
#if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302
void GlfwApplication::setMinWindowSize(const Vector2i& size) {
CORRADE_ASSERT(_window, "Platform::GlfwApplication::setMinWindowSize(): no window opened", );
glfwSetWindowSizeLimits(_window, size.x(), size.y(), _maxWindowSize.x(), _maxWindowSize.y());
_minWindowSize = size;
}
void GlfwApplication::setMaxWindowSize(const Vector2i& size) {
CORRADE_ASSERT(_window, "Platform::GlfwApplication::setMaxWindowSize(): no window opened", );
glfwSetWindowSizeLimits(_window, _minWindowSize.x(), _minWindowSize.y(), size.x(), size.y());
_maxWindowSize = size;
}
#endif
#ifdef MAGNUM_TARGET_GL
Vector2i GlfwApplication::framebufferSize() const {
CORRADE_ASSERT(_window, "Platform::GlfwApplication::framebufferSize(): no window opened", {});

27
src/Magnum/Platform/GlfwApplication.h

@ -336,6 +336,30 @@ class GlfwApplication {
*/
Vector2i windowSize() const;
#if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302 || defined(DOXYGEN_GENERATING_OUTPUT)
/**
* @brief Set window minimum size
* @param size The minimum size, in screen coordinates
*
* If a value is set to @cpp -1 @ce, it will disable/remove the
* corresponding limit.
*
* @note Supported since GLFW 3.2.
*/
void setMinWindowSize(const Vector2i& size = {-1, -1});
/**
* @brief Set window maximum size
* @param size The maximum size, in screen coordinates
*
* If a value is set to @cpp -1 @ce, it will disable/remove the
* corresponding limit.
*
* @note Supported since GLFW 3.2.
*/
void setMaxWindowSize(const Vector2i& size = {-1, -1});
#endif
#if defined(MAGNUM_TARGET_GL) || defined(DOXYGEN_GENERATING_OUTPUT)
/**
* @brief Framebuffer size
@ -552,6 +576,9 @@ class GlfwApplication {
Containers::Pointer<Platform::GLContext> _context;
#endif
int _exitCode;
Vector2i _minWindowSize;
Vector2i _maxWindowSize;
};
CORRADE_ENUMSET_OPERATORS(GlfwApplication::Flags)

12
src/Magnum/Platform/Sdl2Application.cpp

@ -550,6 +550,18 @@ Vector2i Sdl2Application::windowSize() const {
return size;
}
#ifndef CORRADE_TARGET_EMSCRIPTEN
void Sdl2Application::setMinWindowSize(const Vector2i& size) {
CORRADE_ASSERT(_window, "Platform::Sdl2Application::setMinWindowSize(): no window opened", );
SDL_SetWindowMinimumSize(_window, size.x(), size.y());
}
void Sdl2Application::setMaxWindowSize(const Vector2i& size) {
CORRADE_ASSERT(_window, "Platform::Sdl2Application::setMaxWindowSize(): no window opened", );
SDL_SetWindowMaximumSize(_window, size.x(), size.y());
}
#endif
#ifdef MAGNUM_TARGET_GL
Vector2i Sdl2Application::framebufferSize() const {
Vector2i size;

24
src/Magnum/Platform/Sdl2Application.h

@ -639,6 +639,30 @@ class Sdl2Application {
*/
Vector2i windowSize() const;
#if !defined(CORRADE_TARGET_EMSCRIPTEN) || defined(DOXYGEN_GENERATING_OUTPUT)
/**
* @brief Set minimum window size
* @param size The minimum size, in screen coordinates
*
* Note that, unlike in @ref GlfwApplication, SDL2 doesn't have a way
* to disable/remove a size limit.
*
* @note Not available in @ref CORRADE_TARGET_EMSCRIPTEN "Emscripten".
*/
void setMinWindowSize(const Vector2i& size);
/**
* @brief Set maximal window size
* @param size The maximum size, in screen coordinates
*
* Note that, unlike in @ref GlfwApplication, SDL2 doesn't have a way
* to disable/remove a size limit.
*
* @note Not available in @ref CORRADE_TARGET_EMSCRIPTEN "Emscripten".
*/
void setMaxWindowSize(const Vector2i& size);
#endif
#if defined(MAGNUM_TARGET_GL) || defined(DOXYGEN_GENERATING_OUTPUT)
/**
* @brief Framebuffer size

Loading…
Cancel
Save