home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / m2utils_439.lzh / M2Utils / IFFLib / IFF.DEF < prev    next >
Text File  |  1991-01-18  |  4KB  |  114 lines

  1. (*
  2.    Name   : IFF.DEF
  3.    Version: 1.0
  4.    Author : Sascha Wildner
  5.    Date   : 27-Jul-90
  6.  
  7.    Description: Benchmark Modula-2 interface to CHW's iff.library
  8.  
  9.  
  10.    -== UPDATE HISTORY ==-
  11.  
  12.    Date          Version            Author          Comments
  13.    --------------------------------------------------------------------------
  14.    27-Jul-90       1.0              Sascha Wildner  First implementation
  15.                                                                               *)
  16.  
  17.  
  18. DEFINITION MODULE IFF;
  19.  
  20.    FROM SYSTEM    IMPORT ADDRESS, BYTE;
  21.    FROM AmigaDOS  IMPORT FileHandle;
  22.    FROM Graphics  IMPORT BitMap;
  23.    FROM Libraries IMPORT LibraryPtr;
  24.    FROM Memory    IMPORT MemReqSet;
  25.    FROM Views     IMPORT ColorTable, ViewModesSet;
  26.  
  27.  
  28.    CONST IFFName = "iff.library";
  29.  
  30.    VAR IFFBase: LibraryPtr;
  31.  
  32.  
  33.    TYPE ChunkPtr = POINTER TO Chunk;
  34.         Chunk = RECORD
  35.                    ckID  : LONGINT;
  36.                    ckSize: LONGINT;
  37.                    ckData: BYTE;
  38.                 END;
  39.  
  40.         BitMapHeaderPtr = POINTER TO BitMapHeader;
  41.         BitMapHeader = RECORD
  42.                           Width           : CARDINAL;
  43.                           Height          : CARDINAL;
  44.                           X               : INTEGER;
  45.                           Y               : INTEGER;
  46.                           NPlanes         : BYTE;
  47.                           Masking         : BYTE;
  48.                           Compression     : BYTE;
  49.                           Pad1            : BYTE;
  50.                           TransparentColor: CARDINAL;
  51.                           XAspect         : BYTE;
  52.                           YAspect         : BYTE;
  53.                           PageWidth       : INTEGER;
  54.                           PageHeight      : INTEGER;
  55.                        END;
  56.  
  57.         Asc4 = ARRAY [0..3] OF CHAR;
  58.  
  59.  
  60.    (* Error codes *)
  61.    CONST IFFBadTask = -1; (* IFFError() called by wrong task *)
  62.  
  63.          IFFCantOpenFile = 16; (* File not found *)
  64.          IFFReadError    = 17; (* Error reading file *)
  65.          IFFNoMem        = 18; (* Not enough memory *)
  66.          IFFNotIFF       = 19; (* File is not an IFF file *)
  67.          IFFWriteError   = 20; (* Error writing file *)
  68.  
  69.          IFFNoILBM             = 24; (* IFF file is not of type ILBM *)
  70.          IFFNoBMHD             = 25; (* BMHD chunk not found *)
  71.          IFFNoBODY             = 26; (* BODY chunk not found *)
  72.          IFFTooManyPlanes      = 27; (* BODY has more planes than BitMap *)
  73.          IFFUnknownCompression = 28; (* Unknown compression type *)
  74.  
  75.  
  76.  
  77. PROCEDURE NewOpenIFF(FileName: ADDRESS; MemAttr: MemReqSet): FileHandle;
  78. (* Allocate memory for an IFF-file and read it *)
  79.  
  80. PROCEDURE OpenIFF(FileName: ADDRESS): FileHandle;
  81. (* Allocate memory for an IFF-file and read it *)
  82.  
  83. PROCEDURE CloseIFF(IFFFile: FileHandle);
  84. (* Finish access to an IFF-file and deallocate memory *)
  85.  
  86. PROCEDURE FindChunk(IFFFile: FileHandle; ChunkName: Asc4): ChunkPtr;
  87. (* Find an IFF-Chunk *)
  88.  
  89. PROCEDURE GetBMHD(IFFFile: FileHandle): BitMapHeaderPtr;
  90. (* Find a BitMapHeader of an IFF-file *)
  91.  
  92. PROCEDURE GetColorTab(IFFFile: FileHandle; VAR ColTab: ColorTable): LONGINT;
  93. (* Find a CMAP chunk and convert it into a ColorTable *)
  94.  
  95. PROCEDURE DecodePic(IFFFile: FileHandle; BMap: BitMap): BOOLEAN;
  96. (* Decode an IFF-BODY into a BitMap *)
  97.  
  98. PROCEDURE SaveBitMap(FileName: ADDRESS; BMap: BitMap; ColTab: ColorTable;
  99.                      Flags: BYTE): BOOLEAN;
  100. (* Save the planes of a BitMap as an IFF-file *)
  101.  
  102. PROCEDURE SaveClip(FileName: ADDRESS; BMap: BitMap; ColTab: ColorTable;
  103.                    Flags: BYTE; XOff: CARDINAL; YOff: CARDINAL; Width: CARDINAL;
  104.                    Height: CARDINAL): BOOLEAN;
  105. (* Save a part of a BitMap as an IFF-file *)
  106.  
  107. PROCEDURE IFFError(): INTEGER;
  108. (* Get detailed error description *)
  109.  
  110. PROCEDURE GetViewModes(IFFFile: FileHandle): ViewModesSet;
  111. (* Get Amiga-Specific ViewModesSet *)
  112.  
  113. END IFF.
  114.