Backed out the viewport and cliprect changes in 9fb5a9ccac

This ended up being lots of application code churn without any real benefit in practice.
This commit is contained in:
Sam Lantinga
2024-06-12 19:08:06 -07:00
parent b2ccfc0b6f
commit 80a907e0e6
28 changed files with 238 additions and 275 deletions

View File

@@ -75,8 +75,8 @@ static const struct
{ 400, 5, 180.0 }, /* SDL_GAMEPAD_ELEMENT_AXIS_RIGHT_TRIGGER */
};
static SDL_Rect touchpad_area = {
148, 20, 216, 118
static SDL_FRect touchpad_area = {
148.0f, 20.0f, 216.0f, 118.0f
};
typedef struct
@@ -1935,7 +1935,7 @@ GamepadButton *CreateGamepadButton(SDL_Renderer *renderer, const char *label)
SDL_GetTextureSize(ctx->background, &ctx->background_width, &ctx->background_height);
ctx->label = SDL_strdup(label);
ctx->label_width = (FONT_CHARACTER_SIZE * SDL_strlen(label));
ctx->label_width = (float)(FONT_CHARACTER_SIZE * SDL_strlen(label));
ctx->label_height = (float)FONT_CHARACTER_SIZE;
}
return ctx;

View File

@@ -302,7 +302,7 @@ static int keyboard_getSetModState(void *arg)
currentState = result;
/* Set random state */
newState = SDLTest_RandomIntegerInRange(0, allStates);
newState = (SDL_Keymod)SDLTest_RandomIntegerInRange(0, allStates);
SDL_SetModState(newState);
SDLTest_AssertPass("Call to SDL_SetModState(0x%.4x)", newState);
result = SDL_GetModState();

View File

@@ -155,7 +155,7 @@ static int render_testPrimitives(void *arg)
checkFailCount1++;
}
ret = SDL_RenderPoint(renderer, x, y);
ret = SDL_RenderPoint(renderer, (float)x, (float)y);
if (ret != 0) {
checkFailCount2++;
}
@@ -258,7 +258,7 @@ static int render_testPrimitivesBlend(void *arg)
checkFailCount2++;
}
ret = SDL_RenderLine(renderer, 0.0f, 0.0f, i, 59.0f);
ret = SDL_RenderLine(renderer, 0.0f, 0.0f, (float)i, 59.0f);
if (ret != 0) {
checkFailCount3++;
}
@@ -282,7 +282,7 @@ static int render_testPrimitivesBlend(void *arg)
checkFailCount2++;
}
ret = SDL_RenderLine(renderer, 0.0f, 0.0f, 79.0f, i);
ret = SDL_RenderLine(renderer, 0.0f, 0.0f, 79.0f, (float)i);
if (ret != 0) {
checkFailCount3++;
}
@@ -308,7 +308,7 @@ static int render_testPrimitivesBlend(void *arg)
checkFailCount2++;
}
ret = SDL_RenderPoint(renderer, i, j);
ret = SDL_RenderPoint(renderer, (float)i, (float)j);
if (ret != 0) {
checkFailCount3++;
}
@@ -342,7 +342,7 @@ static int render_testPrimitivesBlend(void *arg)
*/
static int render_testPrimitivesWithViewport(void *arg)
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_Surface *surface;
/* Clear surface. */
@@ -489,8 +489,8 @@ static int render_testBlitColor(void *arg)
}
/* Blitting. */
rect.x = i;
rect.y = j;
rect.x = (float)i;
rect.y = (float)j;
ret = SDL_RenderTexture(renderer, tface, NULL, &rect);
if (ret != 0) {
checkFailCount2++;
@@ -768,8 +768,8 @@ static int render_testBlitBlend(void *arg)
}
/* Blitting. */
rect.x = i;
rect.y = j;
rect.x = (float)i;
rect.y = (float)j;
ret = SDL_RenderTexture(renderer, tface, NULL, &rect);
if (ret != 0) {
checkFailCount4++;
@@ -803,7 +803,7 @@ static int render_testBlitBlend(void *arg)
static int render_testViewport(void *arg)
{
SDL_Surface *referenceSurface;
SDL_FRect viewport;
SDL_Rect viewport;
viewport.x = TESTRENDER_SCREEN_W / 3;
viewport.y = TESTRENDER_SCREEN_H / 3;
@@ -813,12 +813,7 @@ static int render_testViewport(void *arg)
/* Create expected result */
referenceSurface = SDL_CreateSurface(TESTRENDER_SCREEN_W, TESTRENDER_SCREEN_H, RENDER_COMPARE_FORMAT);
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, NULL, RENDER_COLOR_CLEAR))
SDL_Rect v;
v.x = (int)viewport.x;
v.y = (int)viewport.y;
v.w = (int)viewport.w;
v.h = (int)viewport.h;
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &v, RENDER_COLOR_GREEN))
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &viewport, RENDER_COLOR_GREEN))
/* Clear surface. */
clearScreen();
@@ -865,7 +860,7 @@ static int render_testViewport(void *arg)
static int render_testClipRect(void *arg)
{
SDL_Surface *referenceSurface;
SDL_FRect cliprect;
SDL_Rect cliprect;
cliprect.x = TESTRENDER_SCREEN_W / 3;
cliprect.y = TESTRENDER_SCREEN_H / 3;
@@ -875,12 +870,7 @@ static int render_testClipRect(void *arg)
/* Create expected result */
referenceSurface = SDL_CreateSurface(TESTRENDER_SCREEN_W, TESTRENDER_SCREEN_H, RENDER_COMPARE_FORMAT);
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, NULL, RENDER_COLOR_CLEAR))
SDL_Rect c;
c.x = (int)cliprect.x;
c.y = (int)cliprect.y;
c.w = (int)cliprect.w;
c.h = (int)cliprect.h;
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &c, RENDER_COLOR_GREEN))
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &cliprect, RENDER_COLOR_GREEN))
/* Clear surface. */
clearScreen();
@@ -927,9 +917,9 @@ static int render_testClipRect(void *arg)
static int render_testLogicalSize(void *arg)
{
SDL_Surface *referenceSurface;
SDL_FRect viewport;
SDL_Rect viewport;
SDL_FRect rect;
float w, h;
int w, h;
const int factor = 2;
viewport.x = ((TESTRENDER_SCREEN_W / 4) / factor) * factor;
@@ -940,12 +930,7 @@ static int render_testLogicalSize(void *arg)
/* Create expected result */
referenceSurface = SDL_CreateSurface(TESTRENDER_SCREEN_W, TESTRENDER_SCREEN_H, RENDER_COMPARE_FORMAT);
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, NULL, RENDER_COLOR_CLEAR))
SDL_Rect v;
v.x = (int)viewport.x;
v.y = (int)viewport.y;
v.w = (int)viewport.w;
v.h = (int)viewport.h;
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &v, RENDER_COLOR_GREEN))
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &viewport, RENDER_COLOR_GREEN))
/* Clear surface. */
clearScreen();
@@ -956,10 +941,10 @@ static int render_testLogicalSize(void *arg)
SDL_LOGICAL_PRESENTATION_LETTERBOX,
SDL_SCALEMODE_NEAREST))
CHECK_FUNC(SDL_SetRenderDrawColor, (renderer, 0, 255, 0, SDL_ALPHA_OPAQUE))
rect.x = viewport.x / factor;
rect.y = viewport.y / factor;
rect.w = viewport.w / factor;
rect.h = viewport.h / factor;
rect.x = (float)viewport.x / factor;
rect.y = (float)viewport.y / factor;
rect.w = (float)viewport.w / factor;
rect.h = (float)viewport.h / factor;
CHECK_FUNC(SDL_RenderFillRect, (renderer, &rect))
CHECK_FUNC(SDL_SetRenderLogicalPresentation, (renderer, 0, 0,
SDL_LOGICAL_PRESENTATION_DISABLED,
@@ -1002,11 +987,7 @@ static int render_testLogicalSize(void *arg)
/* Create expected result */
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, NULL, RENDER_COLOR_CLEAR))
v.x = (int)viewport.x;
v.y = (int)viewport.y;
v.w = (int)viewport.w;
v.h = (int)viewport.h;
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &v, RENDER_COLOR_GREEN))
CHECK_FUNC(SDL_FillSurfaceRect, (referenceSurface, &viewport, RENDER_COLOR_GREEN))
/* Clear surface. */
clearScreen();

View File

@@ -234,7 +234,8 @@ int SDL_AppIterate(void *appstate)
SDL_SetRenderDrawColor(renderer, 0x99, 0x99, 0x99, 255);
SDL_RenderClear(renderer);
float win_w, win_h, tw, th;
int win_w, win_h;
float tw, th;
SDL_FRect d;
Uint64 timestampNS = 0;
SDL_Surface *frame_next = camera ? SDL_AcquireCameraFrame(camera, &timestampNS) : NULL;

View File

@@ -2088,7 +2088,7 @@ int main(int argc, char *argv[])
SDL_RenderPresent(screen);
/* scale for platforms that don't give you the window size you asked for. */
SDL_SetRenderLogicalPresentation(screen, SCREEN_WIDTH, SCREEN_HEIGHT,
SDL_SetRenderLogicalPresentation(screen, (int)SCREEN_WIDTH, (int)SCREEN_HEIGHT,
SDL_LOGICAL_PRESENTATION_LETTERBOX,
SDL_SCALEMODE_LINEAR);

View File

@@ -43,7 +43,7 @@ static void DrawPoints(SDL_Renderer *renderer)
{
int i;
float x, y;
SDL_FRect viewport;
SDL_Rect viewport;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);
@@ -75,8 +75,8 @@ static void DrawPoints(SDL_Renderer *renderer)
SDL_SetRenderDrawColor(renderer, 255, (Uint8)current_color,
(Uint8)current_color, (Uint8)current_alpha);
x = (float)(rand() % (int)viewport.w);
y = (float)(rand() % (int)viewport.h);
x = (float)(rand() % viewport.w);
y = (float)(rand() % viewport.h);
SDL_RenderPoint(renderer, x, y);
}
}
@@ -85,7 +85,7 @@ static void DrawLines(SDL_Renderer *renderer)
{
int i;
float x1, y1, x2, y2;
SDL_FRect viewport;
SDL_Rect viewport;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);
@@ -118,15 +118,15 @@ static void DrawLines(SDL_Renderer *renderer)
(Uint8)current_color, (Uint8)current_alpha);
if (i == 0) {
SDL_RenderLine(renderer, 0.0f, 0.0f, (viewport.w - 1), (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, (viewport.h - 1), (viewport.w - 1), 0.0f);
SDL_RenderLine(renderer, 0.0f, (viewport.h / 2), (viewport.w - 1), (viewport.h / 2));
SDL_RenderLine(renderer, (viewport.w / 2), 0.0f, (viewport.w / 2), (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, 0.0f, (float)(viewport.w - 1), (float)(viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, (float)(viewport.h - 1), (float)(viewport.w - 1), 0.0f);
SDL_RenderLine(renderer, 0.0f, (float)(viewport.h / 2), (float)(viewport.w - 1), (float)(viewport.h / 2));
SDL_RenderLine(renderer, (float)(viewport.w / 2), 0.0f, (float)(viewport.w / 2), (float)(viewport.h - 1));
} else {
x1 = ((rand() % ((int)viewport.w * 2)) - viewport.w);
x2 = ((rand() % ((int)viewport.w * 2)) - viewport.w);
y1 = ((rand() % ((int)viewport.h * 2)) - viewport.h);
y2 = ((rand() % ((int)viewport.h * 2)) - viewport.h);
x1 = (float)((rand() % (viewport.w * 2)) - viewport.w);
x2 = (float)((rand() % (viewport.w * 2)) - viewport.w);
y1 = (float)((rand() % (viewport.h * 2)) - viewport.h);
y2 = (float)((rand() % (viewport.h * 2)) - viewport.h);
SDL_RenderLine(renderer, x1, y1, x2, y2);
}
}
@@ -136,7 +136,7 @@ static void DrawRects(SDL_Renderer *renderer)
{
int i;
SDL_FRect rect;
SDL_FRect viewport;
SDL_Rect viewport;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);
@@ -168,10 +168,10 @@ static void DrawRects(SDL_Renderer *renderer)
SDL_SetRenderDrawColor(renderer, 255, (Uint8)current_color,
(Uint8)current_color, (Uint8)current_alpha);
rect.w = (float)(rand() % ((int)viewport.h / 2));
rect.h = (float)(rand() % ((int)viewport.h / 2));
rect.x = ((rand() % ((int)viewport.w * 2) - viewport.w) - (rect.w / 2));
rect.y = ((rand() % ((int)viewport.h * 2) - viewport.h) - (rect.h / 2));
rect.w = (float)(rand() % (viewport.h / 2));
rect.h = (float)(rand() % (viewport.h / 2));
rect.x = (float)((rand() % (viewport.w * 2) - viewport.w) - (rect.w / 2));
rect.y = (float)((rand() % (viewport.h * 2) - viewport.h) - (rect.h / 2));
SDL_RenderFillRect(renderer, &rect);
}
}

View File

@@ -32,7 +32,7 @@ static void DrawChessBoard(void)
{
int row = 0, column = 0, x = 0;
SDL_FRect rect;
SDL_FRect darea;
SDL_Rect darea;
/* Get the Size of drawing surface */
SDL_GetRenderViewport(renderer, &darea);
@@ -43,10 +43,10 @@ static void DrawChessBoard(void)
for (; column < 4 + (row % 2); column++) {
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0xFF);
rect.w = (darea.w / 8);
rect.h = (darea.h / 8);
rect.x = (x * rect.w);
rect.y = (row * rect.h);
rect.w = (float)(darea.w / 8);
rect.h = (float)(darea.h / 8);
rect.x = (float)(x * rect.w);
rect.y = (float)(row * rect.h);
x = x + 2;
SDL_RenderFillRect(renderer, &rect);

View File

@@ -252,7 +252,7 @@ static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned
static void MoveSprite(void)
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_FRect *position, *velocity;
int i;
@@ -1484,12 +1484,12 @@ int main(int argc, char *argv[])
}
/* Position sprites and set their velocities */
SDL_FRect viewport;
SDL_Rect viewport;
SDL_GetRenderViewport(renderer, &viewport);
srand((unsigned int)time(NULL));
for (i = 0; i < num_sprites; ++i) {
positions[i].x = (float)(rand() % (int)(viewport.w - sprite_w));
positions[i].y = (float)(rand() % (int)(viewport.h - sprite_h));
positions[i].x = (float)(rand() % (viewport.w - sprite_w));
positions[i].y = (float)(rand() % (viewport.h - sprite_h));
positions[i].w = (float)sprite_w;
positions[i].h = (float)sprite_h;
velocities[i].x = 0.0f;

View File

@@ -121,11 +121,11 @@ static void loop(void)
SDL_RenderClear(renderer);
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_Vertex verts[3];
float a;
float d;
float cx, cy;
int cx, cy;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);

View File

@@ -45,7 +45,7 @@ static void DrawPoints(SDL_Renderer *renderer)
{
int i;
float x, y;
SDL_FRect viewport;
SDL_Rect viewport;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);
@@ -77,8 +77,8 @@ static void DrawPoints(SDL_Renderer *renderer)
SDL_SetRenderDrawColor(renderer, 255, (Uint8)current_color,
(Uint8)current_color, (Uint8)current_alpha);
x = (float)(rand() % (int)viewport.w);
y = (float)(rand() % (int)viewport.h);
x = (float)(rand() % viewport.w);
y = (float)(rand() % viewport.h);
SDL_RenderPoint(renderer, x, y);
}
}
@@ -107,7 +107,7 @@ static int add_line(float x1, float y1, float x2, float y2)
static void DrawLines(SDL_Renderer *renderer)
{
int i;
SDL_FRect viewport;
SDL_Rect viewport;
/* Query the sizes */
SDL_GetRenderViewport(renderer, &viewport);
@@ -116,10 +116,10 @@ static void DrawLines(SDL_Renderer *renderer)
for (i = 0; i < num_lines; ++i) {
if (i == -1) {
SDL_RenderLine(renderer, 0.0f, 0.0f, (viewport.w - 1), (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, (viewport.h - 1), (viewport.w - 1), 0.0f);
SDL_RenderLine(renderer, 0.0f, (viewport.h / 2), (viewport.w - 1), (viewport.h / 2));
SDL_RenderLine(renderer, (viewport.w / 2), 0.0f, (viewport.w / 2), (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, 0.0f, (float)(viewport.w - 1), (float)(viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, (float)(viewport.h - 1), (float)(viewport.w - 1), 0.0f);
SDL_RenderLine(renderer, 0.0f, (float)(viewport.h / 2), (float)(viewport.w - 1), (float)(viewport.h / 2));
SDL_RenderLine(renderer, (float)(viewport.w / 2), 0.0f, (float)(viewport.w / 2), (float)(viewport.h - 1));
} else {
SDL_RenderLine(renderer, lines[i].x, lines[i].y, lines[i].w, lines[i].h);
}

View File

@@ -401,7 +401,7 @@ static void HandleKeyboardKeyDown(SDL_KeyboardEvent *event)
case SDLK_RIGHT:
keyboard_state->position.x += CURSOR_SIZE;
if (keyboard_state->position.x > w) {
keyboard_state->position.x = w;
keyboard_state->position.x = (float)w;
}
break;
case SDLK_UP:
@@ -413,7 +413,7 @@ static void HandleKeyboardKeyDown(SDL_KeyboardEvent *event)
case SDLK_DOWN:
keyboard_state->position.y += CURSOR_SIZE;
if (keyboard_state->position.y > h) {
keyboard_state->position.y = h;
keyboard_state->position.y = (float)h;
}
break;
default:

View File

@@ -65,7 +65,7 @@ static void MoveSprites(SDL_Renderer *renderer, SDL_Texture *sprite)
{
float sprite_w, sprite_h;
int i;
SDL_FRect viewport;
SDL_Rect viewport;
SDL_FRect *position, *velocity;
/* Query the sizes */

View File

@@ -52,7 +52,7 @@ static void loop(void)
}
}
for (i = 0; i < state->num_windows; ++i) {
SDL_FRect viewport;
SDL_Rect viewport;
SDL_Renderer *renderer = state->renderers[i];
if (state->windows[i] == NULL) {
continue;

View File

@@ -49,14 +49,14 @@ quit(int rc)
static void Draw(DrawState *s)
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_Texture *target;
SDL_FPoint *center = NULL;
SDL_FPoint origin = { 0.0f, 0.0f };
SDL_GetRenderViewport(s->renderer, &viewport);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, (int)viewport.w, (int)viewport.h);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, viewport.w, viewport.h);
SDL_SetRenderTarget(s->renderer, target);
/* Draw the background */
@@ -75,8 +75,8 @@ static void Draw(DrawState *s)
s->scale_direction = 1;
}
}
s->sprite_rect.x = ((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = ((viewport.h - s->sprite_rect.h) / 2);
s->sprite_rect.x = (float)((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = (float)((viewport.h - s->sprite_rect.h) / 2);
SDL_RenderTextureRotated(s->renderer, s->sprite, NULL, &s->sprite_rect, (double)s->sprite_rect.w, center, SDL_FLIP_NONE);
@@ -135,7 +135,6 @@ 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];
float w, h;
drawstate->window = state->windows[i];
drawstate->renderer = state->renderers[i];
@@ -144,9 +143,7 @@ int main(int argc, char *argv[])
if (!drawstate->sprite || !drawstate->background) {
quit(2);
}
SDL_GetTextureSize(drawstate->sprite, &w, &h);
drawstate->sprite_rect.w = w;
drawstate->sprite_rect.h = h;
SDL_GetTextureSize(drawstate->sprite, &drawstate->sprite_rect.w, &drawstate->sprite_rect.h);
drawstate->scale_direction = 1;
}

View File

@@ -51,7 +51,7 @@ quit(int rc)
static SDL_bool
DrawComposite(DrawState *s)
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_FRect R;
SDL_Texture *target;
SDL_Surface *surface;
@@ -91,7 +91,7 @@ DrawComposite(DrawState *s)
SDL_GetRenderViewport(s->renderer, &viewport);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, (int)viewport.w, (int)viewport.h);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, viewport.w, viewport.h);
SDL_SetTextureBlendMode(target, SDL_BLENDMODE_BLEND);
SDL_SetRenderTarget(s->renderer, target);
@@ -113,8 +113,8 @@ DrawComposite(DrawState *s)
s->scale_direction = 1;
}
}
s->sprite_rect.x = ((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = ((viewport.h - s->sprite_rect.h) / 2);
s->sprite_rect.x = (float)((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = (float)((viewport.h - s->sprite_rect.h) / 2);
SDL_RenderTexture(s->renderer, s->sprite, NULL, &s->sprite_rect);
@@ -141,12 +141,12 @@ DrawComposite(DrawState *s)
static SDL_bool
Draw(DrawState *s)
{
SDL_FRect viewport;
SDL_Rect viewport;
SDL_Texture *target;
SDL_GetRenderViewport(s->renderer, &viewport);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, (int)viewport.w, (int)viewport.h);
target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, viewport.w, viewport.h);
if (!target) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create render target texture: %s\n", SDL_GetError());
return SDL_FALSE;
@@ -168,8 +168,8 @@ Draw(DrawState *s)
s->scale_direction = 1;
}
}
s->sprite_rect.x = ((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = ((viewport.h - s->sprite_rect.h) / 2);
s->sprite_rect.x = (float)((viewport.w - s->sprite_rect.w) / 2);
s->sprite_rect.y = (float)((viewport.h - s->sprite_rect.h) / 2);
SDL_RenderTexture(s->renderer, s->sprite, NULL, &s->sprite_rect);
@@ -251,7 +251,6 @@ 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];
float w, h;
drawstate->window = state->windows[i];
drawstate->renderer = state->renderers[i];
@@ -264,9 +263,7 @@ int main(int argc, char *argv[])
if (!drawstate->sprite || !drawstate->background) {
quit(2);
}
SDL_GetTextureSize(drawstate->sprite, &w, &h);
drawstate->sprite_rect.w = w;
drawstate->sprite_rect.h = h;
SDL_GetTextureSize(drawstate->sprite, &drawstate->sprite_rect.w, &drawstate->sprite_rect.h);
drawstate->scale_direction = 1;
}

View File

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

View File

@@ -79,7 +79,7 @@ static int LoadSprite(const char *file)
static void MoveSprites(SDL_Renderer *renderer, SDL_Texture *sprite)
{
int i;
SDL_FRect viewport;
SDL_Rect viewport;
SDL_FRect temp;
SDL_FRect *position, *velocity;
@@ -120,9 +120,9 @@ static void MoveSprites(SDL_Renderer *renderer, SDL_Texture *sprite)
/* Test points */
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);
SDL_RenderPoint(renderer, 0.0f, 0.0f);
SDL_RenderPoint(renderer, (viewport.w - 1), 0.0f);
SDL_RenderPoint(renderer, 0.0f, (viewport.h - 1));
SDL_RenderPoint(renderer, (viewport.w - 1), (viewport.h - 1));
SDL_RenderPoint(renderer, (float)(viewport.w - 1), 0.0f);
SDL_RenderPoint(renderer, 0.0f, (float)(viewport.h - 1));
SDL_RenderPoint(renderer, (float)(viewport.w - 1), (float)(viewport.h - 1));
/* Test horizontal and vertical lines */
SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF);

View File

@@ -24,7 +24,7 @@
static SDLTest_CommonState *state;
static SDL_FRect viewport;
static SDL_Rect viewport;
static int done, j;
static SDL_bool use_target = SDL_FALSE;
#ifdef SDL_PLATFORM_EMSCRIPTEN
@@ -47,7 +47,7 @@ quit(int rc)
static void DrawOnViewport(SDL_Renderer *renderer)
{
SDL_FRect rect;
SDL_FRect cliprect;
SDL_Rect cliprect;
float w, h;
/* Set the viewport */
@@ -59,47 +59,47 @@ static void DrawOnViewport(SDL_Renderer *renderer)
/* Test inside points */
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0x00, 0xFF);
SDL_RenderPoint(renderer, (viewport.h / 2 + 20), (viewport.w / 2));
SDL_RenderPoint(renderer, (viewport.h / 2 - 20), (viewport.w / 2));
SDL_RenderPoint(renderer, (viewport.h / 2), (viewport.w / 2 - 20));
SDL_RenderPoint(renderer, (viewport.h / 2), (viewport.w / 2 + 20));
SDL_RenderPoint(renderer, (float)(viewport.h / 2 + 20), (float)(viewport.w / 2));
SDL_RenderPoint(renderer, (float)(viewport.h / 2 - 20), (float)(viewport.w / 2));
SDL_RenderPoint(renderer, (float)(viewport.h / 2), (float)(viewport.w / 2 - 20));
SDL_RenderPoint(renderer, (float)(viewport.h / 2), (float)(viewport.w / 2 + 20));
/* Test horizontal and vertical lines */
SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF);
SDL_RenderLine(renderer, 1.0f, 0.0f, (viewport.w - 2), 0.0f);
SDL_RenderLine(renderer, 1.0f, (viewport.h - 1), (viewport.w - 2), (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, 1.0f, 0.0f, (viewport.h - 2));
SDL_RenderLine(renderer, (viewport.w - 1), 1.0f, (viewport.w - 1), (viewport.h - 2));
SDL_RenderLine(renderer, 1.0f, 0.0f, (float)(viewport.w - 2), 0.0f);
SDL_RenderLine(renderer, 1.0f, (float)(viewport.h - 1), (float)(viewport.w - 2), (float)(viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, 1.0f, 0.0f, (float)(viewport.h - 2));
SDL_RenderLine(renderer, (float)(viewport.w - 1), 1.0f, (float)(viewport.w - 1), (float)(viewport.h - 2));
/* Test diagonal lines */
SDL_SetRenderDrawColor(renderer, 0x00, 0xff, 0xFF, 0xFF);
SDL_RenderLine(renderer, 0.0f, 0.0f, (viewport.w - 1), (viewport.h - 1));
SDL_RenderLine(renderer, (viewport.w - 1), 0.0f, 0.0f, (viewport.h - 1));
SDL_RenderLine(renderer, 0.0f, 0.0f, (float)(viewport.w - 1), (float)(viewport.h - 1));
SDL_RenderLine(renderer, (float)(viewport.w - 1), 0.0f, 0.0f, (float)(viewport.h - 1));
/* Test outside points */
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0x00, 0xFF);
SDL_RenderPoint(renderer, (viewport.h / 2 + viewport.h), (viewport.w / 2));
SDL_RenderPoint(renderer, (viewport.h / 2 - viewport.h), (viewport.w / 2));
SDL_RenderPoint(renderer, (viewport.h / 2), (viewport.w / 2 - viewport.w));
SDL_RenderPoint(renderer, (viewport.h / 2), (viewport.w / 2 + viewport.w));
SDL_RenderPoint(renderer, (float)(viewport.h / 2 + viewport.h), (float)(viewport.w / 2));
SDL_RenderPoint(renderer, (float)(viewport.h / 2 - viewport.h), (float)(viewport.w / 2));
SDL_RenderPoint(renderer, (float)(viewport.h / 2), (float)(viewport.w / 2 - viewport.w));
SDL_RenderPoint(renderer, (float)(viewport.h / 2), (float)(viewport.w / 2 + viewport.w));
/* Add a box at the top */
rect.w = 8.0f;
rect.h = 8.0f;
rect.x = ((viewport.w - rect.w) / 2);
rect.x = (float)((viewport.w - rect.w) / 2);
rect.y = 0.0f;
SDL_RenderFillRect(renderer, &rect);
/* Add a clip rect and fill it with the sprite */
SDL_GetTextureSize(sprite, &w, &h);
cliprect.x = (viewport.w - w) / 2;
cliprect.y = (viewport.h - h) / 2;
cliprect.w = w;
cliprect.h = h;
rect.x = cliprect.x;
rect.y = cliprect.y;
rect.w = cliprect.w;
rect.h = cliprect.h;
rect.x = (viewport.w - w) / 2;
rect.y = (viewport.h - h) / 2;
rect.w = w;
rect.h = h;
cliprect.x = (int)rect.x;
cliprect.y = (int)rect.y;
cliprect.w = (int)rect.w;
cliprect.h = (int)rect.h;
SDL_SetRenderClipRect(renderer, &cliprect);
SDL_RenderTexture(renderer, sprite, NULL, &rect);
SDL_SetRenderClipRect(renderer, NULL);
@@ -127,7 +127,7 @@ static void loop(void)
viewport.w = 100 + j * 50;
viewport.h = 100 + j * 50;
j = (j + 1) % 4;
SDL_Log("Current Viewport x=%g y=%g w=%g h=%g", viewport.x, viewport.y, viewport.w, viewport.h);
SDL_Log("Current Viewport x=%i y=%i w=%i h=%i", viewport.x, viewport.y, viewport.w, viewport.h);
for (i = 0; i < state->num_windows; ++i) {
if (state->windows[i] == NULL) {

View File

@@ -225,7 +225,8 @@ static void loop(void)
SDL_Renderer *renderer = state->renderers[i];
if (window && renderer) {
float y = 0.0f;
SDL_FRect viewport, menurect;
SDL_Rect viewport;
SDL_FRect menurect;
SDL_GetRenderViewport(renderer, &viewport);
@@ -237,8 +238,8 @@ static void loop(void)
menurect.x = 0.0f;
menurect.y = y;
menurect.w = viewport.w;
menurect.h = viewport.h - y;
menurect.w = (float)viewport.w;
menurect.h = (float)viewport.h - y;
draw_modes_menu(window, renderer, menurect);
SDL_Delay(16);