sdlCreateCursor function

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_FreeCursor().

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, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which provides twelve 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 location of the upper left corner of the cursor relative to the actual mouse position \param hot_y the Y-axis location of the upper left corner of the cursor relative to the actual mouse position \returns a new cursor with the specified parameters on success or NULL on failure; call SDL_GetError() for more information.

\since This function is available since SDL 2.0.0.

\sa SDL_FreeCursor \sa SDL_SetCursor \sa SDL_ShowCursor

extern 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 = libSdl2.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);
}