(*********************************************************************
 *
 *  :Program.		Öffnet Screen und Fenster
 *  :Author.		Hans Schafft
 *  :Address.		Landfriedstraße 1A - Hinterhaus
 *  :Address.		6900 Heidelberg
 *  :Phone.		06221 - 22416
 *  :Version.		1.3
 *  :Date.		6/1990
 *  :Copyright.		PD
 *  :Language.		Modula-II
 *  :Translator.	M2Amiga
 *
 *********************************************************************)

IMPLEMENTATION MODULE SCREEN;

FROM Arts	IMPORT	Assert;
FROM SYSTEM	IMPORT	ADR,BYTE,ADDRESS,SETREG;
FROM Intuition	IMPORT	customScreen, IDCMPFlags, ScreenFlags, ScreenFlagSet,
		      	NewWindow, WindowPtr, OpenWindow, NewScreen, ScreenPtr,
                      	IDCMPFlagSet, WindowFlagSet, WindowFlags, OpenScreen;
FROM Graphics	IMPORT  SetRGB4, ViewModes, ViewModeSet;

CONST bildschirmTiefe = 4;

(******************************************************************)
PROCEDURE RichteScreenEin(VAR ns: NewScreen);
BEGIN
  WITH ns DO
    leftEdge     := 0; 			topEdge   := 0;
    width        := 640; 		height    := 512;
    depth        := bildschirmTiefe;    detailPen := 0;
    type         := customScreen;       blockPen  := 1;
    defaultTitle := NIL;    		font      := NIL;
    customBitMap := NIL;		gadgets   := NIL;
    viewModes    := ViewModeSet{lace,hires};
  END;
END RichteScreenEin;


(******************************************************************)
PROCEDURE RichteWindowEin(VAR nw: NewWindow; scPtr: ScreenPtr);
BEGIN
  WITH nw DO
    leftEdge 	:= 0; 			topEdge  := 0;
    width 	:= 640; 		height 	 := 512;
    detailPen 	:= 0; 			blockPen := 1;
    type 	:= customScreen;	title 	 := NIL;
    screen 	:= scPtr;    		minWidth := 10;
    minHeight 	:= 10; 	  		maxWidth := 640;
    firstGadget := NIL;   		bitMap 	 := NIL;
    checkMark 	:= NIL;   		maxHeight:= 512;
    idcmpFlags 	:= IDCMPFlagSet{gadgetUp,mouseMove,reqVerify,rawKey,gadgetDown};
    flags 	:= WindowFlagSet{rmbTrap, activate, borderless, reportMouse};
  END;
END RichteWindowEin;


(******************************************************************)
PROCEDURE ScreenAuf(VAR scPtr: ScreenPtr);
VAR  screenDef  :  NewScreen;
BEGIN
  RichteScreenEin(screenDef);
  scPtr := OpenScreen(screenDef);
  Assert(scPtr # NIL,ADR("Screen konnte nicht geöffnet werden !"));

  SetRGB4(ADR(scPtr^.viewPort), 0,  0, 0, 0);
  SetRGB4(ADR(scPtr^.viewPort), 1,  14,15,10);
  SetRGB4(ADR(scPtr^.viewPort), 2,  15,0, 0);
  SetRGB4(ADR(scPtr^.viewPort), 3,  15,15,1);
  SetRGB4(ADR(scPtr^.viewPort), 4,  0, 0, 15);
  SetRGB4(ADR(scPtr^.viewPort), 5,  3, 15,15);
  SetRGB4(ADR(scPtr^.viewPort), 6,  9, 8, 15);
  SetRGB4(ADR(scPtr^.viewPort), 7,  15,10,4);
  SetRGB4(ADR(scPtr^.viewPort), 8,  15,0, 12);
  SetRGB4(ADR(scPtr^.viewPort), 9,  5, 12, 12);
  SetRGB4(ADR(scPtr^.viewPort), 10, 9, 12, 0);
  SetRGB4(ADR(scPtr^.viewPort), 11, 15,12, 10);
  SetRGB4(ADR(scPtr^.viewPort), 12, 0, 15,  0);
  SetRGB4(ADR(scPtr^.viewPort), 13, 12, 12, 12);
  SetRGB4(ADR(scPtr^.viewPort), 14, 8, 8, 8);
  SetRGB4(ADR(scPtr^.viewPort), 15, 4, 12, 4);
  SetRGB4(ADR(scPtr^.viewPort), 16, 11,  7, 5);
  SetRGB4(ADR(scPtr^.viewPort), 17, 11, 5, 15);
  SetRGB4(ADR(scPtr^.viewPort), 18, 3,  7,   11);
  SetRGB4(ADR(scPtr^.viewPort), 19, 5, 10,  7);
END ScreenAuf;


(******************************************************************)
PROCEDURE FensterAuf(scPtr : ScreenPtr; VAR wiPtr : WindowPtr);
VAR windowDef : NewWindow;
BEGIN
  RichteWindowEin(windowDef, scPtr);
  wiPtr := OpenWindow(windowDef);
  Assert(wiPtr # NIL,ADR("Fenster klemmt !"));
END FensterAuf;


(******************************************************************)
(******************************************************************)
BEGIN
END SCREEN.
