-/***********************************************************
-* Artsoft Retro-Game Library *
-*----------------------------------------------------------*
-* (c) 1994-2006 Artsoft Entertainment *
-* Holger Schemel *
-* Detmolder Strasse 189 *
-* 33604 Bielefeld *
-* Germany *
-* e-mail: info@artsoft.org *
-*----------------------------------------------------------*
-* 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 "system.h"
-#if defined(TARGET_X11)
+// 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 MAX_COLORS 256 /* maximal number of colors for each image */
+#define NUM_IMG_BITMAPS 7
-typedef unsigned short Intensity; /* RGB intensity for X11 */
+// this bitmap pointer points to one of the above bitmaps (do not free it)
+#define IMG_BITMAP_GAME 7
-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;
+#define NUM_IMG_BITMAP_POINTERS 8
-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 */
-};
+// this bitmap pointer points to the bitmap with default image size
+#define IMG_BITMAP_STANDARD IMG_BITMAP_32x32
-typedef struct
-{
- unsigned int type; /* type of image (True-Color etc.) */
- 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 */
- unsigned int bytes_per_pixel;/* (depth + 7) / 8 */
- unsigned int bytes_per_row; /* width * bytes_per_pixel */
- byte *data; /* image data */
-} Image;
-#define IMAGETYPE_BITMAP 0 /* monochrome bitmap */
-#define IMAGETYPE_RGB 1 /* RGB image with colormap */
-#define IMAGETYPE_TRUECOLOR 2 /* true-color image */
+#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 TRUECOLOR_RED(pixel) (((unsigned long)((pixel) & 0xff0000)) >> 16)
-#define TRUECOLOR_GREEN(pixel) (((unsigned long)((pixel) & 0xff00)) >> 8)
-#define TRUECOLOR_BLUE(pixel) ( (unsigned long)((pixel) & 0xff))
-#define RGB_TO_TRUECOLOR(r,g,b) ((((unsigned long)((r) & 0xff00)) << 8) | ((g) & 0xff00) | (((unsigned short)(b)) >> 8))
+#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)
-Image *newImage(unsigned int, unsigned int, unsigned int);
-void freeImage(Image *);
-void freeXImage(Image *, XImageInfo *);
-
-Pixmap Pixmap_to_Mask(Pixmap, int, int);
-
-void ZoomPixmap(Display *, GC, Pixmap, Pixmap, int, int, int, int);
-
-int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
-
-#endif /* TARGET_X11 */
int getImageListSize();
struct FileInfo *getImageListEntryFromImageID(int);
-Bitmap *getBitmapFromImageID(int);
+Bitmap **getBitmapsFromImageID(int);
int getOriginalImageWidthFromImageID(int);
int getOriginalImageHeightFromImageID(int);
char *getTokenFromImageID(int);
void InitImageList(struct ConfigInfo *, int, struct ConfigTypeInfo *,
char **, char **, char **, char **, char **);
-void LoadImageConfig();
void ReloadCustomImages();
-void CreateImageWithSmallImages(int, int);
+void CreateImageWithSmallImages(int, int, int);
+void CreateImageTextures(int);
void ScaleImage(int, int);
void FreeAllImages();