home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Anwendungen / Kurztests / PBM / ILBMTOPPM.LHA / src / ilbm.h next >
Text File  |  1994-11-17  |  7KB  |  187 lines

  1. /* ilbm.h - header file for IFF ILBM files */
  2.  
  3. #define RowBytes(cols)          ((((cols) + 15) / 16) * 2)
  4.  
  5.  
  6. /* definitions for BMHD */
  7.  
  8. typedef struct {
  9.     unsigned short w, h;
  10.     short x, y;
  11.     unsigned char nPlanes, masking, compression, flags;
  12.     unsigned short transparentColor;
  13.     unsigned char xAspect, yAspect;
  14.     short pageWidth, pageHeight;
  15. } BitMapHeader;
  16. #define BitMapHeaderSize    20
  17.  
  18. #define BMHD_FLAGS_CMAPOK       (1<<7)      /* valid 8bit colormap */
  19.  
  20. #define mskNone                 0
  21. #define mskHasMask              1
  22. #define mskHasTransparentColor  2       /* not supported */
  23. #define mskLasso                3       /* not supported */
  24. #define mskMAXKNOWN             mskLasso
  25. static char *   mskNAME[] = { "none", "mask plane", "transparent color", "lasso" };
  26.  
  27. #define cmpNone                 0
  28. #define cmpByteRun1             1
  29. #define cmpMAXKNOWN             cmpByteRun1
  30. static char *  cmpNAME[] = { "none", "byterun1" };
  31.  
  32.  
  33. /* definitions for CMAP */
  34.  
  35. #if 0   /* not used */
  36. typedef struct {
  37.     unsigned char r, g, b;
  38. } ColorRegister;
  39. #endif
  40.  
  41.  
  42. /* definitions for CAMG */
  43.  
  44. #define CAMGChunkSize       4
  45.  
  46. #define vmLACE              0x0004
  47. #define vmEXTRA_HALFBRITE   0x0080
  48. #define vmHAM               0x0800
  49. #define vmHIRES             0x8000
  50.  
  51. #define HAMCODE_CMAP      0     /* look up color in colormap */
  52. #define HAMCODE_BLUE      1     /* new blue component */
  53. #define HAMCODE_RED       2     /* new red component */
  54. #define HAMCODE_GREEN     3     /* new green component */
  55.  
  56.  
  57. /* multipalette PCHG chunk definitions */
  58.  
  59. /* get number of longwords in line mask from PCHG.LineCount */
  60. #define MaskLongWords(x)    (((x) + 31) / 32)
  61.  
  62. typedef struct {
  63.     unsigned short  Compression;
  64.     unsigned short  Flags;
  65.     short           StartLine;      /* may be negative */
  66.     unsigned short  LineCount;
  67.     unsigned short  ChangedLines;
  68.     unsigned short  MinReg;
  69.     unsigned short  MaxReg;
  70.     unsigned short  MaxChanges;
  71.     unsigned long   TotalChanges;
  72. } PCHGHeader;
  73. #define PCHGHeaderSize      20
  74.  
  75. /* Compression modes */
  76. #define PCHG_COMP_NONE      0
  77. #define PCHG_COMP_HUFFMAN   1
  78.  
  79. /* Flags */
  80. #define PCHGF_12BIT         (1 << 0)    /* use SmallLineChanges */
  81. #define PCHGF_32BIT         (1 << 1)    /* use BigLineChanges */
  82. #define PCHGF_USE_ALPHA     (1 << 2)    /* meaningful only if PCHG_32BIT is on:
  83.                                            use the Alpha channel info */
  84. typedef struct {
  85.     unsigned long   CompInfoSize;
  86.     unsigned long   OriginalDataSize;
  87. } PCHGCompHeader;
  88. #define PCHGCompHeaderSize  8
  89.  
  90. #if 0   /* not used */
  91. typedef struct {
  92.     unsigned char   ChangeCount16;
  93.     unsigned char   ChangeCount32;
  94.     unsigned short  *PaletteChange;
  95. } SmallLineChanges;
  96.  
  97. typedef struct {
  98.     unsigned short  Register;
  99.     unsigned char   Alpha, Red, Blue, Green;    /* ARBG, not ARGB */
  100. } BigPaletteChange;
  101.  
  102. typedef struct {
  103.     unsigned short      ChangeCount;
  104.     BigPaletteChange    *PaletteChange;
  105. } BigLineChanges;
  106. #endif /* 0 */
  107.  
  108.  
  109. /* definitions for CLUT */
  110.  
  111. #if 0 /* not used */
  112. typedef struct {
  113.     unsigned long type;
  114.     unsigned long reserved0;
  115.     unsigned char lut[256];
  116. } ColorLUT;
  117. #endif /* 0 */
  118. #define CLUTSize    (256+4+4)
  119.  
  120. /* types */
  121. #define CLUT_MONO   0
  122. #define CLUT_RED    1
  123. #define CLUT_GREEN  2
  124. #define CLUT_BLUE   3
  125. #define CLUT_HUE    4   /* not supported */
  126. #define CLUT_SAT    5   /* not supported */
  127.  
  128.  
  129. /* IFF chunk IDs */
  130.  
  131. typedef unsigned long   IFF_ID;
  132.  
  133. #define MAKE_ID(a, b, c, d)         ((IFF_ID)(a)<<24 | (IFF_ID)(b)<<16 | (IFF_ID)(c)<<8 | (IFF_ID)(d))
  134.  
  135. #define ID_FORM   MAKE_ID('F', 'O', 'R', 'M')     /* EA IFF 85 group identifier */
  136. #define ID_CAT    MAKE_ID('C', 'A', 'T', ' ')     /* EA IFF 85 group identifier */
  137. #define ID_LIST   MAKE_ID('L', 'I', 'S', 'T')     /* EA IFF 85 group identifier */
  138. #define ID_PROP   MAKE_ID('P', 'R', 'O', 'P')     /* EA IFF 85 group identifier */
  139. #define ID_END    MAKE_ID('E', 'N', 'D', ' ')     /* unofficial END-of-FORM identifier (see Amiga RKM Devices Ed.3 page 376) */
  140.  
  141. #define ID_ILBM   MAKE_ID('I', 'L', 'B', 'M')     /* EA IFF 85 raster bitmap form */
  142. #define ID_DEEP   MAKE_ID('D', 'E', 'E', 'P')     /* Chunky pixel image files (Used in TV Paint) */
  143. #define ID_RGB8   MAKE_ID('R', 'G', 'B', '8')     /* RGB image forms, Turbo Silver (Impulse) */
  144. #define ID_RGBN   MAKE_ID('R', 'G', 'B', 'N')     /* RGB image forms, Turbo Silver (Impulse) */
  145. /* generic */
  146. #define ID_FVER   MAKE_ID('F', 'V', 'E', 'R')     /* AmigaOS version string */
  147. #define ID_JUNK   MAKE_ID('J', 'U', 'N', 'K')     /* always ignore this chunk */
  148. #define ID_ANNO   MAKE_ID('A', 'N', 'N', 'O')     /* EA IFF 85 Generic Annotation chunk */
  149. #define ID_AUTH   MAKE_ID('A', 'U', 'T', 'H')     /* EA IFF 85 Generic Author chunk */
  150. #define ID_CHRS   MAKE_ID('C', 'H', 'R', 'S')     /* EA IFF 85 Generic character string chunk */
  151. #define ID_NAME   MAKE_ID('N', 'A', 'M', 'E')     /* EA IFF 85 Generic Name of art, music, etc. chunk */
  152. #define ID_TEXT   MAKE_ID('T', 'E', 'X', 'T')     /* EA IFF 85 Generic unformatted ASCII text chunk */
  153. #define ID_copy   MAKE_ID('(', 'c', ')', ' ')     /* EA IFF 85 Generic Copyright text chunk */
  154. /* ILBM chunks */
  155. #define ID_BMHD   MAKE_ID('B', 'M', 'H', 'D')     /* ILBM BitmapHeader */
  156. #define ID_CMAP   MAKE_ID('C', 'M', 'A', 'P')     /* ILBM 8bit RGB colormap */
  157. #define ID_GRAB   MAKE_ID('G', 'R', 'A', 'B')     /* ILBM "hotspot" coordiantes */
  158. #define ID_DEST   MAKE_ID('D', 'E', 'S', 'T')     /* ILBM destination image info */
  159. #define ID_SPRT   MAKE_ID('S', 'P', 'R', 'T')     /* ILBM sprite identifier */
  160. #define ID_CAMG   MAKE_ID('C', 'A', 'M', 'G')     /* Amiga viewportmodes */
  161. #define ID_BODY   MAKE_ID('B', 'O', 'D', 'Y')     /* ILBM image data */
  162. #define ID_CRNG   MAKE_ID('C', 'R', 'N', 'G')     /* color cycling */
  163. #define ID_CCRT   MAKE_ID('C', 'C', 'R', 'T')     /* color cycling */
  164. #define ID_CLUT   MAKE_ID('C', 'L', 'U', 'T')     /* Color Lookup Table chunk */
  165. #define ID_DPI    MAKE_ID('D', 'P', 'I', ' ')     /* Dots per inch chunk */
  166. #define ID_DPPV   MAKE_ID('D', 'P', 'P', 'V')     /* DPaint perspective chunk (EA) */
  167. #define ID_DRNG   MAKE_ID('D', 'R', 'N', 'G')     /* DPaint IV enhanced color cycle chunk (EA) */
  168. #define ID_EPSF   MAKE_ID('E', 'P', 'S', 'F')     /* Encapsulated Postscript chunk */
  169. #define ID_CMYK   MAKE_ID('C', 'M', 'Y', 'K')     /* Cyan, Magenta, Yellow, & Black color map (Soft-Logik) */
  170. #define ID_CNAM   MAKE_ID('C', 'N', 'A', 'M')     /* Color naming chunk (Soft-Logik) */
  171. #define ID_PCHG   MAKE_ID('P', 'C', 'H', 'G')     /* Line by line palette control information (Sebastiano Vigna) */
  172. #define ID_PRVW   MAKE_ID('P', 'R', 'V', 'W')     /* A mini duplicate ILBM used for preview (Gary Bonham) */
  173. #define ID_XBMI   MAKE_ID('X', 'B', 'M', 'I')     /* eXtended BitMap Information (Soft-Logik) */
  174. #define ID_CTBL   MAKE_ID('C', 'T', 'B', 'L')     /* Newtek Dynamic Ham color chunk */
  175. #define ID_DYCP   MAKE_ID('D', 'Y', 'C', 'P')     /* Newtek Dynamic Ham chunk */
  176. #define ID_SHAM   MAKE_ID('S', 'H', 'A', 'M')     /* Sliced HAM color chunk */
  177.  
  178.  
  179. /* other stuff */
  180.  
  181. #define MAXPLANES       16
  182. typedef unsigned short  rawtype;
  183.  
  184. #define MAXCMAPCOLORS   (1 << MAXPLANES)
  185. #define MAXCOLVAL       255     /* max value of color component */
  186.  
  187.