Next: 7.3 Darstellungsmodul
Up: 7 Graphikschnittstelle
Previous: 7.1.2 Zusammenwirken der Graphikmodule
Die Trennung der Graphikteile erfordert eine Schnittstellendefinition.
Im Gegensatz zu anderen Modulverbindungen des PED, die einmalig sind,
sollen ja auf der geräteabhängigen Seite verschiedene Treiber
eingesetzt werden können.
Da die Bildschirmausgabe den ,,Normalfall`` darstellt und im Gegensatz zur
Abspeicherung auf Festplatte oder gar zur Druckerausgabe
äußerst zeitkritisch ist, wurde die
Schnittstelle auf Zusammenarbeit mit dem XWindow-System abgestimmt,
ohne allerdings die Qualität durch Diskretisierung zu verringern.
Der Treiber für ein Ausgabegerät wird durch einen Zeiger auf eine C-Struktur
identifiziert.
Die vorderen Komponenten der Struktur sind Teil des Schnittstellenprotokolles,
dahinter können bei Bedarf private Daten des Treibers geführt werden.
Die definierten Komponenten sind Zeiger auf Funktionen, welche Konfigurations-
und Zeichenbefehle ausführen.
Die Angabe von Positionen innerhalb des Bildes erfolgt immer in
projizierten Weltkoordinaten (im Typ double der C-Programmiersprache).
Das Gerät muß sicherstellen, daß die Zeichenfunktionen den zuvor
gezeichneten Bildinhalt überschreiben. Dies ist sowohl auf
Rasterbildschirmen als auch bei SVG/Postscript-Ausgabe der Fall.
Treiber für andere Ausgabegeräte sind zur Zeit nicht implementiert.
Welchen Bereich der Weltkoordinaten die Zeichnung umfaßt,
kann zu Beginn eines
Zeichenvorganges festgelegt werden. Der Treiber ist verantwortlich
dafür, überstehende Teile des Bildes abzuschneiden.
Die Funktionen sind:
- pedOutStartProc
-
leitet das Zeichnen eines Bildes ein. Der Gerätetreiber führt eine
entsprechende Aktion aus, z.B. Löschen des Fensterinhaltes, Einziehen eines
neuen Blattes oder Öffnen einer neuen Datei und Schreiben des Dateikopfes.
Bereits eingestellte Konfigurationen, wie Bildausschnitt oder Zeichenmodi,
bleiben erhalten.
- pedOutViewportProc
-
legt den Ausschnitt in Weltkoordinaten, der vom Gerät angezeigt wird, fest.
Das Darstellungsmodul liefert typisch Werte, die auf einer Bestimmung der
Datenausdehnung beruhen oder Resultat eines Zoom-Befehles sind.
Es kann diese Werte als Vorschlag formulieren, damit das Gerät
eine Anpassung an das Verhältnis Höhe zu Breite
des Papierformates oder des Strichabstands der Skalen an die Pixel
vornehmen kann.
Die endgültige Festlegung obliegt in jedem Fall dem Darstellungsmodul.
Weiters wird mit dieser Funktion eingestellt, ob die Weltkoordinaten in
horizontaler und
vertikaler Richtung gleich oder unabhängig voneinander zu skalieren sind.
Falls in der weiteren Folge graphische Daten übergeben werden,
die den festgelegten Ausschnitt überschreiten, ist der Gerätetreiber
verantwortlich für das entsprechende Abschneiden (clippen).
Der Treiber muß Faktoren und Verschiebungen errechnen und aufheben,
um bei den folgenden Funktionen die Transformation von projizierten
Weltkoordinaten in das lokale System seines Gerätes durchführen
zu können.
- pedOutPointsProc
-
druckt einen oder mehrere Punkte an den gegebenen Weltkoordinaten.
Der Graphikmodus legt Farbe und Form der Punkte fest.
- pedOutPolylineProc
-
zeichnet ein Polygon über die angegebenen Positionen. Dieses wird nicht
implizit geschlossen. Farbe, Liniendicke und Linientyp (durchgehend,
strichliert oder punktiert) werden durch den Graphikmodus bestimmt.
- pedOutFaceProc
-
füllt das durch die Positionen definierte, implizit geschlossene Polygon.
Wählbar sind Farbe und Textur.
- pedOutCloseProc
-
beendet die momentane Zeichnung. Vor neuerlichen Zeichenbefehlen muß
wieder pedOutStartProc aufgerufen werden.
Bei Schreiben auf eine Datei ist der Aufruf dieser Funktion Anlaß,
das Schreiben zu beenden und die Datei zu schließen.
- pedOutGCFunc
-
Dies ist eine umfassende Funktion für das Definieren und Modifizieren von
Graphikmodi. Das zugrundeliegende Konzept ist stark angelehnt an die
Verwaltung von Zeichenmodi im XWindow-Systems. Mit den Zeichenfunktionen
wird jeweils auf einen Modus bezug genommen, der vorher definiert
worden sein muß. Der Gerätetreiber liest daraus die jeweiligen relevanten
Einstellungen. Die hier eingesetzte Strategie ist in Abschnitt 7.3.5 ausführlich
erklärt.
Mit dieser Funktion können verschiedene Operationen ausgelöst werden:
- gcNUM
- gibt an, wieviele Graphikmodi maximal gebraucht werden.
Das Resultat der Verwendung solcherart reservierter, aber noch nicht
mit Werten versehener Modi ist innerhalb der möglichen Parameter undefiniert.
- gcMODIFY
- definiert bzw. verändert die Eigenschaften eines
Graphikmodus.
- gcCOPY
- kopiert die Eigenschaften eines Graphikmodus
auf einen anderen
Graphikmodi können jederzeit definiert werden; bei pedOutStartProc
bleiben die bereits definierten Modi erhalten, bei pedOutCloseProc
werden sie freigegeben (gelöscht).
Next: 7.3 Darstellungsmodul
Up: 7 Graphikschnittstelle
Previous: 7.1.2 Zusammenwirken der Graphikmodule
Martin Knaipp
Wed Jun 12 15:41:33 MET DST 1996