home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / e / mailinglists / binaries / iff.library232.lha / iff.h < prev    next >
C/C++ Source or Header  |  1993-05-24  |  8KB  |  280 lines

  1. #ifndef LIBRARIES_IFF_H
  2. #define LIBRARIES_IFF_H
  3. /*
  4. **
  5. **    $Id: iff.h,v 23.2 93/05/24 16:03:28 chris Exp $
  6. **    $Revision: 23.2 $
  7. **
  8. **    $Filename: Libraries/iff.h $
  9. **    $Author: Christian A. Weber $
  10. **    $Release: 23.2 $
  11. **    $Date: 93/05/24 16:03:28 $
  12. **
  13. **    Standard header file for programs using iff.library
  14. **
  15. **    COPYRIGHT (C) 1987-1993 BY CHRISTIAN A. WEBER, BRUGGERWEG 2,
  16. **    CH-8037 ZUERICH, SWITZERLAND (chris@mighty.adsp.sub.org).
  17. **    THIS FILE MAY BE FREELY DISTRIBUTED. USE AT YOUR OWN RISK.
  18. **
  19. */
  20.  
  21. #ifndef EXEC_TYPES_H
  22. #include <exec/types.h>
  23. #endif
  24.  
  25. #define IFFNAME "iff.library"
  26. #define IFFVERSION 23L                    /* Current library version */
  27.  
  28. /****************************************************************************
  29. **    Error codes (returned by IFFL_IFFError())
  30. */
  31.  
  32. #define IFFL_ERROR_BADTASK            -1    /* IFFL_IFFError() called by wrong task */
  33. #define IFFL_ERROR_OPEN                16    /* Can't open file */
  34. #define IFFL_ERROR_READ                17    /* Error reading file */
  35. #define IFFL_ERROR_NOMEM            18    /* Not enough memory */
  36. #define IFFL_ERROR_NOTIFF            19    /* File is not an IFF file */
  37. #define IFFL_ERROR_WRITE            20    /* Error writing file */
  38. #define IFFL_ERROR_NOILBM            24    /* IFF file is not of type ILBM */
  39. #define IFFL_ERROR_NOBMHD            25    /* BMHD chunk not found */
  40. #define IFFL_ERROR_NOBODY            26    /* BODY chunk not found */
  41. #define IFFL_ERROR_BADCOMPRESSION    28    /* Unknown compression type */
  42. #define IFFL_ERROR_NOANHD            29    /* ANHD chunk not found */
  43. #define IFFL_ERROR_NODLTA            30    /* DLTA chunk not found */
  44.  
  45. #ifdef IFFLIB_PRE21NAMES
  46. #define IFF_BADTASK -1
  47. #define IFF_CANTOPENFILE 16
  48. #define IFF_READERROR 17
  49. #define IFF_NOMEM 18
  50. #define IFF_NOTIFF 19
  51. #define IFF_WRITEERROR 20
  52. #define IFF_NOILBM 24
  53. #define IFF_NOBMHD 25
  54. #define IFF_NOBODY 26
  55. #define IFF_TOOMANYPLANES 27
  56. #define IFF_UNKNOWNCOMPRESSION 28
  57. #define IFF_NOANHD 29
  58. #define IFF_NODLTA 30
  59. #endif
  60.  
  61.  
  62. /****************************************************************************
  63. **    Common IFF IDs
  64. */
  65.  
  66. #define IFFL_MAKE_ID(a,b,c,d) ((ULONG)(a)<<24L|(ULONG)(b)<<16L|(c)<<8|(d))
  67.  
  68. /*
  69. **    Generic IFF IDs
  70. */
  71. #ifndef ID_FORM        /* don't redefine these if iffparse.h is included */
  72. #define ID_FORM IFFL_MAKE_ID('F','O','R','M')
  73. #define ID_CAT  IFFL_MAKE_ID('C','A','T',' ')
  74. #define ID_LIST IFFL_MAKE_ID('L','I','S','T')
  75. #define ID_PROP IFFL_MAKE_ID('P','R','O','P')
  76. #endif
  77.  
  78. /*
  79. **    Specific IFF IDs
  80. */
  81. #define ID_ANIM IFFL_MAKE_ID('A','N','I','M')
  82. #define ID_ANHD IFFL_MAKE_ID('A','N','H','D')
  83. #define ID_ANNO IFFL_MAKE_ID('A','N','N','O')
  84. #define ID_BMHD IFFL_MAKE_ID('B','M','H','D')
  85. #define ID_BODY IFFL_MAKE_ID('B','O','D','Y')
  86. #define ID_CAMG IFFL_MAKE_ID('C','A','M','G')
  87. #define ID_CLUT IFFL_MAKE_ID('C','L','U','T')
  88. #define ID_CMAP IFFL_MAKE_ID('C','M','A','P')
  89. #define ID_CRNG IFFL_MAKE_ID('C','R','N','G')
  90. #define ID_CTBL IFFL_MAKE_ID('C','T','B','L')
  91. #define ID_DLTA IFFL_MAKE_ID('D','L','T','A')
  92. #define ID_ILBM IFFL_MAKE_ID('I','L','B','M')
  93. #define ID_SHAM IFFL_MAKE_ID('S','H','A','M')
  94.  
  95. #define ID_8SVX IFFL_MAKE_ID('8','S','V','X')
  96. #define ID_ATAK IFFL_MAKE_ID('A','T','A','K')
  97. #ifndef ID_NAME
  98. #define ID_NAME IFFL_MAKE_ID('N','A','M','E')
  99. #endif
  100. #define ID_RLSE IFFL_MAKE_ID('R','L','S','E')
  101. #define ID_VHDR IFFL_MAKE_ID('V','H','D','R')
  102.  
  103. #ifdef IFFLIB_PRE21NAMES
  104. #define MakeID(a,b,c,d) ((ULONG)(a)<<24L|(ULONG)(b)<<16L|(c)<<8|(d))
  105. #endif
  106.  
  107.  
  108. /****************************************************************************
  109. **    Modes for IFFL_OpenIFF()
  110. */
  111.  
  112. #define IFFL_MODE_READ    0
  113. #define IFFL_MODE_WRITE    1
  114.  
  115.  
  116. /****************************************************************************
  117. **    Modes for IFFL_CompressBlock() and IFFL_DecompressBlock()
  118. */
  119.  
  120. #define IFFL_COMPR_NONE        0x0000        /* generic */
  121. #define IFFL_COMPR_BYTERUN1    0x0001        /* ILBM */
  122. #define IFFL_COMPR_FIBDELTA    0x0101        /* 8SVX */
  123.  
  124.  
  125. /****************************************************************************
  126. **    Structure definitions
  127. */
  128.  
  129. /*
  130. **    The private IFF 'FileHandle' structure
  131. */
  132. typedef void *IFFL_HANDLE;
  133.  
  134.  
  135. /*
  136. **    Generic IFF chunk structure
  137. */
  138. struct IFFL_Chunk
  139. {
  140.     LONG  ckID;
  141.     LONG  ckSize;
  142. /*  UBYTE ckData[ckSize] (variable sized data) */
  143. };
  144.  
  145.  
  146. /*
  147. **    BMHD chunk (BitMapHeader) of ILBM files
  148. */
  149. struct IFFL_BMHD
  150. {
  151.     UWORD w,h;
  152.     WORD  x,y;
  153.     UBYTE nPlanes;
  154.     UBYTE masking;
  155.     UBYTE compression;
  156.     UBYTE pad1;
  157.     UWORD transparentColor;
  158.     UBYTE xAspect,yAspect;
  159.     WORD  pageWidth,pageHeight;
  160. };
  161.  
  162.  
  163. /*
  164. **    ANHD chunk (AnimHeader) of ANIM files
  165. */
  166. struct IFFL_ANHD
  167. {
  168.     UBYTE    Operation;
  169.     UBYTE    Mask;
  170.     UWORD    W;
  171.     UWORD    H;
  172.     WORD    X;
  173.     WORD    Y;
  174.     ULONG    AbsTime;
  175.     ULONG    RelTime;
  176.     UBYTE    Interleave;
  177.     UBYTE    pad0;
  178.     ULONG    Bits;
  179.     UBYTE    pad[16];
  180. };
  181.  
  182. #ifdef IFFLIB_PRE21NAMES
  183. #define Chunk IFFL_Chunk
  184. #define BitMapHeader IFFL_BMHD
  185. #define AnimHeader IFFL_ANHD
  186. #endif
  187.  
  188.  
  189. /****************************************************************************
  190. **    IFF library function prototypes (ANSI C)
  191. */
  192.  
  193. void                 IFFL_CloseIFF        ( IFFL_HANDLE );
  194. ULONG                 IFFL_CompressBlock   ( APTR, APTR, ULONG, ULONG );
  195. BOOL                 IFFL_DecodePic       ( IFFL_HANDLE, struct BitMap * );
  196. ULONG                 IFFL_DecompressBlock ( APTR, APTR, ULONG, ULONG );
  197. void                *IFFL_FindChunk       ( IFFL_HANDLE, LONG );
  198. struct IFFL_BMHD    *IFFL_GetBMHD         ( IFFL_HANDLE );
  199. LONG                 IFFL_GetColorTab     ( IFFL_HANDLE, WORD * );
  200. ULONG                 IFFL_GetViewModes    ( IFFL_HANDLE );
  201. LONG                 IFFL_IFFError        ( void );
  202. BOOL                 IFFL_ModifyFrame     ( void *, struct BitMap * );
  203. APTR                 IFFL_NewOpenIFF      ( char *, LONG );
  204. IFFL_HANDLE             IFFL_OpenIFF         ( char *, ULONG );
  205. LONG                 IFFL_PopChunk        ( IFFL_HANDLE );
  206. IFFL_HANDLE             IFFL_PPOpenIFF       ( char *, char * );
  207. LONG                 IFFL_PushChunk       ( IFFL_HANDLE, ULONG, ULONG );
  208. BOOL                 IFFL_SaveBitMap      ( char *, struct BitMap *, WORD *, LONG );
  209. BOOL                 IFFL_SaveClip        ( char *, struct BitMap *, WORD *, LONG,
  210.                                                         LONG, LONG, LONG, LONG );
  211. LONG                 IFFL_WriteChunkBytes ( IFFL_HANDLE, void *, LONG );
  212.  
  213.  
  214. #ifdef IFFLIB_PRE21NAMES
  215. IFFL_HANDLE    OpenIFF(char *);
  216. void CloseIFF(IFFL_HANDLE);
  217. void *FindChunk(IFFL_HANDLE,LONG);
  218. struct BitMapHeader *GetBMHD(IFFL_HANDLE);
  219. LONG GetColorTab(IFFL_HANDLE,WORD *);
  220. BOOL DecodePic(IFFL_HANDLE,struct BitMap *);
  221. BOOL SaveBitMap(char *,struct BitMap *,WORD *,LONG);
  222. BOOL SaveClip(char *,struct BitMap *,WORD *,LONG,LONG,LONG,LONG,LONG);
  223. LONG IFFError(void);
  224. ULONG GetViewModes(IFFL_HANDLE);
  225. APTR NewOpenIFF(char *,LONG);
  226. BOOL ModifyFrame(void *,struct BitMap *);
  227. IFFL_HANDLE    PPOpenIFF(char *,char *);
  228. #endif
  229.  
  230.  
  231. /****************************************************************************
  232. **    Pragmas for SAS/C
  233. **    (generated with: 'fd2pragma iff_lib.fd iff_pragmas.h')
  234. */
  235.  
  236. extern struct Library *IFFBase;
  237.  
  238. #ifndef NO_PRAGMAS
  239. /*pragma libcall IFFBase IFFL_OldOpenIFF 1E 801*/
  240. #pragma libcall IFFBase IFFL_CloseIFF 24 901
  241. #pragma libcall IFFBase IFFL_FindChunk 2A 0902
  242. #pragma libcall IFFBase IFFL_GetBMHD 30 901
  243. #pragma libcall IFFBase IFFL_GetColorTab 36 8902
  244. #pragma libcall IFFBase IFFL_DecodePic 3C 8902
  245. #pragma libcall IFFBase IFFL_SaveBitMap 42 0A9804
  246. #pragma libcall IFFBase IFFL_SaveClip 48 43210A9808
  247. #pragma libcall IFFBase IFFL_IFFError 4E 0
  248. #pragma libcall IFFBase IFFL_GetViewModes 54 901
  249. /*pragma libcall IFFBase IFFL_OldNewOpenIFF 5A 0802*/
  250. #pragma libcall IFFBase IFFL_ModifyFrame 60 8902
  251. /*#pragma libcall IFFBase IFFL_PPOpenIFF 66 9802*/
  252. /*--- functions in V21 or higher ---*/
  253. #pragma libcall IFFBase IFFL_OpenIFF 78 0802
  254. #pragma libcall IFFBase IFFL_PushChunk 7E 10803
  255. #pragma libcall IFFBase IFFL_PopChunk 84 801
  256. #pragma libcall IFFBase IFFL_WriteChunkBytes 8A 09803
  257. #pragma libcall IFFBase IFFL_CompressBlock 90 109804
  258. #pragma libcall IFFBase IFFL_DecompressBlock 96 109804
  259.  
  260. #ifdef IFFLIB_PRE21NAMES
  261. #pragma libcall IFFBase OpenIFF 1e 801
  262. #pragma libcall IFFBase CloseIFF 24 901
  263. #pragma libcall IFFBase FindChunk 2a 0902
  264. #pragma libcall IFFBase GetBMHD 30 901
  265. #pragma libcall IFFBase GetColorTab 36 8902
  266. #pragma libcall IFFBase DecodePic 3c 8902
  267. #pragma libcall IFFBase SaveBitMap 42 0a9804
  268. #pragma libcall IFFBase SaveClip 48 43210A9808
  269. #pragma libcall IFFBase IFFError 4e 0
  270. #pragma libcall IFFBase GetViewModes 54 901
  271. #pragma libcall IFFBase NewOpenIFF 5a 0802
  272. #pragma libcall IFFBase ModifyFrame 60 8902
  273. /*#pragma libcall IFFBase PPOpenIFF 66 9802*/
  274. #endif
  275.  
  276. #endif
  277.  
  278. #endif
  279.  
  280.