XFree86 and DPS
: The DPS client side
Previous: Introduction
Next: The DPS server side
2. The DPS client side
The DPS client side consists of four libraries and a number of
basic tools for programming and configuration; these are all included
with XFree86.
2.1. Libraries
The libpsres library is a library for management of
PostScript resources, on-disk files representing PostScript data
structures such as fonts, font encodings, procsets, etc. It is
closely related to the makepsres tool (see
client-side tools later in this document).
The basic DPS client library is libdps. This library contains a
number of functions for connection establishment, resource management,
as well as stubs for all standard PostScript operators. Normally, all
DPS clients should link with libdps; in addition, libdps may
be used for printing by non-DPS clients (this is done, for example, by
Sun's JDK). This library is documented in [CLRM] and [CLSX].
The libdpstk library contains a number of additional utilities
for managing DPS contexts, user paths and user objects, and for
previewing EPS files. It is documented in [DPTX].
The libdpstkXm library contains four Motif widgets. The DPS
Scrolling Widget is a DPS drawing area that automatically manages
issues such as scrolling, scaling, client-side backing store,
incremental redisplay, etc. The Font Selection Box, and its
associated Font Preview, present a convenient and powerful
interface for choosing scalable fonts. Finally, the Color Picker
presents an interface for choosing colours using either of the RGB or
HSV spaces. The latter three widgets are documented in [DPTX]; some
summary Scrolling Widget documentation is available in the doc
subdirectory of the DPS.tar.gz file, available from ftp://dps.sourceforge.net/pub/dps/DPS.tar.gz.
The source code for libdpstkXm is included with XFree86; however,
as it depends on Motif, this library is not built by default.
A GTK-based library providing some of the functionality of
libdpstkXm is available from the gtkDPS site.
2.1.1. Libdps and Xt
In X11R5, libdps did not depend on libXt. In X11R6,
however, code was added to make the Xt main loop dispatch to sundry
code on DPS events; with this addition, all programs that link with
libdps need to link with libXt, whether they use Xt or not.
This state of affairs is unfortunately true of the version of
libdps included with XFree86. We are currently considering
various solutions to this problem (including the use of weak linker
symbols or splitting off the guilty functions into a separate
library).
2.2. Client-side tools
In addition to the libraries, the client side of DPS consists of two
utilities.
The makepsres utility is used for managing PostScript resources.
Its basic operation consists in walking recursively a filesystem tree,
noting all resources, and then writing out a ``Unix PostScript
Resources,'' file, basically a directory of all the resources found.
This utility is documented in the makepsres(1) manual page.
The pswrap utility is a stub generator for PostScript clients.
Roughly speaking, it takes as its input textual PostScript code, and
generates a collection of C functions that transmit that code in
pre-tokenised form to the DPS extension. Pswrap is documented in
[PSWRAP].
2.3. Sample clients
XFree86 contains three sample DPS clients, dpsinfo,
dpsexec and texteroids. They are documented in their
respective manual pages.
A number of sample clients that depend on Motif are available in ftp://dps.sourceforge.net/pub/ftp/DPS.tar.gz. Additional
sample clients can be found as part of GtkDPS (see above).
The GNUstep environment can be compiled to use DPS for
all rendering; for more information, please see the GNUstep site.
XFree86 and DPS
: The DPS client side
Previous: Introduction
Next: The DPS server side
|