fixed re-initialization of textures after change of renderer
[rocksndiamonds.git] / src / libgame / image.h
index 4f55fe3a651c541e576043d44e38ffa5618fc516..76ff3509fa583b24f60229d15f3644cb09387d74 100644 (file)
@@ -1,63 +1,76 @@
-/***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
-*----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
-*----------------------------------------------------------*
-*  image.h                                                 *
-***********************************************************/
+// ============================================================================
+// Artsoft Retro-Game Library
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+//                         Holger Schemel
+//                 info@artsoft.org
+//                 http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// image.h
+// ============================================================================
 
 #ifndef IMAGE_H
 #define IMAGE_H
 
-#include "platform.h"
-
-#ifndef TARGET_SDL
-
-#include "types.h"
-#include "x11.h"
-
-#define MAX_COLORS     256     /* maximal number of colors for each image */
-
-typedef unsigned short Intensity;      /* RGB intensity for X11 */
-
-typedef struct
-{
-  Display  *display;           /* destination display             */
-  int       depth;             /* depth of destination drawable   */
-  Pixel     index[MAX_COLORS]; /* array of pixel values           */
-  int       no;                        /* number of pixels in the array   */
-  Colormap  cmap;              /* colormap used for image         */
-  Pixmap   pixmap;             /* final pixmap                    */
-  Pixmap   pixmap_mask;                /* final pixmap of mask            */
-} XImageInfo;
-
-struct RGBMap
-{
-  unsigned int used;                   /* number of colors used in RGB map */
-  Intensity    red[MAX_COLORS];                /* color values in X style          */
-  Intensity    green[MAX_COLORS];
-  Intensity    blue[MAX_COLORS];
-  boolean      color_used[MAX_COLORS]; /* flag if color cell is used       */
-};
-
-typedef struct
-{
-  struct RGBMap rgb;           /* RGB map of image if IRGB type       */
-  unsigned int  width;         /* width of image in pixels            */
-  unsigned int  height;                /* height of image in pixels           */
-  unsigned int  depth;         /* depth of image in bits if IRGB type */
-  byte         *data;          /* image data                          */
-} Image;
-
-Image *newImage(unsigned int, unsigned int, unsigned int);
-void freeImage(Image *);
-void freeXImage(Image *, XImageInfo *);
-int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
-
-#endif /* !TARGET_SDL */
+#include "system.h"
+
+
+// these bitmap pointers either point to allocated bitmaps or are NULL
+#define IMG_BITMAP_32x32       0
+#define IMG_BITMAP_16x16       1
+#define IMG_BITMAP_8x8         2
+#define IMG_BITMAP_4x4         3
+#define IMG_BITMAP_2x2         4
+#define IMG_BITMAP_1x1         5
+#define IMG_BITMAP_CUSTOM      6
+
+#define NUM_IMG_BITMAPS                7
+
+// this bitmap pointer points to one of the above bitmaps (do not free it)
+#define IMG_BITMAP_GAME                7
+
+#define NUM_IMG_BITMAP_POINTERS        8
+
+// this bitmap pointer points to the bitmap with default image size
+#define IMG_BITMAP_STANDARD    IMG_BITMAP_32x32
+
+
+#define GET_BITMAP_ID_FROM_TILESIZE(x) ((x) ==  1 ? IMG_BITMAP_1x1   : \
+                                        (x) ==  2 ? IMG_BITMAP_2x2   : \
+                                        (x) ==  4 ? IMG_BITMAP_4x4   : \
+                                        (x) ==  8 ? IMG_BITMAP_8x8   : \
+                                        (x) == 16 ? IMG_BITMAP_16x16 : \
+                                        (x) == 32 ? IMG_BITMAP_32x32 : \
+                                        IMG_BITMAP_CUSTOM)
+
+#define GET_TILESIZE_FROM_BITMAP_ID(x) ((x) == IMG_BITMAP_1x1   ? 1  : \
+                                        (x) == IMG_BITMAP_2x2   ? 2  : \
+                                        (x) == IMG_BITMAP_4x4   ? 4  : \
+                                        (x) == IMG_BITMAP_8x8   ? 8  : \
+                                        (x) == IMG_BITMAP_16x16 ? 16 : \
+                                        (x) == IMG_BITMAP_32x32 ? 32 : \
+                                        0)
+
+
+int getImageListSize();
+struct FileInfo *getImageListEntryFromImageID(int);
+Bitmap **getBitmapsFromImageID(int);
+int getOriginalImageWidthFromImageID(int);
+int getOriginalImageHeightFromImageID(int);
+char *getTokenFromImageID(int);
+int getImageIDFromToken(char *);
+char *getImageConfigFilename();
+int getImageListPropertyMappingSize();
+struct PropertyMapping *getImageListPropertyMapping();
+void InitImageList(struct ConfigInfo *, int, struct ConfigTypeInfo *,
+                  char **, char **, char **, char **, char **);
+
+void ReloadCustomImages();
+void CreateImageWithSmallImages(int, int, int);
+void CreateImageTextures(int);
+void FreeAllImageTextures();
+void ScaleImage(int, int);
+
+void FreeAllImages();
+
 #endif /* IMAGE_H */