summaryrefslogtreecommitdiff
path: root/Programmer/iff.h
blob: d62bc05919f2bfca7b5b31b0569a04e14f41028f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#ifndef LIBRARIES_IFF_H
#define LIBRARIES_IFF_H
/*
**
**	$Id: $
**	$Revision: $
**
**	$Filename: iff.h $
**	$Author: Christian A. Weber $
**	$Release: 19.1 $
**	$Date: 90/10/09 22:32:54 $
**
**	Standard header file for programs using iff.library
**
**	COPYRIGHT (C) 1987-1992 BY CHRISTIAN A. WEBER, BRUGGERWEG 2,
**	CH-8037 ZUERICH, SWITZERLAND.
**	THIS FILE MAY BE FREELY DISTRIBUTED. USE AT YOUR OWN RISK.
**
*/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#define IFFNAME "iff.library"
#define IFFVERSION 19L              /* Current library version */

typedef void *IFFFILE;              /* The IFF 'FileHandle' structure */


/************** FUNCTION DECLARATIONS ***********************************/

#ifdef AZTEC_C
#define __ARGS(a) ()	/* Remove this for Aztec C V5.x */
#define NO_PRAGMAS
#else
#define __ARGS(a) a
#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 *********************************************/

#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        /* Obsolete since V18.6 */
#define IFF_UNKNOWNCOMPRESSION 28   /* Unknown compression type */

#define IFF_NOANHD 29               /* ANHD chunk not found (since V18.1) */
#define IFF_NODLTA 30               /* DLTA chunk not found (since V18.1) */


/************** COMMON IFF IDs ******************************************/

#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 */

#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',' ')

#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')

#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')


/************** STRUCTURES **********************************************/

struct Chunk			/* Generic IFF chunk structure */
{
	LONG  ckID;
	LONG  ckSize;
/*  UBYTE ckData[ckSize] (variable sized data) */
};

struct BitMapHeader		/* BMHD chunk for ILBM files */
{
	UWORD w,h;
	WORD  x,y;
	UBYTE nPlanes;
	UBYTE masking;
	UBYTE compression;
	UBYTE pad1;
	UWORD transparentColor;
	UBYTE xAspect,yAspect;
	WORD  pageWidth,pageHeight;
};

struct AnimHeader		/* ANHD chunk for ANIM files */
{
	UBYTE	Operation;
	UBYTE	Mask;
	UWORD	W;
	UWORD	H;
	WORD	X;
	WORD	Y;
	ULONG	AbsTime;
	ULONG	RelTime;
	UBYTE	Interleave;
	UBYTE	pad0;
	ULONG	Bits;
	UBYTE	pad[16];
};


/************** PRAGMAS FOR LATTICE C V5.x ******************************/

/* Pragmas generated with: 'fd2pragma iff_lib.fd iffpragmas.h' */

#ifndef NO_PRAGMAS
extern struct Library *IFFBase;
#pragma libcall IFFBase OpenIFF 1e 801
#pragma libcall IFFBase CloseIFF 24 901
#pragma libcall IFFBase FindChunk 2a 0902
#pragma libcall IFFBase GetBMHD 30 901
#pragma libcall IFFBase GetColorTab 36 8902
#pragma libcall IFFBase DecodePic 3c 8902
#pragma libcall IFFBase SaveBitMap 42 0a9804
#pragma libcall IFFBase SaveClip 48 43210A9808
#pragma libcall IFFBase IFFError 4e 0
#pragma libcall IFFBase GetViewModes 54 901
#pragma libcall IFFBase NewOpenIFF 5a 0802
#pragma libcall IFFBase ModifyFrame 60 8902
#pragma libcall IFFBase PPOpenIFF 66 9802
#endif

#endif !LIBRARIES_IFF_H