next up previous contents
Next: 7.3 Darstellungsmodul Up: 7 Graphikschnittstelle Previous: 7.1.2 Zusammenwirken der Graphikmodule

7.2 Geräteunabhängige Ausgabeschnittstelle

 

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.

gif

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 up previous contents
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