/* C include file for the iff.library V16.1, 01-Dec-88   by CHW */

#ifndef LIBRARIES_IFF_H
#define LIBRARIES_IFF_H
#ifndef EXEC_TYPES_H
#include "exec/types.h"
#endif

#define IFFNAME "iff.library"
#define IFFVERSION 16L              /* 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();
APTR NewOpenIFF();

#endif !LIBRARIES_IFF_H
