GRAPHICS: Get rid of kSODFont (ScummFont)

OSD is now using the kGUIFont instead. The main advantage is that
the kGUIFont can be used for translated text while only ASCII
characters were present in ScummFont.
This commit is contained in:
Thierry Crozat 2011-05-22 15:15:15 +01:00
parent 72080d8972
commit 592cca5402
8 changed files with 7 additions and 341 deletions

View File

@ -135,7 +135,7 @@ static int eatSystemEvents() {
}
static void drawProgress(float progress) {
const Graphics::Font &font(*FontMan.getFontByUsage(Graphics::FontManager::kOSDFont));
const Graphics::Font &font(*FontMan.getFontByUsage(Graphics::FontManager::kGUIFont));
Graphics::Surface *screen = g_system->lockScreen();
assert(screen);
@ -174,7 +174,7 @@ static void drawProgress(float progress) {
}
static void drawMessage(int offset, const Common::String &text) {
const Graphics::Font &font(*FontMan.getFontByUsage(Graphics::FontManager::kOSDFont));
const Graphics::Font &font(*FontMan.getFontByUsage(Graphics::FontManager::kGUIFont));
Graphics::Surface *screen = g_system->lockScreen();
assert(screen);

View File

@ -1385,7 +1385,7 @@ const char *OpenGLGraphicsManager::getCurrentModeName() {
#ifdef USE_OSD
void OpenGLGraphicsManager::updateOSD() {
// The font we are going to use:
const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kOSDFont);
const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kGUIFont);
if (_osdSurface.w != _osdTexture->getWidth() || _osdSurface.h != _osdTexture->getHeight())
_osdSurface.create(_osdTexture->getWidth(), _osdTexture->getHeight(), _overlayFormat);

View File

@ -2060,7 +2060,7 @@ void SdlGraphicsManager::displayMessageOnOSD(const char *msg) {
_osdSurface->format->Bshift, _osdSurface->format->Ashift);
// The font we are going to use:
const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kOSDFont);
const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kGUIFont);
// Clear everything with the "transparent" color, i.e. the colorkey
SDL_FillRect(_osdSurface, 0, kOSDColorKey);

View File

@ -114,18 +114,6 @@ public:
int wordWrapText(const Common::String &str, int maxWidth, Common::Array<Common::String> &lines) const;
};
/**
* A SCUMM style font.
*/
class ScummFont : public Font {
public:
virtual int getFontHeight() const { return 8; }
virtual int getMaxCharWidth() const { return 8; }
virtual int getCharWidth(byte chr) const;
virtual void drawChar(Surface *dst, byte chr, int x, int y, uint32 color) const;
};
typedef uint16 bitmap_t; /* bitmap image unit size*/
struct BBX {

View File

@ -26,7 +26,6 @@ DECLARE_SINGLETON(Graphics::FontManager);
namespace Graphics {
const ScummFont *g_scummfont = 0;
FORWARD_DECLARE_FONT(g_sysfont);
FORWARD_DECLARE_FONT(g_sysfont_big);
FORWARD_DECLARE_FONT(g_consolefont);
@ -34,18 +33,15 @@ FORWARD_DECLARE_FONT(g_consolefont);
FontManager::FontManager() {
// This assert should *never* trigger, because
// FontManager is a singleton, thus there is only
// one instance of it per time. (g_scummfont gets
// one instance of it per time. (g_sysfont gets
// reset to 0 in the desctructor of this class).
assert(g_scummfont == 0);
g_scummfont = new ScummFont;
assert(g_sysfont == 0);
INIT_FONT(g_sysfont);
INIT_FONT(g_sysfont_big);
INIT_FONT(g_consolefont);
}
FontManager::~FontManager() {
delete g_scummfont;
g_scummfont = 0;
delete g_sysfont;
g_sysfont = 0;
delete g_sysfont_big;
@ -58,7 +54,6 @@ const struct {
const char *name;
FontManager::FontUsage id;
} builtinFontNames[] = {
{ "builtinOSD", FontManager::kOSDFont },
{ "builtinConsole", FontManager::kConsoleFont },
{ "fixed5x8.bdf", FontManager::kConsoleFont },
{ "fixed5x8-iso-8859-1.bdf", FontManager::kConsoleFont },
@ -69,7 +64,7 @@ const struct {
{ "helvB12.bdf", FontManager::kBigGUIFont },
{ "helvB12-iso-8859-1.bdf", FontManager::kBigGUIFont },
{ "helvB12-ascii.bdf", FontManager::kBigGUIFont },
{ 0, FontManager::kOSDFont }
{ 0, FontManager::kConsoleFont }
};
const Font *FontManager::getFontByName(const Common::String &name) const {
@ -84,8 +79,6 @@ const Font *FontManager::getFontByName(const Common::String &name) const {
const Font *FontManager::getFontByUsage(FontUsage usage) const {
switch (usage) {
case kOSDFont:
return g_scummfont;
case kConsoleFont:
return g_consolefont;
case kGUIFont:

View File

@ -36,7 +36,6 @@ class Font;
class FontManager : public Common::Singleton<FontManager> {
public:
enum FontUsage {
kOSDFont = 0,
kConsoleFont = 1,
kGUIFont = 2,
kBigGUIFont = 3

View File

@ -1,313 +0,0 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "graphics/font.h"
#include "graphics/surface.h"
namespace Graphics {
// Built-in font
static const byte guifont[] = {
// Header
0, 0, 99, 1, 226, 8,
// Character width table
4, 8, 6, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 2, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4, 3, 7, 8, 7, 7, 8, 4, 5, 5, 8, 7, 4, 7, 3, 8,
7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 3, 4, 7, 5, 7, 7,
8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 8, 7, 7,
7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 5, 8, 5, 8, 8,
7, 7, 7, 6, 7, 7, 7, 7, 7, 5, 6, 7, 5, 8, 7, 7,
7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 5, 3, 5, 7, 8,
7, 7, 7, 7, 7, 7, 0, 6, 7, 7, 7, 5, 5, 5, 7, 0,
6, 8, 8, 7, 7, 7, 7, 7, 0, 7, 7, 0, 0, 0, 0, 0,
7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 7,
// Character table
0, 0, 0, 0, 0, 0, 0, 0, // 0
1, 3, 6, 12, 24, 62, 3, 0, // 1
128, 192, 96, 48, 24, 124, 192, 0, // 2
0, 3, 62, 24, 12, 6, 3, 1, // 3
0, 192, 124, 24, 48, 96, 192, 128, // 4
0, 0, 0, 0, 0, 0, 0, 0, // 5
0, 0, 0, 0, 0, 0, 0, 0, // 6
0, 0, 0, 0, 0, 0, 0, 0, // 7
0, 0, 0, 0, 0, 0, 0, 0, // 8
0, 0, 0, 0, 0, 0, 0, 0, // 9
0, 0, 0, 0, 0, 0, 0, 0, // 10
0, 0, 0, 0, 0, 0, 0, 0, // 11
0, 0, 0, 0, 0, 0, 0, 0, // 12
0, 0, 0, 0, 0, 0, 0, 0, // 13
0, 0, 0, 0, 0, 0, 0, 0, // 14
0, 0, 0, 0, 0, 0, 0, 0, // 15
237, 74, 72, 0, 0, 0, 0, 0, // 16
128, 128, 128, 0, 0, 0, 0, 0, // 17
0, 0, 0, 0, 0, 0, 0, 0, // 18
60, 66, 153, 161, 161, 153, 66, 60, // 19
0, 0, 0, 0, 0, 0, 0, 0, // 20
0, 0, 0, 0, 0, 0, 0, 0, // 21
0, 0, 0, 0, 0, 0, 0, 0, // 22
0, 0, 0, 0, 0, 0, 0, 0, // 23
0, 0, 0, 0, 0, 0, 0, 0, // 24
0, 0, 0, 0, 0, 0, 0, 0, // 25
0, 0, 0, 0, 0, 0, 0, 0, // 26
0, 0, 0, 0, 0, 0, 0, 0, // 27
0, 0, 0, 0, 0, 0, 0, 0, // 28
0, 0, 0, 0, 0, 0, 0, 0, // 29
0, 0, 0, 0, 0, 0, 0, 0, // 30
0, 0, 0, 0, 0, 0, 0, 0, // 31
0, 0, 0, 0, 0, 0, 0, 0, // 32
96, 96, 96, 96, 0, 0, 96, 0, // 33
102, 102, 102, 0, 0, 0, 0, 0, // 34
102, 102, 255, 102, 255, 102, 102, 0, // 35
24, 62, 96, 60, 6, 124, 24, 0, // 36
98, 102, 12, 24, 48, 102, 70, 0, // 37
60, 102, 60, 56, 103, 102, 63, 0, // 38
96, 48, 16, 0, 0, 0, 0, 0, // 39
24, 48, 96, 96, 96, 48, 24, 0, // 40
96, 48, 24, 24, 24, 48, 96, 0, // 41
0, 102, 60, 255, 60, 102, 0, 0, // 42
0, 24, 24, 126, 24, 24, 0, 0, // 43
0, 0, 0, 0, 0, 48, 48, 96, // 44
0, 0, 0, 126, 0, 0, 0, 0, // 45
0, 0, 0, 0, 0, 96, 96, 0, // 46
0, 3, 6, 12, 24, 48, 96, 0, // 47
60, 102, 102, 102, 102, 102, 60, 0, // 48
24, 24, 56, 24, 24, 24, 126, 0, // 49
60, 102, 6, 12, 48, 96, 126, 0, // 50
60, 102, 6, 28, 6, 102, 60, 0, // 51
6, 14, 30, 102, 127, 6, 6, 0, // 52
126, 96, 124, 6, 6, 102, 60, 0, // 53
60, 102, 96, 124, 102, 102, 60, 0, // 54
126, 102, 12, 24, 24, 24, 24, 0, // 55
60, 102, 102, 60, 102, 102, 60, 0, // 56
60, 102, 102, 62, 6, 102, 60, 0, // 57
0, 0, 96, 0, 0, 96, 0, 0, // 58
0, 0, 48, 0, 0, 48, 48, 96, // 59
14, 24, 48, 96, 48, 24, 14, 0, // 60
0, 0, 120, 0, 120, 0, 0, 0, // 61
112, 24, 12, 6, 12, 24, 112, 0, // 62
60, 102, 6, 12, 24, 0, 24, 0, // 63
0, 0, 0, 255, 255, 0, 0, 0, // 64
24, 60, 102, 126, 102, 102, 102, 0, // 65
124, 102, 102, 124, 102, 102, 124, 0, // 66
60, 102, 96, 96, 96, 102, 60, 0, // 67
120, 108, 102, 102, 102, 108, 120, 0, // 68
126, 96, 96, 120, 96, 96, 126, 0, // 69
126, 96, 96, 120, 96, 96, 96, 0, // 70
60, 102, 96, 110, 102, 102, 60, 0, // 71
102, 102, 102, 126, 102, 102, 102, 0, // 72
120, 48, 48, 48, 48, 48, 120, 0, // 73
30, 12, 12, 12, 12, 108, 56, 0, // 74
102, 108, 120, 112, 120, 108, 102, 0, // 75
96, 96, 96, 96, 96, 96, 126, 0, // 76
99, 119, 127, 107, 99, 99, 99, 0, // 77
102, 118, 126, 126, 110, 102, 102, 0, // 78
60, 102, 102, 102, 102, 102, 60, 0, // 79
124, 102, 102, 124, 96, 96, 96, 0, // 80
60, 102, 102, 102, 102, 60, 14, 0, // 81
124, 102, 102, 124, 120, 108, 102, 0, // 82
60, 102, 96, 60, 6, 102, 60, 0, // 83
126, 24, 24, 24, 24, 24, 24, 0, // 84
102, 102, 102, 102, 102, 102, 60, 0, // 85
102, 102, 102, 102, 102, 60, 24, 0, // 86
99, 99, 99, 107, 127, 119, 99, 0, // 87
102, 102, 60, 24, 60, 102, 102, 0, // 88
102, 102, 102, 60, 24, 24, 24, 0, // 89
126, 6, 12, 24, 48, 96, 126, 0, // 90
120, 96, 96, 96, 96, 96, 120, 0, // 91
3, 6, 12, 24, 48, 96, 192, 0, // 92
120, 24, 24, 24, 24, 24, 120, 0, // 93
0, 0, 0, 0, 0, 219, 219, 0, // 94
0, 0, 0, 0, 0, 0, 0, 255, // 95
102, 102, 102, 0, 0, 0, 0, 0, // 96
0, 0, 60, 6, 62, 102, 62, 0, // 97
0, 96, 96, 124, 102, 102, 124, 0, // 98
0, 0, 60, 96, 96, 96, 60, 0, // 99
0, 6, 6, 62, 102, 102, 62, 0, // 100
0, 0, 60, 102, 126, 96, 60, 0, // 101
0, 14, 24, 62, 24, 24, 24, 0, // 102
0, 0, 62, 102, 102, 62, 6, 124, // 103
0, 96, 96, 124, 102, 102, 102, 0, // 104
0, 48, 0, 112, 48, 48, 120, 0, // 105
0, 12, 0, 12, 12, 12, 12, 120, // 106
0, 96, 96, 108, 120, 108, 102, 0, // 107
0, 112, 48, 48, 48, 48, 120, 0, // 108
0, 0, 102, 127, 127, 107, 99, 0, // 109
0, 0, 124, 102, 102, 102, 102, 0, // 110
0, 0, 60, 102, 102, 102, 60, 0, // 111
0, 0, 124, 102, 102, 124, 96, 96, // 112
0, 0, 62, 102, 102, 62, 6, 6, // 113
0, 0, 124, 102, 96, 96, 96, 0, // 114
0, 0, 62, 96, 60, 6, 124, 0, // 115
0, 24, 126, 24, 24, 24, 14, 0, // 116
0, 0, 102, 102, 102, 102, 62, 0, // 117
0, 0, 102, 102, 102, 60, 24, 0, // 118
0, 0, 99, 107, 127, 62, 54, 0, // 119
0, 0, 102, 60, 24, 60, 102, 0, // 120
0, 0, 102, 102, 102, 62, 12, 120, // 121
0, 0, 126, 12, 24, 48, 126, 0, // 122
24, 48, 48, 96, 48, 48, 24, 0, // 123
96, 96, 96, 0, 96, 96, 96, 0, // 124
96, 48, 48, 24, 48, 48, 96, 0, // 125
0, 0, 97, 153, 134, 0, 0, 0, // 126
8, 12, 14, 255, 255, 14, 12, 8, // 127
60, 102, 96, 96, 102, 60, 24, 56, // 128
102, 0, 102, 102, 102, 102, 62, 0, // 129
12, 24, 60, 102, 126, 96, 60, 0, // 130
24, 36, 60, 6, 62, 102, 62, 0, // 131
102, 0, 60, 6, 62, 102, 62, 0, // 132
48, 24, 60, 6, 62, 102, 62, 0, // 133
0, 0, 0, 0, 0, 0, 0, 0, // 134
0, 60, 96, 96, 96, 60, 24, 56, // 135
24, 36, 60, 102, 126, 96, 60, 0, // 136
102, 0, 60, 102, 126, 96, 60, 0, // 137
48, 24, 60, 102, 126, 96, 60, 0, // 138
0, 216, 0, 112, 48, 48, 120, 0, // 139
48, 72, 0, 112, 48, 48, 120, 0, // 140
96, 48, 0, 112, 48, 48, 120, 0, // 141
102, 24, 60, 102, 126, 102, 102, 0, // 142
0, 0, 0, 0, 0, 0, 0, 0, // 143
24, 48, 124, 96, 120, 96, 124, 0, // 144
0, 0, 108, 26, 126, 216, 110, 0, // 145
30, 40, 40, 126, 72, 136, 142, 0, // 146
24, 36, 60, 102, 102, 102, 60, 0, // 147
102, 0, 60, 102, 102, 102, 60, 0, // 148
48, 24, 60, 102, 102, 102, 60, 0, // 149
24, 36, 0, 102, 102, 102, 62, 0, // 150
48, 24, 102, 102, 102, 102, 62, 0, // 151
0, 0, 0, 0, 0, 0, 0, 0, // 152
102, 60, 102, 102, 102, 102, 60, 0, // 153
102, 0, 102, 102, 102, 102, 60, 0, // 154
0, 0, 0, 0, 0, 0, 0, 0, // 155
0, 0, 0, 0, 0, 0, 0, 0, // 156
0, 0, 0, 0, 0, 0, 0, 0, // 157
0, 0, 0, 0, 0, 0, 0, 0, // 158
0, 0, 0, 0, 0, 0, 0, 0, // 159
12, 24, 60, 6, 62, 102, 62, 0, // 160
0, 0, 0, 0, 0, 0, 0, 0, // 161
0, 0, 0, 0, 0, 0, 0, 0, // 162
0, 0, 0, 0, 0, 0, 0, 0, // 163
0, 0, 0, 0, 0, 0, 0, 0, // 164
0, 0, 0, 0, 0, 0, 0, 0, // 165
0, 0, 0, 0, 0, 0, 0, 0, // 166
0, 0, 0, 0, 0, 0, 0, 0, // 167
0, 0, 0, 0, 0, 0, 0, 0, // 168
0, 0, 0, 0, 0, 0, 0, 0, // 169
0, 0, 0, 0, 0, 0, 0, 0, // 170
0, 0, 0, 0, 0, 0, 0, 0, // 171
0, 0, 0, 0, 0, 0, 0, 0, // 172
0, 0, 0, 0, 0, 0, 0, 0, // 173
0, 0, 0, 0, 0, 0, 0, 0, // 174
0, 0, 0, 0, 0, 0, 0, 0, // 175
0, 0, 0, 0, 0, 0, 0, 0, // 176
0, 0, 0, 0, 0, 0, 0, 0, // 177
0, 0, 0, 0, 0, 0, 0, 0, // 178
0, 0, 0, 0, 0, 0, 0, 0, // 179
0, 0, 0, 0, 0, 0, 0, 0, // 180
0, 0, 0, 0, 0, 0, 0, 0, // 181
0, 0, 0, 0, 0, 0, 0, 0, // 182
0, 0, 0, 0, 0, 0, 0, 0, // 183
0, 0, 0, 0, 0, 0, 0, 0, // 184
0, 0, 0, 0, 0, 0, 0, 0, // 185
0, 0, 0, 0, 0, 0, 0, 0, // 186
0, 0, 0, 0, 0, 0, 0, 0, // 187
0, 0, 0, 0, 0, 0, 0, 0, // 188
0, 0, 0, 0, 0, 0, 0, 0, // 189
0, 0, 0, 0, 0, 0, 0, 0, // 190
0, 0, 0, 0, 0, 0, 0, 0, // 191
0, 0, 0, 0, 0, 0, 0, 0, // 192
0, 0, 0, 0, 0, 0, 0, 0, // 193
0, 0, 0, 0, 0, 0, 0, 0, // 194
0, 0, 0, 0, 0, 0, 0, 0, // 195
0, 0, 0, 0, 0, 0, 0, 0, // 196
0, 0, 0, 0, 0, 0, 0, 0, // 197
0, 0, 0, 0, 0, 0, 0, 0, // 198
0, 0, 0, 0, 0, 0, 0, 0, // 199
0, 0, 0, 0, 0, 0, 0, 0, // 200
0, 0, 0, 0, 0, 0, 0, 0, // 201
0, 0, 0, 0, 0, 0, 0, 0, // 202
0, 0, 0, 0, 0, 0, 0, 0, // 203
0, 0, 0, 0, 0, 0, 0, 0, // 204
0, 0, 0, 0, 0, 0, 0, 0, // 205
0, 0, 0, 0, 0, 0, 0, 0, // 206
0, 0, 0, 0, 0, 0, 0, 0, // 207
0, 0, 0, 0, 0, 0, 0, 0, // 208
0, 0, 0, 0, 0, 0, 0, 0, // 209
0, 0, 0, 0, 0, 0, 0, 0, // 210
0, 0, 0, 0, 0, 0, 0, 0, // 211
0, 0, 0, 0, 0, 0, 0, 0, // 212
0, 0, 0, 0, 0, 0, 0, 0, // 213
0, 0, 0, 0, 0, 0, 0, 0, // 214
0, 0, 0, 0, 0, 0, 0, 0, // 215
0, 0, 0, 0, 0, 0, 0, 0, // 216
0, 0, 0, 0, 0, 0, 0, 0, // 217
0, 0, 0, 0, 0, 0, 0, 0, // 218
0, 0, 0, 0, 0, 0, 0, 0, // 219
0, 0, 0, 0, 0, 0, 0, 0, // 220
0, 0, 0, 0, 0, 0, 0, 0, // 221
0, 0, 0, 0, 0, 0, 0, 0, // 222
0, 0, 0, 0, 0, 0, 0, 0, // 223
0, 0, 0, 0, 0, 0, 0, 0, // 224
28, 54, 54, 124, 102, 102, 124, 64, // 225
0, 0, 0 // ???
};
int ScummFont::getCharWidth(byte chr) const {
return guifont[chr+6];
}
void ScummFont::drawChar(Surface *dst, byte chr, int tx, int ty, uint32 color) const {
assert(dst != 0);
byte *ptr = (byte *)dst->getBasePtr(tx, ty);
const byte *tmp = guifont + 6 + guifont[4] + chr * 8;
uint buffer = 0;
uint mask = 0;
for (int y = 0; y < 8; y++) {
if (ty + y < 0 || ty + y >= dst->h)
continue;
for (int x = 0; x < 8; x++) {
if (tx + x < 0 || tx + x >= dst->w)
continue;
unsigned char c;
mask >>= 1;
if (mask == 0) {
buffer = *tmp++;
mask = 0x80;
}
c = ((buffer & mask) != 0);
if (c) {
if (dst->format.bytesPerPixel == 1)
ptr[x] = color;
else if (dst->format.bytesPerPixel == 2)
((uint16 *)ptr)[x] = color;
}
}
ptr += dst->pitch;
}
}
} // End of namespace Graphics

View File

@ -9,7 +9,6 @@ MODULE_OBJS := \
fonts/consolefont.o \
fonts/newfont_big.o \
fonts/newfont.o \
fonts/scummfont.o \
fonts/winfont.o \
iff.o \
imagedec.o \