X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fimage.h;h=76ff3509fa583b24f60229d15f3644cb09387d74;hp=e8eaaca9e97bf5c850bea6702a1246be6235f9c5;hb=0a69f419ffadee5822bc103be9e85d378e0d0274;hpb=fa9c72bb286c8e5e5095e666dbf85981ad3a8ea2 diff --git a/src/libgame/image.h b/src/libgame/image.h index e8eaaca9..76ff3509 100644 --- a/src/libgame/image.h +++ b/src/libgame/image.h @@ -1,15 +1,13 @@ -/*********************************************************** -* Artsoft Retro-Game Library * -*----------------------------------------------------------* -* (c) 1994-2002 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 @@ -17,68 +15,62 @@ #include "system.h" -#if defined(TARGET_X11) - -#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 -{ - 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 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)) - -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_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 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 *getImageListEntry(int); -Bitmap *getBitmapFromImageID(int); +struct FileInfo *getImageListEntryFromImageID(int); +Bitmap **getBitmapsFromImageID(int); +int getOriginalImageWidthFromImageID(int); +int getOriginalImageHeightFromImageID(int); char *getTokenFromImageID(int); +int getImageIDFromToken(char *); char *getImageConfigFilename(); -void InitImageList(struct ConfigInfo *, int, struct ConfigInfo *, - char **, char **, char **); +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 */