#ifndef ILBM_H #define ILBM_H #ifndef COMPILER_H #include "iff/compiler.h" #endif #ifndef GRAPHICS_GFX_H #include "graphics/gfx.h" #endif #include "iff/iff.h" #define ID_ILBM MakeID('I','L','B','M') #define ID_BMHD MakeID('B','M','H','D') #define ID_CMAP MakeID('C','M','A','P') #define ID_GRAB MakeID('G','R','A','B') #define ID_DEST MakeID('D','E','S','T') #define ID_SPRT MakeID('S','P','R','T') #define ID_CAMG MakeID('C','A','M','G') #define ID_BODY MakeID('B','O','D','Y') typedef UBYTE Masking; #define mskNone 0 #define mskHasMask 1 #define mskHasTransparentColor 2 #define mskLasso 3 typedef UBYTE Compression; #define cmpNone 0 #define cmpByteRun1 1 #define x320x200Aspect 10 #define y320x200Aspect 11 #define x320x400Aspect 20 #define y320x400Aspect 11 #define x640x200Aspect 5 #define y640x200Aspect 11 #define x640x400Aspect 10 #define y640x400Aspect 11 typedef struct { UWORD w, h; WORD x, y; UBYTE nPlanes; Masking masking; Compression compression; UBYTE pad1; UWORD transparentColor; UBYTE xAspect, yAspect; WORD pageWidth, pageHeight; } BitMapHeader; #define RowBytes(w) (((w) + 15) >> 4 << 1) typedef struct { UBYTE red, green, blue; } ColorRegister; #define sizeofColorRegister 3 typedef WORD Color4; #define MaxAmDepth 6 typedef struct { WORD x, y; } Point2D; typedef struct { UBYTE depth; UBYTE pad1; UWORD planePick; UWORD planeOnOff; UWORD planeMask; } DestMerge; typedef UWORD SpritePrecedence; typedef struct { WORD pad1; WORD rate; WORD active; UBYTE low, high; } CRange; #define PutBMHD(context, bmHdr) \ PutCk(context, ID_BMHD, sizeof(BitMapHeader), (BYTE *)bmHdr) #define PutGRAB(context, point2D) \ PutCk(context, ID_GRAB, sizeof(Point2D), (BYTE *)point2D) #define PutDEST(context, destMerge) \ PutCk(context, ID_DEST, sizeof(DestMerge), (BYTE *)destMerge) #define PutSPRT(context, spritePrec) \ PutCk(context, ID_SPRT, sizeof(SpritePrecedence), (BYTE *)spritePrec) #ifdef FDwAT extern IFFP InitBMHdr(BitMapHeader *, struct BitMap *, int, int, int, WORD, WORD); extern IFFP PutCMAP(GroupContext *, WORD *, UBYTE); extern IFFP PutBODY( GroupContext *, struct BitMap *, BYTE *, BitMapHeader *, BYTE *, LONG); #else extern IFFP InitBMHdr(); extern IFFP PutCMAP(); extern IFFP PutBODY(); #endif FDwAT #define GetBMHD(context, bmHdr) \ IFFReadBytes(context, (BYTE *)bmHdr, sizeof(BitMapHeader)) #define GetGRAB(context, point2D) \ IFFReadBytes(context, (BYTE *)point2D, sizeof(Point2D)) #define GetDEST(context, destMerge) \ IFFReadBytes(context, (BYTE *)destMerge, sizeof(DestMerge)) #define GetSPRT(context, spritePrec) \ IFFReadBytes(context, (BYTE *)spritePrec, sizeof(SpritePrecedence)) #define MaxSrcPlanes 16+1 #ifdef FDwAT extern IFFP GetCMAP(GroupContext *, WORD *, UBYTE *); extern IFFP GetBODY( GroupContext *, struct BitMap *, BYTE *, BitMapHeader *, BYTE *, LONG); #else extern IFFP GetCMAP(); extern IFFP GetBODY(); #endif FDwAT #endif ILBM_H