                                  - TOC-   1 -





 Merkmale der Version 2.01 ............................................      1
 Allgemeine Informationen .............................................      1
 Systemvoraussetzungen fr MetaGraph Version 2.01 .....................      1
 Prozeduren und Funktionen ............................................      3
 Metafile Routinen (bersicht) ........................................      3
 DoneMetagr (Procedure) (Unit MetaGr) .................................      4
 InitMetaGr (Procedure) (Unit MetaGr) .................................      4
 GetBuffer (Funktion) (Unit MetaGr) ...................................      5
 MaxBufferSize (Funktion) (Unit MetaGr) ...............................      5
 FreeBuffer (Prozedur) (Unit MetaGr) ..................................      6
 SetBuffer (Prozedur) (Unit MetaGr) ...................................      6
 ClearBuffer (Prozedur) (Unit MetaGr) .................................      7
 DrawBuffer (Prozedur) (Unit MetaGr) ..................................      7
 FullBuffer (Funktion) (Unit MetaGr) ..................................      7
 SaveExt (Prozedur) (Unit MetaGr) .....................................      8
 SetMetaClipRect (Prozedur) (Unit MetaGr) .............................      8
 SetMetaClipRectR (Prozedur) (Unit MetaGr) ............................      9
 SetMetaOrigin (Prozedur) (Unit MetaGr) ...............................      9
 MetaFunctions (Funktion) (Unit MetaGr) ...............................     10
 SetMetaOriginP (Prozedur) (Unit MetaGr) ..............................     10
 LastMetaError (Funktion) (Unit MetaGr) ...............................     11
 Nutzung des Metafiles ................................................     11
 Tips und Tricks zur Arbeit mit Metafiles .............................     13
 Fehlerbehandlung .....................................................     14
 Speicherung externer Routinen in Metafiles ...........................     14
 Zeichenfunktionen (bersicht) ........................................     15
 GetPixel (Funktion) (Unit MetaGr) ....................................     16
 HoriLine (Prozedur) (Unit MetaGr) ....................................     16
 PutPixel (Prozedur) (Unit MetaGr) ....................................     16
 Line (Prozedur) (Unit MetaGr) ........................................     17
 VertLine (Prozedur) (Unit Metagr) ....................................     17
 MoveRel (Prozedur) (Unit MetaGr) .....................................     18
 MoveTo (Prozedur) (Unit MetaGr) ......................................     18
 Bar (Prozedur) (Unit MetaGr) .........................................     19
 LineRel (Prozedur) (Unit MetaGr) .....................................     19
 LineTo (Prozedure) (Unit MetaGr) .....................................     19
 Circle (Prozedur) (Unit MetaGr) ......................................     20
 Rectangle (Prozedur) (Unit MetaGr) ...................................     20
 ClearDevice (Prozedur) (Unit MetaGr) .................................     21
 FillCircle (Prozedur) (Unit MetaGr) ..................................     21
 ClearPage (Prozedur) (Unit MetaGr) ...................................     22
 Farb- und Palettenfunktionen (bersicht) .............................     22
 SetPalette (Prozedur) (Unit MetaGr) ..................................     22
 GetPalette (Funktion) (UnitMetaGr) ...................................     23
 SetPaletteEntry (Prozedur) (Unit MetaGr) .............................     23
 GetPaletteEntry (Funktion) (Unit MetaGr) .............................     24
 SetPalettes (Prozedur) (Unit MetaGr) .................................     24
 GetPalettes (Prozedur) (Unit MetaGr) .................................     25
 SetRGBColor (Prozedur) (Unit MetaGr) .................................     25
 GetRGBColor (Prozedur) (Unit MetaGr) .................................     26
 GetRGBColorEntry (Prozedur) (Unit MetaGr) ............................     26
 SetRGBColorEntry (Prozedur) (Unit MetaGr) ............................     26
 GetRGBColors (Prozedur) (Unit MetaGr) ................................     27
 SetRGBColors (Prozedur) (Unit MetaGr) ................................     27



                                  - TOC-   1 -
                                  - TOC-   2 -





 Zeichenkontrollroutinen (bersicht) ..................................     28
 GetBorder (Funktion) (Unit Metagr) ...................................     28
 SetBorder (Prozedur) (Unit MetaGr) ...................................     28
 SetColor (Prozedur) (Unit MetaGr) ....................................     29
 SetFillColor (Prozedur) (Unit MetaGr) ................................     29
 SetColors (Prozedur) (Unit MetaGr) ...................................     30
 SetFillPattern (Prozedur) (Unit MetaGr) ..............................     30
 SetFillStyle (Prozedur) (Unit MetaGr) ................................     30
 Ausgabesteuerungsroutinen (bersicht) ................................     31
 SetLineStyle (Prozedur) (Unit MetaGr) ................................     31
 ClearSingleMS (Prozedur) (Unit MetaGr) ...............................     32
 SetMetaState (Prozedur) (Unit MetaGr) ................................     32
 SetSingleMS (Prozedur) (Unit MetaGr) .................................     32
 SelectGDriver (Prozedur) (Unit MetaGr) ...............................     33
 SetWriteMode (Prozedur) (Unit MetaGr) ................................     33
 AssignVideoSeg (Prozedur) (Unit MetaGr) ..............................     34
 SetColorMode (Prozedur) (Unit MetaGr) ................................     34
 SetSF (Prozedur) (Unit MetaGr) .......................................     34
 Synchronisationsroutinen (bersicht) .................................     35
 WaitHRetrace (Prozedur) (Unit MetaGr) ................................     35
 WaitVRetrace (Prozedur) (Unit MetaGr) ................................     35
 DispState (Funktion) (Unit MetaGr) ...................................     36
 WaitDispDisable (Prozedur) (Unit MetaGr) .............................     36
 WaitDispEnable (Prozedur) (Unit MetaGr) ..............................     36
 VRetrace (Funktion) (Unit MetaGr) ....................................     37
 WaitHLine (Prozedur) (Unit MetaGr) ...................................     37
 ChMetaParams (Funktion) (Unit MetaGr) ................................     38
 ErrorCode (Funktionsmacro) (Unit MetaGr) .............................     38
 LastError (Funktion) (Unit MetaGr) ...................................     38
 Sonstige Funktionen (bersicht) ......................................     38
 Datentypen ...........................................................     39
 TErrorProc (Unit MetaGr) .............................................     39
 TMetaBuffer (Unit MetaGr) ............................................     39
 TColors (Unit MetaGr) ................................................     40
 TPalettes (Unit MetaGr) ..............................................     40
 MetaGraph Konstanten (bersicht) .....................................     41
 TFillPattern (Unit MetaGr) ...........................................     41
 Metafile Fehlercodes (Unit MetaGr) ...................................     41
 Metafile Speicherbedarf ..............................................     42
 Metafile Statusflags .................................................     43
 Colormode-Konstanten (Unit MetaGr) ...................................     44
 MetaGraph Pointer-Qualitten .........................................     44
 Farbkonstanten (Unit MetaGr) .........................................     45
 Writemode-Konstanten (Unit MetaGr) ...................................     45
 Linienarten und -dicken ..............................................     46
 MetaGraph Beispielprogramme ..........................................     47
 Fllmuster Konstanten (Unit MetaGr) ..................................     47
 PutPixel Beispielprogramm ............................................     48
 GetPixel Beispielprogramm ............................................     48
 HoriLine Beispielprogramm ............................................     49
 VertLine Beispielprogramm ............................................     49
 Line Beispielprogramm ................................................     50
 MoveTo / LineTo Beispielprogramm .....................................     50
 MoveRel / LineRel Beispielprogramm ...................................     51



                                  - TOC-   2 -
                                  - TOC-   3 -





 Rectangle / Bar Beispielprogramm .....................................     51
 Circle / FillCircle Beispielprogramm .................................     52
 Beispielprogramm fr die Palettenfunktionen ..........................     53
 Beispielprogramm fr die RGB-Farbfunktionen ..........................     54
 Metafile Beispielprogramm ............................................     55
 Cooper Beispielprogramm ..............................................     57
 Warenzeichen .........................................................     58


















































                                  - TOC-   3 -
                                    -    1 -






Allgemeine Informationen
 

MetaGraph wurde fr die Untersttzung grafisch orientierter Anwendungen
als Ersatz fr die Routinen des Borland(R) Graphics Interface (BGI)
entwickelt. Es bietet ein unter Turbo-Pascal 6.0 und Borland(R)-Pascal 7.0
ein umfangreiches Paket an hochoptimierten Grafikroutinen zur Darstellung von
Grafiken in den normalen VGA und den hochauflsenden Super-VGA Modi mit 16
und mit 256 Farben und viele Hilfsroutinen z.B. zur Manipulation der Farben
und der Farbpalette, sowie zur Synchronisation mit der Bildschirmdarstellung
fr ruckelfreie Animationen. Zustzlich bietet MetaGraph die Mglichkeit des
Metafilings an, d.h. Grafiken knnen als Menge von Zeichenobjekten gespeichert,
und an anderer Stelle unter vernderlichen Clippingbedingungen neu dargestellt
werden.


 Weitere Informationen:


         Prozeduren und Funktionen
         Datentypen
         Konstanten
         Merkmale der Version 2.01
         Systemvoraussetzungen
         Beispielprogramme
         Warenzeichen


Systemvoraussetzungen fr MetaGraph Version 2.01
 

MetaGraph bentigt eine 100%-IBM kompatiblen PC mit mindestens 80386-Prozessor
und eine VGA-kompatible Grafikkarte. Zur Nutzung der hochauflsenden SuperVGA
Modi ist eine SVGA-Grafikkarte mit installiertem VESA-Bios ntig.
Um MetaGraph verwenden zu knnen, bentigen Sie Turbo Pascal 6.0 oder die
Version 7.0 von Turbo Pascal oder Borland Pascal.


 Siehe auch:


       Merkmale der Version 2.01


Merkmale der Version 2.01
 

Die Unit MetaGr, Version 2.01, dient der schnellen Darstellungen von Grafiken
auf VGA-Karten und SVGA-Karten. Sie weist folgende Leistungsmerkmale auf:

 1. Hochoptimierte Grafikroutinen fr eine grtmgliche Darstellungs-
    geschwindigkeit.

 2. Zusammenarbeit mit dem Borland(R) Graphics Interface (BGI). Um eine
    optimale Geschwindigkeit zu erzielen, ist ein direkter Zugriff auf die



                   metagr, Page #   1   Date 22-7-1996 Monday
                                    -    2 -





    VGA-Karte notwendig. Um Fehler der BGI-Routinen zu verhindern, werden
    bei gleichzeitigem Einsatz die durch die BGI-Routinen getroffenen
    Einstellungen der VGA-Karte wiederhergestellt.

 3. Untersttzung des Metafile-Konzepts. MetaGraph ermglicht es, Grafiken
    als Menge von grafischen Objekte zu speichern und dann unter vernder-
    lichen Clippingbedingungen an beliebiger Stelle auf dem Bildschirm
    erneut darzustellen. Dies erhht die Darstellungsgeschwindigkeit durch
    die Vermeidung der Berechnungen seitens der Anwendung und der
    Grafikroutinen.

 4. Untersttzung von SVGA-Karten. MetaGraph untersttzt die hochauflsenden
    Grafikmodi von SVGA-Karten in den 16-farbiegen Modi bis zu einer Auf-
    lsung von 800x600 und in den 256-farbiegen Modi mit beliebiger Auf-
    lsung. Hierfr ist jedoch eine VESA-Erweiterung der Grafik-Karte
    erforderlich.

 5. Untersttzung verschiedener Write-Modi. MetaGraph untersttzt die
    Verwendung von logischen Verknpfungen beim Zeichnen in allen
    Zeichenfunktionen.

 6. Untersttzung virtueller Bildschirme. Durch die Nutzung eines, in der
    Unit Gr implementierten, flexiblen Speicherverwaltungskonzepts wird die
    Nutzung virtueller Bildschirme, im Rahmen des VGA-Speichers, beliebiger
    Gre ermglicht, d.h. es ist mglich komplexe Bildteile auerhalb des
    sichtbaren Speicherbereiches zu zeichnen um sie dann in den sichtbaren
    Bereich zu kopieren, ohne gleich mit mehreren Bildschirmseiten arbeiten
    zu mssen.

 7. Untersttzung mehrerer Bildschirmseiten. Die Untersttzung mehrerer
    Bildschirmseiten ist ber die Unit Gr mglich.

 8. Bereitstellung der MetaFile-Funktionen fr externe Funktionen. MetaGraph
    ermglicht es, eigene Prozeduren und Funktionen in das MetaFile-Konzept
    einzubinden, d.h. die Funktionsaufrufe beliebiger FAR-kodierter Routinen
    knnen in einem Puffer gespeichert werden, um sie spter mehrfach zu
    wiederholen.

 9. Untersttzung von DPMI. MetaGraph 2.01 ist voll DPMI-fhig um die
    Erstellung anspruchsvoller Anwendungen mit groem Speicherbedarf
    zu untersttzen.

MetaGraph, Version 2.01, weist folgende Beschrnkungen auf:

 1. MetaGraph-Programme lassen sich unter Microsoft(R) Windows(TM) 3.x im
    erweiterten Modus fr 386-PC in einem Fenster ausfhren. Dies fhrt
    jedoch zu einer stark reduzierten Ausfhrungsgeschwindigkeit. Des
    weiteren werden die ber die Paletten- und Farbregisterfunktionen ge-
    troffenen Einstellungen ignoriert. Eine Ausfhrung im Fenster ist deshalb
    nicht ratsam.

 2. Die BGI-Routinen arbeitet nicht korrekt mit MetaGraph zusammen, wenn zur
    besseren Ausnutzung des VGA-Speichers die gepackten Gr-Modi oder sonstige
    Nicht-Stndartmodi (s. Dokumentation der Gr-Unit) verwendet werden.



                   metagr, Page #   2   Date 22-7-1996 Monday
                                    -    3 -






 3. Zur Ausfhrung von Programmen, die MetaGraph nutzen, ist ein
    80386-Prozessor oder hher erforderlich.


 Siehe auch:


       Systemvoraussetzungen


Prozeduren und Funktionen
 

MetaGraph verfgt ber eine groe Anzahl von Prozeduren und Funktionen, die
sich in folgende Kategorien aufteilen lassen:

       Metafile Routinen
       Zeichenfunktionen
       Farb- und Palettenfunktionen
       Einstellungen
       Ausgabesteuerung
       Synchronisation
       Sonstige Funktionen


Metafile Routinen (bersicht)
 

Das Metafile ist eine komfortable Mglichkeit zur Aufzeichnung und Speicherung
von Grafiken und deren Neudarstellung an verschiedenen Bildschirmpositionen
unter vernderlichen Clippingbedingungen. Somit bietet das Metafile eine
Mglichkeit fr die Hintergrundwiederherstellung in grafischen Benutzeroberflchen
oder fr die Erzeugung von Animationen. Eine beliebige Grafik wird, sowie
gewnscht, inclusive aller Einstellungen fr Farben, Fllmuster usw. als eine
Menge von Punkten und Linien etc. gespeichert, und kann dann beliebig oft
neu dargestellt werden.

Fr die Arbeit mit dem Metafile stellt MetaGraph folgende Prozeduren und
Funktionen bereit:

    InitMetaGr
    DoneMetaGr
    GetBuffer
    MaxBufferSize
    FreeBuffer
    SetBuffer
    ClearBuffer
    DrawBuffer
    FullBuffer
    SaveExt
    SetMetaClipRect
    SetMetaClipRectR
    SetMetaOrigin
    SetMetaOriginP



                   metagr, Page #   3   Date 22-7-1996 Monday
                                    -    4 -





    MetaFunctions
    LastMetaError


 Weitere Informationen:


       Einstellungen
       Nutzung des Metafiles
       Tips und Tricks
       Fehlerbehandlung


InitMetaGr (Procedure) (Unit MetaGr)
 

 Deklaration:
Procedure InitMetaGr;

InitMetaGr initialisiert alle Variablen die zur Nutzung des Metafilings
notwendig sind. Zustzlich wird ein 64KB groes Segment auf dem Heap
als temporrer Stack reserviert. Wurde diese Initialisierung nicht
durchgefhrt oder schlgt sie fehl, weil z.B. nicht genug Speicher
zur Verfgung steht, so lst jeder Aufruf einer Zeichen- oder sonstigen
Funktion, die im Metafile gespeichert werden soll, einen Fehler aus. Der
Fehlercode wird im AX-Register an die, durch die Prozedurvariable
ErrorProc, angegebene Fehlerbehandlungsroutine bergeben.
Steht fr die Initialisierung nicht genug Heapspeicher zur Verfgung, so
wird ebenfalls ein Fehler ausgelst. Als Fehlercode wird me_Init
bergeben.


 Siehe auch:


       DoneMetaGr

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


DoneMetagr (Procedure) (Unit MetaGr)
 

 Deklaration:
Procedure DoneMetaGr;

DoneMetaGr gibt den durch InitMetaGr reservierten Speicher
wieder frei. Nach dem Aufruf von DoneMetaGr knnen keine weiteren Aufrufe
in ein Metafile gespeichert werden oder ein Metafile mittles DrawBuffer
wiedergegben werden. Um Fehlern vorzubeugen, sollte nach dem Aufruf von
DoneMetaGr das Aufzeichen durch einen Aufruf von ClearSingleMS
mit dem Parameter ms_Record deaktiviert werden, anderenfalls lst ein
beliebiger Aufruf einer Zeichenroutine eine Fehler aus. Der Fehlercode
me_Stack wird dann an die Fehlerbehandlungsroutine bergeben.




                   metagr, Page #   4   Date 22-7-1996 Monday
                                    -    5 -






 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


GetBuffer (Funktion) (Unit MetaGr)
 

 Deklaration:
Function GetBuffer (Size: Word): PMetaBuffer

GetBuffer legt einen neuen Aufzeichnungspuffer vom Type TMetaBuffer
mit der Gre Size auf dem Heap an und initialisiert ihn. Die maximale Gre
richtet sich nach dem, bei der Assemblierung des MetaFile-Moduls festgelegten
Restspeichers. Unter normalen Bedingungen betrgt die maximale Gre ca. 63900
Byte. Die Gre des maximal mglichen Aufzeichnungsspeichers kann ber die
Funktion MaxBufferSize ermittlet werden. Schlgt die
Initialisierung des neuen Aufzeichnungspuffers fehl, so wird die
Fehlerbehandlungsroutine unter Angabe des Fehlercodes me_Memory aufgerufen.


 Siehe auch:


       SetBuffer
       FreeBuffer
       DrawBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


MaxBufferSize (Funktion) (Unit MetaGr)
 

 Deklaration:
Function MaxBufferSize: Word;

MaxBufferSize liefert die Gre des grtmglichen Metafilepuffers zurck. Die
maximale Gre richtet sich nach der, bei der Assemblierung des Metafile-Moduls,
festgelegten Gre des Sicherheitsbereiches. Nhere Informationen dazu finden
sich in der Dokumentation der internen Funktionsablufe.


 Siehe auch:


       GetBuffer

 Weitere Informationen:


       Metafile Routinen



                   metagr, Page #   5   Date 22-7-1996 Monday
                                    -    6 -





       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


FreeBuffer (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure FreeBuffer(Buffer: PMetaBuffer);

FreeBuffer gibt den, durch Buffer angegebenen Aufzeichnungspuffer, belegten
Speicher wieder frei. Ist der angegebene Puffer der momentan aktive
Aufzeichnungspuffer, so wird auch diese Einstellung gelscht. Der
Versuch, danach weiter aufzuzeichnen, lst dann einen Fehler aus, d.h.
die Fehlerbehandlungsroutine wird unter Angabe des Fehlercodes me_Buffer
aufgerufen.


 Siehe auch:


       SetBuffer
       GetBuffer
       SaveExt
       PMetaBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


SetBuffer (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetBuffer (Buffer: PMetaBuffer);

SetBuffer legt den, zur Aufzeichnung von Funktionsaufrufen zu verwendenen,
Aufzeichnungspuffer fest. Ist der Metastate-Flag ms_Record gesetzt, so
werden alle Aufrufe von Zeichenfunktionen und sonstigen Routinen, die
Einflu auf die Darstellung haben, sowie alle sonstigen ber SaveExt
gespeicherten Routinen im Puffer gespeichert. Diese Aufrufe knnen dann
ber DrawBuffer wiedergegeben werden. Eine gleichzeitiges
Zeichnen und Aufzeichnen ist nicht mglich. Ist eine Aufzeichnung nicht
mglich, so wird die Fehlerbehandlungsroutine mit dem entsprechenden
Fehlercode aufgerufen.


 Siehe auch:


       GetBuffer
       PMetaBuffer

 Weitere Informationen:





                   metagr, Page #   6   Date 22-7-1996 Monday
                                    -    7 -





       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


ClearBuffer (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure ClearBuffer (Buffer: PMetaBuffer);

ClearBuffer lscht alle im angegebenen Puffer gespeicherten Funktions-
aufrufe.


 Siehe auch:


       PMetaBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks

DrawBuffer (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure DrawBuffer (Buffer: PMetaBuffer);

DrawBuffer gibt die im angegebenen Puffer gespeicherten Funktionsaufrufe
wieder, d.h. die gespeicherten Funktionsaufrufe werden in der Reihenfolge
ihrer Speicherung wiederholt. Bei der Wiedergabe von Grafiken werden die
dann gltigen Einstellungen des ClipRects und des MetaOrigins (Unit GR)
beachtet. Zum Zwecke der Geschwindigkeitssteigerung knnen diese Features
durch Neuassemlierung/-compilierung mit vernderten Vorgaben auch deaktiviert
werden.


 Siehe auch:


       GetBuffer
       SetBuffer
       PMetaBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks

FullBuffer (Funktion) (Unit MetaGr)
 




                   metagr, Page #   7   Date 22-7-1996 Monday
                                    -    8 -





 Deklaration:
Function FullBuffer(Buffer: PMetaBuffer; Data: Word): Boolean;

FullBuffer ermittelt, ob unter Bercksichtigung des Sicherheitsbereiches
noch Data Bytes im angegebenen Aufzeichnungspuffer verfgbar sind. Diese
Funktion sollte vor der Aufzeichnung komplexerer Grafiken aufgerufen
werden, wenn die verwendeten Zeichenfunktionen bersehbar sind, d.h.
vorher in ungefhrer Zahl bekannt sind, um sicherzustellen, da die
Grafik auch vollstndig gespeichert werden kann. Stehen Art und Umpfang
der aufzurufenen Zeichenfunktionen fest, so kann der bentigte Speicher
unter Benutzung der mu_xxxx Konstanten berechnet werden.


 Siehe auch:


       GetBuffer
       SetBuffer
       PMetaBuffer


 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks

SaveExt (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SaveExt;

SaveExt ermglicht die Speicherung MetaGraph-fremder (externer),
FAR kodierter Routinen in ein Metafile. Bei der Aufzeichnung ist das
spezielle Aufrufschema zu beachten. Bei der Wiedergabe ist keine
Sonderbehandlung notwendig.


 Siehe auch:


       GetBuffer
       SetBuffer
       DrawBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks
       Speicherung externer Funktionen


SetMetaClipRect (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetMetaClipRect (x1, y1, x2, y2: Integer);




                   metagr, Page #   8   Date 22-7-1996 Monday
                                    -    9 -





SetMetaClipRect setzt den, bei der Wiedergabe sichtbaren Bildschirmausschnitt.
Die Einstellungen im MetaClipRect (Unit GR) haben bei
normalen Zeichenaufrufen keinen Einflu. Zu beachten ist, da die
Turbo-Vision-Notation verwendet wird, d.h. der Punkt (x2|y2) liegt schon
auerhalb des sichtbaren Bereiches.


 Siehe auch:


       SetMetaClipRectR
       SetDrawOrigin
       SetDrawOriginP

 Weitere Informationen:


       Metafile Routinen
       Nutzung des Metafiles
       Tips und Tricks


SetMetaClipRectR (Prozedur) (Unit MetaGr)
 
 Deklaration:
Procedure SetMetaClipRectR (R: TRect);

SetMetaClipRectR setzt den, bei der Wiedergabe sichtbaren
Bildschirmausschnitt auf das angegebene Rechteck. Die Einstellungen im
MetaClipRect (Unit GR) haben bei normalen Zeichenaufrufen keinen
Einflu. Zu beachten ist, da die Turbo-Vision-Notation verwendet wird,
d.h. der Punkt (x2|y2) liegt schon auerhalb des sichtbaren Bereiches.


 Siehe auch:


       SetMetaClipRect
       SetDrawOrigin
       SetDrawOriginP

 Weitere Informationen:


       Metafile Routinen
       Nutzung des Metafiles
       Tips und Tricks


SetMetaOrigin (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetMetaOrigin (x, y: Integer);

SetMetaOrigin setzt den globalen Bildschirmursprung bei der Wiedergabe von
Metafiles, d.h. die komplette Grafik wird um den MetaOrigin bei der
Darstellung verschoben. Nach dem Aufruf der Wiedergabe sollte der
MetaOrigin wieder auf den Wert (0|0) gesetzt werden, da er sonst beim
normalen Zeichnen zum DrawOrigin addiert wird. Werden eigene
Zeichenfunktionen ber SaveExt in das Metafile eingebunden, so
sollten diese den MetaOrigin ebenfalls verwenden, um Darstellungsfehler



                   metagr, Page #   9   Date 22-7-1996 Monday
                                    -   10 -





zu vermeiden.


 Siehe auch:


       SetMetaOriginP
       SetMetaClipRect
       SetMetaClipRectR

 Weitere Informationen:


       Metafile Routinen
       Nutzung des Metafiles
       Tips und Tricks


SetMetaOriginP (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetMetaOriginP (P: TPoint);

SetMetaOriginP setzt den globalen Bildschirmursprung (MetaOrigin)
bei der Wiedergabe von Metafiles auf den angegeben Punkt, d.h. die komplette
Grafik wird um den MetaOrigin bei der Darstellung verschoben. Nach dem
Aufruf der Wiedergabe sollte der MetaOrigin wieder auf den Wert (0|0)
gesetzt werden, da er sonst beim normalen Zeichnen zum DrawOrigin
addiert wird. Werden eigene Zeichenfunktionen ber SaveExt in das
Metafile eingebunden, so sollten diese den MetaOrigin ebenfalls
verwenden, um Darstellungsfehler zu vermeiden.


 Siehe auch:


       SetMetaOrigin
       SetMetaClipRect
       SetMetaClipRectR

 Weitere Informationen:


       Metafile Routinen
       Nutzung des Metafiles
       Tips und Tricks


MetaFunctions (Funktion) (Unit MetaGr)
 

 Deklaration:
Function MetaFunctions: Boolean;

MetaFunctions gibt true zurck, wenn die MetaFile-Funktionen zur Verfgung
stehen, d.h. die Initialisierung des internen Stacks erfolgreich war und
ein gltiger Aufzeichnungspuffer angegeben wurde. Ein Test, ob noch Platz
zur Speicherung weiterer Aufrufe im Puffer ist, wird nicht durchgefhrt, da
der hierfr notwendige Platz nicht konstant und somit nicht kalkulierbar
ist.




                   metagr, Page #  10   Date 22-7-1996 Monday
                                    -   11 -






 Siehe auch:


       InitMetaGr
       GetBuffer
       SetBuffer
       FullBuffer

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


LastMetaError (Funktion) (Unit MetaGr)
 

 Deklaration:
Function LastMetaError: Byte;

LastMetaError gibt als Funktionswert den Fehlercode des letzten Fehlers zurck,
der bei der Ausfhrung einer der Metafile-Funktionen aufgetreten ist.
Traten mehrere Fehler nacheinander auf, so wird immer nur der zuletzt
aufgetretene Fehler gespeichert. Ist seit dem letzten Auslesen kein Fehler
weiter aufgetreten, so wird als Fehlercode me_NoError zurckgegeben.
Diese Funktion sollte im allgemeinen nur nach Initialisierungsaufrufen
verwendet werden um zu verhindern, das z.B. ein nicht initialisiertes
Metafile verwendet wird und somit alle zu speichernden Aufrufe verloren
gehen. Um auftretende Fehler rechtzeitig korrigieren zu knnen sollte eine
eigene Fehlerbehandlungsroutine vom Type TErrorProc in der
Variable ErrorProc installiert werden, da diese Routine sofort beim
Auftreten des Fehlers aufgerufen wird und somit eine sofortige Reaktion
ermglicht.


 Siehe auch:


       LastError
       me_xxxx Fehlerkonstanten

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Tips und Tricks


Nutzung des Metafiles
 

Um die MetaFile-Funktionen nutzen zu knnen (Speichern von Funktionsaufrufen
und sptere Wiedergabe), mssen einige Vorbereitungen getroffen werden. Als
erstes mu ein Aufruf von InitMetaGr erfolgen, um die interne



                   metagr, Page #  11   Date 22-7-1996 Monday
                                    -   12 -





Speicherverwaltung zu initialisieren. Als zweites mu dann ein
Metafile-Puffer der gewnschten Gre mittels GetBuffer auf dem
Heap angelegt werden. Dieser wird dabei gleichzeitig mit den ntigen
Statusinformationen gefllt. Bei der Angabe der Gre ist darauf zu achten,
da diese nicht zu gro gewhlt wird, da die maximale Gre eines Metafiles
aus Sicherheitsgrnden kleines ist als 64K. Die maximal mgliche Gre kann
ber die Funktion MaxBufferSize ermittelt werden. Im
Normalfall betrgt sie ca. 63900 Byte. Nach der Bereistellung des
Aufzeichnungspuffers mu dieser mittels SetBuffer zum aktuell
gltigen Aufzeichnungspuffer erklrt werden. Als letztes mu ber einen Aufruf
von SetMetaState (ms_Record+ms_xxxx) noch die
Aufzeichnung aktiviert werden.
Ab diesem Zeitpunkt werden alle weiteren Aufrufe von Zeichenfunktionen oder
anderer zeichenrelevanter Routinen aufgezeichnet. Eine gleichzeitige Ausgabe
erfolgt jedoch nicht.

Sollen umfangreichere Funktionssequenzen aufgezeichnet werden, so
empfiehlt es sich, mit der Funktion FullBuffer zu testen, ob im
verwendeten Metafile-Puffer noch hinreichend Speicherplatz zur Verfgung
steht. Ist die Anzahl und Art der zu speichernden Funktionen bekannt oder
zumindest berschaubar, so kann der bentigte Speicherplatzbedarf unter
Zuhilfenahme der mu_xxxx Konstanten bestimmt werden.

Die Wiedergabe der gespeicherten Funktionsaufrufe erfolgt durch den Aufruf
der Prozedur DrawBuffer. Dabei kann ein beliebiger
Metafile-Puffer angegeben werden. Vor dem Aufruf von DrawBuffer sollte die
Darstellung durch eine Aufruf von SetMetaState mit dem
Parameter ms_Draw aktiviert werden. Das Flag ms_Record wird bei
der Wiedergabe ignoriert. Wurden auch externe Routinen im Metafile
gespeichert, so ist zustzlich das Flag ms_Execute zu setzen. Die
Wiedergabe kann beliebig oft aufgerufen werden. Es werden die jeweils
gesetzten Werte fr MetaOrigin und MetaClipRect beachtet. Wird der
Metafile-Puffer nicht mehr bentigt, so sollte er mittels
FreeBuffer wieder freigegeben werden.

Wird MetaGraph zusammen mit der Unit Graph oder BGI verwendet, so
sollte bei jedem Aufruf von SetMetaState das Flag ms_BGI angegeben
werden, um die fehlerfreie Ausfhrung der BGI-Routinen zu gewhrleisten.

Zusammenfassung:

  1. Aufruf InitMetaGr zur Initialisierung
  2. Metafile mit GetBuffer anlegen
  3. Metafile-Puffer mit SetBuffer zur Aufzeichnung selektieren
  4. Flags mit SetMetaState(ms_xxxx) setzen
  5. zu speichernde Funktionen aufrufen
  6. Wiedergabe mit DrawBuffer(Buffer)
  7. Freigabe des Puffers mit FreeBuffer(Buffer)


 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung



                   metagr, Page #  12   Date 22-7-1996 Monday
                                    -   13 -





       Tips und Tricks


Tips und Tricks zur Arbeit mit Metafiles
 

Die folgenden Punkte sollen ein paar Anregungen fr die Mglichkeiten
der Nutzung des Metafiles geben.

1. Zeichnen und Lschen von Grafiken
  ( Wiedergabe des Metafiles in verschiedenen Writemodi)

Die Wiedergabe von Metafiles in verschiedenen Writemodi kann unter anderem
dazu verwendet werden, eine Grafik wieder komplett zu lschen. Hierbei
ergeben sich zwei unterschiedliche Mglichkeiten. Die erste besteht darin,
eine Grafik, die auf einem leeren Hintergrund gezeichnet wurde zu lschen.
Hierbei wird die im COPYPut oder ORPut Modus gezeichnete Grafik
einfach nocheinmal im XORPut Modus dargestellt. Dazu mu allerdings
die ursprngliche Grafik ohne die Aufrufe von SetWriteMode
gespeichert worden sein. Dies wird dadurch erreicht, das der Aufruf von
SetWriteMode vor die Aktivierung der Aufzeichnung durch das Setzen des
ms_Record Flags mittels SetMetaState oder
SetSingleMS gesetzt wird und die Aufzeichnung durch lschen
des Flags vor den weiteren Aufrufen von SetWriteMode deaktiviert wird.
Die zweite Variante besteht darin eine Grafik auf eine andere zu zeichnen
und diese dann wieder zu lschen. Dabei mu in beiden Fllen das Metafile
im XORPutMode wiedergegeben werden.

2. Animationen mit dem Metafile

Durch wiederholtes Zeichnen und Lschen einer Grafik knnen einfache
Animationen erzeugt werden. Hierbei wird die entsprechende Grafik einmal
im Metafile aufgezeichnet und dann nach dem unter 1. beschriebenen Verfahren
gemalt und gelscht.

3. Hintergrundwiederherstellung

In grafisch orientierten Anwendungsprogrammen stellt sich sehr hufig das
Problem der Hintergrundwiederherstellung z.B. von Fenstern. Der einfachste
Weg ist die Speicherung des kompleten Inhalts eines jeden Fensters und das
Kopieren dieser Informationen bei der Wiederherstellung in den
Bildschirmspeicher. Da diese Variante bei mehreren Fenstern allerdings
gewaltig Mengen Speicher verbraucht, ist das Neuzeichnen der Fensterinhalte
meist die einzige Variante. Hierbei kommt das Metafile ins Spiel. Da der
Inhalt des Fensters z.T. mit erheblichem Rechenaufwand erstellt wurde
(z.B Diagramme) dauert das Neuzeichnenmeist recht lange. Wurde allerdings
der erste Darstellungsvorgang im Metafile aufgezeichnet, so mu einfach nur
das Metafile unter den neuen Clippingbedingungen wiedergegeben werden und
schon ist der Originalzustand des Fensters wiederhergestellt. Dieses
Verfahren lt sich in vielfltiger Weise an die jeweiligen Gegebenheiten
anpassen.


 Weitere Informationen:




                   metagr, Page #  13   Date 22-7-1996 Monday
                                    -   14 -






       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles
       Speicherung externer Funktionen


Speicherung externer Routinen in Metafiles
 

Um eine externe Funktion zu speichern ist nach dem Eintritt in die Routine
der Aufruf von ExtSave durchzufhren. Dabei sind verschiedenen Festlegungen
zu beachten. Als erstes ist der Speicherplatzbedarf der lokalen
Variablen auf dem Stack zu bergeben. Danach folgt der Speicherplatzbedarf
der Prozedurparameter. Als letztes folgt die Angabe darber, wie viel von
den lokalen Variablen vom Stack in den Puffer kopiert werden soll. Die zu
kopierenden lokalen Variablen mssen unbedingt als erste lokale
Variablen deklariert sein. Nach dem Ablegen der Parameter ist ExtSave
durch einen FAR-CALL aufzurufen. Dabei ist zu beachten, da der
nchste Befehl nach dem FAR-CALL den neuen Eintrittspunkt, d.h den neuen
Beginn der Funktion darstellt. Die zu speichernden Routinen sind als FAR
zu deklarieren.

Beispiel:


Procedure Test(x,y,z: Word); far;
Var a,b: Word;
Begin
  ASM
        PUSH    4                               (LocalSize)
        PUSH    6                               (ParamSize)
        PUSH    0                               (Locals to be stored)
        CALL    [ExtSave]
  END;
  a:=y+z;
  b:=x;
End;



 Siehe auch:


       GetBuffer
       SetBuffer
       ms_xxxx

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles





                   metagr, Page #  14   Date 22-7-1996 Monday
                                    -   15 -





Fehlerbehandlung
 

MetaGraph bietet zwei Strategien fr die Erkennung und Behandlung von Fehlern,
die zur Laufzeit bei der Benutzung der MetaGraph-Routinen auftreten. Die
erste, passive Variante besteht darin, das nach bestimmten Aufrufen von
MetaGraph-Routinen, deren korrekte Ausfhrung fr das Programm von Bedeutung
sind, ber LastError (fr Fehler allgemein) oder
LastMetaError (speziell fr Metafilefehler) der Fehlercode
des zuletzt aufgetretenen Fehlers ermittelt wird. Wird als Fehlercode
me_NoError zurckgegeben, so trat seit dem letzten Aufruf von LastError
oder LastMetaError kein Fehler auf. Die zweite, aktive Variante besteht in
der Installation einer eigenen Fehlerbehandlungsroutine in der
Prozedurvariable ErrorProc, die immer dann aufgerufen wird, wenn ein
Fehler auftritt. Diese Variante bietet die beste Mglichkeit, um rechtzeitig
auftretende Fehler zu erkennen und diese Behandeln zu knnen. Der Fehlercode
des aufgetretenen Fehlers wird dabei im AX-Register bergeben. Zur Zuweisung
des Fehlercodes an eine Variable etc. kann in Pascalprozeduren und -funktionen
auch das INLINE-Macro ErrroCode verwendet werden, das einfach nur
das AX-Register zurckliefert.


 Siehe auch:


         me_xxxx Konstanten
         TErrorProc

 Weitere Informationen:


       Metafile Routinen
       Fehlerbehandlung
       Nutzung des Metafiles


Zeichenfunktionen (bersicht)
 

MetaGraph bietet eine Reihe Zeichenfunktionen fr 16- und 256-farbige Grafikmodi.
Die folgende Liste gibt eine bersicht

       PutPixel
       GetPixel
       HoriLine
       VertLine
       Line
       MoveTo
       MoveRel
       LineTo
       LineRel
       Bar
       Rectangle
       Circle
       FillCircle
       ClearDevice



                   metagr, Page #  15   Date 22-7-1996 Monday
                                    -   16 -





       ClearPage


 Siehe auch:


       Einstellungen
       Konstanten

PutPixel (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure PutPixel (x, y: Integer; Color: Byte);

PutPixel setzt an den Koordinaten (x|y) einen Punkt mit der Farbe
Color. Dabei beziehen sich die Koordinatenangaben auf den globalen
Koordinatenursprung, der durch die Varialben DrawOrigin und
MetaOrigin festgelegt wird, d.h. beim Zeichen werden die Werte fr
DrawOrigin und MetaOrigin zu den bergebenen Koordinaten addiert.
Beim Metafiling werden die Koordinaten nach der Addition des DrawOrigin
gespeichert. Somit kann die Grafik bei der Wiedergabe mittels
DrawBuffer nur durch die Vernderung des MetaOrigin
verschoben werden.


 Siehe auch:


       GetPixel

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

GetPixel (Funktion) (Unit MetaGr)
 

 Deklaration:
Function GetPixel (x, y: Integer): Byte;

GetPixel liefert die Farbe des Punktes mit den den angegebenen Koordinaten
zurck. Liegt der Punkt auerhalb des sichtbaren Bereiches, so wird 0
als Ergebnis zurckgegeben. Aufrufe der GetPixel-Routine werden nicht im
Metafile gespeichert.


 Siehe auch:


       PutPixel

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

HoriLine (Prozedur) (Unit MetaGr)



                   metagr, Page #  16   Date 22-7-1996 Monday
                                    -   17 -





 

 Deklaration:
Procedure HoriLine (x1, y1, x2: Integer);

HoriLine zeichnet eine horizontale Linie zwischen den Punkten (x1|y1)
und (x2|y1) in der aktuellen Zeichenfarbe im aktuellen Liniestil. Die
Koordinaten sind dabei relativ zu dem durch DrawOrigin und
MetaOrigin angegebenen Koordinatenursprung.


 Siehe auch:


       VertLine
       Line
       SetLineStyle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

VertLine (Prozedur) (Unit Metagr)
 

 Deklaration:
Procedure VertLine (x1, y1, x2: Integer);

VertLine zeichnet eine vertikale Linie zwischen den Punkten (x1|y1) und
(x1|y2) in der aktuellen Zeichenfarbe im aktuellen Linienstil. Die
Koordinaten werden relativ zu dem durch DrawOrigin und MetaOrigin
angegebenen Koordinatenursprung festgelegt.


 Siehe auch:


       HoriLine
       Line
       SetLineStyle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

Line (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure Line (x1, y1, x2, y2: Integer);

Line zeichnet eine allgemeine Linie zwischen den Punkten (x1|y1) und
(x2|y2) in der aktuellen Linienfarbe und im aktuellen Linienstil mit
der angegebenen Liniendicke. Die Dicke der Linie ist dabei frei whlbar.
Bei geradzahligen Liniendicken wird die Seite der Linie, die von der
Mittellinie aus betrachtet, zum Bildschirmursprung hin liegt bevorzugt.



                   metagr, Page #  17   Date 22-7-1996 Monday
                                    -   18 -





Nur bei ungeradzahligen Dicken lt sich die Dicke gleichzeitig um die
Mittellinie herum verteilen. Die angegebenen Koordinaten werden relativ
zum dem durch MetaOrigin und DrawOrigin festgelegten
Koordiantenursprung angegeben.


 Siehe auch:


       HoriLine
       VertLine
       LineTo
       LineRel
       SetLineStyle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

MoveTo (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure MoveTo (x, y: Integer);

MoveTo bewegt den Zeichencursor zum angegebenen Punkt. Die Koordinaten x
und y werden relativ zum jeweiligen Koordinatenursprung gerechnet, d.h.
wird der Koordiantenursprung verschoben, so verndert sich auch die absolute
Position des Zeichencursors.


 Siehe auch:


       MoveRel

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

MoveRel (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure MoveRel (x, y: Integer);

MoveRel verschiebt den Zeichencursor um die in x und y angegebenen
Werte.


 Siehe auch:


       MoveTo

 Weitere Informationen:




                   metagr, Page #  18   Date 22-7-1996 Monday
                                    -   19 -






       Zeichenfunktionen
       Einstellungen
       Konstanten

LineTo (Prozedure) (Unit MetaGr)
 

 Deklaration:
Procedure LineTo (x, y: Integer);

LineTo zeichnet eine allgemeine Linie von der aktuellen Position des
Zeichencursors zum Punkt (x|y) mit den aktuellen Linieeinstellungen wie
Stil, Farbe und Dicke. Die Koordinaten x und y sowie die Position
des Zeichencursors werden relativ zum jeweiligen Koordinatenursprung
gerechnet, d.h. wird der Koordiantenursprung verschoben, so verndert sich
auch die Zeichenposition der Linie.


 Siehe auch:


       LineRel
       Line
       SetLineStyle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

LineRel (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure LineRel (x, y: Integer);

LineRel zeichnet eine allgemeine Linie relativ zur aktuellen Position des
Zeichencursors.


 Siehe auch:


       LineTo
       Line
       SetLineStyle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

Bar (Prozedur) (Unit MetaGr)
 




                   metagr, Page #  19   Date 22-7-1996 Monday
                                    -   20 -





 Deklaration:
Procedure Bar (x1, y1, x2, y2: Integer);

Bar zeichnet ein geflltes Rechteck in der aktuellen Fllfarbe und mit dem
gesetzten Fllmuster. Die Punkte (x1|y1) und (x2|y2) geben hierbei
die beiden gegenberliegenden Punkte des Rechtecks an. Alle Koordianten
beziehen sind relativ auf den aktuellen Koordiantenursprung, der durch
DrawOrigin und MetaOrigin angegeben wird.


 Siehe auch:


       Rectangle
       SetFillColor
       SetFillStyle

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

Rectangle (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure Rectangle (x1, y1, x2, y2: Integer);

Rectangle zeichnet ein Rechteck in der aktuellen Zeichenfarbe und dem
aktuellen Linienstil. Die Punkte (x1|y1) und (x2|y2) geben hierbei
die beiden gegenberliegenden Punkte des Rechtecks an. Die Koordinaten
beziehen sich relativ auf den durch DrawOrigin und MetaOrigin
angegebenen Koordinatenursprung.


 Siehe auch:


       Bar
       SetColor
       SetLineStyle

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

Circle (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure Circle (xm, ym, r: Integer);

Circle zeichnet einen Kreis mit dem Mittelpunkt (xm|ym) und dem Radius
r in der aktuellen Zeichenfarbe. Die Koordinaten xm und ym
beziehen sich relativ auf den durch DrawOrigin und MetaOrigin
angegebenen Koordinatenursprung.


 Siehe auch:




                   metagr, Page #  20   Date 22-7-1996 Monday
                                    -   21 -






       FillCircle
       SetColor

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

FillCircle (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure FillCircle (xm, ym, r: Integer);

FillCircle zeicnet einen Kreis mit dem Mittelpunkt (xm|ym) und dem
Radius r in der aktuellen Zeichenfarbe und fllt ihn mit der aktuellen
Fllfarbe und Fllmuster. Die Koordinaten xm und ym beziehen sich
relativ auf den durch DrawOrigin und MetaOrigin angegebenen
Koordinatenursprung.


 Siehe auch:


       Cirlce
       SetColor
       SetFillColor
       SetFillStyle

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

ClearDevice (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure ClearDevice;

ClearDevice lscht den gesammten zur Verfgung stehenden Videospeicher,
d.h. der gesammte Speicher der VGA-Karte wird mit 0 gefllt.
Diese Routine sollte nur zu Initialisierungszwecken verwendet werden, da
sie einerseits bei VGA-Karten mit viel Speicher und installierter
VESA-Untersttzung recht viel Zeit verbraucht und andererseits bei
gleichzeitiger Nutzung des VGA-Restspeichers fr Multi-Buffering ,Sprites
oder anderes diese Daten zerstrt.


 Siehe auch:


       ClearPage

 Weitere Informationen:


       Zeichenfunktionen



                   metagr, Page #  21   Date 22-7-1996 Monday
                                    -   22 -





       Einstellungen
       Konstanten

ClearPage (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure ClearPage;

ClearPage lscht die aktuelle Bildschirmseite. Der restliche Speicher der
VGA-Karte wird nicht beeinflut.


 Siehe auch:


       ClearDevice

 Weitere Informationen:


       Zeichenfunktionen
       Einstellungen
       Konstanten

Farb- und Palettenfunktionen (bersicht)
 

Fr die Vernderung der Farbdarstellung bietet MetaGraph eine Reihen
verschiedener Prozeduren und Funktionen, die im folgenden aufgefhrt sind:

        SetPalette
        GetPalette
        SetPaletteEntry
        GetPaletteEntry
        GetPalettes
        SetRGBColor
        GetRGBColor
        SetRGBColorEntry
        GetRGBColorEntry
        SetRGBColors
        GetRGBColors
        SetBorder
        GetBorder

 Siehe auch:


       Einstellungen
       Konstanten
       Datentypen

SetPalette (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetPalette (Palette, Color: Byte);

SetPalette setzt den angegebenen Paletteneintrag auf die Farbe Color.
Dadurch kann die Zuordnung einer Zeichenfarbe zu einer Bildschirmfarbe
verndert werden. Beim Zeichnen wird in den 16-farbigen Grafikmodi immer



                   metagr, Page #  22   Date 22-7-1996 Monday
                                    -   23 -





eine Palettenfarbe verwendet, d.h. wird z.B. ber SetColor
die Farbe 13 ausgewhlt, so wird eine darauffolgend gemalte Linie mit der
im Paletteneintrag 13  angegebenen Farbe gemalt. Verndert man nun durch
einen Aufruf von SetPalette die im Paletteneintrag 13 enthaltene Farbe, so
ndert sich sofort die Farbe der mit der Palettenfarbe 13 gemalten Linie.


 Siehe auch:


       GetPalette
       SetPaletteEntry
       GetPaletteEntry
       SetPalettes
       GetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetPalette (Funktion) (UnitMetaGr)
 

 Deklaration:
Function GetPalette (Palette: Byte): Byte;

GetPalette gibt die unter dem angegebenen Paletteneintrag abgelegte Farbe
als Funktionswert zurck. Diese Funktion kann bei der Manipulation der
Farbkomponenten einer Farbe verwendet werden, da zuerst die zu der
Palettenfarbe gehrige Bildschirmfarbe gefunden werden mu.


 Siehe auch:


       SetPalette
       SetPaletteEntry
       GetPaletteEntry
       SetPalettes
       GetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetPaletteEntry (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetPaletteEntry (Palette, Color: Byte);

SetPaletteEntry setzt einen Paletteneintrag in der internen Farbpalette.
Wird als Palettennummer die Konstante Border bergeben, so wird der
Paletteneintrag fr die Randfarbe gesetzt. Eine Vernderung der
VGA-Register wird hierdurch nicht verursacht. SetPaletteEntry dient vielmehr
dem Aufbau einer neuen internen Farbpalette, die dann sehr schnell ber



                   metagr, Page #  23   Date 22-7-1996 Monday
                                    -   24 -





einen einzigen Aufruf von SetPalettes gesetzt werden kann,
d.h. alle Palettenregister der VGA-Krate werden in einem Zug mit neuen
Werten geladen. Gleichzeitig wird ebenfalls die Randfarbe verndert.


 Siehe auch:


       SetPalette
       GetPalette
       GetPaletteEntry
       SetPalettes
       GetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetPaletteEntry (Funktion) (Unit MetaGr)
 

 Deklaration:
Function GetPaletteEntry (Palette: Byte): Byte;

GetPaletteEntry gibt die, unter der angegeben Palettennummer in der
internen Farbpalette abgelegte, Farbnummer zurck. Wird als Farbnummer
die Konstante Border bergeben, so wird die Farbnummer der Randfarbe
zurckgegeben.


 Siehe auch:


       SetPalette
       GetPalette
       SetPaletteEntry
       SetPalettes
       GetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetPalettes (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetPalettes (Palettes: PPalettes);

SetPalettes setzt einen Block von Paletteneintrgen und die Randfarbe auf
die Palettes gespeicherten Werte. Wird als Zeiger auf die Farbpalette
nil bergeben, so werden die Werte der internen Farbpalette verwendet.


 Siehe auch:





                   metagr, Page #  24   Date 22-7-1996 Monday
                                    -   25 -





       SetPalette
       GetPalette
       SetPaletteEntry
       GetPaletteEntry
       GetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetPalettes (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure GetPalettes (Palettes: PPalettes);

GetPalettes liest einen Block von Paletteneintrgen und die Randfarbe
und speichert die Werte in der ber Palettes adressierten Farbpalette.
Wird als Zeiger auf die Farbpalette nil bergeben, so werden die
gelesenen Werte in die interne Farbpalette bertragen.


 Siehe auch:


       SetPalette
       GetPalette
       SetPaletteEntry
       GetPaletteEntry
       SetPalettes

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetRGBColor (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetRGBColor (Color, R, G, B: Byte);

SetRGBColor setzt die Rot-, Grn- und Blauanteile der angegebenen Farbe
auf die in R, G und B  bergebenen Intensitten. Der zulssige
Wertebereich fr die Farbkomponenten liegt im Bereich von 0 bis 63. Bei
greren Werten werden die beiden oberen Bits ignoriert.


 Siehe auch:


       GetRGBColor
       SetRGBColorEntry
       GetRGBColorEntry
       SetRGBColors
       GetRGBColors




                   metagr, Page #  25   Date 22-7-1996 Monday
                                    -   26 -





 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetRGBColor (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure GetRGBColor (Color: Byte; var R, G, B: Byte);

GetRGBColor ermittelt die Intensitten der Farbkomponenten der angegebenen
Farbe und gibt sie zurck.


 Siehe auch:


       SetRGBColor
       SetRGBColorEntry
       GetRGBColorEntry
       SetRGBColors
       GetRGBColors

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetRGBColorEntry (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetRGBColorEntry (Color, R, G, B: Byte);

SetRGBColorEntry setzt die Farbkomponenten der angegebenen Farbe in der
internen Farbpalette.


 Siehe auch:


       SetRGBColor
       GetRGBColor
       GetRGBColorEntry
       SetRGBColors
       GetRGBColors

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetRGBColorEntry (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure GetRGBColorEntry (Color: Byte; var R, G, B: Byte);




                   metagr, Page #  26   Date 22-7-1996 Monday
                                    -   27 -





GetRGBColorEntry ermittelt die Farbkomponenten der angegebenen Farbe und
gibt sie zurck.


 Siehe auch:


       SetRGBColor
       GetRGBColor
       SetRGBColorEntry
       SetRGBColors
       GetRGBColors

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetRGBColors (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetRGBColors (Colors: PColors; Start, Count: Byte);

SetRGBColors setzt einen Block von Farbregistern. Ab der in Start
angegebenen Farbnummer werden die Farbkomponenten von Count+1 Farben
mit neuen Werten belegt. Dabei werden die Werte fr die einzelnen
Farbkomponenten aus dem mit Colors zugewiesenen Speicherbereich
ausgelesen. Wird als Adresse der Farbtabelle nil bergebn, so werden
die Farbwerte aus der internen Farbtabelle entnommen.


 Siehe auch:


       SetRGBColor
       GetRGBColor
       SetRGBColorEntry
       GetRGBColorEntry
       GetRGBColors

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetRGBColors (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure GetRGBColors (Colors: PColors; Start, Count: Byte);

GetRGBColors ermittelt die Farbkomponenten fr einen Block von Farbregistern
und bertrgt diese in den ber Colors angegebenen Speicherbereich.
Ab der ber Start angegebenen Farbregisternummer werden Count+1
Register gelesen. Wird als Adresse der Farbtabelle nil bergeben, so
werden die Werte in die interne Farbtabelle bertragen.




                   metagr, Page #  27   Date 22-7-1996 Monday
                                    -   28 -






 Siehe auch:


       SetRGBColor
       GetRGBColor
       SetRGBColorEntry
       GetRGBColorEntry
       SetRGBColors

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

SetBorder (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetBorder;

SetBorder setzt die Randfarbe des Bildschirms auf den in Color
bergebene Farbe.


 Siehe auch:


       GetBorder

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

GetBorder (Funktion) (Unit Metagr)
 

 Deklaration:
Function GetBorder: Byte;

GetBorder ermittelt die Randfarbe und gibt sie als Ergebnis zurck.


 Siehe auch:


       SetBorder

 Weitere Informationen:


       Einstellungen
       Konstanten
       Datentypen

Zeichenkontrollroutinen (bersicht)
 
Unter Zeichenkontrollroutinen werden im folgenden all diejenigen Routinen
zusammengefat, mit denen sich das Aussehen von Grafikelementen einstellen



                   metagr, Page #  28   Date 22-7-1996 Monday
                                    -   29 -





lt.

 Dazu zhlen die folgenden Routinen:


       SetColor
       SetFillColor
       SetColors
       SetFillStyle
       SetFillPattern
       SetLineStyle
       SetWriteMode

 Siehe auch:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


SetColor (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetColor (Color: Byte);

SetColor setzt die aktuelle Zeichenfarbe. Diese Farbe wird fr alle
linienbasierten Zeichenfunktionen wie Linie, Rechteck, Kreis und als
Randfarbe fr umrandete Zeichenobjekte wie gefllte Kreise verwendet.


 Siehe auch:


       SetColors
       SetFillColor

 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


SetFillColor (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetFillColor (Color: Byte);

SetFillColor legt die Farbe fest, die zum Fllen von Grafikelementen
verwendet werden soll. Das Fllmuster wird bei einem Aufruf von SetFillColor
nicht verndert.


 Siehe auch:


       SetColor
       SetColors




                   metagr, Page #  29   Date 22-7-1996 Monday
                                    -   30 -





 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


SetColors (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetColors (Color, FillColor: Byte);

SetColors setzt die Zeichen- und die Fllfarbe gleichzeitig. Dadurch kann
die Farbgestaltung von gefllten, umrandeten Zeichenelemeten wie z.B. von
gefllten Kreisen in einem Zug vorgenommen werden.


 Siehe auch:


       SetColor
       SetFillColor

 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


SetFillStyle (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetFillStyle (FillStyle, Color: Byte);

SetFillStyle whlt das Fllmuster mit der in FillStyle angegebenen Nummer
aus und setzt die Fllfarbe auf den in Color bergebenen Wert. Zustzlich
zu den standardisierten Fllmustern 0 bis 11 stehen auch noch die Fllmuster
12 bis 15 fr benutzerdefinierte Muster zur Verfgung. Alle 16 Fllmuster
lassen sich ber SetFillPattern neu definieren.


 Siehe auch:


       SetFillColor
       SetColors

 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


SetFillPattern (Prozedur) (Unit MetaGr)
 




                   metagr, Page #  30   Date 22-7-1996 Monday
                                    -   31 -





 Deklaration:
SetFillPattern (Pattern: Byte; FillPattern: TFillPatternType);

SetFillPattern definiert das Fllmuster mit der in Pattern angegebenen
Nummer neu. Dafr wird das in FillPattern bergebene Fllmuster kopiert.


 Siehe auch:


       SetFillStyle

 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung
       Datentypen


SetLineStyle (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetLineStyle (LineStyle, Pattern, Thickness: Word);

SetLineStyle legt das Aussehen der Linien fest. Als LineStyle knnen die
vier vordefinierten Linienstile 0 bis 3 oder eine selbstdefinierter Linienstil
verwendet werden. Wird fr LineStyle ein Wert grer als 3 bergeben, so
wird die Linie mit dem in Pattern bergebenen Muster gezeichnet.
Gleichzeitig wird die Dicke der Linie festgelegt. Fr die Dicke der Linie
gibt es keine Begrenzung, d.h. die Linie kann beliebige gerad- und
ungeradzahlige Dicken annehmen.

 Weitere Informationen:


       Konstanten
       Zeichenfunktionen
       Ausgabesteuerung


Ausgabesteuerungsroutinen (bersicht)
 

Unter der Rubrik Ausgabesteuerungsroutinen sind all diejenigen Routinen
aufgefhrt, die das Verhalten der Ausgaberoutinen beeinflussen.

 Im einzelnen sind dies:


       SetMetaState
       SetSingleMS
       ClearSingleMS
       SetWriteMode
       SelectGDriver
       SetColorMode
       SetSF
       AssignVideoSeg

 Siehe auch:




                   metagr, Page #  31   Date 22-7-1996 Monday
                                    -   32 -






       Konstanten


SetMetaState (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetMetaState (State: Word);

SetMetaState bestimmt den Aufzeichnungs- und Zeichenmodus. Wird das Flag
ms_Draw gesetzt, so wird eine Zeichenaktion beim Aufruf der
Zeichenfunktion ausgefhrt. Wird das Flag ms_Record gesetzt, so wird
beim Aufruf der Zeichenfunktion der Funktionsaufruf nur gespeichert. Das Flag
ms_Draw wird in diesem Fall ignoriert. Die Aufzeichnung ist unabhngig
von der momentan gewhlten Auflsung, der Farbtiefe und dem gewhlten
Verknpfungsmodus. Jedoch werden auch die hierfr verantwortlichen Routinen
im Metafile gespeichert. Grafiken knnen somit auch schon vor der
Initialisierung eines Grafikmodus im Speicher erzeugt werden.
Werden die BGI-Zeichenroutinen parallel zu den MetaGraph-Routinen benutzt,
so sollte das Flag ms_BGI gesetzt werden. Dadurch wird sichergestellt,
da die, durch die BGI-Routinen vorausgesetzten Einstellungen der
VGA-Register nach der Wiedergabe wiederhergestellt werden.


 Siehe auch:


       SetSingleMS
       ClearSingleMS
       ms_xxxx Konstanten


SetSingleMS (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetSingleMS (State: Word);

SetSingleMS setzt ein oder mehrere in State angegebene ms_xxxx
Flags. Dabei werden alle sonstigen Flags nicht verndert.


 Siehe auch:


       SetMetaState
       ClearSingleMS
       ms_xxxx Konstanten


ClearSingleMS (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure ClearSingleMS (State: Word);

ClearSingleMS lscht ein oder mehrere in State angegebene ms_xxxx
Flags. Die sonstigen Flags werden nicht verndert.


 Siehe auch:




                   metagr, Page #  32   Date 22-7-1996 Monday
                                    -   33 -






       SetMetaState
       SetSingleMS
       ms_xxxx Konstanten


SetWriteMode (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetWriteMode (Mode: Word);

SetWriteMode erlaubt die Auswahl eines Verknpfungsmodus, d.h. einer
logischen Funktion fr die Verknpfung der Bildschirmdaten mit den neu
zu schreibenen Bildinformationen. Als logische Funktionen stehen
NormalPut (berschreiben), ANDPut (Und-Verknpfung),
ORPut (Oder-Verknpfung) und XORPut (Entweder-Oder-Verknpfung)
zur Verfgung.


 Siehe auch:


       SetColorMode
       SelectGDriver
       Writemode Konstanten


SelectGDriver (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SelectGDriver (ColorMode, WriteMode: Word);

SelectGDriver selektiert einen Satz von Zeichenfunktionen fr die durch
ColorMode angegebene Farbtiefe und den durch WriteMode ausgewhlten
Verknpfungsmodus. Als Werte fr ColorMode sind cm0 (kein oder ein
nicht untersttzter Grafikmodus), cm16 (16-farbige, plain-basierte Modi)
und cm256 (256-farbige, lineare Modi) gltig. Fr WriteMode gelten die
normalen Verknpfungsmodi NormalPut, ANDPut, ORPut,
XORPut. Alle Einstellungen wie Zeichenfarbe, Fllfarbe, Linienstil usw.
bleiben dabei erhalten. Eine Umschaltung ist auch vor der Wiedergabe eines
Metafiles mglich, d.h. ein in einem Modus aufgezeichnetes Metafile kann in
verschiedenen anderen Modi wiedergegeben werden. Dabei ist zu beachten, da
die SelectGDriver-Aufrufe ebenfalls im Metafile gespeichert werden. Soll das
Metafile unter verschiedenen Bedingungen wiedergegeben werden, so darf das
Metafiling erst nach dem Setzen des Grafik-/Schreibmodus aktiviert werden,
und mu vor dem Umschalten auf einen anderen Grafik-/Schreibmodus deaktiviert
werden. Grundstzlich sollte man aber auf den direkten Aufruf von
SelectGDriver verzichten, da der Aufruf sowieso durch die Umschaltung des
Grafikmodus mittels SetGrMode (Unit GR) und des Schreibmodus mittels
SetWriteMode ausgelst wird und anderenfalls einige weitere,
fr die Darstellung relevante Parameter der Unit GR nicht initialisiert
werden.


 Siehe auch:


       SetWriteMode



                   metagr, Page #  33   Date 22-7-1996 Monday
                                    -   34 -





       SetColorMode
       Writemode Konstanten
       Colormode Konstanten


SetColorMode (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetColorMode (ColorMode: Word);

SetColorMode whlt einen Satz von Zeichenroutinen fr die in ColorMode
angegebene Farbtiefe und den aktuellen Wert des Schreibmodus aus.
Diese Funktion sollte ebenfalls nicht direkt aufgerufen werden. (Nhere
Erluterungen s. SelectGDriver)


 Siehe auch:


       SetWriteMode
       Colormode Konstanten


SetSF (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure SetSF (SF: LongInt);

SetSF setzt den fr die korrekte Bildschirmdarstellung notwendigen
Skalierungsfaktor. Diese Routine wird verwendet, um die Verzerrungen in
einigen Grafikmodi, die durch das nicht 1:1 - Darstellungsverhltnis
ausgelst werden, zu kompensieren. Im allgemeinen werden die bentigten Werte
automatisch nach der Aktivierung des Grafikmodus gesetzt. Der angegebene
Wert ist ein 32bit Wert. Ein Wert von 10000h entspricht einem
Darstellungsverhltnis von 1:1. Kleinere Werte stauchen die Darstellung
(z.B. von Kreisen) in y-Richtung.


 Weitere Informationen:


         Ausgabesteuerung


AssignVideoSeg (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure AssignVideoSeg;

AssignVideoSeg sorgt fr die Zuweisung des aktuellen Video-Datensegments an
das FS-Segmentregister. Fr die Beschleunigung der Darstellung von
Einzelpunkten (speziell im Protected Mode) wird auf den VGA-Speicher ber ein
konstantes FS-Segmentregister zugegriffen, da das Laden eines Segmentregisters
z.T. sehr viel Zeit in Anspruch nimmt. Wird das FS-Register jedoch seitens der
Anwendung benutzt, so sollte es gesichert und wiederhergestellt werden.
Die Wiederherstellung kann auch ber einer Aufruf von AssignVideoSeg erfolgen.

 Weitere Informationen:





                   metagr, Page #  34   Date 22-7-1996 Monday
                                    -   35 -





         Ausgabesteuerung


Synchronisationsroutinen (bersicht)
 

Speziell fr die Erzeugung von ruckel- und flimmerfreien Animationen ist es
wichtig, den Bildaufbau mit der Darstellung des Monitorbildes zu
synchronisieren. Hierbei gibt es verschiedene Ansatzpunkte.

Fr die Manipulation von Farb- und Palettenregistern sollte man immer auf
eine horizontalen oder vertikalen Rcklauf des Kathodenstrahl warten. Bei
der bertragung von Bildinformationen z.B. aus dem Hauptspeicher in den
Video-RAM sollten neue Daten immer oberhalb der aktuellen Position oder
whrend eines vertikalen Rcklaufes (Retrace) des Kathodenstrahls geschrieben
werden. Hierfr stellt MetaGraph eine Reihe verschiedener Routinen bereit,
die im folgenden aufgelistet sind.

       WaitHRetrace
       WaitVRetrace
       WaitDispEnable
       WaitDispDisable
       DispState
       WaitHLine
       VRetrace

WaitHRetrace (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure WaitHRetrace;

WaitHRetrace wartet bis ein neuer horizontaler Strahlenrcklauf des
Kathodenstahls des Monitors erfolgt. Sollte gerade ein horizontaler Rcklauf
(Retrace) im Gange sein, so wird bis zum Beginn des nchsten gewartet.


 Siehe auch:


       WaitVRetrace
       WaitDispEnable
       WaitDispDisable
       DispState
       WaitHLine
       VRetrace


WaitVRetrace (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure WaitVRetrace;

WaitVRetrace wartet bis ein neuer vertikaler Strahlenrcklauf des
Kathodenstahls der Monitors erfolgt. Ist gerade ein vertikaler Rcklauf im
Gange, so wird bis zum Beginn des nchsten Rcklaufes gewartet. Da der
vertikale Retrace wesentlich lnger dauert als der horizontale und nach ihm
die Darstellung eines neuen Bildes beginnt, eignet er sich besonders fr die



                   metagr, Page #  35   Date 22-7-1996 Monday
                                    -   36 -





Synchronisationen von Animationen.


 Siehe auch:


       WaitHRetrace
       WaitDispEnable
       WaitDispDisable
       DispState
       WaitHLine
       VRetrace


WaitDispEnable (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure WaitDispEnable;

WaitDispEnable warte, bis der Kathodenstahldes Monitors aktiv ist, d.h.
das Bild auf dem Monitor dargestellt wird.


 Siehe auch:


       WaitHRetrace
       WaitVRetrace
       WaitDispDisable
       DispState
       WaitHLine
       VRetrace


WaitDispDisable (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure WaitDispDisable;

WaitDispDisable warte, bis der Kathodenstrahl des Monitors inaktiv ist,
was whrend eines horizontalen oder vertikalen Retrace der Fall ist.


 Siehe auch:


       WaitHRetrace
       WaitVRetrace
       WaitDispEnable
       DispState
       WaitHLine
       VRetrace


DispState (Funktion) (Unit MetaGr)
 

 Deklaration:
Function DispState: Word;

DispState liefert als Ergebnis 0 zurck, solange der Kathodenstrahl des



                   metagr, Page #  36   Date 22-7-1996 Monday
                                    -   37 -





Monitors aktiv ist. Ist er inaktiv, so wird 1 als Ergebnis zurckgegeben.


 Siehe auch:


       WaitHRetrace
       WaitVRetrace
       WaitDispEnable
       WaitDispDisable
       WaitHLine
       VRetrace


WaitHLine (Prozedur) (Unit MetaGr)
 

 Deklaration:
Procedure WaitHLine (Line: Word);

WaitHLine wartet, bis der Kathodenstrahl der mit Line gewhlte
Bildschirmzeile vollstndig dargestellt hat. Diese Prozedur eigent sich
besonders zur Synchronisation der Darstellung von Sprites oder fr die
bertragung grerer Informationsmenge in den sichbaren Video-RAM, da die
bertragung der Informationen fr das neue Bild schon whrend der Darstellung
des alten Bildes beginnen kann. Dadurch steht fr die bertragung deutlich
mehr Zeit zur Verfgung als nur whrend des vertikalen Strahlenrcklaufs.
Die bertragung der Daten sollte bis zum Ende des, auf die Darstellung des
alten Bildes, folgenden vertikalen Retrace beendet sein, da WaitHLine sonst
nicht den Beginn der ersten Zeile ermitteln kann und somit die Zeit whrend
der Darstellung eines Monitorbildes verlorengeht.


 Siehe auch:


       WaitHRetrace
       WaitVRetrace
       WaitDispEnable
       WaitDispDisable
       DispState
       VRetrace


VRetrace (Funktion) (Unit MetaGr)
 

 Deklaration:
Function VRetrace: Boolean;

VRetrace liefert als ergebnis true zurck, wenn gerade ein vertikaler
Strahlenrcklauf erfolgt, sonst wird als Ergenbis false zurckgegeben.


 Siehe auch:


       WaitHRetrace
       WaitVRetrace
       WaitDispEnable
       WaitDispDisable



                   metagr, Page #  37   Date 22-7-1996 Monday
                                    -   38 -





       DispState
       WaitHLine


Sonstige Funktionen (bersicht)
 

MetaGraph stellt folgende, nicht weiter einordbaren Funktionen zur Verfgung:

       LastError
       ChMetaParams
       ErrorCode

LastError (Funktion) (Unit MetaGr)
 

 Deklaration:
Function LastError: Word;

LastError gibt den Fehlercode des zuletzt aufgetretenen Fehlers als
Funktionsergebnis zurck. Treten mehrere Fehler nacheinander auf, so
wird immer nur der letzte Fehler gespeichert. Trat seit dem letzten
Aufruf von LastError kein weiterer Fehler auf, so wird als Fehlercode
me_NoError zurckgegeben.


 Siehe auch:


       LastMetaError
       me_xxxx Fehlercodes

 Weitere Informationen:


       Fehlerbehandlung

ErrorCode (Funktionsmacro) (Unit MetaGr)
 

 Deklaration:
Function ErrorCode: Word;

ErrorCode ist ein INLINE-Macro, das das AX-Regsiter als Wert zurckgibt.
Es ermglicht die Erstellung von hochsprachlichen Fehlerbehandlungsroutinen
ohne die Nutzung des integrierten Assemblers.


 Siehe auch:


       me_xxxx Fehlerkonstanten

 Weitere Informationen:


       Fehlerbehandlung


ChMetaParams (Funktion) (Unit MetaGr)
 




                   metagr, Page #  38   Date 22-7-1996 Monday
                                    -   39 -





 Deklaration:
Function ChMetaParams (Cmd: Word; var Buf): Word;

ChMetaParame dient als Schnittstelle zu anderen Units ber den
Benachrichtigungsmechanismus der Unit GR. Dadurch wird es anderen Units
mglich, Darstellungsvernderungen, wie Farb- oder Fllmustereinstellungen,
vorzunehmen, ohne dabei direkt auf die Routinen des jeweilig installierten
Grafikpakets zugreifen zu mssen. Auch ist es mglich mehrere verschiedene,
voneinander vllig unabhngige Grafikpakete gleichzeitig zu installieren
und ber diese Benachritigungskette zu synchronisieren, insofern die
einzelnen Pakete diese Benachrichtigung auch untersttzen.

Datentypen
 
 MetaGraph stellt folgende Datentypen bereit:


       TMetaBuffer
       TErrorProc
       TColors
       TPalettes
       TFillPattern

TMetaBuffer (Unit MetaGr)
 

 Deklaration:

       Type
         PMetaBuffer = ^TMetaBuffer;
         TMetaBuffer = Record
           Size: Word;
           Count: Word;
           Top: Word;
           Free: Word;
           Data: Array [0..0] of Word;
         End;


TMetaBuffer definiert die Struktur eines Metafiles. Der Record besteht aus
zwei Teilen. Der erste Teil (Size, Count, Top, Free)
enthlt die Status- und Verwaltungsinformationen des Metafiles. Der zweite
Teil (Data) enthlt die eigentlichen Zeicheninformationen, d.h. die
Zeichenaufrufe und Parameter der Routinen. Im einzelnen haben die
Statusinformationen folgende Bedeutungen. Size enthlt die Gre des
eigentlichen Metafiles, d.h. die wirkliche Menge des, fr die Aufzeichnung
zur Verfgung stehenden, Speichers. Count dient eher als statistisches
Hilfsmittel. In Count wird die Anzahl der gespeicherten Aufrufe
gespeichert. Top enthlt den Adreoffset fr die nchste freie
Speicherstelle im Metafile. Free speichert die Gre des noch freien
Speichers im Metafile.

 Weitere Informationen:


       Metafile Routinen
       Arbeiten mit dem Metafile





                   metagr, Page #  39   Date 22-7-1996 Monday
                                    -   40 -





TErrorProc (Unit MetaGr)
 

 Deklaration:

       Type
         TErrorProc = Procedure;


TErrorProc definiert den Typ fr nutzerdefinierte Fehlerbehandlungsroutinen.
Soll eine eigene Fehlerbehandlung installiert werden, so mu die
entsprechende Routine vom Typ TErrorProc und FAR-kodiert sein.

 Weitere Informationen:


       Fehlerbehandlung


TColors (Unit MetaGr)
 

 Deklaration:

       Type
         PColors = ^TColors;
         TColors = Array[0..255,1..3] of Byte;


TColors beinhaltet die Farbkomponenten einer 256-farbigen Farbpalette.
Dabei enthlt [x,1] die rote, [x,2] die grne und [x,3] die blaue Komponente
der Farbe Nummer x.

 Siehe auch:


       SetRGBColors
       GetRGBColors
       Farb- und Palettenfunktionen


TPalettes (Unit MetaGr)
 

 Deklaration:

       Type
         PPalettes = ^TPalettes;
         TPalettes = Array[0..16] of Byte;


TPalettes beinhaltet die Informationen einer Farbpalette mit 16
Paletteneintrgen und einer Randfarbe. Als Index auf einen Eintrag in der
Farbpalette kann eine der Farbkonstanten verwendet werden. Der Paletteneintrag
fr die Randfarbe ist durch die Konstante Border bestimmt.

 Siehe auch:


       SetPalettes



                   metagr, Page #  40   Date 22-7-1996 Monday
                                    -   41 -





       GetPalettes
       Farb- und Palettenfunktionen


TFillPattern (Unit MetaGr)
 

 Deklaration:

       Type
         TFillPattern = Array[1..8] of Byte;


TFillPattern speichert ein 8x8 Fllmuster.

 Siehe auch:


       SetFillPattern
       Zeichenkontrollroutinen


MetaGraph Konstanten (bersicht)
 
Fr die bersichtlichere und vereinfachte Arbeit mit den Prozeduren und
Funktionen stellt MetaGraph verschiedene Konstanten bereit.

       Metafile Fehlercodes
       Metafile Speicherbedarf
       Metafile Statusflags
       MetaGraph Pointer-Qualitten
       Colormode-Konstanten
       Writemode-Konstanten
       Farbkonstanten
       Linienarten
       Fllmuster

 Siehe auch:


       Zeichenfunktionen
       Metafile Routinen
       Einstellungen
       Ausgabesteuerung
       Farb- und Palettenfunktionen

Metafile Fehlercodes (Unit MetaGr)
 

 Deklaration:

       Const
         me_NoError = 0;
         me_Init    = 1;
         me_Buffer  = 2;
         me_Full    = 3;
         me_Stack   = 4;
         me_Memory  = 5;



                   metagr, Page #  41   Date 22-7-1996 Monday
                                    -   42 -







Tritt ein Fehler auf, so wird der entsprechende Fehlercode gespeichert und
kann ber LastError ermittelt werden. Ist eine eigene
Fehlerbehandlungsroutine in ErrorProc installiert, so wird diese unter
Angabe des Fehlercodes im AX-Register aufgerufen, sobald ein Fehler auftritt.
Dabei kann man zwischen leichten und schwerwiegenden Fehlern unterscheiden.
Wird der Fehlercode me_Init oder me_Memory bergeben, so ist dies
ein Zeichen dafr, da der zur Verfgung stehende Speicher erschpft ist. In
dieser Situation sollte von der Nutzung der Metafile-Funktionen abgesehen
werden, wenn eine Erhhung des freien Speichers nicht ohne weiters mglich
ist. Der Fehler me_Stack tritt auf, wenn versucht wird, vor der
Initialisierung des internen Stacks mittels InitMetaGr,
Funktionen aufzuzeichnen. Hier hilft einfach der Aufruf von InitMetaGr und
anschliessende Wiederholung des Aufzeichnungsversuches. Tritt beim Aufruf von
InitMetaGr ein Fehler auf, so wird der Fehler me_Init ausgelst. Hier
hilft nur, mehr Hauptspeicher freizumachen. Der Fehler me_Buffer wird
ausgelst, wenn man versucht, eine Funktion aufzuzeichnen, solange noch kein
Metafile ber SetBuffer selektiert wurde oder das aktive Metafile
ber FreeBuffer freigegeben wurde. Hier hilft ein einfacher
Aufruf von SetBuffer unter Angabe eines gltigen Metafiles.


 Siehe auch:


       LastError
       LastMetaError
       ErrorCode

 Weitere Informationen:


       Metafile Routinen
       Nutzung des Metafiles
       Fehlerbehandlung

Metafile Speicherbedarf
 

 Deklaration:

       Const
         mu_Bar           = 10;
         mu_Circle        =  8;
         mu_FillCircle    =  8;
         mu_HoriLine      =  8;
         mu_Line          = 10;
         mu_LineRel       = 10;
         mu_LineTo        = 10;
         mu_PutPixel      =  8;
         mu_Rectangle     = 32;
         mu_SelectGDriver =  2;
         mu_SetColor      =  6;
         mu_SetColormode  =  2;
         mu_SetColors     = 10;
         mu_SetFillColor  =  6;



                   metagr, Page #  42   Date 22-7-1996 Monday
                                    -   43 -





         mu_SetFillStyle  =  8;
         mu_SetLineStyle  =  6;
         mu_SetWriteMode  =  2;
         mu_VertLine      =  8;



Jede im Metafile gespeicherte Routine verbraucht eine bestimmte Menge des
Speichers. Sollen komplexe Grafiken im Metafile gespeichert werden, so ist
es sinnvoll, vor der Speicherung ber FreeBuffer zu prfen, ob
im gewhlten Metafile noch gengend Speicher frei ist. Zur Ermittlung oder
zumindest Abschtzung des Speicherplatzbedarfs der Grafik dienen die mu_xxxx
Konstanten. Fr jede aufzuzeichnende MetaGraph-Routine existiert eine
Konstante fr den Speicherplatzbedarf. Mit der Anzahl der Aufrufe
multipliziert erhlt man den notwendigen freien Speicher. Steht die Anzahl
der Aufrufe nicht genau fest, so sollte immer der schlechteste Fall, d.h.
die grtmgliche Anzahl, angenommen werden, um ganz sicher gehen zu knnen.


 Siehe auch:


       GetBuffer
       FullBuffer

 Weitere Informationen:


       Zeichenfunktionen
       Metafile Routinen
       Nutzung des Metafiles


Metafile Statusflags
 

 Deklaration:

       Const
         ms_Draw       = 1;
         ms_Record     = 2;
         ms_BGI        = 4;
         ms_Execute    = 8;


Die ms_xxxx Flags knnen ber SetMetaState, SetSingleMS
und ClearSingleMS gesetzt und gelscht werden, um dadurch
das Verhalten der Metafilefunktionen und Zeichenroutinen zu steuern. Ein
gesetztes ms_Draw Flag aktiviert das Ausfhren von Zeichenoperationen
beim Aufruf der Zeichenroutinen. Ist das Flag ms_Record gesetzt, so wird
ms_Draw ignoriert und die Funktionsaufrufe werden nur gespeichert. Bei der
Wiedergabe eines Metafiles durch DrawBuffer wird das Flag
ms_Draw automatisch gesetzt und ms_Record gelscht, da sich sonst
das Metafile selbst berschreiben wrde, was unweigerlich zu einem
Programmabsturz fhrt. Ist das Flag ms_BGI gesetzt, so wird vor jedem
Aufruf einer Zeichenfunktion der Zustand der VGA-Register gespeichert und
nach der Ausfhrung wiederhergestellt. Da diese Speicherung einiges an



                   metagr, Page #  43   Date 22-7-1996 Monday
                                    -   44 -





Zeit verbraucht, sollt das Flag nur gesetzt werden, wenn MetaGraph- und
BGI-Routinen gleichzeitig nebeneinander verwendet werden. Wird ber einen
lngeren Zeitraum nur eines der beiden Pakete im Programm genutzt, so
empfiehlt sich die manuelle Speicherung und Wiederherstellung der
VGA-Regsiter mitttels SaveRegs und RestoreRegs aus der Unit GR vor
und nach der Benutzung der BGI-Routinen. Aus Zeitgrnden wird die
Speicherung und Wiederherstellung der VGA-Register bei der Wiedergabe von
Metafiles nur vor der ersten und nach der letzten Zeichenoperation
vorgenommen.

Die Flags ms_Execute und ms_Redraw sind fr die Zusammenarbeit mit
den ber SaveExt gespeicherten Routinen vorgesehen. Hierbei gibt
ms_Execute an, da der funktionelle Teil der aufgerufenen Routinen
ausgefhrt werden soll. Diese Flag wird nicht automatisch beim Aufruf von
DrawBuffer gesetz. Das Flag ms_Redraw dagegen wird automatisch durch
DrawBuffer gesetzt. Hieran kann eine externe Funktion erkennen, ob sie gerade
aus dem Metafile heraus aufgerufen wurde. Diese Flag sollte speziell in
externen Routinen beachtet werden, die ihrerseits BGI- und
MetaGraph-Zeichenfunktionen aufrufen, da sie bei gesetztem ms_Redraw
Flag vor den MetaGraph-Routinen ein SaveRegs und danach ein RestoreRegs
aufrufen sollten. Um eine reibungslose Zusammenarbeit aller Programmmodule
zu gewhrleisten sollten diese Richtlinien unbedingt beachtet werden.


 Weitere Informationen:


       Nutzung des Metafiles
       Speicherung externer Funktionen
       Metafile Routinen


MetaGraph Pointer-Qualitten
 

 Deklaration:

       Const
         qMetaLine     = 100;
         qChMetaParams = 100;
         qMetaExtSave  = 100;


Fr die Koordinierung des Einsatzes mehrere Grafikpakete wurde in der Unit Gr
das Pointer-Qualitts Konzept implementiert. Hierdurch ist es anderen Units,
die auf einzelne wenige Grafikfunktionen angewiesen sind (z.B. MyFonts auf
die Linie-Funktion), mglich, ohne Kenntnis des installierten Grafikpaketes
diese Funktion zu nutzen. Durch die Pointer-Qualitten wird auch die
Anordnung der Units in der Uses-Liste des Programms bedeutungslos, da das
jeweilige Grafikpaket seine Funktionen installiert, insofern noch keine
hherwertige Funktion installiert ist. Nhere Informationen finden sich in
der Dokumentation der Unit Gr.

Colormode-Konstanten (Unit MetaGr)
 




                   metagr, Page #  44   Date 22-7-1996 Monday
                                    -   45 -





 Deklaration:

       Const
         cm16  = 1;
         cm256 = 2;
         cm0   = 4;


ber SetColorMode kann ein Satz Zeichenroutinen fr eine
bestimmte Farbtiefe gewhlt werden. Dabei sollte genau eine der o.a.
Konstanten verwendet werden. Dabei steht cm16 fr die 16-farbigen,
plain-basierten, cm256 fr die linearen, 256-farbigen und cm0 fr alle anderen
bzw. nicht untersttzten Grafikmodi.


 Weitere Informationen:


       Ausgabesteuerung


Writemode-Konstanten (Unit MetaGr)
 

 Deklaration:

       Const
         NormalPut = 0;      berschreiben
         CopyPut   = 0;      berschreiben
         XORPut    = 1;      Entweder-Oder-Verknpfung
         ORPut     = 2;      Oder-Verknpfung
         ANDPut    = 3;      Und-Verknpfung


Die Writemode-Konstanten knnen zur Auswahl einer logischen Verknpfung ber
SetWriteMode verwendet werden.


 Siehe auch:


       SetWriteMode
       SelectGDriver

 Weitere Informationen:


       Einstellungen


Farbkonstanten (Unit MetaGr)
 

 Deklaration:

       Const
         Black        =  0;
         Blue         =  1;
         Green        =  2;
         Cyan         =  3;



                   metagr, Page #  45   Date 22-7-1996 Monday
                                    -   46 -





         Red          =  4;
         Magenta      =  5;
         Brown        =  6;
         LightGray    =  7;
         DarkGray     =  8;
         LightBlue    =  9;
         LightGreen   = 10;
         LightCyan    = 11;
         LightRed     = 12;
         LightMagenta = 13;
         Yellow       = 14;
         White        = 15;
         Border	      = 16;


MetaGraph definiert Farbkonstanten fr die ersten 16 Paletteneintrge und
die Randfarbe. Sie entsprechen den voreingestellten Farben in den 16-farbigen
Grafikmodi. Die Konstante Border dient nur der Angabe des Paletteneintrages
fr die Randfarbe beim Aufruf von SetPaletteEntry oder
GetPaletteEntry.

 Siehe auch:


       SetColor
       SetFillColor
       SetColors

 Weitere Informationen:


       Einstellungen


Linienarten und -dicken
 

Liniearten:

 Deklaration:

       Const
         SolidLn   = 0;
         DottedLn  = 1;
         CenterLn  = 2;
         DashedLn  = 3;
         UserBitLn = 4;


Liniendicken:

 Deklaration:

       Const
         NormWidth  = 1;
         ThickWidth = 3;





                   metagr, Page #  46   Date 22-7-1996 Monday
                                    -   47 -





Die o.a. Konstanten knnen beim Aufruf der Prozedur SetLineStyle
als Parameter verwendet werden. Die Konstanten fr die Liniendicke wurden nur
aus Kompatibilittsgrnden zur Unit Graph implementiert, da MetaGraph beliebig
dicke Linien untersttzt.


 Siehe auch:


       SetLineStyle

 Weitere Informationen:


       Einstellungen


Fllmuster Konstanten (Unit MetaGr)
 

Fr die Verwendung von Fllmustern definiert MetaGraph folgende Konstanten.

 Deklaration:

       Const
         EmptyFill      = 0;
         SolidFill      = 1;
         LineFill       = 2;
         LtSlashFill    = 3;
         SlashFill      = 4;
         BkSlashFill    = 5;
         LtBkSlashFill  = 6;
         HatchFill      = 7;
         XHatchFill     = 8;
         InterleaveFill = 9;
         WideDotFill    = 10;
         CloseDotFill   = 11;
         UserFill       = 12;


Die Fllmuster-Konstanten knnen beim Aufruf von SetFillStyle
als Parameter verwendet werden.

MetaGraph Beispielprogramme
 

Die folgende Liste gibt einen berblick ber die in der Dokumentation
enthaltenen einfachen Beispielprogramme. Sie demonstrieren die grundsetzliche
Vorgehensweise bei der Nutzung der MetaGraph Routinen.

 Beispielprogramme:


       PutPixel  Demo
       PutPixel / GetPixel Demo
       HoriLine Demo
       VertLine Demo
       Line Demo



                   metagr, Page #  47   Date 22-7-1996 Monday
                                    -   48 -





       MoveTo / LineTo Demo
       MoveRel / LineRel Demo
       Rectangle / Bar Demo
       Circle / FillCircle Demo
       Paletten Demo
       RGB-Farben Demo
       Metafile Demo
       Cooper Demo


PutPixel Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw some pixel }
  repeat
    PutPixel (Random(SizeX), Random(SizeY), Random(16));
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       PutPixel


GetPixel Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Var x,y: Integer;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw some pixel on left screen half }
  For x:=0 to SizeX div 2 do
    For y:=0 to SizeY do PutPixel(x,y, x*y);

  { get random pixel and redraw them on right screen half }
  repeat



                   metagr, Page #  48   Date 22-7-1996 Monday
                                    -   49 -





    x:=Random(SizeX div 2);
    y:=Random(SizeY);
    PutPixel(x+SizeX div 2,y, GetPixel(x,y));
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       PutPixel
       GetPixel


HoriLine Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw some horizontal lines with random colors }
  repeat
    Setcolor (Random(GetMaxColor));
    HoriLine (Random(SizeX), Random(SizeY), Random(SizeX));
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       HoriLine
       SetColor


VertLine Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw some vertical lines with random colors }



                   metagr, Page #  49   Date 22-7-1996 Monday
                                    -   50 -





  repeat
    SetColor (Random(GetMaxColor));
    VertLine (Random(SizeX), Random(SizeY), Random(SizeY));
  until Keypressed;

  CloseGraphics;
End.


 Siehe auch:


       VertLine
       SetColor


Line Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw some lines with random colors}
  repeat
    SetColor (Random(GetMaxColor));
    Line (Random(SizeX), Random(SizeY), Random(SizeX), Random(SizeY));
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       Line
       SetColor


MoveTo / LineTo Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  SetGrMode (gr640x480x16);
  InitGraphics;

  { move graphics cursor to random positions and draw lines
    to lower right screencorner }



                   metagr, Page #  50   Date 22-7-1996 Monday
                                    -   51 -





  repeat
    MoveTo (Random(SizeX div 4), Random(SizeY div 2));
    SetColor (Random(GetMaxColor));
    LineTo (SizeX,SizeY);
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       MoveTo
       LineTo
       SetColor


MoveRel / LineRel Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  MoveTo (150,100);
  repeat
    SetColor (Random(GetMaxColor));
    LineRel (100, 0);
    Moverel (50, 50);
    LineRel (-100, 150);
    LineRel (-100, -150);
    MoveRel (50, -50);
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       MoveRel
       LineRel
       MoveTo
       SetColor


Rectangle / Bar Beispielprogramm
 





                   metagr, Page #  51   Date 22-7-1996 Monday
                                    -   52 -





Uses Crt, Gr, MetaGr;

Var
   x, y: Integer;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw random bars and rectangles with different colors and fillstyles }
  repeat
    SetFillStyle (Random (13), Random (GetMaxColor));
    SetColor (Random (GetMaxColor));
    x:=Random (SizeX-50);
    y:=Random (SizeY-50);
    Rectangle (x, y, x+Random (50), y+Random (50));
    x:=Random (SizeX-50);
    y:=Random (SizeY-50);
    Bar (x, y, x+Random (50), y+Random (50));
  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       Rectangle
       Bar
       SetColor
       SetFillStyle


Circle / FillCircle Beispielprogramm
 


Uses Crt, Gr, MetaGr;

Var
   x, y: Integer;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { draw random circles and fillcircles with different colors
    and fillstyles }
  repeat
    SetColors (Random (GetMaxColor),Random (GetMaxColor));
    Circle (Random (SizeX), Random (SizeY), Random (50));
    FillCircle (Random (SizeX), Random (SizeY), Random (50));



                   metagr, Page #  52   Date 22-7-1996 Monday
                                    -   53 -





  until keypressed;

  CloseGraphics;
End.


 Siehe auch:


       Circle
       FillCircle
       SetColors


Beispielprogramm fr die Palettenfunktionen
 


Uses Crt, Gr, MetaGr;

Var
        i, x, y: Integer;
        a, b, c: Byte;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { save current palette }
  GetPalettes (nil);

  { draw picture}
  For i:=1 to 1000 do Begin
    x:=Random (SizeX-20);
    y:=Random (SizeY-20);
    SetFillColor (Random (16));
    Bar(x, y, x+20, y+20);
  End;

  ReadKey;

  { exchange random paletteentries }
  repeat
    a:=Random (16);
    b:=Random (16);
    c:=GetPalette (a);
    SetPalette (a, GetPalette (b));
    SetPalette (b, c);
  until keypressed;

  ReadKey;

  { restore original palette }
  SetPalettes (nil);



                   metagr, Page #  53   Date 22-7-1996 Monday
                                    -   54 -






  ReadKey;

  CloseGraphics;
End.


 Siehe auch:


       GetPalettes
       SetPalettes
       GetPalette
       SetPalette
       SetFillColor
       Bar


Beispielprogramm fr die RGB-Farbfunktionen
 


Uses Crt, Gr, MetaGr;

Var
        i, x, y: Integer;
        c, r, g, b: Byte;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { save current color values }
  GetRGBColors (nil, 0, 8);

  { draw picture}
  For i:=1 to 1000 do Begin
    x:=Random (SizeX-20);
    y:=Random (SizeY-20);
    SetFillColor (Random (15)+1);
    Bar(x, y, x+20, y+20);
  End;

  ReadKey;

  { change color values }
  Repeat
    c:=Random (7)+1;
    GetRGBColor (c, r, g, b);
    Inc (r, 3);
    Inc (g, 5);
    Inc (b, 7);
    SetRGBColor (c, r, g, b);
  Until Keypressed;



                   metagr, Page #  54   Date 22-7-1996 Monday
                                    -   55 -






  ReadKey;

  { restore original color values }
  SetRGBColors (nil, 0, 8);

  ReadKey;

  CloseGraphics;
End.


 Siehe auch:


       GetRGBColors
       SetRGBColors
       GetRGBColor
       SetRGBColor
       SetFillColor
       Bar


Metafile Beispielprogramm
 


(*****************************************************************)
(*                                                               *)
(*  MetaGraph Version 2.01 Example Program                       *)
(*                                                               *)
(*  Copyright (c) 1996 by Daniel Mahrenholz                      *)
(*                                                               *)
(*  Example 12: Metafile functions                               *)
(*****************************************************************)

Uses Crt, Gr, MetaGr;

Var
        MF: PMetaBuffer;
        i: Integer;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { initialize metafile support }
  InitMetaGr;

  { create metafile of maximum size }
  MF:=GetBuffer (MaxBufferSize);

  { select buffer for recording }
  SetBuffer (MF);



                   metagr, Page #  55   Date 22-7-1996 Monday
                                    -   56 -






  { switch recording on }
  SetMetaState (ms_Record);

  { perform drawing operations }
  for i:=1 to 50 do Begin
    SetFillColor (Random (16));
    Bar (Random (SizeX), Random (SizeY), Random (SizeX), Random (SizeY));
  End;
  for i:=1 to 100 do
    PutPixel (Random (SizeX), Random (SizeY), Random (GetMaxColor));
  for i:=1 to 50 do Begin
    SetColor (Random (16));
    Circle (Random (SizeX), Random (SizeY), Random (50));
  End;
  ReadKey;

  { switch drawing on (recording off) }
  SetMetaState (ms_Draw);

  { draw picture from metafile }
  DrawBuffer (MF);
  ReadKey;

  { release metafile memory }
  FreeBuffer (MF);

  { end metafile support and release internal used memory }
  DoneMetaGr;

  CloseGraphics;
End.


 Siehe auch:


       InitMetaGr
       DomeMetaGr
       GetBuffer
       SetBuffer
       FreeBuffer
       DrawBuffer
       SetMetaState
       ms_xxxx Konstanten
       PMetaBuffer
       SetFillColor
       SetColor
       Bar
       PutPixel
       Circle

 Weitere Informationen:


       Metafile Funktionen



                   metagr, Page #  56   Date 22-7-1996 Monday
                                    -   57 -





       Nutzung des Metafiles
       Tips und Tricks
       Fehlerbehandlung


Cooper Beispielprogramm
 

Das folgende Demo zeigt die prinzipielle Vorgehensweise bei der Erzeugung von
farbigen Balken im Hintergrund, auf Cooper-Bars genannt.


Uses Crt, Gr, MetaGr;

Var
        cm: Array[0..63] of Byte;
        i, v, l, p: Word;

Begin
  { initialize graphics mode with 640x480 resolution and 16 colors }
  SetGrMode (gr640x480x16);
  InitGraphics;

  { calculate colortable }
  For i:=1 to 64 do Begin
    v:=32+Trunc(32*Sin(128*PI/i));
    cm[i-1]:=v;
  End;

  p:=0;         { page 0 }
  Repeat
    { wait for vertical retrace }
    if not VRetrace then WaitVRetrace;

    { wait for end of 100th screenline }
    For l:=1 to 100 do Begin
      WaitDispEnable;
      WaitDispDisable;
    End;

    { change colorvalues for background color during horizontal retrace }
    for l:=100 to 400 do Begin
      v:=cm[(l+p) and 63];
      WaitHRetrace;
      SetRGBColor (0, v, v, v);
    End;

    { set background color to black }
    SetRGBColor (0, 0, 0, 0);

    { increase pagecounter }
    p:=(p+1) and 63;
  until keypressed;




                   metagr, Page #  57   Date 22-7-1996 Monday
                                    -   58 -





  SetRGBColor (0, 0, 0, 0);

  CloseGraphics;
End.


 Siehe auch:


         VRetrace
         WaitVRetrace
         WaitDispEnable
         WaitDispDisable
         SetRGBColor


 Weitere Informationen:


         Synchronisationsroutinen
         Farb- und Palettenfunktionen


Warenzeichen
 

Microsoft ist ein eingetragenes Warenzeichen der Microsoft Corp., Inc.
Windows ist ein Warenzeichen der Microsoft Corp., Inc.
Mouse Systems ist ein eingetragenes Warenzeichen der Mouse Systems Corp.
Borland ist ein eingetragenes Warenzeichen der Borland International, Inc.
Alle weiteren Warenzeichen werden ebenso anerkannt.




























                   metagr, Page #  58   Date 22-7-1996 Monday
