lowerBlit method

bool lowerBlit(
  1. Pointer<SdlSurface> dst, {
  2. Rectangle<double>? srcrect,
  3. Rectangle<double>? dstrect,
})

Perform low-level surface blitting only.

This is a semi-private blit function and it performs low-level surface blitting, assuming the input rectangles have already been clipped.

\param src the SDL_Surface structure to be copied from. \param srcrect the SDL_Rect structure representing the rectangle to be copied, may not be NULL. \param dst the SDL_Surface structure that is the blit target. \param dstrect the SDL_Rect structure representing the target rectangle in the destination surface, may not be NULL. \returns true on success or false on failure; call SDL_GetError() for more information.

\threadsafety Only one thread should be using the src and dst surfaces at any given time.

\since This function is available since SDL 3.2.0.

\sa SDL_BlitSurface

extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceUnchecked(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect)

{@category surface}

Implementation

bool lowerBlit(
  Pointer<SdlSurface> dst, {
  math.Rectangle<double>? srcrect,
  math.Rectangle<double>? dstrect,
}) {
  Pointer<SdlRect> srcrectPointer = nullptr;
  Pointer<SdlRect> dstrectPointer = nullptr;
  if (srcrect != null) {
    srcrectPointer = srcrect.callocInt();
  }
  if (dstrect != null) {
    dstrectPointer = dstrect.callocInt();
  }
  final result = sdlBlitSurfaceUnchecked(
    this,
    srcrectPointer,
    dst,
    dstrectPointer,
  );
  calloc
    ..free(srcrectPointer)
    ..free(dstrectPointer);
  return result;
}