(*********************************************************************
 
    :Program.  	Grafiken.def
    :Author.   	Pit Burkhardt  
    :Address.   Stettinerstraße 25 D-7030 Böblingen
    :shortcut. 	[pit]
    :Version.  	1.0   
    :Date.     	10.07.1988
    :Copyright. PD
    :Language. 	Modula-II
    :Translator.M2Amiga
    :Imports.	IFFload 
    :UpDate.	none
    :Contents.	Opens Super-Bitmapped Windows and fills them with
    		IFF-Brushes.
                PROCEDUREs for Window-moving, -hiding and -showing.
                PROCEDUREs for writing and drawing into Windowgraphics.
    :Remark.	Studienarbeit 
    		Im Kernfach TECHNISCHES DESIGN
                an der Universität Stuttgart	 
    
**********************************************************************)

DEFINITION MODULE Grafiken;

FROM SYSTEM IMPORT 	ADDRESS,ADR;

FROM Arts IMPORT	Assert,TermProcedure,BreakPoint;

FROM GfxMacros IMPORT	RasSize;

FROM Intuition IMPORT	NewWindow, WindowPtr, OpenWindow, ScreenPtr, 
			CloseWindow,WindowFlags,WindowFlagSet, RemakeDisplay, 
                        Window,ScreenFlagSet,ScreenFlags,OpenScreen, 
                        NewScreen,customScreen,CloseScreen,
                        MoveWindow,SizeWindow,DisplayBeep,SetWindowTitles,
                        IDCMPFlagSet,IDCMPFlags;

FROM Exec IMPORT	FreeMem,UByte;

FROM Graphics IMPORT	RastPortPtr,BitMap,FreeRaster,ViewPortPtr, ViewModeSet, 
                        ViewModes, TextAttr, FontStyleSet, FontFlagSet,
                        SetRGB4,BitMapPtr,FontFlags,
			RectFill, SetAPen, SetRast, InitTmpRas,
			AllocRaster, TmpRas, AreaInfo, AreaInfoPtr, AreaMove,
                        AreaDraw, InitArea, AreaEnd, AreaEllipse,
                        Move,Draw,SetDrMd,jam1,LoadRGB4;

FROM IFFLoad IMPORT 	ReadILBM,ReadILBMFlags,ReadILBMFlagSet,NuScreen,IFFInfo,
       			IFFInfoType;

TYPE	WinDatPtr=POINTER TO WinDatType;

        AnzFlags=(Trans,TransRev,rotator,num,alphanum,non);
        AnzFlagSet=SET OF AnzFlags;


TYPE	WinDatType=RECORD	(* Daten des Anzeiger-Windows		*)
	  AnzTyp:AnzFlagSet;	(* Anzeigertyp				*)
          FPen:UByte;		(* Farbe des Anzeige-Elements		*)
          x:INTEGER;		(* Koordinaten: Window-Ecke links oben	*)
          y:INTEGER;
          width:INTEGER;	(* Windowgröße				*)
          height:INTEGER;
          rp:RastPortPtr;	(* Pointer auf RastPort			*)
          Ptr:WindowPtr;	(* Pointer auf Windowstruktur		*)
          Wx0L:INTEGER;		(* Eckpunkte des Anzeigebalkens 	*)
          Wx0R:INTEGER;
          Wy0:INTEGER;
          Wx1L:INTEGER;
          Wx1R:INTEGER;
          Wy1:INTEGER;
        END;

	WinAnzType=RECORD	(* Daten des Anzeige-Elements		  *)
          Typ:AnzFlagSet;	(* AnzeigerTyp				  *)
          Pen:UByte;		(* Farbe des Anzeige-Elements		*)
          x0:INTEGER;		(* Koordinaten Balken minimal links unten *)
          y0:INTEGER;
          x1:INTEGER;		(* Koordinaten Balken maximal links oben  *)
          y1:INTEGER;
          dx:INTEGER;		(* Überstreichbarer Bereich in x-Richtung *)  
          dy:INTEGER;		(* Überstreichbarer Bereich in y-Richtung *)
          Bx:INTEGER;		(* BalkenBreite (x-Ausdehnung)		  *)
        END;

CONST	MAXWIDTH=640;
	MAXHEIGHT=210;
        DEPTH=3;
	MINWIDTH=0;
        MINHEIGHT=0;
        
        
        TEMPL=0; TEMPH=1; TANK=2; ECO1=3; ECO2=4; BINB=5;
        ANUMB=6; TACHOE=7; TACHOT=8; 
        LASTWINDOW=8;
        MAXPOINTS=10;

VAR	vp		:ViewPortPtr;
        ScreenP		:ScreenPtr;
	ScrRpP		:RastPortPtr;
        AWinDat		:ARRAY [0..LASTWINDOW] OF WinDatType;
        AWinAnz		:ARRAY [0..LASTWINDOW] OF WinAnzType;       	
	AInfo		:ARRAY [0..LASTWINDOW] OF AreaInfo;



PROCEDURE MakeTag(Tag:BOOLEAN);

PROCEDURE WriteAlpha(Curr:INTEGER;TextString:ARRAY OF CHAR;Count:INTEGER);

PROCEDURE WriteNumber(	Curr		:INTEGER;
			TextString1	:ARRAY OF CHAR;
			Num		:LONGINT;
                        TextString2	:ARRAY OF CHAR;
                        Count1,Count2	:INTEGER);
 
PROCEDURE ShowWindow(Curr:INTEGER);	(* Zeigt das Anzeiger-Window *)

PROCEDURE HideWindow(Curr:INTEGER);	(* Versteckt das Anzeiger-Window *)

PROCEDURE PlaceWindow(Curr,XPos,YPos:INTEGER);

PROCEDURE ReturnWindow(Curr:INTEGER);	(* Setzt Anzeiger-Window auf den... *)

PROCEDURE Display(Curr,Value,MaxVal:INTEGER);

PROCEDURE Prepare(Curr:INTEGER);	(* Vor allem anderen aufrufen *)

END Grafiken.
