program HalfbriteDemo;

{[1;33m ==================================================================

	HalfBriteDemo.p ; (P) 1992 by "Diesel" B. Künnen

	[3;32mNur, um mal den Halfbrite-Modus unter PCQ-Pascal zu
	demonstrieren. Ach ja, HalfBrite.p ist Public Domain.[1;33m

  ==================================================================[0;31m }


{$I "Include:intuition/intuition.i" }
{$I "Include:Graphics/Graphics.i" }
{$I "Include:Graphics/Pens.i" }
{$I "Include:Exec/Libraries.i" }
{$I "Include:Graphics/View.i" }
{$I "Include:libraries/dos.i" }

Const	{ ---  Screendaten (wichtig: Extra_HalfBrite)  --- }

	NS : NewScreen=(0,0,320,200,6,0,1,Extra_HalfBrite,
			Customscreen_f, NIL,NIL,NIL,NIL);

	{ --- Windowdaten --- }

	NW : NewWindow=(0,0,320,200,0,1,0,
			Smart_Refresh+Backdrop+Borderless+
			Activate+NoCareRefresh,
			NIL,NIL,NIL,NIL,NIL,0,0,0,0,
			CustomScreen_f);

Var
	DScreen	: ScreenPtr;
	DWindow	: WindowPtr;
	i	: Short;


Procedure CleanExit(why : String; rt : Integer);

	{ --- System sauber zurücklassen --- }
Begin
	If DWindow<>NIL then CloseWindow(DWindow);
	If DScreen<>NIL then CloseScreen(DScreen);
	If GfxBase<>NIL then CloseLibrary(GfxBase);

	If why<>NIL then writeln(why);
	Exit(rt);
End;


{ [1;32m======================  Main  ======================[0;31m }

Begin
	{ --- zuerst die Gfx.lib öffnen --- }
	GfxBase:=OpenLibrary("graphics.library",0);
	If GfxBase=NIL then CleanExit("No Gfx.lib\n",10);

	{ --- Screen aufmachen --- }
	DScreen:=OpenScreen(Adr(NS));
	If DScreen=NIL then CleanExit("Cannot open screen\n",5);

	{ --- Window öffnen --- }
	NW.Screen:=DScreen;
	DWindow:=OpenWindow(Adr(NW));
	If DWindow=NIL then CleanExit("Cannot open window\n",5);

	{ --- Titlebar verstecken --- }
	ShowTitle(DScreen, False);

	write("Quit bei Maus in linker oberer Ecke\n");

	{ --- 32 Balken, oben und unten, zeichnen --- }
	For i:=0 to 31 do
	Begin
	  { --- Wähle Farbe 0..31  &  male oben ein Rechteck --- }
	  SetAPen  (DWindow^.RPort, i);
	  RectFill (DWindow^.RPort, i*10,   1, 9+i*10, 100);

	  { --- Wähle Farbe 32..63 &  male unten ein Rechteck --- }
	  SetAPen  (DWindow^.RPort, i+32);
	  RectFill (DWindow^.RPort, i*10, 101, 9+i*10, 200);
	End;

	{ --- Warten, bis Mauszeiger in linker, oberer Ecke --- }
	Repeat
	  Delay(5);	{ --- Prozeß auf Wait() setzen --- }

	until ((DWindow^.MouseX=0) AND (DWindow^.MouseY=0));

	CleanExit(Nil,0);	{ ---  bye ...  --- }

End.
