getMousePosition static method

Point<double> getMousePosition()

Query SDL's cache for the synchronous mouse button state and the window-relative SDL-cursor position.

This function returns the cached synchronous state as SDL understands it from the last pump of the event queue.

To query the platform for immediate asynchronous state, use SDL_GetGlobalMouseState.

Passing non-NULL pointers to x or y will write the destination with respective x or y coordinates relative to the focused window.

In Relative Mode, the SDL-cursor's position usually contradicts the platform-cursor's position as manually calculated from SDL_GetGlobalMouseState() and SDL_GetWindowPosition.

\param x a pointer to receive the SDL-cursor's x-position from the focused window's top left corner, can be NULL if unused. \param y a pointer to receive the SDL-cursor's y-position from the focused window's top left corner, can be NULL if unused. \returns a 32-bit bitmask of the button state that can be bitwise-compared against the SDL_BUTTON_MASK(X) macro.

\threadsafety This function should only be called on the main thread.

\since This function is available since SDL 3.1.3.

\sa SDL_GetGlobalMouseState \sa SDL_GetRelativeMouseState

extern SDL_DECLSPEC SDL_MouseButtonFlags SDLCALL SDL_GetMouseState(float *x, float *y)

Implementation

static math.Point<double> getMousePosition() {
  var xPointer = ffi.calloc<Float>();
  var yPointer = ffi.calloc<Float>();
  sdlGetMouseState(xPointer, yPointer);
  var result = math.Point<double>(xPointer.value, yPointer.value);
  ffi.calloc.free(xPointer);
  ffi.calloc.free(yPointer);
  return result;
}