XImage is the X client side storage mechanism for an X Window System pixel map. The structure of an XImage as defined by the X Window core protocol is the following:

Copyrighted

This code is copyrighted. 1985, 1986, 1987, 1991, 1998 The Open Group.

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.

 typedef struct XImage XImage;
 struct XImage {
   int width, height;		/* size of image */
   int xoffset;			/* number of pixels offset in X direction */
   int format;			/* XYBitmap, XYPixmap, ZPixmap */
   char *data;			/* pointer to image data */
   int byte_order;		/* data byte order, LSBFirst, MSBFirst */
   int bitmap_unit;		/* quant. of scanline 8, 16, 32 */
   int bitmap_bit_order;		/* LSBFirst, MSBFirst */
   int bitmap_pad;		/* 8, 16, 32 either XY or ZPixmap */
   int depth;			/* depth of image */
   int bytes_per_line;		/* accelerator to next scanline */
   int bits_per_pixel;		/* bits per pixel (ZPixmap) */
   unsigned long red_mask;	/* bits in z arrangement */
   unsigned long green_mask;
   unsigned long blue_mask;
   XPointer obdata;		/* hook for the object routines to hang on */
   struct funcs {		/* image manipulation routines */
     XImage *(*create_image)();
     int (*destroy_image)();
     unsigned long (*get_pixel)();
     int (*put_pixel)();
     XImage *(*sub_image)();
     int (*add_pixel)();
   } f;
 };