summaryrefslogtreecommitdiff
path: root/Programmer/iff.h
diff options
context:
space:
mode:
Diffstat (limited to 'Programmer/iff.h')
-rw-r--r--Programmer/iff.h210
1 files changed, 138 insertions, 72 deletions
diff --git a/Programmer/iff.h b/Programmer/iff.h
index d62bc05..2725b15 100644
--- a/Programmer/iff.h
+++ b/Programmer/iff.h
@@ -2,13 +2,13 @@
#define LIBRARIES_IFF_H
/*
**
-** $Id: $
-** $Revision: $
+** $Id: iff.h,v 1.1 92/05/12 22:54:06 chris Exp $
+** $Revision: 1.1 $
**
** $Filename: iff.h $
-** $Author: Christian A. Weber $
+** $Author: chris $
** $Release: 19.1 $
-** $Date: 90/10/09 22:32:54 $
+** $Date: 92/05/12 22:54:06 $
**
** Standard header file for programs using iff.library
**
@@ -23,96 +23,121 @@
#endif
#define IFFNAME "iff.library"
-#define IFFVERSION 19L /* Current library version */
+#define IFFVERSION 21L /* Current library version */
-typedef void *IFFFILE; /* The IFF 'FileHandle' structure */
-
-
-/************** FUNCTION DECLARATIONS ***********************************/
+/****************************************************************************
+** Error codes (returned by IFFL_IFFError())
+*/
-#ifdef AZTEC_C
-#define __ARGS(a) () /* Remove this for Aztec C V5.x */
-#define NO_PRAGMAS
-#else
-#define __ARGS(a) a
+#define IFFL_ERROR_BADTASK -1 /* IFFL_IFFError() called by wrong task */
+#define IFFL_ERROR_OPEN 16 /* Can't open file */
+#define IFFL_ERROR_READ 17 /* Error reading file */
+#define IFFL_ERROR_NOMEM 18 /* Not enough memory */
+#define IFFL_ERROR_NOTIFF 19 /* File is not an IFF file */
+#define IFFL_ERROR_WRITE 20 /* Error writing file */
+#define IFFL_ERROR_NOILBM 24 /* IFF file is not of type ILBM */
+#define IFFL_ERROR_NOBMHD 25 /* BMHD chunk not found */
+#define IFFL_ERROR_NOBODY 26 /* BODY chunk not found */
+#define IFFL_ERROR_BADCOMPRESSION 28 /* Unknown compression type */
+#define IFFL_ERROR_NOANHD 29 /* ANHD chunk not found */
+#define IFFL_ERROR_NODLTA 30 /* DLTA chunk not found */
+
+#ifdef IFFLIB_PRE21NAMES
+#define IFF_BADTASK -1
+#define IFF_CANTOPENFILE 16
+#define IFF_READERROR 17
+#define IFF_NOMEM 18
+#define IFF_NOTIFF 19
+#define IFF_WRITEERROR 20
+#define IFF_NOILBM 24
+#define IFF_NOBMHD 25
+#define IFF_NOBODY 26
+#define IFF_TOOMANYPLANES 27
+#define IFF_UNKNOWNCOMPRESSION 28
+#define IFF_NOANHD 29
+#define IFF_NODLTA 30
#endif
-IFFFILE OpenIFF __ARGS((char *));
-void CloseIFF __ARGS((IFFFILE));
-void *FindChunk __ARGS((IFFFILE,LONG));
-struct BitMapHeader *GetBMHD __ARGS((IFFFILE));
-LONG GetColorTab __ARGS((IFFFILE,WORD *));
-BOOL DecodePic __ARGS((IFFFILE,struct BitMap *));
-BOOL SaveBitMap __ARGS((char *,struct BitMap *,WORD *,LONG));
-BOOL SaveClip __ARGS((char *,struct BitMap *,WORD *,LONG,LONG,LONG,LONG,LONG));
-LONG IFFError __ARGS((void));
-ULONG GetViewModes __ARGS((IFFFILE)); /* ULONG since V18.1 */
-APTR NewOpenIFF __ARGS((char *,LONG)); /* Since V16.1 */
-BOOL ModifyFrame __ARGS((void *,struct BitMap *)); /* Since V18.1 */
-IFFFILE PPOpenIFF __ARGS((char *,char *));
-
-/************** ERROR-CODES *********************************************/
+/****************************************************************************
+** Common IFF IDs
+*/
-#define IFF_BADTASK -1 /* IFFError() called by wrong task */
+#define IFFL_MAKE_ID(a,b,c,d) ((ULONG)(a)<<24L|(ULONG)(b)<<16L|(c)<<8|(d))
-#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 */
+/*
+** Generic IFF IDs
+*/
+#ifndef ID_FORM /* don't redefine these if iffparse.h is included */
+#define ID_FORM IFFL_MAKE_ID('F','O','R','M')
+#define ID_CAT IFFL_MAKE_ID('C','A','T',' ')
+#define ID_LIST IFFL_MAKE_ID('L','I','S','T')
+#define ID_PROP IFFL_MAKE_ID('P','R','O','P')
+#endif
-#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 /* Obsolete since V18.6 */
-#define IFF_UNKNOWNCOMPRESSION 28 /* Unknown compression type */
+/*
+** Specific IFF IDs
+*/
+#define ID_ANIM IFFL_MAKE_ID('A','N','I','M')
+#define ID_ANHD IFFL_MAKE_ID('A','N','H','D')
+#define ID_BMHD IFFL_MAKE_ID('B','M','H','D')
+#define ID_BODY IFFL_MAKE_ID('B','O','D','Y')
+#define ID_CAMG IFFL_MAKE_ID('C','A','M','G')
+#define ID_CLUT IFFL_MAKE_ID('C','L','U','T')
+#define ID_CMAP IFFL_MAKE_ID('C','M','A','P')
+#define ID_CRNG IFFL_MAKE_ID('C','R','N','G')
+#define ID_CTBL IFFL_MAKE_ID('C','T','B','L')
+#define ID_DLTA IFFL_MAKE_ID('D','L','T','A')
+#define ID_ILBM IFFL_MAKE_ID('I','L','B','M')
+#define ID_SHAM IFFL_MAKE_ID('S','H','A','M')
+
+#define ID_8SVX IFFL_MAKE_ID('8','S','V','X')
+#define ID_ATAK IFFL_MAKE_ID('A','T','A','K')
+#define ID_NAME IFFL_MAKE_ID('N','A','M','E')
+#define ID_RLSE IFFL_MAKE_ID('R','L','S','E')
+#define ID_VHDR IFFL_MAKE_ID('V','H','D','R')
+
+#ifdef IFFLIB_PRE21NAMES
+#define MakeID(a,b,c,d) ((ULONG)(a)<<24L|(ULONG)(b)<<16L|(c)<<8|(d))
+#endif
-#define IFF_NOANHD 29 /* ANHD chunk not found (since V18.1) */
-#define IFF_NODLTA 30 /* DLTA chunk not found (since V18.1) */
+/****************************************************************************
+** Modes for IFFL_OpenIFF()
+*/
-/************** COMMON IFF IDs ******************************************/
+#define IFFL_MODE_READ 0
+#define IFFL_MODE_WRITE 1
-#define MakeID(a,b,c,d) ((ULONG)(a)<<24L|(ULONG)(b)<<16L|(c)<<8|(d))
-/* List of the most useful IDs, NOT complete, to be continued */
+/****************************************************************************
+** Structure definitions
+*/
-#define ID_FORM MakeID('F','O','R','M')
-#define ID_PROP MakeID('P','R','O','P')
-#define ID_LIST MakeID('L','I','S','T')
-#define ID_CAT MakeID('C','A','T',' ')
+#ifdef _IFFLIB
-#define ID_ANIM MakeID('A','N','I','M')
-#define ID_ANHD MakeID('A','N','H','D')
-#define ID_BMHD MakeID('B','M','H','D')
-#define ID_BODY MakeID('B','O','D','Y')
-#define ID_CAMG MakeID('C','A','M','G')
-#define ID_CLUT MakeID('C','L','U','T')
-#define ID_CMAP MakeID('C','M','A','P')
-#define ID_CRNG MakeID('C','R','N','G')
-#define ID_CTBL MakeID('C','T','B','L')
-#define ID_DLTA MakeID('D','L','T','A')
-#define ID_ILBM MakeID('I','L','B','M')
-#define ID_SHAM MakeID('S','H','A','M')
+typedef struct
+{
+ BPTR File; /* DOS file handle */
+ LONG FormSize; /* Größe des gesamten FORM */
+ LONG ChunkSize; /* Größe des aktuellen Chunks */
+ LONG ChunkFPos; /* Position im File wo dieser Chunk beginnt */
+} *IFFL_HANDLE;
-#define ID_8SVX MakeID('8','S','V','X')
-#define ID_ATAK MakeID('A','T','A','K')
-#define ID_NAME MakeID('N','A','M','E')
-#define ID_RLSE MakeID('R','L','S','E')
-#define ID_VHDR MakeID('V','H','D','R')
+#else
+typedef void *IFFL_HANDLE; /* The IFF 'FileHandle' structure */
-/************** STRUCTURES **********************************************/
+#endif
-struct Chunk /* Generic IFF chunk structure */
+struct IFFL_Chunk /* Generic IFF chunk structure */
{
LONG ckID;
LONG ckSize;
/* UBYTE ckData[ckSize] (variable sized data) */
};
-struct BitMapHeader /* BMHD chunk for ILBM files */
+struct IFFL_BMHD /* BMHD chunk for ILBM files */
{
UWORD w,h;
WORD x,y;
@@ -125,7 +150,7 @@ struct BitMapHeader /* BMHD chunk for ILBM files */
WORD pageWidth,pageHeight;
};
-struct AnimHeader /* ANHD chunk for ANIM files */
+struct IFFL_ANHD /* ANHD chunk for ANIM files */
{
UBYTE Operation;
UBYTE Mask;
@@ -142,9 +167,50 @@ struct AnimHeader /* ANHD chunk for ANIM files */
};
-/************** PRAGMAS FOR LATTICE C V5.x ******************************/
+/****************************************************************************
+** IFF library function prototypes (ANSI)
+*/
+
+void IFFL_CloseIFF ( IFFL_HANDLE );
+BOOL IFFL_DecodePic ( IFFL_HANDLE, struct BitMap * );
+void *IFFL_FindChunk ( IFFL_HANDLE, LONG );
+struct BitMapHeader *IFFL_GetBMHD ( IFFL_HANDLE );
+LONG IFFL_GetColorTab ( IFFL_HANDLE, WORD * );
+ULONG IFFL_GetViewModes ( IFFL_HANDLE );
+LONG IFFL_IFFError ( void );
+BOOL IFFL_ModifyFrame ( void *, struct BitMap * );
+APTR IFFL_NewOpenIFF ( char *, LONG );
+IFFL_HANDLE IFFL_OpenIFF ( char * );
+LONG IFFL_PopChunk ( IFFL_HANDLE );
+IFFL_HANDLE IFFL_PPOpenIFF ( char *, char * );
+LONG IFFL_PushChunk ( IFFL_HANDLE, ULONG, ULONG );
+BOOL IFFL_SaveBitMap ( char *, struct BitMap *, WORD *, LONG );
+BOOL IFFL_SaveClip ( char *, struct BitMap *, WORD *, LONG,
+ LONG, LONG, LONG, LONG );
+LONG IFFL_WriteChunkBytes ( IFFL_HANDLE, void *, LONG );
+
+
+#ifdef IFFLIB_PRE21NAMES
+IFFL_HANDLE OpenIFF(char *);
+void CloseIFF(IFFL_HANDLE);
+void *FindChunk(IFFL_HANDLE,LONG);
+struct BitMapHeader *GetBMHD(IFFL_HANDLE);
+LONG GetColorTab(IFFL_HANDLE,WORD *);
+BOOL DecodePic(IFFL_HANDLE,struct BitMap *);
+BOOL SaveBitMap(char *,struct BitMap *,WORD *,LONG);
+BOOL SaveClip(char *,struct BitMap *,WORD *,LONG,LONG,LONG,LONG,LONG);
+LONG IFFError(void);
+ULONG GetViewModes(IFFL_HANDLE);
+APTR NewOpenIFF(char *,LONG);
+BOOL ModifyFrame(void *,struct BitMap *);
+IFFL_HANDLE PPOpenIFF(char *,char *);
+#endif
+
-/* Pragmas generated with: 'fd2pragma iff_lib.fd iffpragmas.h' */
+/****************************************************************************
+** Pragmas for Lattice C V5.x
+** (generated with: 'fd2pragma iff_lib.fd iffpragmas.h')
+*/
#ifndef NO_PRAGMAS
extern struct Library *IFFBase;