BGI		Die Verknpfung der Mglichkeiten der Unit Graph mit den
ver 1.01	Konventionen der gemeinsam genutzten Unit Gr.
		Copyright (c) 1993 by Matthias Kppe.

-----------------------------------------------------------------------------

BGI ist eine Turbo-Pascal-Unit und dient der Verknpfung der Routinen der
Unit Graph mit den Clipping-Konventionen des gemeinsam genutzten Graphik-
Interfaces Gr und der Metafile-Spezifikation.

P r o z e d u r e n

Die Unit BGI berschreibt folgende Routinen der Unit Graph:

  PutPixel	      Line                LineTo              LineRel
  MoveTo              MoveRel             Bar                 Rectangle
  Circle              FillCircle          GetImage            PutImage

Diese Routinen knnen direkt in Ihren Programmen eingesetzt werden. Sie
beachten die Parameter der Unit Gr. Ferner lassen sie sich in eine
Metafile aufzeichnen.

Falls Sie weitere Graph-Routinen verwenden mchten, beachten Sie bitte, da
einige von ihnen nicht einmal mit ihrem eigenen Clipping-Mechanismus, dem
ViewPort, zurechtkommen. Dies trifft beispielsweise auf die Routinen Arc und
PutImage zu.

Rufen Sie im einfachsten Falle vor jedem Graph-Aufruf, in dem Koordinaten
eine Rolle spielen, die Prozedur GrClipBgi auf und addieren Sie zu den
Koordinaten die Werte der BGI-Variablen BgiX bzw. BgiY.


C l i p p i n g

Die Unit BGI untersttzt verschiedene Clipping-Modi. Der aktuelle Clipping-
Modus ist in der Variablen BgiClipMode gespeichert. Folgender Tabelle
knnen Sie die Wirkungen der Modi entnehmen.

  Modus         Clipping-Mechanismus
  ------------  -------------------------------------------------------------
  bcmUpdAlways  Vor jeder Zeichenoperation wird berprft, ob der ViewPort
		mit den gesetzten ClipRect-Einstellungen bereinstimmt.
		Wenn notwendig, wird der Viewport angepat. Ferner werden
		die Variablen BgiX, BgiY an die neuen Parameter angepat.
		- Whlen Sie diesen Modus, wenn ClipRect und DrawOrigin in
		Ihren Programmen mitunter durch direkte Zuweisungen gesetzt
		werden, nicht durch die Routinen der Unit Gr.
  bcmUpdNever   Vor den Zeichenoperationen wird nicht festgestellt, ob sich
		ClipRect oder DrawOrigin verndert haben. Nur wenn in
		BgiClipState angezeigt wird, da eine solche Vernderung
		stattgefunden hat, werden Viewport und BgiX, BgiY angepat.
		- Whlen Sie diesen Modus, wenn ClipRect und DrawOrigin nur
		durch die Routinen der Unit Gr gesetzt werden, denn diese
		teilen BGI mit, da Vernderungen stattgefunden haben.
  bcmUpdStop    wie vor
  bcmUpdOnReq   Vor den Zeichenoperationen werden nie Viewport und BgiX, BgiY
		angepat. Dies geschieht, wenn Sie mittels der Routinen der
		Unit Gr ClipRect oder DrawOrigin setzen.
		- Whlen Sie diesen Modus, wenn ClipRect und DrawOrigin nur
		durch die Routinen der Unit Gr gesetzt werden und Sie
		vergleichsweise hufig die BGI-Routinen einsetzen.

Sie sollten den Clipping-Modus nie direkt setzen, sondern die Clipping-
Benachrichtigung der Unit Gr verwenden. Lesen Sie dazu die Gr-Dokumentation.


E x p o r t i e r t e   R o u t i n e n

Folgende UserXX-Zeiger der Unit Gr werden belegt:

  UserXX	  Routine	 Q.  Beschreibung
  --------------  -------------  --  ---------------------------------------
  LineProc	  Line	 	 50  Linienroutine
  ClipNotifyProc  NotifyClip	 50  Clipping-Benachrichtigung
  InitGraphProc	  InitBgiGraph	 50  Initialisieren von Graph nach Gr.GrMode
  CloseGraphProc  CloseBgiGraph  50  Beenden von Graph
  ActivePageProc  SetBgiPage	 50  Setzen der aktiven Seite fr das BGI
  ChParamsProc	  ChBgiParams	 50  Verndern von Graphikparametern

I n i t i a l i s i e r u n g

Die Routine InitBgiGraph wertet den gesetzten Gr-Modus aus und initialisiert
dementsprechend die Unit Graph per InitGraph.
Der Pfad zum BGI-Treiber wird in der Variablen PathToDriver erwartet. Sie
ist mit 'C:\TP\BGI' initialisiert. Ist das Symbol EXE bei der Compilierung
der Unit Bgi definiert, so wird der EGA-VGA-Graphiktreiber in Ihre Programme
fest eingebunden. - Die gelieferten Versionen von Bgi sind mit diesem Symbol
compiliert.
