home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 609b.lha / MandelSquare_v1.3 / Source.LZH / Source / PlayAnim / iff.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-06  |  3.1 KB  |  119 lines

  1. #ifndef IFF_H
  2. #define IFF_H
  3. #ifndef LIBRARIES_DOS_H
  4. #include "libraries/dos.h"
  5. #endif
  6. typedef LONG IFFP;
  7. #define IFF_OKAY 0L
  8. #define END_MARK -1L
  9. #define IFF_DONE -2L
  10. #define DOS_ERROR -3L
  11. #define NOT_IFF -4L
  12. #define NO_FILE -5L
  13. #define CLIENT_ERROR -6L
  14. #define BAD_FORM -7L
  15. #define SHORT_CHUNK -8L
  16. #define BAD_IFF -9L
  17. #define LAST_ERROR BAD_IFF
  18. #define CheckIFFP() { if (iffp != IFF_OKAY) return(iffp); }
  19. typedef LONG ID;
  20. #define MakeID(a,b,c,d) ( (LONG)(a)<<24L | (LONG)(b)<<16L | (c)<<8 | (d) )
  21. #define FORM MakeID('F','O','R','M')
  22. #define PROP MakeID('P','R','O','P')
  23. #define LIST MakeID('L','I','S','T')
  24. #define CAT MakeID('C','A','T',' ')
  25. #define FILLER MakeID(' ',' ',' ',' ')
  26. #define NULL_CHUNK 0L
  27. typedef struct {
  28. ID ckID;
  29. LONG ckSize;
  30. } ChunkHeader;
  31. typedef struct {
  32. ID ckID;
  33. LONG ckSize;
  34. UBYTE ckData[ 1 ];
  35. } Chunk;
  36. #define szNotYetKnown 0x80000001L
  37. #define IS_ODD(a) ((a) & 1)
  38. #define WordAlign(size) ((size+1)&~1)
  39. #define ChunkPSize(dataSize) (long)(WordAlign(dataSize) + sizeof(ChunkHeader))
  40. typedef struct {
  41. ID ckID;
  42. LONG ckSize;
  43. ID grpSubID;
  44. } GroupHeader;
  45. typedef struct {
  46. ID ckID;
  47. LONG ckSize;
  48. ID grpSubID;
  49. UBYTE grpData[ 1 ];
  50. } GroupChunk;
  51. #ifdef FDwAT
  52. typedef IFFP ClientProc(struct _GroupContext *);
  53. #else
  54. typedef IFFP ClientProc();
  55. #endif
  56. typedef struct _ClientFrame {
  57. ClientProc *getList, *getProp, *getForm, *getCat;
  58. } ClientFrame;
  59. typedef struct _GroupContext {
  60. struct _GroupContext *parent;
  61. ClientFrame *clientFrame;
  62. BPTR file;
  63. LONG position;
  64. LONG bound;
  65. ChunkHeader ckHdr;
  66. ID subtype;
  67. LONG bytesSoFar;
  68. } GroupContext;
  69. #define ChunkMoreBytes(gc) ((gc)->ckHdr.ckSize - (gc)->bytesSoFar)
  70. #ifdef FDwAT
  71. extern IFFP OpenRIFF(BPTR, GroupContext *, ClientFrame *);
  72. extern IFFP OpenRGroup(GroupContext *, GroupContext *);
  73. extern IFFP CloseRGroup(GroupContext *);
  74. extern ID GetChunkHdr(GroupContext *);
  75. extern IFFP IFFReadBytes(GroupContext *, BYTE *, LONG);
  76. extern IFFP SkipGroup(GroupContext *);
  77. extern IFFP ReadIFF(BPTR, ClientFrame *);
  78. extern IFFP ReadIList(GroupContext *, ClientFrame *);
  79. extern IFFP ReadICat(GroupContext *);
  80. extern ID GetFChunkHdr(GroupContext *);
  81. extern ID GetF1ChunkHdr(GroupContext *);
  82. extern ID GetPChunkHdr(GroupContext *);
  83. #else
  84. extern IFFP OpenRIFF();
  85. extern IFFP OpenRGroup();
  86. extern IFFP CloseRGroup();
  87. extern ID GetChunkHdr();
  88. extern IFFP IFFReadBytes();
  89. extern IFFP SkipGroup();
  90. extern IFFP ReadIFF();
  91. extern IFFP ReadIList();
  92. extern IFFP ReadICat();
  93. extern ID GetFChunkHdr();
  94. extern ID GetF1ChunkHdr();
  95. extern ID GetPChunkHdr();
  96. #endif
  97. #ifdef FDwAT
  98. extern IFFP OpenWIFF(BPTR, GroupContext *, LONG);
  99. extern IFFP StartWGroup(GroupContext *, ID, LONG, ID, GroupContext *);
  100. extern IFFP EndWGroup(GroupContext *);
  101. extern IFFP OpenWGroup(GroupContext *, GroupContext *);
  102. extern IFFP CloseWGroup(GroupContext *);
  103. extern IFFP PutCk(GroupContext *, ID, LONG, BYTE *);
  104. extern IFFP PutCkHdr(GroupContext *, ID, LONG);
  105. extern IFFP IFFWriteBytes(GroupContext *, BYTE *, LONG);
  106. extern IFFP PutCkEnd(GroupContext *);
  107. #else
  108. extern IFFP OpenWIFF();
  109. extern IFFP StartWGroup();
  110. extern IFFP EndWGroup();
  111. extern IFFP OpenWGroup();
  112. extern IFFP CloseWGroup();
  113. extern IFFP PutCk();
  114. extern IFFP PutCkHdr();
  115. extern IFFP IFFWriteBytes();
  116. extern IFFP PutCkEnd();
  117. #endif
  118. #endif IFF_H
  119.