sdlxGetMasksForPixelFormat function pixels

bool sdlxGetMasksForPixelFormat(
  1. int format,
  2. SdlxMasks masks
)

Convert one of the enumerated pixel formats to a bpp value and RGBA masks.

\param format one of the SDL_PixelFormat values. \param bpp a bits per pixel value; usually 15, 16, or 32. \param Rmask a pointer filled in with the red mask for the format. \param Gmask a pointer filled in with the green mask for the format. \param Bmask a pointer filled in with the blue mask for the format. \param Amask a pointer filled in with the alpha mask for the format. \returns true on success or false on failure; call SDL_GetError() for more information.

\threadsafety It is safe to call this function from any thread.

\since This function is available since SDL 3.2.0.

\sa SDL_GetPixelFormatForMasks

extern SDL_DECLSPEC bool SDLCALL SDL_GetMasksForPixelFormat(SDL_PixelFormat format, int *bpp, Uint32 *Rmask, Uint32 *Gmask, Uint32 *Bmask, Uint32 *Amask)

Implementation

bool sdlxGetMasksForPixelFormat(int format, SdlxMasks masks) {
  final bppPointer = ffi.calloc<Int32>();
  final rmaskPointer = ffi.calloc<Uint32>();
  final gmaskPointer = ffi.calloc<Uint32>();
  final bmaskPointer = ffi.calloc<Uint32>();
  final amaskPointer = ffi.calloc<Uint32>();
  final result = sdlGetMasksForPixelFormat(
    format,
    bppPointer,
    rmaskPointer,
    gmaskPointer,
    bmaskPointer,
    amaskPointer,
  );
  if (result) {
    masks
      ..bpp = bppPointer.value
      ..rmask = rmaskPointer.value
      ..gmask = gmaskPointer.value
      ..bmask = bmaskPointer.value
      ..amask = amaskPointer.value;
  }
  bppPointer.callocFree();
  rmaskPointer.callocFree();
  gmaskPointer.callocFree();
  bmaskPointer.callocFree();
  amaskPointer.callocFree();
  return result;
}