home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / xloadimg.zip / xloadimage.4.1 / niff.h < prev    next >
C/C++ Source or Header  |  1993-10-21  |  2KB  |  61 lines

  1. /* niff.h:
  2.  *
  3.  * header information for xloadimage's native image file format (NIFF),
  4.  * version 1.
  5.  *
  6.  * jimf 10.29.91
  7.  *
  8.  * this is in the public domain
  9.  */
  10.  
  11. #define NIFF_MAGIC 0x4e494646 /* "NIFF" */
  12. #define NIFF_VERSION 1        /* this version */
  13.  
  14. /* types of image data
  15.  */
  16. #define NIFF_BITMAP 1
  17. #define NIFF_RGB    2
  18. #define NIFF_TRUE   3
  19.  
  20. /* colormap entry
  21.  */
  22. struct niff_cmap {
  23.     char red[2];
  24.     char green[2];
  25.     char blue[2];
  26. };
  27.  
  28. struct niff_header {
  29.     char magic[4];     /* NIFF magic number */
  30.     char version[4];   /* NIFF version */
  31.     char width[4];     /* image dimensions */
  32.     char height[4];
  33.     char depth[4];     /* image depth in bits (true depth, not rounded) */
  34.     char type;         /* image type */
  35.     char cmap_size[4]; /* size of colormap; zero NIFF_TRUE */
  36.     char title_len[4]; /* length of image title */
  37.     /* title */
  38.     /* cmap */
  39.     /* image data */
  40. };
  41.  
  42. /* the image title follows the header unless title_len is zero.
  43.  *
  44.  * the image colormap follows the title unless the image is NIFF_TRUE
  45.  * (there must always be at least one cmap entry for NIFF_BITMAP and
  46.  * NIFF_RGB images).
  47.  *
  48.  * the image data follows the cmap data.
  49.  *
  50.  * NIFF_BITMAP data is padded to 8-bits, the highest-order bit is the
  51.  * lowest bitmap pixel.
  52.  *
  53.  * NIFF_RGB data is padded to 8-bits per pixel, highest-order byte first.
  54.  * the number of bytes per pixel is determined by cmap_size (calculate
  55.  * bits-per-pixel using cmap_size and round up to an 8-bit boundary).
  56.  *
  57.  * NIFF_TRUE data is always 3-bytes per pixel - red followed by green
  58.  * followed by blue, 8 bits each. depth must be 24 and cmap_size must be
  59.  * zero.
  60.  */
  61.