rnd-19981204-2
[rocksndiamonds.git] / src / image.h
1 /***********************************************************
2 *  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
3 *----------------------------------------------------------*
4 *  (c) 1995-98 Artsoft Entertainment                       *
5 *              Holger Schemel                              *
6 *              Oststrasse 11a                              *
7 *              33604 Bielefeld                             *
8 *              phone: ++49 +521 290471                     *
9 *              email: aeglos@valinor.owl.de                *
10 *----------------------------------------------------------*
11 *  image.h                                                 *
12 ***********************************************************/
13
14 #ifndef IMAGE_H
15 #define IMAGE_H
16
17 #include "main.h"
18
19 #define MAX_COLORS      256     /* maximal number of colors for each image */
20
21 typedef unsigned short Intensity;       /* RGB intensity for X11 */
22
23 typedef struct
24 {
25   Display  *display;            /* destination display             */
26   int       depth;              /* depth of destination drawable   */
27   Pixel     index[MAX_COLORS];  /* array of pixel values           */
28   int       no;                 /* number of pixels in the array   */
29   Colormap  cmap;               /* colormap used for image         */
30   Pixmap   pixmap;              /* final pixmap                    */
31   Pixmap   pixmap_mask;         /* final pixmap of mask            */
32 } XImageInfo;
33
34 struct RGBMap
35 {
36   unsigned int used;                    /* number of colors used in RGB map */
37   Intensity    red[MAX_COLORS];         /* color values in X style          */
38   Intensity    green[MAX_COLORS];
39   Intensity    blue[MAX_COLORS];
40   boolean      color_used[MAX_COLORS];  /* flag if color cell is used       */
41 };
42
43 typedef struct
44 {
45   struct RGBMap rgb;            /* RGB map of image if IRGB type       */
46   unsigned int  width;          /* width of image in pixels            */
47   unsigned int  height;         /* height of image in pixels           */
48   unsigned int  depth;          /* depth of image in bits if IRGB type */
49   byte         *data;           /* image data                          */
50 } Image;
51
52 int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
53
54 Image *newImage(unsigned int, unsigned int, unsigned int);
55 void freeImage(Image *);
56 void freeXImage(Image *, XImageInfo *);
57
58 #endif  /* IMAGE_H */