rnd-20030404-4-src
[rocksndiamonds.git] / src / libgame / system.h
index 2abb3cdda2cc7d64f4e0e27f42b1144b1c15acfc..c8afb2de3187d3aed2f8236c1447a1cbbfa6c61e 100644 (file)
@@ -40,6 +40,9 @@
 
 #define DEFAULT_DEPTH          0
 
+#define BLIT_OPAQUE            0
+#define BLIT_MASKED            1
+
 #define FULLSCREEN_NOT_AVAILABLE FALSE
 #define FULLSCREEN_AVAILABLE    TRUE
 
@@ -63,6 +66,7 @@
 #define DEFAULT_KEY_LOAD_GAME  KSYM_F2
 #define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space
 
+
 /* values for move directions and special "button" keys */
 #define MV_BIT_LEFT            0
 #define MV_BIT_RIGHT           1
@@ -85,6 +89,7 @@
                                 (x) == MV_RIGHT ? MV_BIT_RIGHT :       \
                                 (x) == MV_UP    ? MV_BIT_UP    : MV_BIT_DOWN)
 
+
 /* values for button status */
 #define MB_NOT_PRESSED         FALSE
 #define MB_NOT_RELEASED                TRUE
 #define MB_MIDDLEBUTTON                2
 #define MB_RIGHTBUTTON         3
 
+
 /* values for animation mode (frame order and direction) */
 #define ANIM_NONE              0
 #define ANIM_LOOP              (1 << 0)
 #define ANIM_RANDOM            (1 << 4)
 #define ANIM_REVERSE           (1 << 5)
 
+
 /* values for redraw_mask */
 #define REDRAW_NONE            (0)
 #define REDRAW_ALL             (1 << 0)
 #define REDRAW_FPS             (1 << 11)
 #define REDRAWTILES_THRESHOLD  (SCR_FIELDX * SCR_FIELDY / 2)
 
+
+/* values for mouse cursor */
+#define CURSOR_DEFAULT         0
+#define CURSOR_PLAYFIELD       1
+
+#define CURSOR_MAX_WIDTH       32
+#define CURSOR_MAX_HEIGHT      32
+
+
 /* maximum number of parallel players supported by libgame functions */
 #define MAX_PLAYERS            4
 
@@ -240,7 +256,7 @@ struct ProgramInfo
 
   char *x11_icon_filename;
   char *x11_iconmask_filename;
-  char *msdos_pointer_filename;
+  char *msdos_cursor_filename;
 
   char *cookie_prefix;
   char *filename_prefix;       /* prefix to cut off from DOS filenames */
@@ -328,12 +344,15 @@ struct GfxInfo
   int draw_deactivation_mask;
   int draw_background_mask;
 
+  Bitmap *field_save_buffer;
+
   Bitmap *background_bitmap;
   int background_bitmap_mask;
 
   int num_fonts;
   struct FontBitmapInfo *font_bitmap_info;
   int (*select_font_function)(int);
+  Pixel inverse_text_color;
 
   int anim_random_frame;
 };
@@ -344,6 +363,15 @@ struct JoystickInfo
   int fd[MAX_PLAYERS];         /* file descriptor of player's joystick */
 };
 
+struct MouseCursorInfo
+{
+  int width, height;
+  int hot_x, hot_y;
+
+  char data[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
+  char mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
+};
+
 struct SetupJoystickInfo
 {
   char *device_name;           /* device name of player's joystick */
@@ -636,7 +664,7 @@ void InitExitFunction(void (*exit_function)(int));
 void InitPlatformDependantStuff(void);
 void ClosePlatformDependantStuff(void);
 
-void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
+void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *);
 void InitGfxDoor1Info(int, int, int, int);
 void InitGfxDoor2Info(int, int, int, int);
 void InitGfxScrollbufferInfo(int, int);
@@ -652,6 +680,7 @@ inline Bitmap *CreateBitmapStruct(void);
 inline Bitmap *CreateBitmap(int, int, int);
 inline void FreeBitmap(Bitmap *);
 inline void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int);
+inline void FillRectangle(Bitmap *, int, int, int, int, Pixel);
 inline void ClearRectangle(Bitmap *, int, int, int, int);
 inline void ClearRectangleOnBackground(Bitmap *, int, int, int, int);
 inline void SetClipMask(Bitmap *, GC, Pixmap);
@@ -681,6 +710,8 @@ void ReloadCustomImage(Bitmap *, char *);
 Bitmap *ZoomBitmap(Bitmap *, int, int);
 void CreateBitmapWithSmallBitmaps(Bitmap *);
 
+void SetMouseCursor(int);
+
 inline void OpenAudio(void);
 inline void CloseAudio(void);
 inline void SetAudioMode(boolean);