(* --------------------------------------------------------------------------

:Program.    CPic.mod
:Contents.   Program to convert the IFF-ILBM Format into the CPic - Format.
:Author.     Thomas Zipproth
:Address.    Dr. Jochner Weg 10, 8948 Mindelheim, Germany
:Phone.      08261/4838
:Copyright.  PD
:Language.   Modula-2
:Translator. M2-Amiga A+l V3.3d
:Imports.    IFFSupport [fbs] Amok#6  (iffWrongIFF inserted for no IFF)
:Imports.    CPicSupport [thz]
:Imports.    ToolSupport [thz]
:History.    V1.1 [thz] 20.7.90
:Usage.      CPic <inputfile> <outputfile>
:Usage.      inputfile  : Name of an IFF - ILBM  File
:Usage.      outputfile : Name of the converted CPic - File

---------------------------------------------------------------------------*)

(* $S- $V- $R- $F- *)
MODULE CPic;

FROM Arts        IMPORT TermProcedure;
FROM Intuition   IMPORT ScreenPtr,WindowPtr,CloseScreen;
FROM Graphics    IMPORT ViewModes;
FROM ToolSupport IMPORT GetArg,NumArgs,WriteString,WriteLn,WriteInt;
FROM IFFSupport  IMPORT ReadILBM,ReadILBMFlags,ReadILBMFlagSet,
                        IFFError,IFFErrors;
FROM CPicSupport IMPORT SaveScreen,ci,Cse;


VAR sp1 : ScreenPtr;
    wp  : WindowPtr;
    Name1,Name2 : ARRAY[0..31] OF CHAR;
    filelength : LONGINT;
    len : INTEGER;


PROCEDURE CleanUp;
BEGIN
  IF sp1 # NIL THEN CloseScreen(sp1) END;
END CleanUp;


PROCEDURE WriteInfo;
VAR i : INTEGER;
BEGIN
  WriteLn;
  WriteString("Screen : ");
  WriteInt(ci.Width,5);WriteString(" *");
  WriteInt(ci.Height,4);WriteString(" *");
  WriteInt(ci.Depth,2);
  IF hires IN ci.Mode THEN WriteString("   HIRES ") END;
  IF ham   IN ci.Mode THEN WriteString("   HAM ") END;
  IF extraHalfbrite IN ci.Mode THEN WriteString("   EHB ") END;
  IF lace IN ci.Mode THEN WriteString("   LACE ") END;
  WriteLn;WriteLn;
  WriteString("CPic :  (");
  WriteInt(ci.PicX0,3);
  WriteInt(ci.PicY0,5);
  WriteString(" )");
  WriteInt(ci.PicX,6);
  WriteString("  *");
  WriteInt(ci.PicY,5);
  WriteString("  = ");
  WriteInt(LONGINT(ci.PicX) * LONGINT(ci.PicY),5);
  WriteString("  Byte for one Plane");
  WriteLn;WriteLn;
  WriteString("Crunched Planes : ");
  FOR i:=0 TO ci.Depth-1 DO
    WriteInt(ci.Length[i],7);
  END;
  WriteString("  / ");WriteInt(filelength,7);
  WriteLn;WriteLn;
END WriteInfo;


BEGIN

TermProcedure(CleanUp);

IF NumArgs()#2 THEN
  WriteLn;
  WriteString("CPic 1.1  20.7.1990  by  Thomas Zipproth");WriteLn;WriteLn;
  WriteString("Usage : CPic <inputfile> <outputfile>");WriteLn;WriteLn;
  WriteString("inputfile  : Name of an IFF - ILBM  File");WriteLn;
  WriteString("outputfile : Name of the converted CPic - File");
  WriteLn;WriteLn;
ELSE
  GetArg(1,Name1,len);
  GetArg(2,Name2,len);
  IF ReadILBM(Name1,ReadILBMFlagSet{visible},sp1,wp) THEN
    filelength:=SaveScreen(Name2,sp1);
    IF filelength>0 THEN
      WriteInfo
    ELSE
      IF Cse=14 THEN
         WriteString("Not enough workspace !")
       ELSE
         WriteString("Couldn't save File !");
       END;
       WriteLn;WriteLn;
    END;
  ELSE
    sp1:=NIL;
    IF IFFError = iffWrongIFF THEN
      WriteString("Not an IFF - File !");
    ELSIF
      IFFError = iffOpenfailed THEN
        WriteString("Couldn't open File !");
    ELSIF
       IFFError = iffOpenScreenfailed THEN
         WriteString("Not enough Chip - Memory !");
    ELSE
      WriteString("Couldn't load Picture !");
    END;
    WriteLn;WriteLn;
  END;
END;

END CPic.
