rnd-20020803-1-src
[rocksndiamonds.git] / src / libgame / text.c
index aab18ef6b4eca6dd5ff42a9c0ca8a5f3b0524e58..16381e494438e8872531972fb045c6eb1a884a76 100644 (file)
@@ -1,14 +1,14 @@
 /***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
+* Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
+* (c) 1994-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
 *----------------------------------------------------------*
-*  text.c                                                  *
+* text.c                                                   *
 ***********************************************************/
 
 #include <stdio.h>
@@ -28,8 +28,8 @@ struct FontInfo               font;
 /* font functions                                                            */
 /* ========================================================================= */
 
-void InitFontInfo(Bitmap bitmap_big, Bitmap bitmap_medium,
-                 Bitmap bitmap_small)
+void InitFontInfo(Bitmap *bitmap_big, Bitmap *bitmap_medium,
+                 Bitmap *bitmap_small)
 {
   font.bitmap_big = bitmap_big;
   font.bitmap_medium = bitmap_medium;
@@ -99,14 +99,14 @@ void DrawText(int x, int y, char *text, int font_size, int font_type)
 
   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;
 }
 
-void DrawTextExt(DrawBuffer bitmap, int x, int y,
+void DrawTextExt(DrawBuffer *bitmap, int x, int y,
                 char *text, int font_size, int font_type)
 {
-  Bitmap font_bitmap;
+  Bitmap *font_bitmap;
   int font_width, font_height, font_start;
   boolean print_inverse = FALSE;
 
@@ -147,13 +147,23 @@ void DrawTextExt(DrawBuffer bitmap, int x, int y,
       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)
+    if ((c >= 32 && c <= 95) || 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_start;
       int dest_x = x, dest_y = y;
 
+      if (c == '°' || c == '´')                /* map '°' and 'TM' signs */
+      {
+       src_x = FONT_CHARS_PER_LINE * font_width;
+       src_y = (c == '°' ? 1 : 2) * font_height + font_start;
+      }
+
       if (print_inverse)
       {
        BlitBitmap(font_bitmap, bitmap,