| 2096 | } |
| 2097 | |
| 2098 | int |
| 2099 | SDL_RenderSetViewport(SDL_Renderer * renderer, const SDL_Rect * rect) |
| 2100 | { |
| 2101 | int retval; |
| 2102 | CHECK_RENDERER_MAGIC(renderer, -1); |
| 2103 | |
| 2104 | if (rect) { |
| 2105 | renderer->viewport.x = (int)SDL_floor(rect->x * renderer->scale.x); |
| 2106 | renderer->viewport.y = (int)SDL_floor(rect->y * renderer->scale.y); |
| 2107 | renderer->viewport.w = (int)SDL_ceil(rect->w * renderer->scale.x); |
| 2108 | renderer->viewport.h = (int)SDL_ceil(rect->h * renderer->scale.y); |
| 2109 | } else { |
| 2110 | renderer->viewport.x = 0; |
| 2111 | renderer->viewport.y = 0; |
| 2112 | if (SDL_GetRendererOutputSize(renderer, &renderer->viewport.w, &renderer->viewport.h) < 0) { |
| 2113 | return -1; |
| 2114 | } |
| 2115 | } |
| 2116 | retval = QueueCmdSetViewport(renderer); |
| 2117 | return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); |
| 2118 | } |
| 2119 | |
| 2120 | void |
| 2121 | SDL_RenderGetViewport(SDL_Renderer * renderer, SDL_Rect * rect) |