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 */
|
/* AA is only supported for 32 bpp */
|
||||||
if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
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)
|
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);
|
FontCache *fc = FontCache::Get(fs);
|
||||||
if (fc->HasParent()) delete fc;
|
if (fc->HasParent()) delete fc;
|
||||||
|
|
||||||
if (GetFontCacheSubSetting(fs)->font.empty()) {
|
if (!_fcsettings.prefer_sprite && GetFontCacheSubSetting(fs)->font.empty()) {
|
||||||
TryLoadDefaultTrueTypeFont(fs);
|
TryLoadDefaultTrueTypeFont(fs);
|
||||||
} else {
|
} else {
|
||||||
#ifdef WITH_FREETYPE
|
#ifdef WITH_FREETYPE
|
||||||
|
|
|
@ -218,6 +218,8 @@ struct FontCacheSettings {
|
||||||
FontCacheSubSetting medium; ///< The normal font size.
|
FontCacheSubSetting medium; ///< The normal font size.
|
||||||
FontCacheSubSetting large; ///< The largest font; mostly used for newspapers.
|
FontCacheSubSetting large; ///< The largest font; mostly used for newspapers.
|
||||||
FontCacheSubSetting mono; ///< The mono space font used for license/readme viewers.
|
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;
|
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 :{BLACK}Scale bevels
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size
|
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_1X :1x
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||||
|
|
|
@ -50,6 +50,10 @@
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(WITH_FREETYPE) || defined(_WIN32) || defined(WITH_COCOA)
|
||||||
|
# define HAS_TRUETYPE_FONT
|
||||||
|
#endif
|
||||||
|
|
||||||
static const StringID _autosave_dropdown[] = {
|
static const StringID _autosave_dropdown[] = {
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES,
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_10_MINUTES,
|
||||||
|
@ -559,6 +563,30 @@ struct GameOptionsWindow : Window {
|
||||||
break;
|
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:
|
case WID_GO_GUI_SCALE:
|
||||||
if (ClickSliderWidget(this->GetWidget<NWidgetBase>(widget)->GetCurrentRect(), pt, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE, this->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;
|
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_AUTO, _gui_scale_cfg == -1);
|
||||||
this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels);
|
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_GRF_DROPDOWN, _game_mode != GM_MENU);
|
||||||
this->SetWidgetDisabledState(WID_GO_BASE_SFX_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_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),
|
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(),
|
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(),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
|
|
||||||
|
|
|
@ -258,6 +258,18 @@ name = ""mono_aa""
|
||||||
var = _fcsettings.mono.aa
|
var = _fcsettings.mono.aa
|
||||||
def = false
|
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]
|
[SDTG_VAR]
|
||||||
name = ""sprite_cache_size_px""
|
name = ""sprite_cache_size_px""
|
||||||
type = SLE_UINT
|
type = SLE_UINT
|
||||||
|
|
|
@ -25,6 +25,8 @@ enum GameOptionsWidgets : WidgetID {
|
||||||
WID_GO_GUI_SCALE, ///< GUI Scale slider.
|
WID_GO_GUI_SCALE, ///< GUI Scale slider.
|
||||||
WID_GO_GUI_SCALE_AUTO, ///< Autodetect GUI scale button.
|
WID_GO_GUI_SCALE_AUTO, ///< Autodetect GUI scale button.
|
||||||
WID_GO_GUI_SCALE_BEVEL_BUTTON, ///< Toggle for chunky bevels.
|
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_DROPDOWN, ///< Use to select a base GRF.
|
||||||
WID_GO_BASE_GRF_PARAMETERS, ///< Base GRF parameters.
|
WID_GO_BASE_GRF_PARAMETERS, ///< Base GRF parameters.
|
||||||
WID_GO_BASE_GRF_OPEN_URL, ///< Open base GRF URL.
|
WID_GO_BASE_GRF_OPEN_URL, ///< Open base GRF URL.
|
||||||
|
|
Loading…
Reference in New Issue