diff --git a/src/conio/CMakeLists.txt b/src/conio/CMakeLists.txt index 2925f5c4b7058f41e5f09a66be72ba54ca8196b2..6f5b1068ac4f47cd527dd0d82c1b95372c64356f 100644 --- a/src/conio/CMakeLists.txt +++ b/src/conio/CMakeLists.txt @@ -61,10 +61,6 @@ if(SDL_FOUND) target_compile_definitions(ciolib PUBLIC WITH_SDL) endif() -if(NEED_BITMAP) - target_compile_definitions(ciolib PUBLIC HAS_VSTAT) -endif() - if(NOT WIN32) target_link_libraries(ciolib pthread) endif() diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c index 147850a3c53af5a1b4d872fb102b0f451c0ef0f9..bb565b9f84ece95c1039bb3758094b7cba9fbeb9 100644 --- a/src/conio/bitmap_con.c +++ b/src/conio/bitmap_con.c @@ -577,6 +577,17 @@ int bitmap_getfont(void) return(current_font); } +void bitmap_setscaling(int new_value) +{ + if(new_value > 0) + vstat.scaling = new_value; +} + +int bitmap_getscaling(void) +{ + return vstat.scaling; +} + /* Called from event thread only */ int bitmap_loadfont(char *filename) { diff --git a/src/conio/bitmap_con.h b/src/conio/bitmap_con.h index 599746316f9f3f3257057c9c90b34a595705b7f3..2a7bf2b0ddd1d49eea75a4cfa15bf2b7f5185dec 100644 --- a/src/conio/bitmap_con.h +++ b/src/conio/bitmap_con.h @@ -28,5 +28,7 @@ void bitmap_getcustomcursor(int *s, int *e, int *r, int *b, int *v); void bitmap_setcustomcursor(int s, int e, int r, int b, int v); int bitmap_getvideoflags(void); void bitmap_setvideoflags(int flags); +void bitmap_setscaling(int new_value); +int bitmap_getscaling(void); #endif diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index 707e5803eb1e87bfe53e63976b539a51f3b338b1..7e91c8b8fa30041e477fc20abbee9fd89f7111b5 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -113,6 +113,8 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_getpass(const char *prompt); CIOLIBEXPORT void CIOLIBCALL ciolib_copytext(const char *text, size_t buflen); CIOLIBEXPORT char * CIOLIBCALL ciolib_getcliptext(void); CIOLIBEXPORT int CIOLIBCALL ciolib_get_window_info(int *width, int *height, int *xpos, int *ypos); +CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int new_value); +CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void); #define CIOLIB_INIT() { if(initialized != 1) initciolib(CIOLIB_MODE_AUTO); } @@ -152,6 +154,8 @@ int try_sdl_init(int mode) cio_api.getcliptext=sdl_getcliptext; #endif cio_api.get_window_info=sdl_get_window_info; + cio_api.setscaling=bitmap_setscaling; + cio_api.getscaling=bitmap_getscaling; return(1); } return(0); @@ -189,6 +193,8 @@ int try_x_init(int mode) cio_api.copytext=x_copytext; cio_api.getcliptext=x_getcliptext; cio_api.get_window_info=x_get_window_info; + cio_api.setscaling=bitmap_setscaling; + cio_api.getscaling=bitmap_getscaling; return(1); } return(0); @@ -1321,3 +1327,18 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_getvideoflags(void) return(cio_api.getvideoflags()); return(0); } + +/* Optional */ +CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int new_value) +{ + if(cio_api.setscaling) + cio_api.setscaling(new_value); +} + +/* Optional */ +CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void) +{ + if(cio_api.getscaling) + return(cio_api.getscaling()); + return(0); +} diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h index 22b287bda3a4d65039ea0e9d1d80c52a8215d7e7..f9ac3946df847617e47ffe2cdf45204e23717ee9 100644 --- a/src/conio/ciolib.h +++ b/src/conio/ciolib.h @@ -295,6 +295,8 @@ typedef struct { void (*setcustomcursor) (int startline, int endline, int range, int blink, int visible); void (*setvideoflags) (int flags); int (*getvideoflags) (void); + void (*setscaling) (int new_value); + int (*getscaling) (void); int *ESCDELAY; } cioapi_t; @@ -360,6 +362,8 @@ CIOLIBEXPORT void CIOLIBCALL ciolib_getcustomcursor(int *startline, int *endline CIOLIBEXPORT void CIOLIBCALL ciolib_setcustomcursor(int startline, int endline, int range, int blink, int visible); CIOLIBEXPORT void CIOLIBCALL ciolib_setvideoflags(int flags); CIOLIBEXPORT int CIOLIBCALL ciolib_getvideoflags(void); +CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int flags); +CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void); /* DoorWay specific stuff that's only applicable to ANSI mode. */ CIOLIBEXPORT void CIOLIBCALL ansi_ciolib_setdoorway(int enable); @@ -419,6 +423,8 @@ CIOLIBEXPORT void CIOLIBCALL ansi_ciolib_setdoorway(int enable); #define setcustomcursor(a,b,c,d,e) ciolib_setcustomcursor(a,b,c,d,e) #define setvideoflags(a) ciolib_setvideoflags(a) #define getvideoflags() ciolib_getvideoflags() + #define setscaling(a) ciolib_setscaling(a) + #define getscaling() ciolib_getscaling() #endif #ifdef WITH_SDL