(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.
This commit is contained in:
Darkvater 2006-12-27 16:14:21 +00:00
parent 3a1d7ccdac
commit 23d20bd5f8
1 changed files with 9 additions and 4 deletions

13
gfx.c
View File

@ -449,6 +449,11 @@ end_of_inner_loop:
}
}
/** 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 @@ BoundingRect GetStringBoundingBox(const char *str)
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 @@ skip_cont:;
} 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);
}
}
}