changeset 18431:d167deadae56 draft

(svn r23273) -Codechange: allow passing a MissingGlyphSearcher to CheckForMissingGlyphs (default to the language pack strings)
author rubidium <rubidium@openttd.org>
date Sun, 20 Nov 2011 11:52:11 +0000
parents c537badd5588
children 91f57bc199b4
files src/bootstrap_gui.cpp src/openttd.cpp src/settings_gui.cpp src/strings.cpp src/strings_func.h
diffstat 5 files changed, 12 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/bootstrap_gui.cpp
+++ b/src/bootstrap_gui.cpp
@@ -234,7 +234,7 @@
 	/* Initialise the freetype font code. */
 	InitializeUnicodeGlyphMap();
 	/* 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.
 	 * This way the mauve and gray colours work and we can show the user interface. */
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -334,7 +334,7 @@
 	_cursor.fix_at = false;
 
 	CheckForMissingSprites();
-	CheckForMissingGlyphsInLoadedLanguagePack();
+	CheckForMissingGlyphs();
 
 	/* Play main theme */
 	if (_music_driver->IsSongPlaying()) ResetMusic();
@@ -810,7 +810,7 @@
 
 	LoadIntroGame(false);
 
-	CheckForMissingGlyphsInLoadedLanguagePack();
+	CheckForMissingGlyphs();
 
 	ScanNewGRFFiles(scanner);
 
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -495,7 +495,7 @@
 			case GOW_LANG_DROPDOWN: // Change interface language
 				ReadLanguagePack(&_languages[index]);
 				DeleteWindowByClass(WC_QUERY_STRING);
-				CheckForMissingGlyphsInLoadedLanguagePack();
+				CheckForMissingGlyphs();
 				UpdateAllVirtCoords();
 				ReInitAllWindows();
 				break;
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -1833,11 +1833,14 @@
  * font, which is the whole reason this check has
  * been added.
  * @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;
-	bool bad_font = !base_font || searcher.FindMissingGlyphs(NULL);
+	static LanguagePackGlyphSearcher pack_searcher;
+	if (searcher == NULL) searcher = &pack_searcher;
+	bool bad_font = !base_font || searcher->FindMissingGlyphs(NULL);
 #ifdef WITH_FREETYPE
 	if (bad_font) {
 		/* We found an unprintable character... lets try whether we can find
@@ -1845,7 +1848,7 @@
 		FreeTypeSettings 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));
 
--- a/src/strings_func.h
+++ b/src/strings_func.h
@@ -232,6 +232,6 @@
 	bool FindMissingGlyphs(const char **str);
 };
 
-void CheckForMissingGlyphsInLoadedLanguagePack(bool base_font = true);
+void CheckForMissingGlyphs(bool base_font = true, MissingGlyphSearcher *search = NULL);
 
 #endif /* STRINGS_FUNC_H */