/* * IFF.H * * Chunk: * char id[4] * long cksize; * uchar ckdata[cksize]; * [0 pad to word boundry] * * Property = Chunk * FORM = Chunk / data = formtype + N-subchunks * * CAT = Chunk / data = type + list of chunks: FORM LIST or CAT * LIST = Chunk / data = type + N-Props + N(FORM LIST CAT) * PROP = Chunk / data = formtype + property * * * ILBM = FORM(ILBM): BMHD [CMAP][GRAB][DEST][SPRT][CAMG][CRNG+][BODY] * */ #include #define MAKEID(a,b,c,d) ((a)<<24 | (b)<<16 | (c)<<8 | (d)) #define IFF_FORM MAKEID('F','O','R','M') #define IFF_LIST MAKEID('L','I','S','T') #define IFF_PROP MAKEID('P','R','O','P') #define IFF_CAT MAKEID('C','A','T',' ') #define IFF_FILLER MAKEID(' ',' ',' ',' ') #define TYPE_ILBM MAKEID('I','L','B','M') #define TYPE_FTXT MAKEID('F','T','X','T') #define ILBM_BMHD MAKEID('B','M','H','D') /* PROP */ #define ILBM_CMAP MAKEID('C','M','A','P') /* PROP */ #define ILBM_GRAB MAKEID('G','R','A','B') /* PROP */ #define ILBM_DEST MAKEID('D','E','S','T') /* PROP merging */ #define ILBM_SPRT MAKEID('S','P','R','T') /* PROP body is sprite */ #define ILBM_CAMG MAKEID('C','A','M','G') /* PROP VP mode */ #define ILBM_CRNG MAKEID('C','R','N','G') /* PROP color cycling */ #define ILBM_BODY MAKEID('B','O','D','Y') /* bit mapped body */ /* STRUCTURES */ typedef struct { long id; long cksize; } CHUNK; #define MA_NONE 0 /* masking */ #define MA_HASMASK 1 #define MA_HASTRANSCOLOR 2 #define MA_LASSO 3 #define CP_NONE 0 /* compression */ #define CP_BYTERUN1 1 typedef struct { UWORD w, h; WORD x, y; UBYTE planes; UBYTE masking; UBYTE compression; UBYTE pad1; UWORD transparent_color; UBYTE xaspect, yaspect; WORD pagewidth, pageheight; } X_BMHD; typedef UBYTE X_CMAP[3]; /* each map entry is 3 bytes */ typedef UWORD X_GRAB[2]; /* grab entry x, y */ typedef struct { UBYTE depth; UBYTE pad1; UWORD p_pick; UWORD p_onoff; UWORD p_mask; } X_DEST; typedef UWORD X_SPRT; /* precedence */ typedef struct { ULONG vpmodes; } X_CAMG; typedef struct { WORD pad1; WORD rate; WORD active; UBYTE low, high; } X_CRNG;