/*  :ts=8 bk=0
 *
 * myiff.h:	Definitions for my IFF reader.
 *
 * Leo L. Schwab			8705.11
 */

/*  Masking techniques  */
#define	mskNone			0
#define	mskHasMask		1
#define	mskHasTransparentColor	2
#define	mskLasso		3

/*  Compression techniques  */
#define	cmpNone			0
#define	cmpByteRun1		1

/*  Bitmap header (BMHD) structure  */
struct BitMapHeader {
	UWORD	w, h;		/*  Width, height in pixels */
	WORD	x, y;		/*  x, y position for this bitmap  */
	UBYTE	nplanes;	/*  # of planes  */
	UBYTE	Masking;
	UBYTE	Compression;
	UBYTE	pad1;
	UWORD	TransparentColor;
	UWORD	XAspect, YAspect;
	WORD	PageWidth, PageHeight;
};

/*  Color register structure (not really used)  */
struct ColorRegister {
	UBYTE red, green, blue;
};

/*  Makes my life easier.  */
union typekludge {
	char type_str[4];
	long type_long;
};

struct ChunkHeader {
	union typekludge chunktype;
	long chunksize;
};
#define	TYPE		chunktype.type_long
#define	STRTYPE		chunktype.type_str


/*  Useful macro from EA (the only useful thing they ever made)  */
#define MAKE_ID(a, b, c, d)\
	( ((long)(a)<<24) + ((long)(b)<<16) + ((long)(c)<<8) + (long)(d) )

/*  IFF types we may encounter  */
#define	FORM	MAKE_ID('F', 'O', 'R', 'M')
#define	ILBM	MAKE_ID('I', 'L', 'B', 'M')
#define	BMHD	MAKE_ID('B', 'M', 'H', 'D')
#define	CMAP	MAKE_ID('C', 'M', 'A', 'P')
#define	BODY	MAKE_ID('B', 'O', 'D', 'Y')

#define	GRAB	MAKE_ID('G', 'R', 'A', 'B')
#define	DEST	MAKE_ID('D', 'E', 'S', 'T')
#define	SPRT	MAKE_ID('S', 'P', 'R', 'T')
#define	CAMG	MAKE_ID('C', 'A', 'M', 'G')
#define	CRNG	MAKE_ID('C', 'R', 'N', 'G')
#define	CCRT	MAKE_ID('C', 'C', 'R', 'T')
#define	DPPV	MAKE_ID('D', 'P', 'P', 'V')


/*  Other useful things.  */
#define	CHUNKHEADERSIZE		sizeof (struct ChunkHeader)
#define	SUBTYPESIZE		sizeof (long)


/*  What functions return  */
extern void	*OpenLibrary(), *AllocMem(), *AllocRaster(), *GetColorMap();

struct ViewPort	*readform();
