Sie finden hier eine 17-seitige Einführung Display PostScript und X11 mit zwei einfachen Beispielen einer DPS/X-Anwendung (pdf).
DPStranslate (context, 100.0, 100.0);Dabei gibt context den Execution Context an, in dem der PostScript-Operator ausgeführt werden soll. Das Argument "context" ist ein DPSContext, der in dpsclient.h definiert ist. Im Gegensatz zu den Funktionen mit dem Praefix PS ist das erste Argument einer DPS-Funktion immer ein DPSContext. Wenn Sie es nur mit einer einzigen Ausführungsumgebung zu tun haben, könnten (und sollen) Sie die Funktion PStranslate( ) statt DPStranslate( ) aufrufen.
Bevor eine DPS/X- oder NextStep-Anwendung eine Wrap-Definition aufrufen kann, kommt das Werkzeug PSWrap zum Einsatz. Die Umwandlung erfolgt mit dem Befehl "pswrap". Beispiel:
pswrap hitherz.psw -o hitherz.cPSWrap liest im Beispiel das File hitherz.psw und schreibt in das File hitherz.c.
XCreateWindow( ) /* bildet Drawable */Zuerst erzeugt die Xlib-Prozedur XCreateWindow() ein neues X-Fenster bzw. ein X-Drawable.
XCreateGC( ) /* bildet GC */Die Xlib-Prozedur XCreateGC() gibt die X-Ressource "Graphics Context" an, d.h. die Wiedergabeattribute, mit denen gezeichnet werden soll.
XDPSCreateSimpleContext( ) /* bildet ctxt */Nachdem Drawable und GC festgelegt sind, kann diese Prozedur nun den "Execution Context" von PostScript erzeugen. Jetzt folgt die Ereignis-Schleife (main event loop), welche alle Ereignisse behandelt:
while (TRUE)
{
XEvent event;
XNextEvent( ) /* liest naechstes Ereignis */
switch(event.type) {
case ButtonRelease:
PSitransform( ) /* konvertiert x und y */
PSWDraw( ) /* Wrap zeichnet Objekt */
}
}
Bei der Uebernahme des nächsten Ereignisses durch XNextEvent() werden die
Koordinaten des Mauszeigers im Datensatz "event record" abgelegt. Falls ein
bestimmtes Ereignis, z.B. "ButtonRelease", eintritt, wandelt die Prozedur
PSitransform() die Zeigerposition in das PostScript-Koordinatensystem
um. Schliesslich kann die Wrap-Definition an der Position des Mauszeigers
ein bestimmtes Objekt zeichnen.
PSitransform ist eine Komponente der DPS Client Library,
während PSWDraw vom Benutzer entwickelt worden ist.
Es ist typisch für eine DPS/X-Anwendung, dass PSWrap-Definitionen die grafischen Objekte beschreiben, während das C-Programm den Ablauf steuert. Dabei braucht der PostScript-Programmierer keine Rücksicht zu nehmen auf die Auflösung des Bildschirms, die vorhandenen Farben und die Schriftgrössen.
cc -ldps -lX11 -lm main.cDas Flag "-ldps" steht für die PostScript Client Library. Das Programm ist auch auf anderen Plattformen lauffähig. Auf anderen Workstations lautet der Ladeaufruf wie folgt:
cc main.c -ldps -lXext -lX11 -lmBei Solaris befinden sich die benötigten Libraries unter /usr/openwin/lib. (Zum Laden und Testen käme bei NextStep der ProjectBuilder zum Zuge.)
Als X-Server konnte früher nur eine IBM-Workstation, eine Sparc-Workstation oder eine Iris-Workstation von Silicon Graphics eingesetzt werden. Ein gewöhnlicher X-Server war nicht ausreichend -- es musste ein DPS/X-Server sein. Dies hat sich nun mit DPS-NX geändert! Der DPS-NX-Agent ermöglicht es, Display PostScript an jedem beliebigen X-Terminal zu fahren. Hat sich allerdings nicht durchgesetzt.
Communicating with Display PostScript NX software
Display PostScript NX software is a host-based program that contains the PostScript interpreter. In this case, Display PostScript is separated from the X server. Instead of being integrated with the X Window System, the software communicates with the X server in the same way an application does. This arrangement lets your Display PostScript application create high-quality fonts and graphics on any X server, including X terminals and PCX servers.
The Display PostScript NX agent is a separate process from the application. The agent contains the PostScript interpreter. It executes the PostScript language code and converts it into X drawing primitives. These drawing primitives are sent to the X server for rendering in the application window. The agent does not tie up the network by downloading large bitmaps; rather, it communicates with the X server in high-performance X protocol. The agent has characteristics of both an X server (for example, it can accept network connections, process protocol requests, and multiplex simultaneous accesses) and an X client (for example, it sends drawing requests to the X server through Xlib).
Mehrere Anwendungen können gleichzeitig den gleichen DPS-NX-Agent benutzen. Erst Display PostScript ermöglicht es letztlich, eine Vielfalt von Schriften gut leserlich am Bildschirm darstellen zu können. Besonders wichtig ist dies für Acrobat-User, die PDF-Dokumente betrachten möchten.
Adobe Systems Inc. (1992), Programming the Display PostScript System with NextStep (purple book) Addison-Wesley.
Adobe Systems Inc. (1993), Programming the Display PostScript System with X (orange book) Addison-Wesley.
Adobe Systems Inc. (1990), X Window System Programmer's Supplement to the Client Library Reference Manual, IBM SC23-2211.
Jones, Oliver (1991), Einführung in das X Window System, Carl Hanser Verlag.
Vollenweider, Peter (1992),
PostScript für Workstations -- Display PostScript usw.
Addison-Wesley.
vergriffen, out-of-print
Last update: Thursday, 11-Oct-2001 21:40:24 CEST by
vo