sdlCreateCursor function mouse

Pointer<SdlCursor> sdlCreateCursor(
  1. Pointer<Uint8> data,
  2. Pointer<Uint8> mask,
  3. int w,
  4. int h,
  5. int hotX,
  6. int hotY,
)

Create a cursor using the specified bitmap data and mask (in MSB format).

mask has to be in MSB (Most Significant Bit) format.

The cursor width (w) must be a multiple of 8 bits.

The cursor is created in black and white according to the following:

  • data=0, mask=1: white
  • data=1, mask=1: black
  • data=0, mask=0: transparent
  • data=1, mask=0: inverted color if possible, black if not.

Cursors created with this function must be freed with SDL_DestroyCursor().

If you want to have a color cursor, or create your cursor from an SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can hide the cursor and draw your own as part of your game's rendering, but it will be bound to the framerate.

Also, SDL_CreateSystemCursor() is available, which provides several readily-available system cursors to pick from.

\param data the color value for each pixel of the cursor. \param mask the mask value for each pixel of the cursor. \param w the width of the cursor. \param h the height of the cursor. \param hot_x the x-axis offset from the left of the cursor image to the mouse x position, in the range of 0 to w - 1. \param hot_y the y-axis offset from the top of the cursor image to the mouse y position, in the range of 0 to h - 1. \returns a new cursor with the specified parameters on success or NULL on failure; call SDL_GetError() for more information.

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

\since This function is available since SDL 3.2.0.

\sa SDL_CreateAnimatedCursor \sa SDL_CreateColorCursor \sa SDL_CreateSystemCursor \sa SDL_DestroyCursor \sa SDL_SetCursor

extern SDL_DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor(const Uint8 *data, const Uint8 *mask, int w, int h, int hot_x, int hot_y)

Implementation

Pointer<SdlCursor> sdlCreateCursor(
  Pointer<Uint8> data,
  Pointer<Uint8> mask,
  int w,
  int h,
  int hotX,
  int hotY,
) {
  final sdlCreateCursorLookupFunction = _libSdl
      .lookupFunction<
        Pointer<SdlCursor> Function(
          Pointer<Uint8> data,
          Pointer<Uint8> mask,
          Int32 w,
          Int32 h,
          Int32 hotX,
          Int32 hotY,
        ),
        Pointer<SdlCursor> Function(
          Pointer<Uint8> data,
          Pointer<Uint8> mask,
          int w,
          int h,
          int hotX,
          int hotY,
        )
      >('SDL_CreateCursor');
  return sdlCreateCursorLookupFunction(data, mask, w, h, hotX, hotY);
}