fixed re-initialization of textures after change of renderer
[rocksndiamonds.git] / src / libgame / image.h
index a45888aca959d1148d6d0363fe41d04f6a01e6c3..76ff3509fa583b24f60229d15f3644cb09387d74 100644 (file)
 #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 *getBitmapFromImageID(int);
+Bitmap **getBitmapsFromImageID(int);
 int getOriginalImageWidthFromImageID(int);
 int getOriginalImageHeightFromImageID(int);
 char *getTokenFromImageID(int);
@@ -30,6 +67,8 @@ void InitImageList(struct ConfigInfo *, int, struct ConfigTypeInfo *,
 
 void ReloadCustomImages();
 void CreateImageWithSmallImages(int, int, int);
+void CreateImageTextures(int);
+void FreeAllImageTextures();
 void ScaleImage(int, int);
 
 void FreeAllImages();