(svn r23273) -Codechange: allow passing a MissingGlyphSearcher to CheckForMissingGlyphs (default to the language pack strings)

This commit is contained in:
rubidium 2011-11-20 11:52:11 +00:00
parent 2075bc702c
commit 0a4a75b0af
5 changed files with 12 additions and 9 deletions

View File

@ -234,7 +234,7 @@ bool HandleBootstrap()
/* Initialise the freetype font code. */ /* Initialise the freetype font code. */
InitializeUnicodeGlyphMap(); InitializeUnicodeGlyphMap();
/* Next "force" finding a suitable freetype font as the local font is missing. */ /* Next "force" finding a suitable freetype font as the local font is missing. */
CheckForMissingGlyphsInLoadedLanguagePack(false); CheckForMissingGlyphs(false);
/* Initialise the palette. The biggest step is 'faking' some recolour sprites. /* Initialise the palette. The biggest step is 'faking' some recolour sprites.
* This way the mauve and gray colours work and we can show the user interface. */ * This way the mauve and gray colours work and we can show the user interface. */

View File

@ -334,7 +334,7 @@ static void LoadIntroGame(bool load_newgrfs = true)
_cursor.fix_at = false; _cursor.fix_at = false;
CheckForMissingSprites(); CheckForMissingSprites();
CheckForMissingGlyphsInLoadedLanguagePack(); CheckForMissingGlyphs();
/* Play main theme */ /* Play main theme */
if (_music_driver->IsSongPlaying()) ResetMusic(); if (_music_driver->IsSongPlaying()) ResetMusic();
@ -810,7 +810,7 @@ int ttd_main(int argc, char *argv[])
LoadIntroGame(false); LoadIntroGame(false);
CheckForMissingGlyphsInLoadedLanguagePack(); CheckForMissingGlyphs();
ScanNewGRFFiles(scanner); ScanNewGRFFiles(scanner);

View File

@ -495,7 +495,7 @@ struct GameOptionsWindow : Window {
case GOW_LANG_DROPDOWN: // Change interface language case GOW_LANG_DROPDOWN: // Change interface language
ReadLanguagePack(&_languages[index]); ReadLanguagePack(&_languages[index]);
DeleteWindowByClass(WC_QUERY_STRING); DeleteWindowByClass(WC_QUERY_STRING);
CheckForMissingGlyphsInLoadedLanguagePack(); CheckForMissingGlyphs();
UpdateAllVirtCoords(); UpdateAllVirtCoords();
ReInitAllWindows(); ReInitAllWindows();
break; break;

View File

@ -1833,11 +1833,14 @@ class LanguagePackGlyphSearcher : public MissingGlyphSearcher {
* font, which is the whole reason this check has * font, which is the whole reason this check has
* been added. * been added.
* @param base_font Whether to look at the base font as well. * @param base_font Whether to look at the base font as well.
* @param searcher The methods to use to search for strings to check.
* If NULL the loaded language pack searcher is used.
*/ */
void CheckForMissingGlyphsInLoadedLanguagePack(bool base_font) void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher)
{ {
LanguagePackGlyphSearcher searcher; static LanguagePackGlyphSearcher pack_searcher;
bool bad_font = !base_font || searcher.FindMissingGlyphs(NULL); if (searcher == NULL) searcher = &pack_searcher;
bool bad_font = !base_font || searcher->FindMissingGlyphs(NULL);
#ifdef WITH_FREETYPE #ifdef WITH_FREETYPE
if (bad_font) { if (bad_font) {
/* We found an unprintable character... lets try whether we can find /* We found an unprintable character... lets try whether we can find
@ -1845,7 +1848,7 @@ void CheckForMissingGlyphsInLoadedLanguagePack(bool base_font)
FreeTypeSettings backup; FreeTypeSettings backup;
memcpy(&backup, &_freetype, sizeof(backup)); memcpy(&backup, &_freetype, sizeof(backup));
bad_font = !SetFallbackFont(&_freetype, _langpack->isocode, _langpack->winlangid, &searcher); bad_font = !SetFallbackFont(&_freetype, _langpack->isocode, _langpack->winlangid, searcher);
memcpy(&_freetype, &backup, sizeof(backup)); memcpy(&_freetype, &backup, sizeof(backup));

View File

@ -232,6 +232,6 @@ public:
bool FindMissingGlyphs(const char **str); bool FindMissingGlyphs(const char **str);
}; };
void CheckForMissingGlyphsInLoadedLanguagePack(bool base_font = true); void CheckForMissingGlyphs(bool base_font = true, MissingGlyphSearcher *search = NULL);
#endif /* STRINGS_FUNC_H */ #endif /* STRINGS_FUNC_H */