home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 043.lha / IFFdump.h < prev    next >
C/C++ Source or Header  |  1987-05-17  |  3KB  |  117 lines

  1.  
  2. /*
  3.  * IFF.H
  4.  *
  5.  * Chunk:
  6.  *       char id[4]
  7.  *       long  cksize;
  8.  *       uchar ckdata[cksize];
  9.  *       [0 pad to word boundry]
  10.  *
  11.  * Property = Chunk
  12.  * FORM     = Chunk / data = formtype + N-subchunks
  13.  *
  14.  * CAT      = Chunk / data = type + list of chunks: FORM LIST or CAT
  15.  * LIST     = Chunk / data = type + N-Props + N(FORM LIST CAT)
  16.  * PROP     = Chunk / data = formtype + property
  17.  *
  18.  *
  19.  * ILBM  =  FORM(ILBM): BMHD [CMAP][GRAB][DEST][SPRT][CAMG][CRNG+][BODY]
  20.  *
  21.  */
  22.  
  23. #include <exec/types.h>
  24.  
  25.  
  26. #define MAKEID(a,b,c,d) (((long)a)<<24L | ((long)b)<<16L | ((long)c)<<8 | (d))
  27.  
  28. #define IFF_FORM     MAKEID('F','O','R','M')
  29. #define IFF_LIST     MAKEID('L','I','S','T')
  30. #define IFF_PROP     MAKEID('P','R','O','P')
  31. #define IFF_CAT      MAKEID('C','A','T',' ')
  32. #define IFF_FILLER   MAKEID(' ',' ',' ',' ')
  33.  
  34. #define TYPE_ILBM    MAKEID('I','L','B','M')
  35. #define TYPE_FTXT    MAKEID('F','T','X','T')
  36.  
  37.  
  38. #define ILBM_BMHD    MAKEID('B','M','H','D')    /* PROP                */
  39. #define ILBM_ANHD    MAKEID('A','N','H','D')    /* PROP                */
  40. #define ILBM_CMAP    MAKEID('C','M','A','P')    /* PROP                */
  41. #define ILBM_GRAB    MAKEID('G','R','A','B')    /* PROP                */
  42. #define ILBM_DEST    MAKEID('D','E','S','T')    /* PROP merging        */
  43. #define ILBM_SPRT    MAKEID('S','P','R','T')    /* PROP body is sprite */
  44. #define ILBM_CAMG    MAKEID('C','A','M','G')    /* PROP VP mode        */
  45. #define ILBM_CRNG    MAKEID('C','R','N','G')    /* PROP color cycling  */
  46. #define ILBM_BODY    MAKEID('B','O','D','Y')    /* bit mapped body     */
  47.  
  48.  
  49.  
  50. /* STRUCTURES */
  51.  
  52.  
  53. typedef struct {
  54.    long id;
  55.    long cksize;
  56. } CHUNK;
  57.  
  58.  
  59. #define MA_NONE          0    /* masking */
  60. #define MA_HASMASK       1
  61. #define MA_HASTRANSCOLOR 2
  62. #define MA_LASSO         3
  63.  
  64. #define CP_NONE          0    /* compression */
  65. #define CP_BYTERUN1      1
  66.  
  67. typedef struct {
  68.    UBYTE operation; /* =0 for set, =1 for XOR, =2 long dlta, =3 short dlta */
  69.    UBYTE mask;      /* mask,w,h,x,y used for XOR mode only */
  70.    UWORD w,h;
  71.    WORD  x,y;
  72.    ULONG abstime; /* for timing w.r.t. start of anim file in jiffies - unused */
  73.    ULONG reltime; /* for timing w.r.t. last frame in jiffies */
  74.    UBYTE interleave; /* =0 for XORing to two frames back, =1 for last frame */
  75.    UBYTE pad[21]; /* reserved for Jim Kent for an op array and plane destination.
  76.                      Actually Jims use will only be 16 bytes probably - other
  77.                      five are for general future use */
  78.    } X_ANHD;
  79.  
  80. typedef struct {
  81.    UWORD w, h;
  82.    WORD  x, y;
  83.    UBYTE planes;
  84.    UBYTE masking;
  85.    UBYTE compression;
  86.    UBYTE pad1;
  87.    UWORD transparent_color;
  88.    UBYTE xaspect, yaspect;
  89.    WORD  pagewidth, pageheight;
  90. } X_BMHD;
  91.  
  92. typedef UBYTE X_CMAP[3];      /* each map entry is 3 bytes  */
  93.  
  94. typedef UWORD X_GRAB[2];      /* grab entry x, y            */
  95.  
  96. typedef struct {
  97.    UBYTE depth;
  98.    UBYTE pad1;
  99.    UWORD p_pick;
  100.    UWORD p_onoff;
  101.    UWORD p_mask;
  102. } X_DEST;
  103.  
  104. typedef UWORD X_SPRT;         /* precedence               */
  105.  
  106. typedef struct {
  107.    ULONG vpmodes;
  108. } X_CAMG;
  109.  
  110. typedef struct {
  111.    WORD  count;
  112.    WORD  rate;
  113.    WORD  flags;
  114.    UBYTE low, high;
  115. } X_CRNG;
  116.  
  117.