   X and DPSJuliuszChroboczekjch@freedesktop.org27 February 2001,
   updated  30  October  2006Updated  by  Jim  Gettys and Juliusz
   Chroboczek.Notice  of  Obsolescence  and  Removal  from  X.Org
   ReleasesDPS  is  now  obsolete.At the time when I started this
   project, there was no decent rendering interface for X11 other
   than  DPS.Since then, there has been a large amount of work on
   a simple and clean X server extension, Xrender, which provides
   the  basis for just such an interface.Rendering libraries that
   are  being  built  above Xrender include Xft, a font rendering
   library built on FreeType; Cairo, a geometry rendering library
   that  provides  PostScript-like  rendering primitives but with
   from-the-ground    support    for    Porter-Duff   compositing
   (transparency);  Pango,  a  high-level  typesetting library.If
   your  application  uses DPS, please consider porting it to the
   above   libraries.   See  the  DPS  extension  site  for  more
   detailsThe  client-side  DPS software is included and built by
   default  (except  as noted below) in the X.Org X11R6.8 release
   series.  The  client-side  software  will be included, but not
   built  unless  specifically  configured by the builder, in the
   X.Org  X11R6.9  release  series.  Most  of the client-side DPS
   software   is   no   longer   included  in  X11R7.0  or  later
   releases.The server-side software is not included in any X.Org
   release  for  licensing  reasons;  the code is still available
   from  the DPS extension site; it is not known whether it still
   compiles.IntroductionDisplay  Postscript (or DPS for short) is
   a  rendering  extension  for  X11. DPS is slightly atypical in
   that  it  is  based  on  code  mobility,  the  ability to send
   executable code from client to server. Thus, a DPS client does
   not  request  that  a  line  should  be  rendered; instead, it
   uploads code to the server which, when executed, causes a line
   to be drawn.This document does not aim at teaching programming
   with  DPS; it is only a summary description of the DPS support
   code included with X11R. More information about DPS, including
   a  DPS bibliography, is available from the DPS extension site.
   Note:  Adobe, PostScript and Display PostScript are trademarks
   of  Adobe  Systems  Incorporated  which  may  be registered in
   certain  jurisdictions. As all X11 extensions, DPS consists of
   client-side  and  server-side  components. The DPS client side
   consists  of  a  number of libraries and a number of tools for
   programming and configuration. The DPS server side may consist
   either  of  an X server extension, or of a client-side process
   known  as  the  ``DPS  agent.''  In this latter case, the term
   ``server-side'' is somewhat misleading.At the time of writing,
   only  the  client  side is included with X11R; the server side
   must be obtained separately. Please see later in this document
   for  more  information.The  DPS client sideThe DPS client side
   consists  of  four  libraries  and a number of basic tools for
   programming  and  configuration;  these  are all included with
   X11R.LibrariesThe 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 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
   &#65533;.The source code for libdpstkXm is included with X11R;
   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.Libdps and XtIn 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
   X11R.  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).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].Sample  clientsX11R  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 &#65533;.
   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.The DPS server side In order to use DPS clients, you need
   to  install  a  DPS  server side, which can be either a server
   extension  (a  ``DPS/X  extension''),  or  a  separate process
   (referred  to,  variously,  either  as  a ``DPS/NX agent'' or,
   rather  confusingly,  as  ``Client-Side  DPS'' (CSDPS).Display
   GhostscriptDisplay  Ghostscript  (note the capitalisation), or
   DGS,  is  a  client-side  implementation  of  DPS based on the
   Ghostscript  PostScript  interpreter.  DGS is still in beta at
   the  time  of writing; it does, however, provide a very usable
   implementation  of  DPS,  although  it still has some problems
   with  the  semantics of multiple DPS contexts.DGS is available
   from  the  GNUstep  download  area.The  DPS  extensionThe  DPS
   extension  is  a  much  younger project aiming at producing an
   efficient  server-side implementation of DPS. The extension is
   currently in a state best described as alpha; current versions
   are  known  to crash the X server under some circumstances.The
   DPS   extension   is   available   from   the   DPS  extension
   site.ReferencesLinks  to  electronic versions of all of these,
   and  more,  are  available from the DPS extension site.[PLRM2]
   PostScript  language  reference manual. Adobe Systems, 2nd ed.
   Addison-Wesley,  1990.  ISBN  0-201-18127-4. [PLRM] PostScript
   language   reference.  Adobe  Systems  Incorporated,  3rd  ed.
   Addison-Wesley,   1999.   ISBN  0-201-37922-8.[INTRO]  Display
   PostScript  System.  Introduction:  Perspective  for  Software
   Developers.  15  April  1993.[CLRM] Display PostScript System.
   Client  Library Reference Manual. 15 April 1993.[CLSX] Display
   PostScript  System.  Client Library Supplement for X. 15 April
   1993.[DPTX]  Display  PostScript  System.  Display  PostScript
   Toolkit  for  X.  15  April  1993.[PSWRAP]  Display PostScript
   System. pswrap Reference Manual. 15 April 1993.
