aboutsummaryrefslogtreecommitdiff
path: root/sources/TZR_SetViewportSize.c
diff options
context:
space:
mode:
Diffstat (limited to 'sources/TZR_SetViewportSize.c')
-rw-r--r--sources/TZR_SetViewportSize.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/sources/TZR_SetViewportSize.c b/sources/TZR_SetViewportSize.c
new file mode 100644
index 0000000..fee70db
--- /dev/null
+++ b/sources/TZR_SetViewportSize.c
@@ -0,0 +1,40 @@
+#include "TZR.h"
+#include "TZR_globals.h"
+#include "sdl_error.h"
+
+int
+TZR_SetViewportSize(int width, int height)
+{
+ const int pw = ___tzr_config.width;
+ const int ph = ___tzr_config.height;
+ ___tzr_config.width = width;
+ ___tzr_config.height = height;
+ if (___tzr_config.hd_render) {
+ if (SDL_RenderSetLogicalSize(___tzr_renderer,
+ ___tzr_config.width,
+ ___tzr_config.height) < 0)
+ return sdl_error(-1);
+ } else {
+ if (___tzr_target != NULL && pw == width && ph == height)
+ return 0;
+ if (___tzr_target != NULL)
+ SDL_DestroyTexture(___tzr_target);
+ ___tzr_target = SDL_CreateTexture(___tzr_renderer,
+ SDL_PIXELFORMAT_RGB888,
+ SDL_TEXTUREACCESS_TARGET,
+ ___tzr_config.width,
+ ___tzr_config.height);
+ if (___tzr_target == NULL)
+ return sdl_error(-1);
+ if (___tzr_config.interlace) {
+ ___tzr_target_pre = SDL_CreateTexture(
+ ___tzr_renderer,
+ SDL_PIXELFORMAT_RGB888,
+ SDL_TEXTUREACCESS_TARGET,
+ ___tzr_config.width,
+ ___tzr_config.height);
+ }
+ }
+ return 0;
+}
+