home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1991-02-08 | 3.8 KB | 114 lines |
- (*
- Name : IFF.DEF
- Version: 1.0
- Author : Sascha Wildner
- Date : 27-Jul-90
-
- Description: Benchmark Modula-2 interface to CHW's iff.library
-
-
- -== UPDATE HISTORY ==-
-
- Date Version Author Comments
- --------------------------------------------------------------------------
- 27-Jul-90 1.0 Sascha Wildner First implementation
- *)
-
-
- DEFINITION MODULE IFF;
-
- FROM SYSTEM IMPORT ADDRESS, BYTE;
- FROM AmigaDOS IMPORT FileHandle;
- FROM Graphics IMPORT BitMap;
- FROM Libraries IMPORT LibraryPtr;
- FROM Memory IMPORT MemReqSet;
- FROM Views IMPORT ColorTable, ViewModesSet;
-
-
- CONST IFFName = "iff.library";
-
- VAR IFFBase: LibraryPtr;
-
-
- TYPE ChunkPtr = POINTER TO Chunk;
- Chunk = RECORD
- ckID : LONGINT;
- ckSize: LONGINT;
- ckData: BYTE;
- END;
-
- BitMapHeaderPtr = POINTER TO BitMapHeader;
- BitMapHeader = RECORD
- Width : CARDINAL;
- Height : CARDINAL;
- X : INTEGER;
- Y : INTEGER;
- NPlanes : BYTE;
- Masking : BYTE;
- Compression : BYTE;
- Pad1 : BYTE;
- TransparentColor: CARDINAL;
- XAspect : BYTE;
- YAspect : BYTE;
- PageWidth : INTEGER;
- PageHeight : INTEGER;
- END;
-
- Asc4 = ARRAY [0..3] OF CHAR;
-
-
- (* Error codes *)
- CONST IFFBadTask = -1; (* IFFError() called by wrong task *)
-
- IFFCantOpenFile = 16; (* File not found *)
- IFFReadError = 17; (* Error reading file *)
- IFFNoMem = 18; (* Not enough memory *)
- IFFNotIFF = 19; (* File is not an IFF file *)
- IFFWriteError = 20; (* Error writing file *)
-
- IFFNoILBM = 24; (* IFF file is not of type ILBM *)
- IFFNoBMHD = 25; (* BMHD chunk not found *)
- IFFNoBODY = 26; (* BODY chunk not found *)
- IFFTooManyPlanes = 27; (* BODY has more planes than BitMap *)
- IFFUnknownCompression = 28; (* Unknown compression type *)
-
-
-
- PROCEDURE NewOpenIFF(FileName: ADDRESS; MemAttr: MemReqSet): FileHandle;
- (* Allocate memory for an IFF-file and read it *)
-
- PROCEDURE OpenIFF(FileName: ADDRESS): FileHandle;
- (* Allocate memory for an IFF-file and read it *)
-
- PROCEDURE CloseIFF(IFFFile: FileHandle);
- (* Finish access to an IFF-file and deallocate memory *)
-
- PROCEDURE FindChunk(IFFFile: FileHandle; ChunkName: Asc4): ChunkPtr;
- (* Find an IFF-Chunk *)
-
- PROCEDURE GetBMHD(IFFFile: FileHandle): BitMapHeaderPtr;
- (* Find a BitMapHeader of an IFF-file *)
-
- PROCEDURE GetColorTab(IFFFile: FileHandle; VAR ColTab: ColorTable): LONGINT;
- (* Find a CMAP chunk and convert it into a ColorTable *)
-
- PROCEDURE DecodePic(IFFFile: FileHandle; BMap: BitMap): BOOLEAN;
- (* Decode an IFF-BODY into a BitMap *)
-
- PROCEDURE SaveBitMap(FileName: ADDRESS; BMap: BitMap; ColTab: ColorTable;
- Flags: BYTE): BOOLEAN;
- (* Save the planes of a BitMap as an IFF-file *)
-
- PROCEDURE SaveClip(FileName: ADDRESS; BMap: BitMap; ColTab: ColorTable;
- Flags: BYTE; XOff: CARDINAL; YOff: CARDINAL; Width: CARDINAL;
- Height: CARDINAL): BOOLEAN;
- (* Save a part of a BitMap as an IFF-file *)
-
- PROCEDURE IFFError(): INTEGER;
- (* Get detailed error description *)
-
- PROCEDURE GetViewModes(IFFFile: FileHandle): ViewModesSet;
- (* Get Amiga-Specific ViewModesSet *)
-
- END IFF.
-