mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
(svn r24038) -Fix (r23472): After opening a textwindow with the monospaced font, all other text started glitching.
This commit is contained in:
parent
161b6c348b
commit
49fdf6dd26
22
src/gfx.cpp
22
src/gfx.cpp
@ -45,6 +45,7 @@ SwitchMode _switch_mode; ///< The next mainloop command.
|
|||||||
PauseModeByte _pause_mode;
|
PauseModeByte _pause_mode;
|
||||||
Palette _cur_palette;
|
Palette _cur_palette;
|
||||||
|
|
||||||
|
static Dimension _max_char_size[FS_END]; ///< Cache of the maximum size of any character of a font.
|
||||||
static int _max_char_height; ///< Cache of the height of the largest font
|
static int _max_char_height; ///< Cache of the height of the largest font
|
||||||
static int _max_char_width; ///< Cache of the width of the largest font
|
static int _max_char_width; ///< Cache of the width of the largest font
|
||||||
static byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth()
|
static byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth()
|
||||||
@ -1551,20 +1552,25 @@ void DoPaletteAnimations()
|
|||||||
*/
|
*/
|
||||||
void LoadStringWidthTable(bool monospace)
|
void LoadStringWidthTable(bool monospace)
|
||||||
{
|
{
|
||||||
_max_char_height = 0;
|
|
||||||
_max_char_width = 0;
|
|
||||||
|
|
||||||
for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) {
|
for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) {
|
||||||
_max_char_height = max<int>(_max_char_height, GetCharacterHeight(fs));
|
_max_char_size[fs].width = 0;
|
||||||
|
_max_char_size[fs].height = GetCharacterHeight(fs);
|
||||||
for (uint i = 0; i != 224; i++) {
|
for (uint i = 0; i != 224; i++) {
|
||||||
_stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32);
|
_stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32);
|
||||||
_max_char_width = max<int>(_max_char_width, _stringwidth_table[fs][i]);
|
_max_char_size[fs].width = max<int>(_max_char_size[fs].width, _stringwidth_table[fs][i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Needed because they need to be 1 more than the widest. */
|
||||||
|
_max_char_size[fs].width++;
|
||||||
|
_max_char_size[fs].height++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Needed because they need to be 1 more than the widest. */
|
_max_char_width = 0;
|
||||||
_max_char_height++;
|
_max_char_height = 0;
|
||||||
_max_char_width++;
|
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
|
||||||
|
_max_char_width = max<int>(_max_char_width, _max_char_size[fs].width);
|
||||||
|
_max_char_height = max<int>(_max_char_height, _max_char_size[fs].height);
|
||||||
|
}
|
||||||
|
|
||||||
ReInitAllWindows();
|
ReInitAllWindows();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user