}
}
+// this should really be done somehow else :-)
+static unsigned screen_width = SCREEN_WIDTH, screen_height = SCREEN_HEIGHT;
+void set_screen_size(unsigned width, unsigned height)
+{
+ screen_width = width;
+ screen_height = height;
+}
+
unsigned my_draw_text(const widestring &str, unsigned char *buf, double size, int xpos, int ypos, int r, int g, int b)
{
FT_GlyphSlot slot;
int x = 0;
for (std::vector<FT_Face>::const_iterator i = fonts.begin(); i != fonts.end(); ++i) {
- if (FT_Set_Char_Size(*i, 0, unsigned(size * 64.0), 96 * SCREEN_WIDTH/LOGICAL_SCREEN_WIDTH, 96 * SCREEN_HEIGHT/LOGICAL_SCREEN_HEIGHT))
+ if (FT_Set_Char_Size(*i, 0, unsigned(size * 64.0), 96 * screen_width/LOGICAL_SCREEN_WIDTH, 96 * screen_height/LOGICAL_SCREEN_HEIGHT))
throw std::runtime_error("Couldn't set font size");
}
// whoop :-P
- xpos = xpos * SCREEN_WIDTH / LOGICAL_SCREEN_WIDTH;
- ypos = ypos * SCREEN_HEIGHT / LOGICAL_SCREEN_HEIGHT;
+ xpos = xpos * screen_width / LOGICAL_SCREEN_WIDTH;
+ ypos = ypos * screen_height / LOGICAL_SCREEN_HEIGHT;
for (widestring::const_iterator i = str.begin(); i != str.end(); ++i) {
int glyph_index;
for (y = 0; y < bm->rows; y++) {
int xx;
int dsty = ypos - slot->bitmap_top + y;
- if (dsty < 0 || dsty > (SCREEN_HEIGHT-1)) continue;
+ if (dsty < 0 || dsty > signed(screen_height-1)) continue;
- unsigned char *dst = buf + dsty * SCREEN_WIDTH*4 + (x + xpos + slot->bitmap_left)*4;
+ unsigned char *dst = buf + dsty * screen_width*4 + (x + xpos + slot->bitmap_left)*4;
unsigned char *src = bm->buffer + y * bm->width;
- int width = (x + xpos + slot->bitmap_left + bm->width >= SCREEN_WIDTH) ? ((SCREEN_WIDTH-1) - x - xpos - slot->bitmap_left) : bm->width;
+ int width = (x + xpos + slot->bitmap_left + bm->width >= signed(screen_width)) ? ((screen_width-1) - x - xpos - slot->bitmap_left) : bm->width;
for (xx = 0; xx < width; xx++) {
*dst = (*dst * (256-*src) + b * *src) >> 8;
*dst++;
x += slot->advance.x >> 6;
}
- return x * LOGICAL_SCREEN_WIDTH / SCREEN_WIDTH;
+ return x * LOGICAL_SCREEN_WIDTH / screen_width;
}
void my_draw_text_deferred(std::vector<TextDefer> &td, const widestring &str, double size, int xpos, int ypos)