mirror of https://github.com/OpenTTD/OpenTTD.git
Add: GUI options to select sprite font and AA mode for all fonts.
This commit is contained in:
parent
20f1a0dc57
commit
e1f5be6244
|
@ -96,7 +96,7 @@ bool GetFontAAState(FontSize size, bool check_blitter)
|
|||
/* AA is only supported for 32 bpp */
|
||||
if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
||||
|
||||
return GetFontCacheSubSetting(size)->aa;
|
||||
return _fcsettings.global_aa || GetFontCacheSubSetting(size)->aa;
|
||||
}
|
||||
|
||||
void SetFont(FontSize fontsize, const std::string &font, uint size, bool aa)
|
||||
|
@ -204,7 +204,7 @@ void InitFontCache(bool monospace)
|
|||
FontCache *fc = FontCache::Get(fs);
|
||||
if (fc->HasParent()) delete fc;
|
||||
|
||||
if (GetFontCacheSubSetting(fs)->font.empty()) {
|
||||
if (!_fcsettings.prefer_sprite && GetFontCacheSubSetting(fs)->font.empty()) {
|
||||
TryLoadDefaultTrueTypeFont(fs);
|
||||
} else {
|
||||
#ifdef WITH_FREETYPE
|
||||
|
|
|
@ -218,6 +218,8 @@ struct FontCacheSettings {
|
|||
FontCacheSubSetting medium; ///< The normal font size.
|
||||
FontCacheSubSetting large; ///< The largest font; mostly used for newspapers.
|
||||
FontCacheSubSetting mono; ///< The mono space font used for license/readme viewers.
|
||||
bool prefer_sprite; ///< Whether to prefer the built-in sprite font over resizable fonts.
|
||||
bool global_aa; ///< Whether to anti alias all font sizes.
|
||||
};
|
||||
|
||||
extern FontCacheSettings _fcsettings;
|
||||
|
|
|
@ -1044,6 +1044,11 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Check th
|
|||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size
|
||||
|
||||
STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font
|
||||
STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the tradition fixed-size sprite font.
|
||||
STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts
|
||||
STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts.
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
|
|
@ -50,6 +50,10 @@
|
|||
#include "safeguards.h"
|
||||
|
||||
|
||||
#if defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA)
|
||||
# define HAS_TRUETYPE_FONT
|
||||
#endif
|
||||
|
||||
static const StringID _autosave_dropdown[] = {
|
||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
|
||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES,
|
||||
|
@ -559,6 +563,30 @@ struct GameOptionsWindow : Window {
|
|||
break;
|
||||
}
|
||||
|
||||
#ifdef HAS_TRUETYPE_FONT
|
||||
case WID_GO_GUI_FONT_SPRITE:
|
||||
_fcsettings.prefer_sprite = !_fcsettings.prefer_sprite;
|
||||
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_FONT_SPRITE, _fcsettings.prefer_sprite);
|
||||
this->SetWidgetDisabledState(WID_GO_GUI_FONT_AA, _fcsettings.prefer_sprite);
|
||||
this->SetDirty();
|
||||
|
||||
InitFontCache(false);
|
||||
InitFontCache(true);
|
||||
SetupWidgetDimensions();
|
||||
ReInitAllWindows(true);
|
||||
break;
|
||||
|
||||
case WID_GO_GUI_FONT_AA:
|
||||
_fcsettings.global_aa = !_fcsettings.global_aa;
|
||||
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_FONT_AA, _fcsettings.global_aa);
|
||||
this->SetDirty();
|
||||
|
||||
ClearFontCache();
|
||||
break;
|
||||
#endif /* HAS_TRUETYPE_FONT */
|
||||
|
||||
case WID_GO_GUI_SCALE:
|
||||
if (ClickSliderWidget(this->GetWidget<NWidgetBase>(widget)->GetCurrentRect(), pt, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE, this->gui_scale)) {
|
||||
if (!_ctrl_pressed) this->gui_scale = ((this->gui_scale + 12) / 25) * 25;
|
||||
|
@ -750,6 +778,11 @@ struct GameOptionsWindow : Window {
|
|||
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_SCALE_AUTO, _gui_scale_cfg == -1);
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels);
|
||||
#ifdef HAS_TRUETYPE_FONT
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_FONT_SPRITE, _fcsettings.prefer_sprite);
|
||||
this->SetWidgetLoweredState(WID_GO_GUI_FONT_AA, _fcsettings.global_aa);
|
||||
this->SetWidgetDisabledState(WID_GO_GUI_FONT_AA, _fcsettings.prefer_sprite);
|
||||
#endif /* HAS_TRUETYPE_FONT */
|
||||
|
||||
this->SetWidgetDisabledState(WID_GO_BASE_GRF_DROPDOWN, _game_mode != GM_MENU);
|
||||
this->SetWidgetDisabledState(WID_GO_BASE_SFX_DROPDOWN, _game_mode != GM_MENU);
|
||||
|
@ -823,6 +856,16 @@ static const NWidgetPart _nested_game_options_widgets[] = {
|
|||
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_BEVELS, STR_NULL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_SCALE_BEVEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP),
|
||||
EndContainer(),
|
||||
#ifdef HAS_TRUETYPE_FONT
|
||||
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
|
||||
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_GUI_FONT_SPRITE, STR_NULL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_FONT_SPRITE), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
|
||||
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_GUI_FONT_AA, STR_NULL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_FONT_AA), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP),
|
||||
EndContainer(),
|
||||
#endif /* HAS_TRUETYPE_FONT */
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
|
||||
|
|
|
@ -258,6 +258,18 @@ name = ""mono_aa""
|
|||
var = _fcsettings.mono.aa
|
||||
def = false
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = HAS_TRUETYPE_FONT
|
||||
name = ""global_aa""
|
||||
var = _fcsettings.global_aa
|
||||
def = true
|
||||
|
||||
[SDTG_BOOL]
|
||||
ifdef = HAS_TRUETYPE_FONT
|
||||
name = ""prefer_sprite_font""
|
||||
var = _fcsettings.prefer_sprite
|
||||
def = false
|
||||
|
||||
[SDTG_VAR]
|
||||
name = ""sprite_cache_size_px""
|
||||
type = SLE_UINT
|
||||
|
|
|
@ -25,6 +25,8 @@ enum GameOptionsWidgets : WidgetID {
|
|||
WID_GO_GUI_SCALE, ///< GUI Scale slider.
|
||||
WID_GO_GUI_SCALE_AUTO, ///< Autodetect GUI scale button.
|
||||
WID_GO_GUI_SCALE_BEVEL_BUTTON, ///< Toggle for chunky bevels.
|
||||
WID_GO_GUI_FONT_SPRITE, ///< Toggle whether to prefer the sprite font over TTF fonts.
|
||||
WID_GO_GUI_FONT_AA, ///< Toggle whether to anti-alias fonts.
|
||||
WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF.
|
||||
WID_GO_BASE_GRF_PARAMETERS, ///< Base GRF parameters.
|
||||
WID_GO_BASE_GRF_OPEN_URL, ///< Open base GRF URL.
|
||||
|
|
Loading…
Reference in New Issue