Removed Window::GetCursorPosition/SetCursorPosition, added Mouse::GetPosition/SetPosition (two versions: one that handles desktop coordinates, one that handles window coordinates)
This commit is contained in:
parent
9441bd6e8c
commit
270f505570
@ -90,8 +90,8 @@ int main()
|
|||||||
glClear(GL_DEPTH_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
// We get the position of the mouse cursor, so that we can move the box accordingly
|
// We get the position of the mouse cursor, so that we can move the box accordingly
|
||||||
float x = window.GetCursorPosition().x * 200.f / window.GetWidth() - 100.f;
|
float x = sf::Mouse::GetPosition(window).x * 200.f / window.GetWidth() - 100.f;
|
||||||
float y = -window.GetCursorPosition().y * 200.f / window.GetHeight() + 100.f;
|
float y = -sf::Mouse::GetPosition(window).y * 200.f / window.GetHeight() + 100.f;
|
||||||
|
|
||||||
// Apply some transformations
|
// Apply some transformations
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
@ -202,8 +202,8 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get the mouse position in the range [0, 1]
|
// Get the mouse position in the range [0, 1]
|
||||||
float mouseX = window.GetCursorPosition().x / static_cast<float>(window.GetWidth());
|
float mouseX = sf::Mouse::GetPosition(window).x / static_cast<float>(window.GetWidth());
|
||||||
float mouseY = window.GetCursorPosition().y / static_cast<float>(window.GetHeight());
|
float mouseY = sf::Mouse::GetPosition(window).y / static_cast<float>(window.GetHeight());
|
||||||
|
|
||||||
// Update the shaders
|
// Update the shaders
|
||||||
backgroundShader.Update(mouseX, mouseY);
|
backgroundShader.Update(mouseX, mouseY);
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
|
|
||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
|
class Window;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Give access to the real-time state of the mouse
|
/// \brief Give access to the real-time state of the mouse
|
||||||
///
|
///
|
||||||
@ -68,18 +70,51 @@ public :
|
|||||||
static bool IsButtonPressed(Button button);
|
static bool IsButtonPressed(Button button);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Get the current position of the mouse
|
/// \brief Get the current position of the mouse in desktop coordinates
|
||||||
///
|
///
|
||||||
/// This function returns the current position of the mouse
|
/// This function returns the global position of the mouse
|
||||||
/// cursor.
|
/// cursor on the desktop.
|
||||||
/// If the cursor is over a SFML window, the returned position
|
|
||||||
/// is relative to this window. Otherwise, the returned position
|
|
||||||
/// is in desktop coordinates.
|
|
||||||
///
|
///
|
||||||
/// \return Current position of the mouse
|
/// \return Current position of the mouse
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
static Vector2i GetPosition();
|
static Vector2i GetPosition();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Get the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
///
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
/// \return Current position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static Vector2i GetPosition(const Window& relativeTo);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in desktop coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the global position of the mouse
|
||||||
|
/// cursor on the desktop.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetPosition(const Vector2i& position);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Get the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetPosition(const Vector2i& position, const Window& relativeTo);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sf
|
} // namespace sf
|
||||||
@ -107,10 +142,11 @@ public :
|
|||||||
/// moved, pressed or released when your window is out of focus
|
/// moved, pressed or released when your window is out of focus
|
||||||
/// and no event is triggered.
|
/// and no event is triggered.
|
||||||
///
|
///
|
||||||
/// Note that the sf::Mouse::GetPosition function has a special
|
/// The SetPosition and GetPosition functions can be used to change
|
||||||
/// behaviour: it returns the cursor position relative to the
|
/// or retrieve the current position of the mouse pointer. There are
|
||||||
/// window which has the mouse focus (ie. the window on which
|
/// two versions: one that operates in global coordinates (relative
|
||||||
/// the cursor is).
|
/// to the desktop) and one that operates in window coordinates
|
||||||
|
/// (relative to a specific window).
|
||||||
///
|
///
|
||||||
/// Usage example:
|
/// Usage example:
|
||||||
/// \code
|
/// \code
|
||||||
@ -118,12 +154,12 @@ public :
|
|||||||
/// {
|
/// {
|
||||||
/// // left click...
|
/// // left click...
|
||||||
/// }
|
/// }
|
||||||
/// else if (sf::Mouse::IsButtonPressed(sf::Mouse::Right))
|
|
||||||
/// {
|
|
||||||
/// // right click...
|
|
||||||
/// }
|
|
||||||
///
|
///
|
||||||
|
/// // get global mouse position
|
||||||
/// sf::Vector2i position = sf::Mouse::GetPosition();
|
/// sf::Vector2i position = sf::Mouse::GetPosition();
|
||||||
|
///
|
||||||
|
/// // set mouse position relative to a window
|
||||||
|
/// sf::Mouse::SetPosition(sf::Vector2i(100, 200), window);
|
||||||
/// \endcode
|
/// \endcode
|
||||||
///
|
///
|
||||||
/// \see sf::Joystick, sf::Keyboard
|
/// \see sf::Joystick, sf::Keyboard
|
||||||
|
@ -278,23 +278,6 @@ public :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void ShowMouseCursor(bool show);
|
void ShowMouseCursor(bool show);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Change the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \param x Left coordinate of the cursor, relative to the window
|
|
||||||
/// \param y Top coordinate of the cursor, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
void SetCursorPosition(unsigned int x, unsigned int y);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Get the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \return Current mouse cursor position, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Vector2i GetCursorPosition() const;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Change the position of the window on screen
|
/// \brief Change the position of the window on screen
|
||||||
///
|
///
|
||||||
|
@ -213,16 +213,48 @@ Vector2i InputImpl::GetMousePosition()
|
|||||||
{
|
{
|
||||||
// we don't care about these but they are required
|
// we don't care about these but they are required
|
||||||
::Window root, child;
|
::Window root, child;
|
||||||
int wx, wy;
|
int x, y;
|
||||||
|
unsigned int buttons;
|
||||||
|
|
||||||
|
int gx = 0;
|
||||||
|
int gy = 0;
|
||||||
|
XQueryPointer(global.display, global.window, &root, &child, &gx, &gy, &x, &y, &buttons);
|
||||||
|
|
||||||
|
return Vector2i(gx, gy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Vector2i InputImpl::GetMousePosition(const Window& relativeTo)
|
||||||
|
{
|
||||||
|
// we don't care about these but they are required
|
||||||
|
::Window root, child;
|
||||||
|
int gx, gy;
|
||||||
unsigned int buttons;
|
unsigned int buttons;
|
||||||
|
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
XQueryPointer(global.display, global.window, &root, &child, &x, &y, &wx, &wy, &buttons);
|
XQueryPointer(global.display, relativeTo.GetSystemHandle(), &root, &child, &gx, &gy, &x, &y, &buttons);
|
||||||
|
|
||||||
return Vector2i(x, y);
|
return Vector2i(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position)
|
||||||
|
{
|
||||||
|
XWarpPointer(global.display, None, global.window, 0, 0, 0, 0, position.x, position.y);
|
||||||
|
XFlush(global.display);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position, const Window& relativeTo)
|
||||||
|
{
|
||||||
|
XWarpPointer(global.display, None, relativeTo.GetSystemHandle(), 0, 0, 0, 0, position.x, position.y);
|
||||||
|
XFlush(global.display);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
|
||||||
} // namespace sf
|
} // namespace sf
|
@ -65,14 +65,54 @@ public :
|
|||||||
static bool IsMouseButtonPressed(Mouse::Button button);
|
static bool IsMouseButtonPressed(Mouse::Button button);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Get the current position of the mouse
|
/// \brief Get the current position of the mouse in desktop coordinates
|
||||||
///
|
///
|
||||||
/// This function returns the mouse position in desktop coordinates.
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, in global (desktop) coordinates.
|
||||||
///
|
///
|
||||||
/// \return Current position of the mouse
|
/// \return Current position of the mouse
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
static Vector2i GetMousePosition();
|
static Vector2i GetMousePosition();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Get the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it returns desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
/// \return Current position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static Vector2i GetMousePosition(const Window& relativeTo);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in desktop coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor in global (desktop) coordinates.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position, const Window& relativeTo);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
@ -302,30 +302,6 @@ void WindowImplX11::ShowMouseCursor(bool show)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
void WindowImplX11::SetCursorPosition(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
XWarpPointer(myDisplay, None, myWindow, 0, 0, 0, 0, x, y);
|
|
||||||
XFlush(myDisplay);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Vector2i WindowImplX11::GetCursorPosition() const
|
|
||||||
{
|
|
||||||
// we don't care about these but they are required
|
|
||||||
::Window root, child;
|
|
||||||
int gx, gy;
|
|
||||||
unsigned int buttons;
|
|
||||||
|
|
||||||
int x = 0;
|
|
||||||
int y = 0;
|
|
||||||
XQueryPointer(myDisplay, myWindow, &root, &child, &gx, &gy, &x, &y, &buttons);
|
|
||||||
|
|
||||||
return Vector2i(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void WindowImplX11::SetPosition(int x, int y)
|
void WindowImplX11::SetPosition(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -105,23 +105,6 @@ private :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
virtual void ShowMouseCursor(bool show);
|
virtual void ShowMouseCursor(bool show);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Change the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \param x Left coordinate of the cursor, relative to the window
|
|
||||||
/// \param y Top coordinate of the cursor, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual void SetCursorPosition(unsigned int x, unsigned int y);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Get the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \return Current mouse cursor position, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual Vector2i GetCursorPosition() const;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Change the position of the window on screen
|
/// \brief Change the position of the window on screen
|
||||||
///
|
///
|
||||||
|
@ -42,17 +42,28 @@ bool Mouse::IsButtonPressed(Button button)
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Vector2i Mouse::GetPosition()
|
Vector2i Mouse::GetPosition()
|
||||||
{
|
{
|
||||||
const Window* focusWindow = Window::GetMouseFocusWindow();
|
|
||||||
if (focusWindow)
|
|
||||||
{
|
|
||||||
// Position relative to the focus window
|
|
||||||
return focusWindow->GetCursorPosition();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Desktop position
|
|
||||||
return priv::InputImpl::GetMousePosition();
|
return priv::InputImpl::GetMousePosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Vector2i Mouse::GetPosition(const Window& relativeTo)
|
||||||
|
{
|
||||||
|
return priv::InputImpl::GetMousePosition(relativeTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void Mouse::SetPosition(const Vector2i& position)
|
||||||
|
{
|
||||||
|
priv::InputImpl::SetMousePosition(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void Mouse::SetPosition(const Vector2i& position, const Window& relativeTo)
|
||||||
|
{
|
||||||
|
priv::InputImpl::SetMousePosition(position, relativeTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace sf
|
} // namespace sf
|
||||||
|
@ -55,6 +55,28 @@ Vector2i InputImpl::GetMousePosition()
|
|||||||
return Vector2i();
|
return Vector2i();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Vector2i InputImpl::GetMousePosition(const Window& relativeTo)
|
||||||
|
{
|
||||||
|
// @to be implemented
|
||||||
|
return Vector2i();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position)
|
||||||
|
{
|
||||||
|
// @to be implemented
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position, const Window& relativeTo)
|
||||||
|
{
|
||||||
|
// @to be implemented
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
|
||||||
} // namespace sf
|
} // namespace sf
|
||||||
|
@ -65,14 +65,54 @@ public :
|
|||||||
static bool IsMouseButtonPressed(Mouse::Button button);
|
static bool IsMouseButtonPressed(Mouse::Button button);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Get the current position of the mouse
|
/// \brief Get the current position of the mouse in desktop coordinates
|
||||||
///
|
///
|
||||||
/// This function returns the mouse position in desktop coordinates.
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, in global (desktop) coordinates.
|
||||||
///
|
///
|
||||||
/// \return Current position of the mouse
|
/// \return Current position of the mouse
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
static Vector2i GetMousePosition();
|
static Vector2i GetMousePosition();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Get the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it returns desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
/// \return Current position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static Vector2i GetMousePosition(const Window& relativeTo);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in desktop coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor in global (desktop) coordinates.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position, const Window& relativeTo);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
@ -256,23 +256,6 @@ private:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
virtual void ShowMouseCursor(bool show);
|
virtual void ShowMouseCursor(bool show);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Change the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \param x Left coordinate of the cursor, relative to the window
|
|
||||||
/// \param y Top coordinate of the cursor, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual void SetCursorPosition(unsigned int x, unsigned int y);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Get the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \return Current mouse cursor position, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual Vector2i GetCursorPosition() const;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Change the position of the window on screen
|
/// \brief Change the position of the window on screen
|
||||||
///
|
///
|
||||||
|
@ -338,21 +338,6 @@ void WindowImplCocoa::ShowMouseCursor(bool show)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
void WindowImplCocoa::SetCursorPosition(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
[myDelegate setCursorPositionToX:x Y:y];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Vector2i WindowImplCocoa::GetCursorPosition() const
|
|
||||||
{
|
|
||||||
// @to be implemented
|
|
||||||
return Vector2i();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void WindowImplCocoa::SetPosition(int x, int y)
|
void WindowImplCocoa::SetPosition(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
#define _WIN32_WINDOWS 0x0501
|
#define _WIN32_WINDOWS 0x0501
|
||||||
#define _WIN32_WINNT 0x0501
|
#define _WIN32_WINNT 0x0501
|
||||||
|
#include <SFML/Window/Window.hpp>
|
||||||
#include <SFML/Window/Win32/InputImpl.hpp>
|
#include <SFML/Window/Win32/InputImpl.hpp>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
@ -168,10 +169,35 @@ bool InputImpl::IsMouseButtonPressed(Mouse::Button button)
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Vector2i InputImpl::GetMousePosition()
|
Vector2i InputImpl::GetMousePosition()
|
||||||
{
|
{
|
||||||
POINT position;
|
POINT point;
|
||||||
GetCursorPos(&position);
|
GetCursorPos(&point);
|
||||||
|
return Vector2i(point.x, point.y);
|
||||||
|
}
|
||||||
|
|
||||||
return Vector2i(position.x, position.y);
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Vector2i InputImpl::GetMousePosition(const Window& relativeTo)
|
||||||
|
{
|
||||||
|
POINT point;
|
||||||
|
GetCursorPos(&point);
|
||||||
|
ScreenToClient(relativeTo.GetSystemHandle(), &point);
|
||||||
|
return Vector2i(point.x, point.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position)
|
||||||
|
{
|
||||||
|
SetCursorPos(position.x, position.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
void InputImpl::SetMousePosition(const Vector2i& position, const Window& relativeTo)
|
||||||
|
{
|
||||||
|
POINT point = {position.x, position.y};
|
||||||
|
ClientToScreen(relativeTo.GetSystemHandle(), &point);
|
||||||
|
SetCursorPos(point.x, point.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
@ -65,14 +65,54 @@ public :
|
|||||||
static bool IsMouseButtonPressed(Mouse::Button button);
|
static bool IsMouseButtonPressed(Mouse::Button button);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Get the current position of the mouse
|
/// \brief Get the current position of the mouse in desktop coordinates
|
||||||
///
|
///
|
||||||
/// This function returns the mouse position in desktop coordinates.
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, in global (desktop) coordinates.
|
||||||
///
|
///
|
||||||
/// \return Current position of the mouse
|
/// \return Current position of the mouse
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
static Vector2i GetMousePosition();
|
static Vector2i GetMousePosition();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Get the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function returns the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it returns desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
/// \return Current position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static Vector2i GetMousePosition(const Window& relativeTo);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in desktop coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor in global (desktop) coordinates.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set the current position of the mouse in window coordinates
|
||||||
|
///
|
||||||
|
/// This function sets the current position of the mouse
|
||||||
|
/// cursor, relative to the given window.
|
||||||
|
/// If no window is used, it sets the position in desktop coordinates.
|
||||||
|
///
|
||||||
|
/// \param position New position of the mouse
|
||||||
|
/// \param relativeTo Reference window
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void SetMousePosition(const Vector2i& position, const Window& relativeTo);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace priv
|
} // namespace priv
|
||||||
|
@ -231,26 +231,6 @@ void WindowImplWin32::ShowMouseCursor(bool show)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
void WindowImplWin32::SetCursorPosition(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
POINT position = {x, y};
|
|
||||||
ClientToScreen(myHandle, &position);
|
|
||||||
SetCursorPos(position.x, position.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Vector2i WindowImplWin32::GetCursorPosition() const
|
|
||||||
{
|
|
||||||
POINT position;
|
|
||||||
GetCursorPos(&position);
|
|
||||||
ScreenToClient(myHandle, &position);
|
|
||||||
|
|
||||||
return Vector2i(position.x, position.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void WindowImplWin32::SetPosition(int x, int y)
|
void WindowImplWin32::SetPosition(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -94,23 +94,6 @@ private :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
virtual void ShowMouseCursor(bool show);
|
virtual void ShowMouseCursor(bool show);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Change the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \param x Left coordinate of the cursor, relative to the window
|
|
||||||
/// \param y Top coordinate of the cursor, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual void SetCursorPosition(unsigned int x, unsigned int y);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Get the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \return Current mouse cursor position, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual Vector2i GetCursorPosition() const;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Change the position of the window on screen
|
/// \brief Change the position of the window on screen
|
||||||
///
|
///
|
||||||
|
@ -242,21 +242,6 @@ void Window::ShowMouseCursor(bool show)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
void Window::SetCursorPosition(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
if (myWindow)
|
|
||||||
myWindow->SetCursorPosition(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Vector2i Window::GetCursorPosition() const
|
|
||||||
{
|
|
||||||
return myWindow ? myWindow->GetCursorPosition() : Vector2i(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void Window::SetPosition(int x, int y)
|
void Window::SetPosition(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -141,23 +141,6 @@ public :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
virtual void ShowMouseCursor(bool show) = 0;
|
virtual void ShowMouseCursor(bool show) = 0;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Change the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \param x Left coordinate of the cursor, relative to the window
|
|
||||||
/// \param y Top coordinate of the cursor, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual void SetCursorPosition(unsigned int x, unsigned int y) = 0;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Get the position of the mouse cursor
|
|
||||||
///
|
|
||||||
/// \return Current mouse cursor position, relative to the window
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
virtual Vector2i GetCursorPosition() const = 0;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Change the position of the window on screen
|
/// \brief Change the position of the window on screen
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user