Browse Source

add SDL2 Scale Quality support

Pal Lockheart 6 years ago
parent
commit
a14f5985c0
3 changed files with 16 additions and 2 deletions
  1. 13 2
      palcfg.c
  2. 2 0
      palcfg.h
  3. 1 0
      video.c

+ 13 - 2
palcfg.c

@@ -66,6 +66,7 @@ static const ConfigItem gConfigItems[PALCFG_ALL_MAX] = {
 	{ PALCFG_LOGFILE,           PALCFG_STRING,   "LogFileName",       11, MAKE_VALUE(NULL,     NULL, NULL) },
 	{ PALCFG_RIXEXTRAINIT,      PALCFG_STRING,   "RIXExtraInit",      12, MAKE_VALUE(NULL,     NULL, NULL) },
 	{ PALCFG_CLIMIDIPLAYER,     PALCFG_STRING,   "CLIMIDIPlayer",     13, MAKE_VALUE(NULL,     NULL, NULL) },
+    { PALCFG_SCALEQUALITY,      PALCFG_STRING,   "ScaleQuality",      12, MAKE_VALUE("0",      NULL, NULL) },
 };
 
 static const char *music_types[] = { "MIDI", "RIX", "MP3", "OGG", "RAW" };
@@ -255,7 +256,8 @@ PAL_FreeConfig(
 	free(gConfig.pszMsgFile);
 	free(gConfig.pszFontFile);
 	free(gConfig.pszGamePath);
-	free(gConfig.pszSavePath);
+    free(gConfig.pszSavePath);
+    free(gConfig.pszScaleQuality);
 	free(gConfig.pszLogFile);
 
 	memset(&gConfig, 0, sizeof(CONFIGURATION));
@@ -413,6 +415,9 @@ PAL_LoadConfig(
 				case PALCFG_CLIMIDIPLAYER:
 					gConfig.pszCLIMIDIPlayerPath = ParseStringValue(value.sValue, gConfig.pszCLIMIDIPlayerPath);
 					break;
+                case PALCFG_SCALEQUALITY:
+                    gConfig.pszScaleQuality = ParseStringValue(value.sValue, gConfig.pszScaleQuality);
+                    break;
 				default:
 					values[item->Item] = value;
 					break;
@@ -505,7 +510,8 @@ PAL_SaveConfig(
 		if (gConfig.pszMsgFile && *gConfig.pszMsgFile) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_MESSAGEFILE), gConfig.pszMsgFile); fputs(buf, fp); }
 		if (gConfig.pszFontFile && *gConfig.pszFontFile) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_FONTFILE), gConfig.pszFontFile); fputs(buf, fp); }
 		if (gConfig.pszLogFile && *gConfig.pszLogFile) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_LOGFILE), gConfig.pszLogFile); fputs(buf, fp); }
-		if (gConfig.pszCLIMIDIPlayerPath && *gConfig.pszCLIMIDIPlayerPath) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_CLIMIDIPLAYER), gConfig.pszCLIMIDIPlayerPath); fputs(buf, fp); }
+        if (gConfig.pszCLIMIDIPlayerPath && *gConfig.pszCLIMIDIPlayerPath) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_CLIMIDIPLAYER), gConfig.pszCLIMIDIPlayerPath); fputs(buf, fp); }
+        if (gConfig.pszScaleQuality && *gConfig.pszScaleQuality) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_SCALEQUALITY), gConfig.pszScaleQuality); fputs(buf, fp); }
 
 		fclose(fp);
 
@@ -551,6 +557,7 @@ PAL_GetConfigItem(
 		case PALCFG_FONTFILE:          value.sValue = gConfig.pszFontFile; break;
 		case PALCFG_LOGFILE:           value.sValue = gConfig.pszLogFile; break;
 		case PALCFG_CLIMIDIPLAYER:     value.sValue = gConfig.pszCLIMIDIPlayerPath; break;
+		case PALCFG_SCALEQUALITY:      value.sValue = gConfig.pszScaleQuality; break;
 		case PALCFG_MUSIC:             value.sValue = music_types[gConfig.eMusicType]; break;
 		case PALCFG_OPL:               value.sValue = opl_types[gConfig.eOPLType]; break;
 		default:                       break;
@@ -609,6 +616,10 @@ PAL_SetConfigItem(
 		if (gConfig.pszCLIMIDIPlayerPath) free(gConfig.pszCLIMIDIPlayerPath);
 		gConfig.pszCLIMIDIPlayerPath = value.sValue && value.sValue[0] ? strdup(value.sValue) : NULL;
 		break;
+	case PALCFG_SCALEQUALITY:
+		if (gConfig.pszScaleQuality) free(gConfig.pszScaleQuality);
+		gConfig.pszScaleQuality = value.sValue && value.sValue[0] ? strdup(value.sValue) : NULL;
+		break;
 	case PALCFG_CD:
 		for (int i = 0; i < sizeof(music_types) / sizeof(music_types[0]); i++)
 		{

+ 2 - 0
palcfg.h

@@ -80,6 +80,7 @@ typedef enum tagPALCFG_ITEM
 	PALCFG_LOGFILE,
 	PALCFG_RIXEXTRAINIT,
 	PALCFG_CLIMIDIPLAYER,
+    PALCFG_SCALEQUALITY,
 	/* Strings */
 	PALCFG_STRING_MAX,
 
@@ -168,6 +169,7 @@ typedef struct tagCONFIGURATION
 	char            *pszFontFile;
 	char            *pszCLIMIDIPlayerPath;
 	char            *pszLogFile;
+    char            *pszScaleQuality;
 	DWORD            dwWordLength;
 	DWORD            dwScreenWidth;
 	DWORD            dwScreenHeight;

+ 1 - 0
video.c

@@ -135,6 +135,7 @@ VIDEO_Startup(
    //
    gpWindow = SDL_CreateWindow("Pal", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
                                gConfig.dwScreenWidth, gConfig.dwScreenHeight, PAL_VIDEO_INIT_FLAGS | (gConfig.fFullScreen ? SDL_WINDOW_BORDERLESS : 0) );
+   SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, gConfig.pszScaleQuality);
 
    if (gpWindow == NULL)
    {