Browse Source

Leave letterbox borders set to the frame clear color

Fixes https://github.com/libsdl-org/sdl2-compat/issues/483
Sam Lantinga 1 tuần trước cách đây
mục cha
commit
fbbc29159a
1 tập tin đã thay đổi với 0 bổ sung90 xóa
  1. 0 90
      src/render/SDL_render.c

+ 0 - 90
src/render/SDL_render.c

@@ -2797,94 +2797,6 @@ bool SDL_GetRenderLogicalPresentationRect(SDL_Renderer *renderer, SDL_FRect *rec
     return true;
 }
 
-static void SDL_RenderLogicalBorders(SDL_Renderer *renderer, const SDL_FRect *dst)
-{
-    const SDL_RenderViewState *view = renderer->view;
-
-    if (dst->x > 0.0f || dst->y > 0.0f) {
-        SDL_BlendMode saved_blend_mode = renderer->blendMode;
-        SDL_FColor saved_color = renderer->color;
-
-        SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
-        SDL_SetRenderDrawColorFloat(renderer, 0.0f, 0.0f, 0.0f, 1.0f);
-
-        if (dst->x > 0.0f) {
-            SDL_FRect rect;
-
-            rect.x = 0.0f;
-            rect.y = 0.0f;
-            rect.w = dst->x;
-            rect.h = (float)view->pixel_h;
-            SDL_RenderFillRect(renderer, &rect);
-
-            rect.x = dst->x + dst->w;
-            rect.w = (float)view->pixel_w - rect.x;
-            SDL_RenderFillRect(renderer, &rect);
-        }
-
-        if (dst->y > 0.0f) {
-            SDL_FRect rect;
-
-            rect.x = 0.0f;
-            rect.y = 0.0f;
-            rect.w = (float)view->pixel_w;
-            rect.h = dst->y;
-            SDL_RenderFillRect(renderer, &rect);
-
-            rect.y = dst->y + dst->h;
-            rect.h = (float)view->pixel_h - rect.y;
-            SDL_RenderFillRect(renderer, &rect);
-        }
-
-        SDL_SetRenderDrawBlendMode(renderer, saved_blend_mode);
-        SDL_SetRenderDrawColorFloat(renderer, saved_color.r, saved_color.g, saved_color.b, saved_color.a);
-    }
-}
-
-static void SDL_RenderLogicalPresentation(SDL_Renderer *renderer)
-{
-    SDL_assert(renderer->view == &renderer->main_view);
-
-    SDL_RenderViewState *view = &renderer->main_view;
-    const SDL_RendererLogicalPresentation mode = view->logical_presentation_mode;
-    if (mode == SDL_LOGICAL_PRESENTATION_LETTERBOX) {
-        // save off some state we're going to trample.
-        const int logical_w = view->logical_w;
-        const int logical_h = view->logical_h;
-        const float scale_x = view->scale.x;
-        const float scale_y = view->scale.y;
-        const bool clipping_enabled = view->clipping_enabled;
-        SDL_Rect orig_viewport, orig_cliprect;
-        const SDL_FRect logical_dst_rect = view->logical_dst_rect;
-
-        SDL_copyp(&orig_viewport, &view->viewport);
-        if (clipping_enabled) {
-            SDL_copyp(&orig_cliprect, &view->clip_rect);
-        }
-
-        // trample some state.
-        SDL_SetRenderLogicalPresentation(renderer, logical_w, logical_h, SDL_LOGICAL_PRESENTATION_DISABLED);
-        SDL_SetRenderViewport(renderer, NULL);
-        if (clipping_enabled) {
-            SDL_SetRenderClipRect(renderer, NULL);
-        }
-        SDL_SetRenderScale(renderer, 1.0f, 1.0f);
-
-        // draw the borders.
-        SDL_RenderLogicalBorders(renderer, &logical_dst_rect);
-
-        // now set everything back.
-        view->logical_presentation_mode = mode;
-        SDL_SetRenderViewport(renderer, &orig_viewport);
-        if (clipping_enabled) {
-            SDL_SetRenderClipRect(renderer, &orig_cliprect);
-        }
-        SDL_SetRenderScale(renderer, scale_x, scale_y);
-
-        SDL_SetRenderLogicalPresentation(renderer, logical_w, logical_h, mode);
-    }
-}
-
 static bool SDL_RenderVectorFromWindow(SDL_Renderer *renderer, float window_dx, float window_dy, float *dx, float *dy)
 {
     // Convert from window coordinates to pixels within the window
@@ -5401,8 +5313,6 @@ bool SDL_RenderPresent(SDL_Renderer *renderer)
         return SDL_SetError("You can't present on a render target");
     }
 
-    SDL_RenderLogicalPresentation(renderer);
-
     if (renderer->transparent_window) {
         SDL_RenderApplyWindowShape(renderer);
     }