From 6377ac7bfbdb10456e5a7f8f7f889c60b7f2df05 Mon Sep 17 00:00:00 2001 From: Philip Goto Date: Mon, 30 Oct 2017 21:44:10 +0100 Subject: [PATCH] Create enum for scale quality --- src/openrct2-ui/UiContext.cpp | 6 +++--- .../drawing/engines/HardwareDisplayDrawingEngine.cpp | 6 +++--- src/openrct2/config/Config.cpp | 12 ++++++++++-- src/openrct2/config/Config.h | 8 ++++++++ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index 720ea5412e..bc45a153c6 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -495,11 +495,11 @@ public: if (gConfigGeneral.use_nn_at_integer_scales && gConfigGeneral.window_scale == std::floor(gConfigGeneral.window_scale)) { - _scaleQuality = 0; + _scaleQuality = SCALE_QUALITY_NN; } - if (_scaleQuality == 3) + if (_scaleQuality == SCALE_QUALITY_SMOOTH_NN) { - _scaleQuality = 1; + _scaleQuality = SCALE_QUALITY_LINEAR; } snprintf(scaleQualityBuffer, sizeof(scaleQualityBuffer), "%u", _scaleQuality); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, scaleQualityBuffer); diff --git a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp index 8c5441663a..2528efa6cf 100644 --- a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp @@ -105,11 +105,11 @@ public: if (gConfigGeneral.use_nn_at_integer_scales && gConfigGeneral.window_scale == std::floor(gConfigGeneral.window_scale)) { - scaleQuality = 0; + scaleQuality = SCALE_QUALITY_NN; } - if (scaleQuality == 3) + if (scaleQuality == SCALE_QUALITY_SMOOTH_NN) { - scaleQuality = 1; + scaleQuality = SCALE_QUALITY_LINEAR; smoothNN = true; } else diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index ecbb514ff6..9748c51a5f 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -99,6 +99,14 @@ namespace Config ConfigEnumEntry("CELSIUS", TEMPERATURE_FORMAT_C), ConfigEnumEntry("FAHRENHEIT", TEMPERATURE_FORMAT_F), }); + + static auto Enum_ScaleQuality = ConfigEnum( + { + ConfigEnumEntry("NEAREST_NEIGHBOR", SCALE_QUALITY_NN), + ConfigEnumEntry("LINEAR", SCALE_QUALITY_LINEAR), + ConfigEnumEntry("ANISOTROPIC_FILTERING", SCALE_QUALITY_ANISOTROPIC), + ConfigEnumEntry("SMOOTH_NEAREST_NEIGHBOUR", SCALE_QUALITY_SMOOTH_NN), + }); /** * Config enum wrapping LanguagesDescriptors. @@ -184,7 +192,7 @@ namespace Config model->allow_loading_with_incorrect_checksum = reader->GetBoolean("allow_loading_with_incorrect_checksum", true); model->steam_overlay_pause = reader->GetBoolean("steam_overlay_pause", true); model->window_scale = reader->GetFloat("window_scale", platform_get_default_scale()); - model->scale_quality = reader->GetSint32("scale_quality", 1); + model->scale_quality = reader->GetEnum("scale_quality", SCALE_QUALITY_SMOOTH_NN, Enum_ScaleQuality); model->use_nn_at_integer_scales = reader->GetBoolean("use_nn_at_integer_scales", true); model->show_fps = reader->GetBoolean("show_fps", false); model->trap_cursor = reader->GetBoolean("trap_cursor", false); @@ -254,7 +262,7 @@ namespace Config writer->WriteBoolean("allow_loading_with_incorrect_checksum", model->allow_loading_with_incorrect_checksum); writer->WriteBoolean("steam_overlay_pause", model->steam_overlay_pause); writer->WriteFloat("window_scale", model->window_scale); - writer->WriteSint32("scale_quality", model->scale_quality); + writer->WriteEnum("scale_quality", model->scale_quality, Enum_ScaleQuality); writer->WriteBoolean("use_nn_at_integer_scales", model->use_nn_at_integer_scales); writer->WriteBoolean("show_fps", model->show_fps); writer->WriteBoolean("trap_cursor", model->trap_cursor); diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index e253646680..495bc9427c 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -209,6 +209,14 @@ enum TEMPERATURE_FORMAT TEMPERATURE_FORMAT_F }; +enum SCALE_QUALITY +{ + SCALE_QUALITY_NN, + SCALE_QUALITY_LINEAR, + SCALE_QUALITY_ANISOTROPIC, + SCALE_QUALITY_SMOOTH_NN +}; + enum MEASUREMENT_FORMAT { MEASUREMENT_FORMAT_IMPERIAL,