From a1bca4d8f4c10d5d9f9209c1138c2fbc825ca6a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 5 Nov 2019 13:48:22 +0100 Subject: [PATCH] Platform: minor cleanup, doc++, make cursor LUTs file-local. --- src/Magnum/Platform/GlfwApplication.cpp | 25 +++++++------- src/Magnum/Platform/GlfwApplication.h | 11 +++---- src/Magnum/Platform/Sdl2Application.cpp | 43 +++++++++++++------------ src/Magnum/Platform/Sdl2Application.h | 11 +++---- 4 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/Magnum/Platform/GlfwApplication.cpp b/src/Magnum/Platform/GlfwApplication.cpp index 91f2a7c54..76736245d 100644 --- a/src/Magnum/Platform/GlfwApplication.cpp +++ b/src/Magnum/Platform/GlfwApplication.cpp @@ -605,6 +605,19 @@ int GlfwApplication::exec() { return _exitCode; } +namespace { + +constexpr Int CursorMap[] { + GLFW_ARROW_CURSOR, + GLFW_IBEAM_CURSOR, + GLFW_CROSSHAIR_CURSOR, + GLFW_HRESIZE_CURSOR, + GLFW_VRESIZE_CURSOR, + GLFW_HAND_CURSOR +}; + +} + void GlfwApplication::setCursor(Cursor cursor) { CORRADE_INTERNAL_ASSERT(UnsignedInt(cursor) < Containers::arraySize(_cursors)); @@ -620,18 +633,8 @@ void GlfwApplication::setCursor(Cursor cursor) { glfwSetInputMode(_window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); } - if(!_cursors[UnsignedInt(cursor)]) { - constexpr Int CursorMap[] { - GLFW_ARROW_CURSOR, - GLFW_IBEAM_CURSOR, - GLFW_CROSSHAIR_CURSOR, - GLFW_HRESIZE_CURSOR, - GLFW_VRESIZE_CURSOR, - GLFW_HAND_CURSOR - }; - + if(!_cursors[UnsignedInt(cursor)]) _cursors[UnsignedInt(cursor)] = glfwCreateStandardCursor(CursorMap[UnsignedInt(cursor)]); - } glfwSetCursor(_window, _cursors[UnsignedInt(cursor)]); } diff --git a/src/Magnum/Platform/GlfwApplication.h b/src/Magnum/Platform/GlfwApplication.h index e0bad2345..a5126cd99 100644 --- a/src/Magnum/Platform/GlfwApplication.h +++ b/src/Magnum/Platform/GlfwApplication.h @@ -492,7 +492,7 @@ class GlfwApplication { * * @see @ref setCursor() */ - enum class Cursor : UnsignedInt { + enum class Cursor: UnsignedInt { Arrow, /**< Arrow */ TextInput, /**< Text input */ Crosshair, /**< Crosshair */ @@ -503,15 +503,14 @@ class GlfwApplication { HiddenLocked /**< Hidden and locked */ }; - public: /** - * @brief Set the cursor to the @p type + * @brief Set cursor type + * + * Default is @ref Cursor::Arrow. */ void setCursor(Cursor cursor); - /** - * @brief Get the current cursor type - */ + /** @brief Get current cursor type */ Cursor cursor(); /** @brief Warp mouse cursor to given coordinates */ diff --git a/src/Magnum/Platform/Sdl2Application.cpp b/src/Magnum/Platform/Sdl2Application.cpp index 98fb44b73..1a11b6bfa 100644 --- a/src/Magnum/Platform/Sdl2Application.cpp +++ b/src/Magnum/Platform/Sdl2Application.cpp @@ -886,6 +886,25 @@ bool Sdl2Application::mainLoopIteration() { } #ifndef CORRADE_TARGET_EMSCRIPTEN +namespace { + +constexpr SDL_SystemCursor CursorMap[] { + SDL_SYSTEM_CURSOR_ARROW, + SDL_SYSTEM_CURSOR_IBEAM, + SDL_SYSTEM_CURSOR_WAIT, + SDL_SYSTEM_CURSOR_CROSSHAIR, + SDL_SYSTEM_CURSOR_WAITARROW, + SDL_SYSTEM_CURSOR_SIZENWSE, + SDL_SYSTEM_CURSOR_SIZENESW, + SDL_SYSTEM_CURSOR_SIZEWE, + SDL_SYSTEM_CURSOR_SIZENS, + SDL_SYSTEM_CURSOR_SIZEALL, + SDL_SYSTEM_CURSOR_NO, + SDL_SYSTEM_CURSOR_HAND +}; + +} + void Sdl2Application::setCursor(Cursor cursor) { CORRADE_INTERNAL_ASSERT(UnsignedInt(cursor) < Containers::arraySize(_cursors)); @@ -904,24 +923,8 @@ void Sdl2Application::setCursor(Cursor cursor) { SDL_SetRelativeMouseMode(SDL_FALSE); } - if(!_cursors[UnsignedInt(cursor)]) { - constexpr SDL_SystemCursor CursorMap[] { - SDL_SYSTEM_CURSOR_ARROW, - SDL_SYSTEM_CURSOR_IBEAM, - SDL_SYSTEM_CURSOR_WAIT, - SDL_SYSTEM_CURSOR_CROSSHAIR, - SDL_SYSTEM_CURSOR_WAITARROW, - SDL_SYSTEM_CURSOR_SIZENWSE, - SDL_SYSTEM_CURSOR_SIZENESW, - SDL_SYSTEM_CURSOR_SIZEWE, - SDL_SYSTEM_CURSOR_SIZENS, - SDL_SYSTEM_CURSOR_SIZEALL, - SDL_SYSTEM_CURSOR_NO, - SDL_SYSTEM_CURSOR_HAND - }; - + if(!_cursors[UnsignedInt(cursor)]) _cursors[UnsignedInt(cursor)] = SDL_CreateSystemCursor(CursorMap[UnsignedInt(cursor)]); - } SDL_SetCursor(_cursors[UnsignedInt(cursor)]); } @@ -934,10 +937,8 @@ Sdl2Application::Cursor Sdl2Application::cursor() { SDL_Cursor* cursor = SDL_GetCursor(); - if(cursor) - for(UnsignedInt i = 0; i < sizeof(_cursors); i++) - if(_cursors[i] == cursor) - return Cursor(i); + if(cursor) for(UnsignedInt i = 0; i < sizeof(_cursors); i++) + if(_cursors[i] == cursor) return Cursor(i); return Cursor::Arrow; } diff --git a/src/Magnum/Platform/Sdl2Application.h b/src/Magnum/Platform/Sdl2Application.h index 188158b09..b16c7395c 100644 --- a/src/Magnum/Platform/Sdl2Application.h +++ b/src/Magnum/Platform/Sdl2Application.h @@ -838,7 +838,7 @@ class Sdl2Application { * * @see @ref setCursor() */ - enum class Cursor : UnsignedInt { + enum class Cursor: UnsignedInt { Arrow, /**< Arrow */ TextInput, /**< Text input */ Wait, /**< Wait */ @@ -856,16 +856,15 @@ class Sdl2Application { }; #endif - public: #ifndef CORRADE_TARGET_EMSCRIPTEN /** - * @brief Set the cursor to the @p type + * @brief Set cursor type + * + * Default is @ref Cursor::Arrow. */ void setCursor(Cursor cursor); - /** - * @brief Get the current cursor type - */ + /** @brief Get current cursor type */ Cursor cursor(); #endif