rnd-20111007-1-src
[rocksndiamonds.git] / src / libgame / image.h
index 1257dda1ca2750eb7ec218aa44656efd9656e870..c3c1e0d16a2ff3f287a28729910a9f6920996a10 100644 (file)
@@ -1,30 +1,23 @@
 /***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
+* Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
+* (c) 1994-2006 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
 *----------------------------------------------------------*
-*  image.h                                                 *
+* image.h                                                  *
 ***********************************************************/
 
 #ifndef IMAGE_H
 #define IMAGE_H
 
-#include "platform.h"
-
-#ifndef TARGET_SDL
-
-#include "types.h"
 #include "system.h"
 
-/*
-#include "types.h"
-#include "x11.h"
-*/
+
+#if defined(TARGET_X11)
 
 #define MAX_COLORS     256     /* maximal number of colors for each image */
 
@@ -52,17 +45,54 @@ struct RGBMap
 
 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 int)((pixel) & 0xff0000)) >> 16)
+#define TRUECOLOR_GREEN(pixel) (((unsigned int)((pixel) & 0xff00)) >> 8)
+#define TRUECOLOR_BLUE(pixel)  ( (unsigned int)((pixel) & 0xff))
+#define RGB_TO_TRUECOLOR(r,g,b)        ((((unsigned int)((r) & 0xff00)) << 8) | ((g) & 0xff00) | (((unsigned short)(b)) >> 8))
+
 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_SDL */
+#endif /* TARGET_X11 */
+
+int getImageListSize();
+struct FileInfo *getImageListEntryFromImageID(int);
+Bitmap *getBitmapFromImageID(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);
+void ScaleImage(int, int);
+
+void FreeAllImages();
+
 #endif /* IMAGE_H */