home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / graphics / viewers / mugiff / txt / ifflib.def next >
Text File  |  1993-02-19  |  9KB  |  247 lines

  1. (*---------------------------------------------------------------------------
  2. :Program.    IFFLib
  3. :Author.     Volker Rudolph/Thomas Wagner & Frédéric Pröls
  4. :Version.    1.3
  5. :Copyright.  PD
  6. :Language.   Modula-2
  7. :Translator. M2Amiga 4.1
  8. :Imports.    iff.library - Christian A. Weber
  9. :Contents.   Modula-2 library-module for iff.library
  10. :Remark.     Needs iff.library (Version 22 or higher) in libs: directory
  11. :Remark.     This ist the Modula-2 version of the C include file
  12. :History.    V1.0 by Volker Rudolph
  13. :History.    V1.1 by Thomas Wagner & Frédéric Pröls
  14. :History.         Update to iff.library version 22 (29-Jul-92)
  15. :History.    V1.2 by F. Siebert small chgs. for Amiga Oberon 3.0
  16. :History.    V1.3 by Mark Rose rewrite from C-version for M2Amiga 4.1
  17. ---------------------------------------------------------------------------*)
  18.  
  19. (*$ LargeVars      := FALSE LongAlign  := FALSE *)
  20. (*$ Volatile       := FALSE StackParms := FALSE NameChk   := FALSE *)
  21.  
  22. DEFINITION MODULE IFFLib{"iff.library",22};
  23.  
  24. IMPORT       DosD;
  25. IMPORT e   : ExecD;
  26. IMPORT       GraphicsD;
  27. IMPORT i   : IntuitionD;
  28. IMPORT sys : SYSTEM;
  29.  
  30. CONST
  31.   IffName      = "iff.library";
  32.   IffVersion   = 22;                  (* Current library version *)
  33.  
  34.  
  35. (************** E R R O R - C O D E S ***********************************)
  36.  
  37. errorBadTask          =     -1;      (* IffError() called by wrong task *)
  38. errorOpen             =     16;      (* Can't open file *)
  39. errorRead             =     17;      (* Error reading file *)
  40. errorNoMem            =     18;      (* Not enough memory *)
  41. errorNotIff           =     19;      (* File is not an IFF file *)
  42. errorWrite            =     20;      (* Error writing file *)
  43. errorNoILBM           =     24;      (* IFF file is not of type ILBM *)
  44. errorNoBMHD           =     25;      (* BMHD chunk not found *)
  45. errorNoBODY           =     26;      (* BODY chunk not found *)
  46. errorBadCompression   =     28;      (* Unknown compression type *)
  47. errorNoANHD           =     29;      (* ANHD chunk not found *)
  48. errorNoDLTA           =     30;      (* DLTA chunk not found *)
  49.  
  50. (************** Common IFF IDs ******************************************)
  51.  
  52. (*
  53.  * Universal IFF identifiers.
  54.  *)
  55.  
  56.   idFORM   = sys.CAST (LONGINT,"FORM");
  57.   idLIST   = sys.CAST (LONGINT,"LIST");
  58.   idCAT    = sys.CAST (LONGINT,"CAT ");
  59.   idPROP   = sys.CAST (LONGINT,"PROP");
  60.   idNULL   = sys.CAST (LONGINT,"    ");
  61.  
  62. (*
  63.  *      Specific IFF IDs
  64. *)
  65.  
  66.   idANIM   = sys.CAST (LONGINT,"ANIM");
  67.   idANHD   = sys.CAST (LONGINT,"ANHD");
  68.   idANNO   = sys.CAST (LONGINT,"ANNO");
  69.   idBMHD   = sys.CAST (LONGINT,"BMHD");
  70.   idBODY   = sys.CAST (LONGINT,"BODY");
  71.   idCAMG   = sys.CAST (LONGINT,"CAMG");
  72.   idCLUT   = sys.CAST (LONGINT,"CLUT");
  73.   idCMAP   = sys.CAST (LONGINT,"CMAP");
  74.   idCRNG   = sys.CAST (LONGINT,"CRNG");
  75.   idCTBL   = sys.CAST (LONGINT,"CTBL");
  76.   idDLTA   = sys.CAST (LONGINT,"DLTA");
  77.   idILBM   = sys.CAST (LONGINT,"ILBM");
  78.   idSHAM   = sys.CAST (LONGINT,"SHAM");
  79.  
  80.   id8SVX   = sys.CAST (LONGINT,"8SVX");
  81.   idATAK   = sys.CAST (LONGINT,"ATAK");
  82.   idNAME   = sys.CAST (LONGINT,"NAME");
  83.   idRLSE   = sys.CAST (LONGINT,"RLSE");
  84.   idVHDR   = sys.CAST (LONGINT,"VHDR");
  85.  
  86. (****************************************************************************
  87.  *      Modes for OpenIFF()
  88.  *)
  89.  
  90.   modeRead   = 0;
  91.   modeWrite  = 1;
  92.  
  93.  
  94. (****************************************************************************
  95.  *      Modes for CompressBlock() and DecompressBlock()
  96.  *)
  97.  
  98. comprNone        =  0000H;          (* generic *)
  99. comprByteRun1    =  0001H;          (* ILBM *)
  100. comprFibDelta    =  0101H;          (* 8SVX *)
  101.  
  102.  
  103.  
  104. (************** S T R U C T U R E S *************************************)
  105.  
  106. TYPE
  107.   APTR        = POINTER TO sys.ADDRESS;
  108.   HandlePtr   = POINTER TO Handle;
  109.   Handle      = RECORD                   (* private ! *)
  110.     file      : DosD.FileHandlePtr;       (* DOS file handle *)
  111.     formSize  : LONGINT;      (* Size of the whole FORM *)
  112.     chunkId   : LONGINT;      (* Id of current chunk *)
  113. (*
  114. **  ^- This  was  defined as chunkSize.  But Christian Weber used it in his
  115. **     own  code  as  identification  of the chunk.  It is undocumented but
  116. **     used in this way by the author himself therefore it should be legal.
  117. *)
  118.     chunkFPos : LONGINT;      (* Pos. in file where this chunk starts *)
  119.   END;
  120.  
  121.   ChunkPtr    = POINTER TO Chunk;
  122.   Chunk       = RECORD
  123.     ckID      : LONGINT;
  124.     ckSize    : LONGINT;
  125. (*  ckData    : ARRAY [1 .. ckSize] OF SHORTCARD; *)
  126.   END;
  127.  
  128.   BitMapHeaderPtr    = POINTER TO BitMapHeader;
  129.   BitMapHeader       = RECORD
  130.     w, h             : CARDINAL;
  131.     x, y             : INTEGER;
  132.     nPlanes,
  133.     masking,
  134.     compression,
  135.     pad1             : SHORTCARD;
  136.     transparentColor : CARDINAL;
  137.     xAspect, yAspect : SHORTCARD;
  138.     pageWidth,
  139.     pageHeight       : INTEGER;
  140.   END;
  141.  
  142.   AnimHeaderPtr  = POINTER TO AnimHeader;
  143.   AnimHeader     = RECORD
  144.     operation,
  145.     mask         : SHORTCARD;
  146.     w, h         : CARDINAL;
  147.     x, y         : INTEGER;
  148.     absTime,
  149.     relTime      : LONGCARD;
  150.     interLeave,
  151.     pad0         : SHORTCARD;
  152.     bits         : LONGCARD;
  153.     pad          : ARRAY [0 .. 15] OF SHORTCARD;
  154.   END;
  155.  
  156. (*********************** L I B R A R Y - B A S E ************************)
  157.  
  158. VAR
  159.   iffVersion : INTEGER;
  160.   iffBase    : e.LibraryPtr;
  161.  
  162. (************** F U N C T I O N   D E C L A R A T I O N S ***************)
  163.  
  164. (* obsolete *)
  165. PROCEDURE OldOpenIFF      (fileName{8}        : sys.ADDRESS)
  166.                                               : HandlePtr;        CODE -30;
  167.  
  168. PROCEDURE CloseIFF        (iffFile{9}         : HandlePtr);
  169.                                                                   CODE -36;
  170.  
  171. PROCEDURE FindChunk       (iffFile{9}         : HandlePtr;
  172.                            hunkName{0}        : LONGINT)
  173.                                               : ChunkPtr;         CODE -42;
  174.  
  175. PROCEDURE GetBMHD         (iffFile{9}         : HandlePtr)
  176.                                               : BitMapHeaderPtr;  CODE -48;
  177.  
  178. PROCEDURE GetColorTab     (iffFile{9}         : HandlePtr;
  179.                            colorTable{8}      : sys.ADDRESS)
  180.                                               : LONGINT;          CODE -54;
  181.  
  182. PROCEDURE DecodePic       (iffFile{9}         : HandlePtr;
  183.                            bitmap{8}          : GraphicsD.BitMapPtr)
  184.                                               : BOOLEAN;          CODE -60;
  185.  
  186. PROCEDURE SaveBitMap      (fileName{8}        : sys.ADDRESS;
  187.                            bitMap{9}          : GraphicsD.BitMapPtr;
  188.                            colorTable{10}     : sys.ADDRESS;
  189.                            flags{0}           : LONGINT)
  190.                                               : BOOLEAN;          CODE -66;
  191.  
  192. PROCEDURE SaveClip        (fileName{8}        : sys.ADDRESS;
  193.                            bitmap{9}          : GraphicsD.BitMapPtr;
  194.                            coltab{10}         : sys.ADDRESS;
  195.                            flags{0}           : LONGINT;
  196.                            xoff{1}, yoff{2}   : LONGINT;
  197.                            width{3}, height{4}: LONGINT)
  198.                                               : BOOLEAN;          CODE -72;
  199.  
  200. PROCEDURE IffError        (                 ) : LONGINT;          CODE -78;
  201.  
  202. PROCEDURE GetViewModes    (iffFile{9}         : HandlePtr)
  203.                                               : GraphicsD.ViewModeSet; CODE -84;
  204.  
  205. (* private and obsolete *)
  206. PROCEDURE OldNewOpenIFF   (name{8}            : sys.ADDRESS;
  207.                            memattr{0}         : LONGINT)
  208.                                               : sys.ADDRESS;        CODE -90;
  209.  
  210. PROCEDURE ModifyFrame     (modifyform{9}      : HandlePtr;
  211.                            bitmap{8}          : GraphicsD.BitMapPtr)
  212.                                               : BOOLEAN;          CODE -96;
  213.  
  214. PROCEDURE OpenIFF         (name{8}            : sys.ADDRESS;
  215.                            mode{0}            : LONGCARD)
  216.                                               : HandlePtr;        CODE -120;
  217.  
  218. PROCEDURE PushChunk       (iff{8}             : HandlePtr;
  219.                            type{0}            : LONGCARD;
  220.                            id{1}              : LONGCARD)
  221.                                               : BOOLEAN;          CODE -126;
  222.  
  223. PROCEDURE PopChunk        (iff{8}             : HandlePtr)
  224.                                               : BOOLEAN;          CODE -132;
  225.  
  226. PROCEDURE WriteChunkBytes (iff{8}             : HandlePtr;
  227.                            buf{9}             : sys.ADDRESS;
  228.                            size{0}            : LONGINT)
  229.                                               : BOOLEAN;          CODE -138;
  230.  
  231. PROCEDURE CompressBlock   (source{8}          : sys.ADDRESS;
  232.                            VAR destination{9} : sys.ADDRESS;
  233.                            size{0}            : LONGCARD;
  234.                            mode{1}            : LONGCARD)
  235.                                               : LONGCARD;         CODE -144;
  236.  
  237. PROCEDURE DecompressBlock (source{8}          : sys.ADDRESS;
  238.                            VAR destination{9} : sys.ADDRESS;
  239.                            size{0}            : LONGCARD;
  240.                            mode{1}            : LONGCARD)
  241.                                               : LONGCARD;         CODE -150;
  242.  
  243.  
  244.  
  245. END IFFLib.
  246.  
  247.