Merge pull request #16498 from Gymnasiast/remove/scaling-dropdown

Always use SNN for non-integer scaling
This commit is contained in:
Michael Steenbeek 2022-01-25 10:55:17 +01:00 committed by GitHub
commit 28b10f6787
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 3 additions and 80 deletions

View File

@ -2959,8 +2959,6 @@ STR_5723 :Heavy Rain
STR_5724 :Thunderstorm
STR_5725 :{BLACK}Change weather to:
STR_5726 :Sets the current weather in the park
STR_5727 :Scaling quality:
STR_5731 :Linear
# tooltip for tab in options window
STR_5734 :Rendering
STR_5735 :Network Status
@ -3047,7 +3045,6 @@ STR_5814 :{WINDOW_COLOUR_1}“{STRING}”
#tooltips
STR_5815 :Display FPS counter in-game
STR_5816 :Sets ratio to scale the game by.{NEWLINE}Most useful when playing in{NEWLINE}high resolutions
STR_5817 :Sets UI scaling type. Requires hardware display to be used.{NEWLINE}Linear scaling is smooth, but blurry. Smooth Nearest Neighbour scaling is sharp, but can cause a minor performance hit.
STR_5819 :[Requires hardware display]{NEWLINE}Pause the game if Steam{NEWLINE}in-game overlay is opened
STR_5820 :Minimise the game if focus is{NEWLINE}lost while in fullscreen mode
STR_5822 :Cycle between day and night.{NEWLINE}Full cycle takes one in-game month
@ -3376,7 +3373,6 @@ STR_6155 :Neither KDialog nor Zenity are installed. Please install one, or co
STR_6156 :Name is reserved
STR_6157 :Console
STR_6158 :Failed to load this file…{NEWLINE}Incompatible RCTC version: {COMMA16}
STR_6159 :Smooth Nearest Neighbour
STR_6160 :{WINDOW_COLOUR_2}Available vehicles: {BLACK}{STRING}
STR_6161 :Gridlines display toggle
STR_6162 :Spinning Wild Mouse

View File

@ -597,7 +597,7 @@ public:
void TriggerResize() override
{
char scaleQualityBuffer[4];
_scaleQuality = gConfigGeneral.scale_quality;
_scaleQuality = ScaleQuality::SmoothNearestNeighbour;
if (gConfigGeneral.window_scale == std::floor(gConfigGeneral.window_scale))
{
_scaleQuality = ScaleQuality::NearestNeighbour;

View File

@ -84,8 +84,6 @@ enum WindowOptionsWidgetIdx {
WIDX_SCALE_DOWN,
WIDX_DRAWING_ENGINE,
WIDX_DRAWING_ENGINE_DROPDOWN,
WIDX_SCALE_QUALITY,
WIDX_SCALE_QUALITY_DROPDOWN,
WIDX_STEAM_OVERLAY_PAUSE,
WIDX_UNCAP_FPS_CHECKBOX,
WIDX_SHOW_FPS_CHECKBOX,
@ -219,9 +217,7 @@ static rct_widget window_options_display_widgets[] = {
MakeSpinnerWidgets({155, 98}, {145, 12}, WindowWidgetType::Spinner, WindowColour::Secondary, STR_NONE, STR_WINDOW_SCALE_TIP ), // Scale spinner (3 widgets)
MakeWidget ({155, 113}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary ),
MakeWidget ({288, 114}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_DRAWING_ENGINE_TIP ),
MakeWidget ({155, 128}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary ), // Scaling quality hint
MakeWidget ({288, 129}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_SCALE_QUALITY_TIP ),
MakeWidget ({ 25, 144}, {266, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_STEAM_OVERLAY_PAUSE, STR_STEAM_OVERLAY_PAUSE_TIP ), // Pause on steam overlay
MakeWidget ({ 11, 144}, {280, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_STEAM_OVERLAY_PAUSE, STR_STEAM_OVERLAY_PAUSE_TIP ), // Pause on steam overlay
MakeWidget ({ 11, 161}, {143, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UNCAP_FPS, STR_UNCAP_FPS_TIP ), // Uncap fps
MakeWidget ({155, 161}, {136, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SHOW_FPS, STR_SHOW_FPS_TIP ), // Show fps
MakeWidget ({155, 176}, {136, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MULTITHREADING, STR_MULTITHREADING_TIP ), // Multithreading
@ -392,11 +388,6 @@ static constexpr const rct_string_id window_options_title_music_names[] = {
STR_OPTIONS_MUSIC_VALUE_RANDOM,
};
static constexpr const rct_string_id window_options_scale_quality_names[] = {
STR_SCALING_QUALITY_LINEAR,
STR_SCALING_QUALITY_SMOOTH_NN,
};
static constexpr const rct_string_id window_options_fullscreen_mode_names[] = {
STR_OPTIONS_DISPLAY_WINDOWED,
STR_OPTIONS_DISPLAY_FULLSCREEN,
@ -453,9 +444,7 @@ static uint64_t window_options_page_enabled_widgets[] = {
(1ULL << WIDX_DISABLE_SCREENSAVER_LOCK) |
(1ULL << WIDX_SCALE) |
(1ULL << WIDX_SCALE_UP) |
(1ULL << WIDX_SCALE_DOWN) |
(1ULL << WIDX_SCALE_QUALITY) |
(1ULL << WIDX_SCALE_QUALITY_DROPDOWN),
(1ULL << WIDX_SCALE_DOWN),
MAIN_OPTIONS_ENABLED_WIDGETS |
(1ULL << WIDX_TILE_SMOOTHING_CHECKBOX) |
@ -935,17 +924,6 @@ private:
context_trigger_resize();
context_update_cursor_scale();
break;
case WIDX_SCALE_QUALITY_DROPDOWN:
gDropdownItemsFormat[0] = STR_DROPDOWN_MENU_LABEL;
gDropdownItemsFormat[1] = STR_DROPDOWN_MENU_LABEL;
gDropdownItemsArgs[0] = STR_SCALING_QUALITY_LINEAR;
gDropdownItemsArgs[1] = STR_SCALING_QUALITY_SMOOTH_NN;
this->ShowDropdown(widget, 2);
// Note: offset by one to compensate for lack of NN option.
Dropdown::SetChecked(static_cast<int32_t>(gConfigGeneral.scale_quality) - 1, true);
break;
}
}
@ -998,16 +976,6 @@ private:
this->Invalidate();
}
break;
case WIDX_SCALE_QUALITY_DROPDOWN:
// Note: offset by one to compensate for lack of NN option.
if (static_cast<ScaleQuality>(dropdownIndex + 1) != gConfigGeneral.scale_quality)
{
gConfigGeneral.scale_quality = static_cast<ScaleQuality>(dropdownIndex + 1);
config_save_default();
gfx_invalidate_screen();
context_trigger_resize();
}
break;
}
}
@ -1043,20 +1011,6 @@ private:
this->disabled_widgets &= ~(1ULL << WIDX_STEAM_OVERLAY_PAUSE);
}
// Disable scaling quality dropdown when using software rendering or when using an integer scalar.
// In the latter case, nearest neighbour rendering will be used to scale.
if (gConfigGeneral.drawing_engine == DrawingEngine::Software
|| gConfigGeneral.window_scale == std::floor(gConfigGeneral.window_scale))
{
this->disabled_widgets |= (1ULL << WIDX_SCALE_QUALITY);
this->disabled_widgets |= (1ULL << WIDX_SCALE_QUALITY_DROPDOWN);
}
else
{
this->disabled_widgets &= ~(1ULL << WIDX_SCALE_QUALITY);
this->disabled_widgets &= ~(1ULL << WIDX_SCALE_QUALITY_DROPDOWN);
}
// Disable changing VSync for Software engine, as we can't control its use of VSync
if (gConfigGeneral.drawing_engine == DrawingEngine::Software)
{
@ -1078,8 +1032,6 @@ private:
// Dropdown captions for straightforward strings.
this->widgets[WIDX_FULLSCREEN].text = window_options_fullscreen_mode_names[gConfigGeneral.fullscreen_mode];
this->widgets[WIDX_DRAWING_ENGINE].text = DrawingEngineStringIds[EnumValue(gConfigGeneral.drawing_engine)];
this->widgets[WIDX_SCALE_QUALITY].text = window_options_scale_quality_names
[static_cast<int32_t>(gConfigGeneral.scale_quality) - 1];
CommonPrepareDrawAfter();
}
@ -1114,16 +1066,6 @@ private:
DrawTextBasic(
dpi, this->windowPos + ScreenCoordsXY{ this->widgets[WIDX_SCALE].left + 1, this->widgets[WIDX_SCALE].top + 1 },
STR_WINDOW_OBJECTIVE_VALUE_RATING, ft, { this->colours[1] });
colour = this->colours[1];
if (gConfigGeneral.drawing_engine == DrawingEngine::Software
|| gConfigGeneral.window_scale == std::floor(gConfigGeneral.window_scale))
{
colour |= COLOUR_FLAG_INSET;
}
DrawTextBasic(
dpi, this->windowPos + ScreenCoordsXY{ 25, this->widgets[WIDX_SCALE_QUALITY].top + 1 }, STR_SCALING_QUALITY, {},
{ colour });
}
#pragma endregion

View File

@ -94,12 +94,6 @@ namespace Config
ConfigEnumEntry<TemperatureUnit>("FAHRENHEIT", TemperatureUnit::Fahrenheit),
});
static const auto Enum_ScaleQuality = ConfigEnum<ScaleQuality>({
ConfigEnumEntry<ScaleQuality>("NEAREST_NEIGHBOUR", ScaleQuality::NearestNeighbour),
ConfigEnumEntry<ScaleQuality>("LINEAR", ScaleQuality::Linear),
ConfigEnumEntry<ScaleQuality>("SMOOTH_NEAREST_NEIGHBOUR", ScaleQuality::SmoothNearestNeighbour),
});
static const auto Enum_Sort = ConfigEnum<Sort>({
ConfigEnumEntry<Sort>("NAME_ASCENDING", Sort::NameAscending),
ConfigEnumEntry<Sort>("NAME_DESCENDING", Sort::NameDescending),
@ -203,8 +197,6 @@ 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::GetDefaultScale());
model->scale_quality = reader->GetEnum<ScaleQuality>(
"scale_quality", ScaleQuality::SmoothNearestNeighbour, Enum_ScaleQuality);
model->show_fps = reader->GetBoolean("show_fps", false);
model->multithreading = reader->GetBoolean("multi_threading", false);
model->trap_cursor = reader->GetBoolean("trap_cursor", false);
@ -281,7 +273,6 @@ 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->WriteEnum<ScaleQuality>("scale_quality", model->scale_quality, Enum_ScaleQuality);
writer->WriteBoolean("show_fps", model->show_fps);
writer->WriteBoolean("multi_threading", model->multithreading);
writer->WriteBoolean("trap_cursor", model->trap_cursor);

View File

@ -37,7 +37,6 @@ struct GeneralConfiguration
int32_t fullscreen_height;
float window_scale;
DrawingEngine drawing_engine;
ScaleQuality scale_quality;
bool uncap_fps;
bool use_vsync;
bool show_fps;

View File

@ -3090,8 +3090,6 @@ enum : uint16_t
STR_THUNDERSTORM = STR_SUNNY + 5,
STR_CHANGE_WEATHER = 5725,
STR_CHANGE_WEATHER_TOOLTIP = 5726,
STR_SCALING_QUALITY = 5727,
STR_SCALING_QUALITY_LINEAR = 5731,
STR_OPTIONS_RENDERING_TIP = 5734,
STR_THEMES_WINDOW_NETWORK_STATUS = 5735,
STR_THEMES_WINDOW_PLAYER = 5736,
@ -3175,7 +3173,6 @@ enum : uint16_t
STR_TRACK_PREVIEW_NAME_FORMAT = 5814,
STR_SHOW_FPS_TIP = 5815,
STR_WINDOW_SCALE_TIP = 5816,
STR_SCALE_QUALITY_TIP = 5817,
STR_STEAM_OVERLAY_PAUSE_TIP = 5819,
STR_MINIMISE_FULLSCREEN_ON_FOCUS_LOSS_TIP = 5820,
STR_CYCLE_DAY_NIGHT_TIP = 5822,
@ -3541,8 +3538,6 @@ enum : uint16_t
STR_FAILED_TO_LOAD_IMCOMPATIBLE_RCTC_FLAG = 6158,
STR_SCALING_QUALITY_SMOOTH_NN = 6159,
STR_AVAILABLE_VEHICLES = 6160,
STR_SHORTCUT_GRIDLINES_DISPLAY_TOGGLE = 6161,