home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
466.lha
/
M2Utils
/
IFFLib
/
IFF.DEF
< prev
next >
Wrap
Text File
|
1991-02-08
|
4KB
|
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.