2 Copyright 2004-2005 Chris Tallon
4 This file is part of VOMP.
6 VOMP is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 VOMP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with VOMP; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 Surface* Surface::screen = NULL;
27 osd_font_t* Surface::font = &font_helvB18;
29 Surface::Surface(int id)
31 if (id == SCREEN) screen = this;
38 Surface* Surface::getScreen()
43 int Surface::drawText(const char* text, int x, int y, ULONG rgba)
45 return drawText(text, x, y, 2000, rgba);
48 int Surface::drawText(const char* text, int x, int y, int width, ULONG rgba)
61 unsigned char c = text[i];
62 unsigned long *character = &font->content[font->offset[c]];
63 int w = font->width[c];
66 for (X=0; (X<w) && (X + cx < width); X++)
70 if ((character[Y] >> (32 - X)) & 0x1)
72 drawPixel(x+X+cx, y+Y, rgba,true);
83 int Surface::drawTextRJ(const char* text, int x, int y, ULONG rgba)
90 for (i = 0; i < n; i++)
92 w += font->width[(unsigned char)text[i]];
98 else return drawText(text, x, y, rgba);
101 int Surface::drawTextCentre(const char* text, int x, int y, ULONG rgba)
108 for (i = 0; i < n; i++)
110 w += font->width[(unsigned char)text[i]]; //Characters bigger then 128 can appear
116 else return drawText(text, x, y, rgba);
119 int Surface::getCharWidth(char c)
121 return font->width[(unsigned char) c];
124 int Surface::getFontHeight()
126 return font->spacing;