(svn r7580) -Fix (r7182): UTF8-merge changed the string handling a bit, now the str pointer for
authorDarkvater
Wed, 27 Dec 2006 16:14:21 +0000
changeset 5391 18028f19893d
parent 5390 b51df40d72a1
child 5392 dd535f122f1d
(svn r7580) -Fix (r7182): UTF8-merge changed the string handling a bit, now the str pointer for
control characters is at the next character, so take value and THEN increase
pointer, not the other way around. This bug could result in incorrect bb's computed
for strings.
gfx.c
--- a/gfx.c	Wed Dec 27 14:51:55 2006 +0000
+++ b/gfx.c	Wed Dec 27 16:14:21 2006 +0000
@@ -449,6 +449,11 @@
 	}
 }
 
+/** Draw a given string with the centre around the given x coordinates
+ * @param x Centre the string around this pixel width
+ * @param y Draw the string at this pixel height (first line's bottom)
+ * @param str String to draw
+ * @param max Maximum width the string can have before it is wrapped */
 void DrawStringMultiCenter(int x, int y, StringID str, int maxw)
 {
 	char buffer[512];
@@ -555,10 +560,10 @@
 			br.width += GetCharacterWidth(size, c);
 		} else {
 			switch (c) {
-				case SCC_SETX: br.width += (byte)*++str; break;
+				case SCC_SETX: br.width += (byte)*str++; break;
 				case SCC_SETXY:
-					br.width += (byte)*++str;
-					br.height += (byte)*++str;
+					br.width += (byte)*str++;
+					br.height += (byte)*str++;
 					break;
 				case SCC_TINYFONT: size = FS_SMALL; break;
 				case SCC_BIGFONT:  size = FS_LARGE; break;
@@ -653,7 +658,7 @@
 		} else if (c == SCC_BIGFONT) { // {BIGFONT}
 			size = FS_LARGE;
 		} else {
-			printf("Unknown string command character %d\n", c);
+			DEBUG(misc, 0, "[utf8] unknown string command character %d", c);
 		}
 	}
 }