From f66ebff002097abdaaf293f9ae61eb13743b80bb Mon Sep 17 00:00:00 2001 From: BEN ENGLISCH Date: Sun, 18 Jul 2021 23:09:16 -0500 Subject: [PATCH] Add integerscale option --- src/sdl_core.h | 1 + src/sdl_video.c | 6 ++++++ src/xsystem35.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/src/sdl_core.h b/src/sdl_core.h index 38bf7e7..20810cb 100644 --- a/src/sdl_core.h +++ b/src/sdl_core.h @@ -44,6 +44,7 @@ extern void sdl_getWindowInfo(DispInfo *info); extern void sdl_setFullscreen(boolean on); extern boolean sdl_isFullscreen(void); extern agsurface_t *sdl_getDIB(void); +extern void sdl_setIntegerScaling(boolean bool); /* 画面更新 */ extern void sdl_updateArea(MyRectangle *src, MyPoint *dst); diff --git a/src/sdl_video.c b/src/sdl_video.c index b13eb5e..79e3ad1 100644 --- a/src/sdl_video.c +++ b/src/sdl_video.c @@ -41,6 +41,7 @@ static void makeDIB(int width, int height, int depth); struct sdl_private_data *sdl_videodev; static int joy_device_index = -1; +static boolean integer_scaling = FALSE; #ifdef HAVE_SDLJOY static SDL_Joystick *js; @@ -158,6 +159,7 @@ static void window_init(void) { SYS35_DEFAULT_WIDTH, SYS35_DEFAULT_HEIGHT, flags); sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0); + SDL_RenderSetIntegerScale(sdl_renderer, integer_scaling); } static void makeDIB(int width, int height, int depth) { @@ -275,6 +277,10 @@ void sdl_setJoyDeviceIndex(int index) { joy_device_index = index; } +void sdl_setIntegerScaling(boolean bool) { + integer_scaling = bool; +} + #ifdef __EMSCRIPTEN__ void* EMSCRIPTEN_KEEPALIVE sdl_getDisplaySurface() { diff --git a/src/xsystem35.c b/src/xsystem35.c index 17f241c..85a579a 100644 --- a/src/xsystem35.c +++ b/src/xsystem35.c @@ -147,6 +147,7 @@ static void sys35_usage(boolean verbose) { #endif puts(" -noantialias : never use antialiased string"); puts(" -fullscreen : start with fullscreen"); + puts(" -integerscale : use integer scaling when resizing"); puts(" -noimagecursor : disable image cursor"); puts(" -version : show version"); puts(" -h : show this message"); @@ -332,6 +333,8 @@ static void sys35_ParseOption(int *argc, char **argv) { } else if (0 == strcmp(argv[i], "-version")) { puts(VERSION); exit(0); + } else if (0 == strcmp(argv[i], "-integerscale")) { + sdl_setIntegerScaling(TRUE); } } } @@ -403,6 +406,13 @@ static void check_profile() { nact->noimagecursor = TRUE; } } + /* enable integer scaling */ + param = get_profile("integerscale"); + if (param) { + if (0 == strcmp(param, "Yes")) { + sdl_setIntegerScaling(TRUE); + } + } } #ifdef HAVE_SIGACTION