|
@@ -1071,6 +1071,7 @@ SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
|
|
/* Make a backup of the viewport */
|
|
/* Make a backup of the viewport */
|
|
renderer->viewport_backup = renderer->viewport;
|
|
renderer->viewport_backup = renderer->viewport;
|
|
renderer->clip_rect_backup = renderer->clip_rect;
|
|
renderer->clip_rect_backup = renderer->clip_rect;
|
|
|
|
+ renderer->clipping_enabled_backup = renderer->clipping_enabled;
|
|
renderer->scale_backup = renderer->scale;
|
|
renderer->scale_backup = renderer->scale;
|
|
renderer->logical_w_backup = renderer->logical_w;
|
|
renderer->logical_w_backup = renderer->logical_w;
|
|
renderer->logical_h_backup = renderer->logical_h;
|
|
renderer->logical_h_backup = renderer->logical_h;
|
|
@@ -1093,6 +1094,7 @@ SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
|
|
} else {
|
|
} else {
|
|
renderer->viewport = renderer->viewport_backup;
|
|
renderer->viewport = renderer->viewport_backup;
|
|
renderer->clip_rect = renderer->clip_rect_backup;
|
|
renderer->clip_rect = renderer->clip_rect_backup;
|
|
|
|
+ renderer->clipping_enabled = renderer->clipping_enabled_backup;
|
|
renderer->scale = renderer->scale_backup;
|
|
renderer->scale = renderer->scale_backup;
|
|
renderer->logical_w = renderer->logical_w_backup;
|
|
renderer->logical_w = renderer->logical_w_backup;
|
|
renderer->logical_h = renderer->logical_h_backup;
|
|
renderer->logical_h = renderer->logical_h_backup;
|
|
@@ -1233,11 +1235,13 @@ SDL_RenderSetClipRect(SDL_Renderer * renderer, const SDL_Rect * rect)
|
|
CHECK_RENDERER_MAGIC(renderer, -1)
|
|
CHECK_RENDERER_MAGIC(renderer, -1)
|
|
|
|
|
|
if (rect) {
|
|
if (rect) {
|
|
|
|
+ renderer->clipping_enabled = SDL_TRUE;
|
|
renderer->clip_rect.x = (int)SDL_floor(rect->x * renderer->scale.x);
|
|
renderer->clip_rect.x = (int)SDL_floor(rect->x * renderer->scale.x);
|
|
renderer->clip_rect.y = (int)SDL_floor(rect->y * renderer->scale.y);
|
|
renderer->clip_rect.y = (int)SDL_floor(rect->y * renderer->scale.y);
|
|
renderer->clip_rect.w = (int)SDL_ceil(rect->w * renderer->scale.x);
|
|
renderer->clip_rect.w = (int)SDL_ceil(rect->w * renderer->scale.x);
|
|
renderer->clip_rect.h = (int)SDL_ceil(rect->h * renderer->scale.y);
|
|
renderer->clip_rect.h = (int)SDL_ceil(rect->h * renderer->scale.y);
|
|
} else {
|
|
} else {
|
|
|
|
+ renderer->clipping_enabled = SDL_FALSE;
|
|
SDL_zero(renderer->clip_rect);
|
|
SDL_zero(renderer->clip_rect);
|
|
}
|
|
}
|
|
return renderer->UpdateClipRect(renderer);
|
|
return renderer->UpdateClipRect(renderer);
|
|
@@ -1256,6 +1260,13 @@ SDL_RenderGetClipRect(SDL_Renderer * renderer, SDL_Rect * rect)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+SDL_bool
|
|
|
|
+SDL_RenderIsClipEnabled(SDL_Renderer * renderer)
|
|
|
|
+{
|
|
|
|
+ CHECK_RENDERER_MAGIC(renderer, SDL_FALSE)
|
|
|
|
+ return renderer->clipping_enabled;
|
|
|
|
+}
|
|
|
|
+
|
|
int
|
|
int
|
|
SDL_RenderSetScale(SDL_Renderer * renderer, float scaleX, float scaleY)
|
|
SDL_RenderSetScale(SDL_Renderer * renderer, float scaleX, float scaleY)
|
|
{
|
|
{
|