sdlxStretchSurface function surface

bool sdlxStretchSurface(
  1. Pointer<SdlSurface> src,
  2. SdlxRect? srcrect,
  3. Pointer<SdlSurface> dst,
  4. SdlxRect? dstrect, {
  5. int scaleMode = SdlkScalemode.invalid,
})

Perform a stretched pixel copy from one surface to another.

\param src the SDL_Surface structure to be copied from. \param srcrect the SDL_Rect structure representing the rectangle to be copied, or NULL to copy the entire surface. \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, or NULL to fill the entire destination surface. \param scaleMode the SDL_ScaleMode to be used. \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.4.0.

\sa SDL_BlitSurfaceScaled

extern SDL_DECLSPEC bool SDLCALL SDL_StretchSurface(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect, SDL_ScaleMode scaleMode)

See also:

Implementation

bool sdlxStretchSurface(
  Pointer<SdlSurface> src,
  SdlxRect? srcrect,
  Pointer<SdlSurface> dst,
  SdlxRect? dstrect, {
  int scaleMode = SdlkScalemode.invalid,
}) {
  Pointer<SdlRect> srcrectPointer = nullptr;
  Pointer<SdlRect> dstrectPointer = nullptr;
  if (srcrect != null) {
    srcrectPointer = srcrect.calloc();
  }
  if (dstrect != null) {
    dstrectPointer = dstrect.calloc();
  }
  final result = sdlStretchSurface(
    src,
    srcrectPointer,
    dst,
    dstrectPointer,
    scaleMode,
  );
  if (srcrectPointer != nullptr) {
    srcrectPointer.callocFree();
  }
  if (dstrectPointer != nullptr) {
    dstrectPointer.callocFree();
  }
  return result;
}