/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
-* (c) 1994-2002 Artsoft Entertainment *
+* (c) 1994-2006 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
free(font_bitmap_info);
}
+struct FontBitmapInfo *getFontBitmapInfo(int font_nr)
+{
+ int font_bitmap_id = gfx.select_font_function(font_nr);
+
+ return &gfx.font_bitmap_info[font_bitmap_id];
+}
+
int getFontWidth(int font_nr)
{
int font_bitmap_id = gfx.select_font_function(font_nr);
void DrawInitText(char *text, int ypos, int font_nr)
{
- if (window &&
+ if (window != NULL &&
gfx.num_fonts > 0 &&
gfx.font_bitmap_info[font_nr].bitmap != NULL)
{
- ClearRectangle(window, 0, ypos, video.width, getFontHeight(font_nr));
- DrawTextExt(window, (video.width - getTextWidth(text, font_nr)) / 2, ypos,
- text, font_nr, BLIT_OPAQUE);
- FlushDisplay();
+ int x = (video.width - getTextWidth(text, font_nr)) / 2;
+ int y = ypos;
+ int width = video.width;
+ int height = getFontHeight(font_nr);
+
+ ClearRectangle(drawto, 0, y, width, height);
+ DrawTextExt(drawto, x, y, text, font_nr, BLIT_OPAQUE);
+
+ /* this makes things significantly faster than directly drawing to window */
+ BlitBitmap(drawto, window, 0, y, width, height, 0, y);
}
}
gfx.sy + y, text, font_nr);
}
+void DrawTextSAligned(int x, int y, char *text, int font_nr, int align)
+{
+ DrawText(gfx.sx + ALIGNED_XPOS(x, getTextWidth(text, font_nr), align),
+ gfx.sx + y, text, font_nr);
+}
+
+void DrawTextAligned(int x, int y, char *text, int font_nr, int align)
+{
+ DrawText(ALIGNED_XPOS(x, getTextWidth(text, font_nr), align),
+ y, text, font_nr);
+}
+
void DrawText(int x, int y, char *text, int font_nr)
{
int mask_mode = BLIT_OPAQUE;
void DrawTextExt(DrawBuffer *dst_bitmap, int dst_x, int dst_y, char *text,
int font_nr, int mask_mode)
{
+#if 1
+ struct FontBitmapInfo *font = getFontBitmapInfo(font_nr);
+#else
int font_bitmap_id = gfx.select_font_function(font_nr);
struct FontBitmapInfo *font = &gfx.font_bitmap_info[font_bitmap_id];
+#endif
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
#if 0
return;
/* add offset for drawing font characters */
- dst_x += font->draw_x;
- dst_y += font->draw_y;
+ dst_x += font->draw_xoffset;
+ dst_y += font->draw_yoffset;
while (*text_ptr)
{