1
0
Fork 0

Codechange: Refactor InitFontCache and SetFont.

Removed the monospace flag from InitFontCache.
Simplified the code in SetFont.
pull/12690/head
Sadie del Solar 2024-05-12 14:47:38 -07:00
parent 1af153ef49
commit 9b6bd1dfe1
7 changed files with 14 additions and 26 deletions

View File

@ -2280,7 +2280,7 @@ DEF_CONSOLE_CMD(ConFont)
FontCacheSubSetting *setting = GetFontCacheSubSetting(fs);
/* Make sure all non sprite fonts are loaded. */
if (!setting->font.empty() && !fc->HasParent()) {
InitFontCache(fs == FS_MONO);
InitFontCache();
fc = FontCache::Get(fs);
}
IConsolePrint(CC_DEFAULT, "{} font:", FontSizeToName(fs));

View File

@ -160,19 +160,7 @@ void SetFont(FontSize font_size, const std::string &font, uint size)
if (!changed) return;
if (font_size != FS_MONO) {
/* Try to reload only the modified font. */
FontCacheSettings backup = _fcsettings;
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
if (fs == font_size) continue;
FontCache *fc = FontCache::Get(fs);
GetFontCacheSubSetting(fs)->font = fc->HasParent() ? fc->GetFontName() : "";
}
CheckForMissingGlyphs();
_fcsettings = backup;
} else {
InitFontCache(true);
}
LoadStringWidthTable();
UpdateAllVirtCoords();
@ -247,20 +235,20 @@ std::string GetFontCacheFontName(FontSize fs)
/**
* (Re)initialize the font cache related things, i.e. load the non-sprite fonts.
* @param monospace Whether to initialise the monospace or regular fonts.
*/
void InitFontCache(bool monospace)
void InitFontCache()
{
FontCache::InitializeFontCaches();
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
if (monospace != (fs == FS_MONO)) continue;
FontCache *fc = FontCache::Get(fs);
if (fc->HasParent()) delete fc;
if (fc->HasParent()) {
delete fc;
}
LoadFontHelper(fs);
}
DebugPrintFontSettings("End of initFontCache()");

View File

@ -229,7 +229,7 @@ std::string GetFontCacheFontName(FontSize fs);
void DebugPrintFontSettings(const std::string &desc);
bool GetFontAAState();
void InitFontCache(bool monospace);
void InitFontCache();
void SetFont(FontSize fontsize, const std::string &font, uint size);
void UninitFontCache();

View File

@ -693,7 +693,7 @@ int openttd_main(std::span<char * const> arguments)
InitializeLanguagePacks();
/* Initialize the font cache */
InitFontCache(false);
InitFontCache();
/* This must be done early, since functions use the SetWindowDirty* calls */
InitWindowSystem();

View File

@ -170,7 +170,7 @@ bool SetFallbackFont(FontCacheSettings *settings, const std::string &language_is
if (best_font != nullptr) {
ret = true;
callback->SetFontNames(settings, best_font, &best_index);
InitFontCache(callback->Monospace());
InitFontCache();
}
/* Clean up the list of filenames. */

View File

@ -767,9 +767,9 @@ struct GameOptionsWindow : Window {
this->SetWidgetDisabledState(WID_GO_GUI_FONT_AA, _fcsettings.prefer_sprite);
this->SetDirty();
InitFontCache(false);
InitFontCache(true);
ClearFontCache();
InitFontCache();
CheckForMissingGlyphs();
SetupWidgetDimensions();
UpdateAllVirtCoords();

View File

@ -2157,7 +2157,7 @@ const char *GetCurrentLanguageIsoCode()
*/
bool MissingGlyphSearcher::FindMissingGlyphs()
{
InitFontCache(this->Monospace());
InitFontCache();
this->Reset();
for (auto text = this->NextString(); text.has_value(); text = this->NextString()) {
@ -2290,7 +2290,7 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher)
/* Our fallback font does miss characters too, so keep the
* user chosen font as that is more likely to be any good than
* the wild guess we made */
InitFontCache(searcher->Monospace());
InitFontCache();
}
}
#endif