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)
60 unsigned char c = text[i];
61 unsigned long *character = &font->content[font->offset[c]];
62 int w = font->width[c];
65 for (X=0; (X<w) && (X + cx < width); X++)
69 if ((character[Y] >> (32 - X)) & 0x1)
71 drawPixel(x+X+cx, y+Y, rgba);
81 int Surface::drawTextRJ(const char* text, int x, int y, ULONG rgba)
88 for (i = 0; i < n; i++)
90 w += font->width[text[i]];
96 else return drawText(text, x, y, rgba);
99 int Surface::drawTextCentre(const char* text, int x, int y, ULONG rgba)
106 for (i = 0; i < n; i++)
108 w += font->width[text[i]];
114 else return drawText(text, x, y, rgba);
117 int Surface::getCharWidth(char c)
119 return font->width[(unsigned char) c];
122 int Surface::getFontHeight()
124 return font->spacing;