From 65c8bfc6558c5008a50f1458562703e14e73c15f Mon Sep 17 00:00:00 2001 From: Laurent Gomila Date: Sat, 6 Oct 2012 00:13:10 +0200 Subject: [PATCH] Added overloads of sfMouse_getPosition and sfMouse_setPosition for sfRenderWindow --- include/SFML/Graphics/RenderWindow.h | 25 +++++++++++++++++++++++++ src/SFML/Graphics/RenderWindow.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/include/SFML/Graphics/RenderWindow.h b/include/SFML/Graphics/RenderWindow.h index c1fe2c5..db73859 100644 --- a/include/SFML/Graphics/RenderWindow.h +++ b/include/SFML/Graphics/RenderWindow.h @@ -420,5 +420,30 @@ CSFML_GRAPHICS_API void sfRenderWindow_resetGLStates(sfRenderWindow* renderWindo //////////////////////////////////////////////////////////// CSFML_GRAPHICS_API sfImage* sfRenderWindow_capture(const sfRenderWindow* renderWindow); +//////////////////////////////////////////////////////////// +/// \brief Get the current position of the mouse relatively to a render-window +/// +/// This function returns the current position of the mouse +/// cursor relative to the given render-window, or desktop if NULL is passed. +/// +/// \param relativeTo Reference window +/// +/// \return Position of the mouse cursor, relative to the given render-window +/// +//////////////////////////////////////////////////////////// +CSFML_GRAPHICS_API sfVector2i sfMouse_getPositionRenderWindow(const sfRenderWindow* relativeTo); + +//////////////////////////////////////////////////////////// +/// \brief Set the current position of the mouse relatively to a render-window +/// +/// This function sets the current position of the mouse +/// cursor relative to the given render-window, or desktop if NULL is passed. +/// +/// \param position New position of the mouse +/// \param relativeTo Reference window +/// +//////////////////////////////////////////////////////////// +CSFML_GRAPHICS_API void sfMouse_setPositionRenderWindow(sfVector2i position, const sfRenderWindow* relativeTo); + #endif // SFML_RENDERWINDOW_H diff --git a/src/SFML/Graphics/RenderWindow.cpp b/src/SFML/Graphics/RenderWindow.cpp index 23c46ba..407a198 100644 --- a/src/SFML/Graphics/RenderWindow.cpp +++ b/src/SFML/Graphics/RenderWindow.cpp @@ -443,3 +443,27 @@ sfImage* sfRenderWindow_capture(const sfRenderWindow* renderWindow) return image; } + + +//////////////////////////////////////////////////////////// +sfVector2i sfMouse_getPositionRenderWindow(const sfRenderWindow* relativeTo) +{ + sf::Vector2i sfmlPos; + if (relativeTo) + sfmlPos = sf::Mouse::getPosition(relativeTo->This); + else + sfmlPos = sf::Mouse::getPosition(); + + sfVector2i position = {sfmlPos.x, sfmlPos.y}; + return position; +} + + +//////////////////////////////////////////////////////////// +void sfMouse_setPositionRenderWindow(sfVector2i position, const sfRenderWindow* relativeTo) +{ + if (relativeTo) + sf::Mouse::setPosition(sf::Vector2i(position.x, position.y), relativeTo->This); + else + sf::Mouse::setPosition(sf::Vector2i(position.x, position.y)); +}