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

@@ -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) {