sdlxGetRenderLogicalPresentation function render

bool sdlxGetRenderLogicalPresentation(
  1. Pointer<SdlRenderer> renderer,
  2. SdlxRenderLogicalPresentation presentation
)

Get device independent resolution and presentation mode for rendering.

This function gets the width and height of the logical rendering output, or 0 if a logical resolution is not enabled.

Each render target has its own logical presentation state. This function gets the state for the current render target.

\param renderer the rendering context. \param w an int filled with the logical presentation width. \param h an int filled with the logical presentation height. \param mode a variable filled with the logical presentation mode being used. \returns true on success or false 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_SetRenderLogicalPresentation

extern SDL_DECLSPEC bool SDLCALL SDL_GetRenderLogicalPresentation(SDL_Renderer *renderer, int *w, int *h, SDL_RendererLogicalPresentation *mode)

Implementation

bool sdlxGetRenderLogicalPresentation(
  Pointer<SdlRenderer> renderer,
  SdlxRenderLogicalPresentation presentation,
) {
  final wPointer = calloc<Int32>();
  final hPointer = calloc<Int32>();
  final modePointer = calloc<Int32>();
  final rectPointer = calloc<SdlFRect>();
  var result = sdlGetRenderLogicalPresentation(
    renderer,
    wPointer,
    hPointer,
    modePointer,
  );
  if (result) {
    presentation
      ..w = wPointer.value
      ..h = hPointer.value
      ..mode = modePointer.value;
    result = sdlGetRenderLogicalPresentationRect(renderer, rectPointer);
    if (result) {
      presentation.rect.loadFromPointer(rectPointer);
    }
  }
  wPointer.callocFree();
  hPointer.callocFree();
  modePointer.callocFree();
  rectPointer.callocFree();
  return result;
}