From de0f656d279ae0aa19971837da8616ec71029c52 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 6 Jan 2003 04:23:41 +0000 Subject: [PATCH] add bad char support --- stepmania/src/FontManager.cpp | 2 ++ stepmania/src/RageUtil.cpp | 7 ++++++- stepmania/src/RageUtil.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/stepmania/src/FontManager.cpp b/stepmania/src/FontManager.cpp index d2faf35b1b..b12ca62a96 100644 --- a/stepmania/src/FontManager.cpp +++ b/stepmania/src/FontManager.cpp @@ -415,6 +415,8 @@ Font* FontManager::LoadFont( const CString &sFontOrTextureFilePath, CString sCha CharAliases["menuright"] = 0x100007; CharAliases["start"] = 0x100008; + CharAliases["invalid"] = INVALID_CHAR; /* 0xFFFFFF */ + for(aliasmap::const_iterator i = CharAliases.begin(); i != CharAliases.end(); ++i) { CString from = ssprintf("&%s;", i->first.GetString()); diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 5c6c317b65..e9863bd64b 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -903,6 +903,8 @@ longchar utf8_get_char (const char *p) return result; } +const longchar INVALID_CHAR = 0xFFFFFF; + lstring CStringToLstring(const CString &str) { const char *ptr = str.c_str(), *end = str.c_str()+str.size(); @@ -912,7 +914,10 @@ lstring CStringToLstring(const CString &str) while(ptr && ptr != end) { longchar c = utf8_get_char (ptr); - ret.push_back(c); + if(c == -1) + ret.push_back(INVALID_CHAR); + else + ret.push_back(c); ptr = utf8_find_next_char (ptr, end); } diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index 4f80238b4c..fe0d0de9c2 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -153,6 +153,7 @@ void splitrelpath( * be 16-bit. This is mostly used within the font and text system. */ typedef int longchar; typedef basic_string lstring; +extern const longchar INVALID_CHAR; lstring CStringToLstring(const CString &str); CString LcharToUTF8( longchar c );