projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20021019-1-src
[rocksndiamonds.git]
/
src
/
libgame
/
text.c
diff --git
a/src/libgame/text.c
b/src/libgame/text.c
index 382749e3e3fc2a176c92e0bdf767a1220d9856d0..9c2529bcd886ba259b41379bd1f15ddaaf67e830 100644
(file)
--- a/
src/libgame/text.c
+++ b/
src/libgame/text.c
@@
-1,7
+1,7
@@
/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
-* (c) 1994-200
0
Artsoft Entertainment *
+* (c) 1994-200
2
Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
@@
-29,11
+29,12
@@
struct FontInfo font;
/* ========================================================================= */
void InitFontInfo(Bitmap *bitmap_big, Bitmap *bitmap_medium,
/* ========================================================================= */
void InitFontInfo(Bitmap *bitmap_big, Bitmap *bitmap_medium,
- Bitmap *bitmap_small)
+ Bitmap *bitmap_small
, Bitmap *bitmap_tile
)
{
font.bitmap_big = bitmap_big;
font.bitmap_medium = bitmap_medium;
font.bitmap_small = bitmap_small;
{
font.bitmap_big = bitmap_big;
font.bitmap_medium = bitmap_medium;
font.bitmap_small = bitmap_small;
+ font.bitmap_tile = bitmap_tile;
}
int getFontWidth(int font_size, int font_type)
}
int getFontWidth(int font_size, int font_type)
@@
-99,7
+100,7
@@
void DrawText(int x, int y, char *text, int font_size, int font_type)
if (x < gfx.dx)
redraw_mask |= REDRAW_FIELD;
if (x < gfx.dx)
redraw_mask |= REDRAW_FIELD;
- else if (y < gfx.vy)
+ else if (y < gfx.vy
|| gfx.vy == 0
)
redraw_mask |= REDRAW_DOOR_1;
}
redraw_mask |= REDRAW_DOOR_1;
}
@@
-107,7
+108,7
@@
void DrawTextExt(DrawBuffer *bitmap, int x, int y,
char *text, int font_size, int font_type)
{
Bitmap *font_bitmap;
char *text, int font_size, int font_type)
{
Bitmap *font_bitmap;
- int font_width, font_height, font_start;
+ int font_width, font_height, font_start
y
;
boolean print_inverse = FALSE;
if (font_size != FS_SMALL && font_size != FS_BIG && font_size != FS_MEDIUM)
boolean print_inverse = FALSE;
if (font_size != FS_SMALL && font_size != FS_BIG && font_size != FS_MEDIUM)
@@
-118,16
+119,22
@@
void DrawTextExt(DrawBuffer *bitmap, int x, int y,
font_width = getFontWidth(font_size, font_type);
font_height = getFontHeight(font_size, font_type);
font_width = getFontWidth(font_size, font_type);
font_height = getFontHeight(font_size, font_type);
- font_bitmap = (font_size == FS_BIG ? font.bitmap_big :
- font_size == FS_MEDIUM ? font.bitmap_medium :
+ font_bitmap = (font_type == FC_SPECIAL2 ? font.bitmap_tile :
+ 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_small);
- font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE :
- font_size == FS_MEDIUM ? FONT6_YSIZE :
- FONT2_YSIZE) *
- FONT_LINES_PER_FONT);
+
+ if (font_type == FC_SPECIAL2)
+ font_starty = (font_size == FS_BIG ? 0 : FONT1_YSIZE) * 5;
+ else
+ font_starty = (font_type * (font_size == FS_BIG ? FONT1_YSIZE :
+ font_size == FS_MEDIUM ? FONT6_YSIZE :
+ FONT2_YSIZE) *
+ FONT_LINES_PER_FONT);
if (font_type == FC_SPECIAL3)
if (font_type == FC_SPECIAL3)
- font_start
+= (FONT4_YSIZE - FONT2_YSIZE)
* FONT_LINES_PER_FONT;
+ font_start
y -= FONT2_YSIZE
* FONT_LINES_PER_FONT;
while (*text)
{
while (*text)
{
@@
-147,24
+154,36
@@
void DrawTextExt(DrawBuffer *bitmap, int x, int y,
c = 92;
else if (c == 'ü' || c == 'Ü')
c = 93;
c = 92;
else if (c == 'ü' || c == 'Ü')
c = 93;
+ else if (c == '[' || c == ']') /* map to normal braces */
+ c = (c == '[' ? '(' : ')');
+ else if (c == '\\') /* bad luck ... */
+ c = '/';
- if ((c >= 32 && c <= 95) || c == '°')
+ if ((c >= 32 && c <= 95) || c == '°'
|| c == '´'
)
{
int src_x = ((c - 32) % FONT_CHARS_PER_LINE) * font_width;
{
int src_x = ((c - 32) % FONT_CHARS_PER_LINE) * font_width;
- int src_y = ((c - 32) / FONT_CHARS_PER_LINE) * font_height + font_start;
+ int src_y = ((c - 32) / FONT_CHARS_PER_LINE) * font_height + font_start
y
;
int dest_x = x, dest_y = y;
int dest_x = x, dest_y = y;
- if (c == '°'
)
+ if (c == '°'
|| c == '´') /* map '°' and 'TM' signs */
{
{
- src_x = (FONT_CHARS_PER_LINE + 1) * font_width;
- src_y = 3 * font_height + font_start;
+ if (font_type == FC_SPECIAL2)
+ {
+ src_x = (c == '°' ? 1 : 2) * 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;
+ }
}
if (print_inverse)
{
BlitBitmap(font_bitmap, bitmap,
FONT_CHARS_PER_LINE * font_width,
}
if (print_inverse)
{
BlitBitmap(font_bitmap, bitmap,
FONT_CHARS_PER_LINE * font_width,
- 3 * font_height + font_start,
+ 3 * font_height + font_start
y
,
font_width, font_height, x, y);
SetClipOrigin(font_bitmap, font_bitmap->stored_clip_gc,
font_width, font_height, x, y);
SetClipOrigin(font_bitmap, font_bitmap->stored_clip_gc,