home *** CD-ROM | disk | FTP | other *** search
- /* C include file for the iff.library Last update: 12-Jul-88
- The C-Asm interface for Aztec C is also in this file, you can
- convert it to a library if you want. I think this does not run
- under Lattice C (I didn't try).
- */
-
- #ifndef LIBRARIES_IFF_H
- #define LIBRARIES_IFF_H
- #ifndef EXEC_TYPES_H
- #include "exec/types.h"
- #endif
-
- #define IFFNAME "iff.library"
- #define IFFVERSION 15L /* Current library version */
-
-
- /************** E R R O R - C O D E S ***********************************/
-
- #define IFF_BADTASK -1 /* IffError() called by wrong task */
-
- #define IFF_CANTOPENFILE 16 /* File not found */
- #define IFF_READERROR 17 /* Error reading file */
- #define IFF_NOMEM 18 /* Not enough memory */
- #define IFF_NOTIFF 19 /* File is not an IFF file */
- #define IFF_WRITEERROR 20 /* Error writing file */
-
- #define IFF_NOILBM 24 /* IFF file is not of type ILBM */
- #define IFF_NOBMHD 25 /* BMHD chunk not found */
- #define IFF_NOBODY 26 /* BODY chunk not found */
- #define IFF_TOOMANYPLANES 27 /* BODY has more planes than BitMap */
- #define IFF_UNKNOWNCOMPRESSION 28 /* Unknown compression type */
-
-
- /************** S T R U C T U R E S *************************************/
-
- struct Chunk
- {
- LONG ckID;
- LONG ckSize;
- UBYTE ckData[1]; /* should be UBYTE ckData[ckSize] */
- };
-
-
- struct BitMapHeader
- {
- UWORD w,h;
- WORD x,y;
- UBYTE nPlanes;
- UBYTE masking;
- UBYTE compression;
- UBYTE pad1;
- UWORD transparentColor;
- UBYTE xAspect,yAspect;
- WORD pageWidth,pageHeight;
- };
-
-
- /************** F U N C T I O N D E C L A R A T I O N S ***************/
-
- APTR OpenIFF();
- void CloseIFF();
- struct Chunk *FindChunk();
- LONG GetColorTab();
- struct BitMapHeader *GetBMHD();
- BOOL DecodePic();
- BOOL SaveBitMap();
- BOOL SaveClip();
- LONG IffError();
- UWORD GetViewModes();
-
-
- /************** C - A S S E M B L E R I N T E R F A C E ***************/
-
- #asm
- ; :ts=8
- public _IFFBase
-
- public _OpenIFF
- _OpenIFF: move.l 4(sp),a0
- move.l _IFFBase,a6
- jmp -30(a6)
-
- public _CloseIFF
- _CloseIFF: move.l 4(sp),a1
- move.l _IFFBase,a6
- jmp -36(a6)
-
- public _FindChunk
- _FindChunk: move.l 4(sp),a1
- move.l 8(sp),d0
- move.l _IFFBase,a6
- jmp -42(a6)
-
- public _GetBMHD
- _GetBMHD: move.l 4(sp),a1
- move.l _IFFBase,a6
- jmp -48(a6)
-
- public _GetColorTab
- _GetColorTab: move.l 4(sp),a1
- move.l 8(sp),a0
- move.l _IFFBase,a6
- jmp -54(a6)
-
- public _DecodePic
- _DecodePic: move.l 4(sp),a1
- move.l 8(sp),a0
- move.l _IFFBase,a6
- jmp -60(a6)
-
- public _SaveBitMap
- _SaveBitMap: move.l a2,-(sp)
- movem.l 8(sp),a0/a1/a2
- move.l 20(sp),d0
- move.l _IFFBase,a6
- jsr -66(a6)
- move.l (sp)+,a2
- rts
-
- public _SaveClip
- _SaveClip: movem.l d4/a2,-(sp)
- movem.l 24(sp),d0-d4
- movem.l 12(sp),a0-a2
- move.l _IFFBase,a6
- jsr -72(a6)
- movem.l (sp)+,d4/a2
- rts
-
- public _IffError
- _IffError: move.l _IFFBase,a6
- jmp -78(a6)
-
- public _GetViewModes
- _GetViewModes: move.l 4(sp),a1
- move.l _IFFBase,a6
- jmp -84(a6)
- #endasm
-
- #endif !LIBRARIES_IFF_H
-