Use floating point values for viewport, clip rectangle, and texture sizes

These are integer values internally, but the API has been changed to make it easier to mix other render code with querying those values.

Fixes https://github.com/libsdl-org/SDL/issues/7519
This commit is contained in:
Sam Lantinga committed 2024-06-12 10:18:39 -07:00
1 parent 463984ec20
commit 9fb5a9ccac
29 files changed
+624 -585

No files matched your search

+7 -7
View File
@@ -49,7 +49,7 @@ quit(int rc)
static void Draw(DrawState *s)
{
SDL_Rect viewport;
SDL_FRect viewport;
SDL_GetRenderViewport(s->renderer, &viewport);
@@ -68,8 +68,8 @@ static void Draw(DrawState *s)
s->scale_direction = 1;
}
}
s->sprite_rect.x = (float)((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = (float)((viewport.h - s->sprite_rect.h) / 2);
s->sprite_rect.x = ((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = ((viewport.h - s->sprite_rect.h) / 2);
SDL_RenderTexture(s->renderer, s->sprite, NULL, &s->sprite_rect);
@@ -126,7 +126,7 @@ int main(int argc, char *argv[])
drawstates = SDL_stack_alloc(DrawState, state->num_windows);
for (i = 0; i < state->num_windows; ++i) {
DrawState *drawstate = &drawstates[i];
int w, h;
float w, h;
drawstate->window = state->windows[i];
drawstate->renderer = state->renderers[i];
@@ -135,9 +135,9 @@ int main(int argc, char *argv[])
if (!drawstate->sprite || !drawstate->background) {
quit(2);
}
SDL_QueryTexture(drawstate->sprite, NULL, NULL, &w, &h);
drawstate->sprite_rect.w = (float)w;
drawstate->sprite_rect.h = (float)h;
SDL_GetTextureSize(drawstate->sprite, &w, &h);
drawstate->sprite_rect.w = w;
drawstate->sprite_rect.h = h;
drawstate->scale_direction = 1;
}