X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Ftext.c;h=414c187716422ecf8150a5be6e0a2a9a029991d2;hb=4f99eecc06f270aa3c8f536c0b3813c743d19ef5;hp=2fdd2c20f12e3c868c26eb4f56c6847f3dad0de6;hpb=fe0d059d4646a35d85ef508c70eaaaae393302f2;p=rocksndiamonds.git diff --git a/src/libgame/text.c b/src/libgame/text.c index 2fdd2c20..414c1877 100644 --- a/src/libgame/text.c +++ b/src/libgame/text.c @@ -28,9 +28,11 @@ struct FontInfo font; /* font functions */ /* ========================================================================= */ -void InitFontInfo(Bitmap *bitmap_big, Bitmap *bitmap_medium, +void InitFontInfo(Bitmap *bitmap_initial, + Bitmap *bitmap_big, Bitmap *bitmap_medium, Bitmap *bitmap_small, Bitmap *bitmap_tile) { + font.bitmap_initial = bitmap_initial; font.bitmap_big = bitmap_big; font.bitmap_medium = bitmap_medium; font.bitmap_small = bitmap_small; @@ -39,31 +41,33 @@ void InitFontInfo(Bitmap *bitmap_big, Bitmap *bitmap_medium, int getFontWidth(int font_size, int font_type) { - return (font_size == FS_BIG ? FONT1_XSIZE : - font_size == FS_MEDIUM ? FONT6_XSIZE : - font_type == FC_SPECIAL1 ? FONT3_XSIZE : + return (font_type == FC_SPECIAL1 ? FONT3_XSIZE : font_type == FC_SPECIAL2 ? FONT4_XSIZE : font_type == FC_SPECIAL3 ? FONT5_XSIZE : + font_size == FS_BIG ? FONT1_XSIZE : + font_size == FS_MEDIUM ? FONT6_XSIZE : + font_size == FS_SMALL ? FONT2_XSIZE : FONT2_XSIZE); } int getFontHeight(int font_size, int font_type) { - return (font_size == FS_BIG ? FONT1_YSIZE : - font_size == FS_MEDIUM ? FONT6_YSIZE : - font_type == FC_SPECIAL1 ? FONT3_YSIZE : + return (font_type == FC_SPECIAL1 ? FONT3_YSIZE : font_type == FC_SPECIAL2 ? FONT4_YSIZE : font_type == FC_SPECIAL3 ? FONT5_YSIZE : + font_size == FS_BIG ? FONT1_YSIZE : + font_size == FS_MEDIUM ? FONT6_YSIZE : + font_size == FS_SMALL ? FONT2_YSIZE : FONT2_YSIZE); } void DrawInitText(char *text, int ypos, int color) { - if (window && font.bitmap_small) + if (window && font.bitmap_initial) { ClearRectangle(window, 0, ypos, video.width, FONT2_YSIZE); DrawTextExt(window, (video.width - strlen(text) * FONT2_XSIZE)/2, - ypos, text, FS_SMALL, color); + ypos, text, FS_INITIAL, color); FlushDisplay(); } } @@ -104,15 +108,15 @@ void DrawText(int x, int y, char *text, int font_size, int font_type) redraw_mask |= REDRAW_DOOR_1; } -void DrawTextExt(DrawBuffer *bitmap, int x, int y, - char *text, int font_size, int font_type) +void DrawTextExt(DrawBuffer *bitmap, int x, int y, char *text, + int font_size, int font_type) { Bitmap *font_bitmap; int font_width, font_height, font_starty; boolean print_inverse = FALSE; - if (font_size != FS_SMALL && font_size != FS_BIG && font_size != FS_MEDIUM) - font_size = FS_SMALL; + if (font_size != FS_BIG && font_size != FS_MEDIUM && font_size != FS_SMALL) + font_size = FS_INITIAL; if (font_type < FC_RED || font_type > FC_SPECIAL3) font_type = FC_RED; @@ -123,7 +127,7 @@ void DrawTextExt(DrawBuffer *bitmap, int x, int y, font_size == FS_BIG ? font.bitmap_big : font_size == FS_MEDIUM ? font.bitmap_medium : font_size == FS_SMALL ? font.bitmap_small : - font.bitmap_small); + font.bitmap_initial); if (font_bitmap == NULL) return; @@ -133,6 +137,7 @@ void DrawTextExt(DrawBuffer *bitmap, int x, int y, else font_starty = (font_type * (font_size == FS_BIG ? FONT1_YSIZE : font_size == FS_MEDIUM ? FONT6_YSIZE : + font_size == FS_SMALL ? FONT2_YSIZE : FONT2_YSIZE) * FONT_LINES_PER_FONT); @@ -162,23 +167,23 @@ void DrawTextExt(DrawBuffer *bitmap, int x, int y, else if (c == '\\') /* bad luck ... */ c = '/'; - if ((c >= 32 && c <= 95) || c == '°' || c == '´') + if ((c >= 32 && c <= 95) || c == '°' || c == '´' || c == '|') { int src_x = ((c - 32) % FONT_CHARS_PER_LINE) * font_width; int src_y = ((c - 32) / FONT_CHARS_PER_LINE) * font_height + font_starty; int dest_x = x, dest_y = y; - if (c == '°' || c == '´') /* map '°' and 'TM' signs */ + if (c == '°' || c == '´' || c == '|') /* map '°' and 'TM' signs */ { if (font_type == FC_SPECIAL2) { - src_x = (c == '°' ? 1 : 2) * font_width; + src_x = (c == '°' ? 1 : c == '´' ? 2 : 3) * font_width; src_y = 4 * font_height; } else { src_x = FONT_CHARS_PER_LINE * font_width; - src_y = (c == '°' ? 1 : 2) * font_height + font_starty; + src_y = (c == '°' ? 1 : c == '´' ? 2 : 3) * font_height +font_starty; } }