NAME

       pslib v3.2 - A PostScript based plotting library


DESCRIPTION

       pslib was created to make the generation of PostScript page description
       code easier.  It is a library that contains a series of tools that  can
       be  used  to create plots.  The resulting PostScript code is ASCII text
       and can be edited using any text editor.  Thus, it is  fairly  easy  to
       modify a plot file even after it has been created, e.g., to change text
       strings, set new gray shades or colors, experiment  with  various  pen-
       widths  etc.   pslib  is written in C but now includes FORTRAN bindings
       (thanks to John Goff, WHOI) and can therefore be called from both C and
       FORTRAN  programs.   To  use  this library, you must link your plotting
       program with pslib.a.  pslib is the core  of  the  GMT  SYSTEM  and  XY
       graphics  programs.   pslib  output  conforms to the Adobe Encapsulated
       PostScript File Specification Version 3.0 (EPSL), and may  be  used  as
       EPS files and inserted into, say, a Word document on a Mac.  See Appen-
       dix F in the Technical Reference for detailed instructions.

       Before any pslib calls can be issued, the plotting system must be  ini-
       tialized.   This  is done by calling ps_plotinit, which defines macros,
       sets up the plot-coordinate system, scales, and  [optionally]  opens  a
       file where all the PostScript code will be written.  Normally, the plot
       code is written to stdout.  The measure unit for  sizes  and  positions
       can  be  set  to be centimeter, inch, or m.  When all plotting is done,
       you must terminate the plotting system by calling ps_plotend.

       pslib uses the direct color model where red, green, and blue are  given
       separately,  each  must be in the range from 0-255.  If red < 0 then no
       fill operation takes place.  Most plot-items can  be  plotted  with  or
       without  outlines.   If outline is desired (i.e., set to 1), it will be
       drawn using the current linewidth and pattern. pslib uses highly  opti-
       mized  macro  substitutions and scales the coordinates depending on the
       resolution of the hardcopy device so that the output file  is  kept  as
       compact as possible.

       A wide variety of output devices that support PostScript exist, includ-
       ing laserwriters (color or monochrome) and workstations  running  Post-
       Script  based  window  systems  like  SUNs OpenWindows.  xnews (part of
       OpenWindows) or ghostscript (public  domain)  can  be  used  to  create
       rasterfiles  at  a user-defined resolution (DPI), making it possible to
       render  PostScript  on  a  Versatec  and  other  non-PostScript  raster
       devices.   Regular  SUN  rasterfiles created under NeWS from PostScript
       files can be sent to a variety of  color  hardcopy  units.   Check  the
       devices available on your network.


FUNCTION CALLS

       The  following is a list of available functions and a short description
       of what they do and what parameters they expect.   All  floating  point
       variables  are expected to be double (i.e., 8 bytes), whereas all inte-
       gers are assumed to be  4  bytes  long.   All  plotting  functions  are
       declared as functions returning an int.  Currently, the return value is
       undefined.


              void ps_arc (x, y, radius, angle1, angle2, status)
              double x, y, radius, angle1, angle2;
              int status;
                 Draws a circular arc centered on (x,y) from angle  angle1  to
                 angle2.   Angles must be given in decimal degrees.  If angle1
                 > angle2, a negative arc is drawn.  status is a value from  0
                 through  3.  1 means set new anchor point, 2 means stroke the
                 circle, 3 means both, 0 means none of the above.

              void ps_axis (xpos, ypos, length,  startval,  stopval,  tickval,
              label, anotpointsize, side)
              double xpos, ypos, length, startval, stopval, tickval;
              int anotpointsize, side;
              char *label;
                 Plots  an  axis with tickmarks, annotation, and label.  xpos,
                 ypos, and length are in inches (or cm or meters),  anotpoint-
                 size  in  points  (72  points  = 1 inch), else data units are
                 used.  side can be 0, 1, 2, or 3, which selects lower x-axis,
                 right  y-axis,  upper  x-axis,  or left y-axis, respectively.
                 labelpointsize = 1.5 *  anotpointsize.   A  negative  tickval
                 will  reverse  the sense of positive direction, e.g., to have
                 the y-axis be positive down.

              void ps_circle (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots a circle and fills it with  the  specified  color.   If
                 outline  ==  1,  the outline will be drawn using current pen-
                 width and -pattern.

              void ps_clipoff ()
                 Resets the clip path to what it was before the last  call  to
                 clipon.

              void ps_clipon (xarray, yarray, npoints, rgb, flag)
              double xarray[], yarray[];
              int npoints, rgb[3], flag;
                 Sets  up  a  user-definable clip path.  Plotting outside this
                 polygon will be clipped until ps_clipoff is called.   If  red
                 >=  0  the  inside  of  the path is filled with the specified
                 color.  flag is used to create complex clip paths  consisting
                 of  several  disconnected  regions,  and takes on values 0-3.
                 flag = 1 means this is the first path in a multi-segment clip
                 path.   flag = 2 means this is the last segment.  Thus, for a
                 single path, flag = 3.

              void ps_colorimage (xpos, ypos, xlength,  ylength,  buffer,  nx,
              ny)
              double xpos, ypos, xlength, ylength;
              unsigned char buffer[];
              int nx, ny;
                 Plots a 24-bit true color image using rgb colors.  Similar to
                 ps_image except bits is fixed to be 8.  The rgb triplets  are
                 stored  in  buffer  as rgbrgbrgb...  This functions sets up a
                 call to the  PostScript  colorimage  operator  which  is  not
                 implemented in all drivers.

              void ps_colortiles (x0, y0, xlength, ylength, buffer, nx, ny)
              double x0, y0, xlength, ylength;
              int nx, ny;
              unsigned char buffer[];
                 Plots a true color image based on individual color tiles. x0,
                 y0 is the location of the lower left corner of the  image  in
                 inches.   xlength,  ylength  is  the  image  size  in inches.
                 buffer contains rgb triplets stored as rgbrgbrgb... nx, ny is
                 the image size in pixels.

              void ps_command (text)
              char *text;
                 Writes  a  raw  PostScript  command  to the PostScript output
                 file, e.g. "1 setlinejoin".

              void ps_comment (text)
              char *text;
                 Writes a comment (text) to the PostScript output  file,  e.g.
                 "Start of graph 2".

              void ps_cross (xcenter, ycenter, diameter)
              double xcenter, ycenter, diameter;
                 Plots  a cross at the specified point using current pen-width
                 and -pattern that fits inside a circle of given diameter.

              void ps_diamond (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots a diamond and fills it with the  specified  color.   If
                 outline  ==  1,  the outline will be drawn using current pen-
                 width and -pattern.  The symbol will fit inside a  circle  of
                 given diameter.

              void  ps_ellipse  (xcenter,  ycenter,  angle, major, minor, rgb,
              outline)
              double xcenter, ycenter, angle, major, minor;
              int rgb[3], outline;
                 Plots a ellipse with its  major  semiaxis  rotated  by  angle
                 degrees and fills it with the specified color.  If outline ==
                 1, the outline will be  drawn  using  current  pen-width  and
                 -pattern.

              void ps_flush ()
                 Flushes the output buffer.

              void ps_hexagon (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots  a  hexagon  and fills it with the specified color.  If
                 outline == 1, the outline will be drawn  using  current  pen-
                 width  and  -pattern.  The symbol will fit inside a circle of
                 given diameter.

              void ps_image (xpos, ypos, xlength,  ylength,  buffer,  nx,  ny,
              bits)
              double xpos, ypos, xlength, ylength;
              unsigned char buffer[];
              int nx, ny, bits;
                 Plots  a bit-mapped image using grayshades.  Specify position
                 of lower left corner and size (in inches) of  image.   buffer
                 is  an  unsigned  character array with gray shade values (0 -
                 255) where 0 is black, 255 is white.  bits is number of  bits
                 pr  pixel (8, 4,  or 1). nx,ny refers to the number of pixels
                 in image.  The rowlength of buffer must be an integral number
                 of  8/bits.   buffer[0] is upper left corner.  E.g. if bits =
                 4,  then  buffer[j]/16  gives  shade  for   pixel[2j-1]   and
                 buffer[j]%16 (mod 16) gives shade for pixel[2j].  buffer val-
                 ues are stored as columns, starting at the lower left  corner
                 and  ending at the upper right corner.  See the Adobe Systems
                 PostScript Reference Manual for more details.

              void ps_imagefill (x, y, n, image, imagefile, invert,  imagedpi,
              outline, template, r_rgb, b_rgb)
              double x[], y[], x0, y0;
              int  n,  image,  invert,  imagedpi, outline, template, f_rgb[3],
              b_rgb[3];
              char imagefile;
                 Similar to ps_polygon, but fills the area with an image  pat-
                 tern  rather  than  a  color  or grayshade.  x and y hold the
                 arrays of n points.  90  predefined  patterns  are  available
                 (See  GMT  Appendix E).  image gives the image number (1-90).
                 If set to 0, imagefile must be the name to the user's  image,
                 which  must  be stored as a SUN 1-, 8-, or 24-bit rasterfile.
                 1-bit images only: (i) If invert is TRUE (1), the  black  and
                 white  pixels are interchanged before plotting.  (ii) If tem-
                 plate is TRUE (1), the set pixels are colored using  the  RGB
                 combination in f_rgb, while the unset are painted with b_rgb.
                 The unit size of the image is controlled by imagedpi.  If set
                 to  zero,  the image is plotted at the device resolution.  If
                 outline is TRUE, the current penwidth is  used  to  draw  the
                 polygon outline.

              void ps_imagemask (xpos, ypos, xlength, ylength, buffer, nx, ny,
              polarity, rgb)
              double xpos, ypos, xlength, ylength;
              unsigned char buffer[];
              int nx, ny, polarity, rgb[3];
                 Plots a transparent 1-bit image  mask  using  the  given  rgb
                 color.   Specify  position  of lower left corner and size (in
                 inches) of image.  buffer is an unsigned character array with
                 8  pixels  per byte.  nx,ny refers to the number of pixels in
                 image.  The rowlength of buffer must be an integral number of
                 8.  buffer[0] is upper left corner.  buffer values are stored
                 as columns, starting at the lower left corner and  ending  at
                 the  upper right corner.  If polarity is 0 then the bits that
                 are 0 are painted with the rgb color, else the bits that  are
                 1  are  colored.   See the Adobe Systems PostScript Reference
                 Manual for more details.

              void ps_itriangle (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots an inverted and fills it with the specified color.   If
                 outline  ==  1,  the outline will be drawn using current pen-
                 width and -pattern.  The symbol will fit inside a  circle  of
                 given diameter.

              void ps_line (xarray, yarray, npoints, type, close, split)
              double xarray[], yarray[];
              int npoints, type, close, split;
                 Draw  a continuous line from the positions in the x-y arrays.
                 If close == 1, the first and last point will automatically be
                 closed  by  the PostScript driver.  If this is the first seg-
                 ment in a multi-segment path, set type == 1.  To end the seg-
                 ments  and have the line(s) drawn,  set type == 2.  Thus, for
                 a single segment, type must be 3.  The line  is  drawn  using
                 the  current penwidth.  Only if split is TRUE may ps_line use
                 multiple  strokes  to  draw  lines  longer   that   MAX_PATH.
                 ps_polygon  will  call  ps_line  with split = FALSE since the
                 path must be continuous.  If split is  FALSE  and  the  path-
                 length exceeds MAX_PATH a warning will be issued.

              unsigned  char  *ps_loadraster  (fp, header, invert, monochrome,
              template, f_rgb, b_rgb)
              FILE *fp;
              struct rasterfile *header;
              BOOLEAN invert, monochrome, template;
              int f_rgb[], b_rgb[];
                 Reads the image contents of the Sun rasterfile pointed to  by
                 the  open  filepointer fp.  The header must first be obtained
                 with ps_read_rasheader.  If invert is TRUE then 1-bit  images
                 will  be  bit-reversed.   If  monochrome  is  TRUE then color
                 images are converted to grayimages using the TV YIQ  transla-
                 tion.   If  template  is  TRUE then 1-bit images will be col-
                 orized using the for- and background colors provided in f_rgb
                 and  b_rgb.   The  routine  can handle 1-, 8-, 24-, or 32-bit
                 files in old, standard, run-length encoded, or RGB-style  Sun
                 format.

              void ps_patch (xarray, yarray, npoints, rgb, outline)
              double xarray[], yarray[];
              int npoints, rgb[3], outline;
                 Identical  to  ps_polygon  except polygon must be < 20 points
                 long and there will be no attempt to shorten the path by dis-
                 carding  unnecessary  intermediate points along straight seg-
                 ments.  Primarily used when painting large  number  of  small
                 polygons and not waste output space.

              void  ps_pie (xcenter, ycenter, radius, azimuth1, azimuth2, rgb,
              outline)
              double xcenter, ycenter, radius, azimuth1, azimuth2;
              int rgb[3], outline;
                 Plots a sector of a circle and paints it with  the  specified
                 RGB  combination.  If outline == 1, the outline will be drawn
                 using current pen-width and -pattern.

              void ps_plot (xabs, yabs, kpen)
              double xabs, yabs;
              int kpen;
                 Absolute  move  (kpen=3)  or  draw  (kpen=2),  using  current
                 linewidth.

              void ps_plotend (last_page)
              int last_page;
                 Terminates  the  plotting  sequence  and closes plot file (if
                 other than stdout). If last_page  ==  1,  then  a  PostScript
                 showpage  command  is  issued,  which  initiates the printing
                 process on hardcopy devices.

              void ps_plotinit (plotfile, overlay,  mode,  xoff,  yoff,  xscl,
              yscl, ncopies, dpi, unit, pagesize, rgb, eps)
              char *plotfile;
              int overlay, mode, ncopies, dpi, unit;
              double xoff, yoff, xscl, yscl;
              int pagesize[2], rgb[3]; struct EPS * eps;
                 Initializes  the plotting.  If plotfile == NULL (or ""), then
                 output is sent to stdout, else output is  sent  to  plotfile.
                 overlay  should  be  1  only if you plan to append it to some
                 existing PostScript file.  mode contains three flags  in  the
                 three lowest bits.  The lowest bit controls the plot orienta-
                 tion and can be 0 (Landscape) or 1 (Portrait).  The next bit,
                 if  set  to  1,  will re-encode the fonts to include European
                 accented characters.  The third bit controls the format  used
                 to write PostScript images: 0 means binary, 1 means hexadeci-
                 mal.  Most printers needs the latter while  some  can  handle
                 binary  which  are  50% smaller and therefore execute faster.
                 xoff,yoff are used to move the origin from the default  posi-
                 tion  in  the lower left corner.  xscl,yscl are used to scale
                 the entire plot (Usually set to 1.0, 1.0).   Set  ncopies  to
                 get  more  than  1 copy.  dpi sets the hardcopy resolution in
                 dots pr units.   For  optimum  plot  quality  and  processing
                 speed,  choose  dpi to match the intended plotter resolution.
                 Examples are  300  for  most  laserwriters,  2540  for  Lino-
                 type-300,  and  ~85 for SUN screens.  When in doubt, use 300.
                 unit can be any of 0 (CM), 1 (INCH), or 2  (M),  telling  the
                 plot system what units are used for distance and sizes.  Note
                 that, regardless of choice of unit, dpi is still in  dots-pr-
                 inch.   pagesize  means  the physical width and height of the
                 plotting media in points, (typically 612 by 792 for Letter or
                 595  by 842 for A4 laserwriter plotters.  The rgb array holds
                 the color of the page (usually white = 255,255,255).  The EPS
                 structure is defined in the pslib.h include file and contains
                 information that will make up the comments header  of  a  EPS
                 file.   Programmers  who  plan  to call pslib routines should
                 read the comments in pslib.h first.  Note  that  the  FORTRAN
                 binding does not expect this last argument.

              void ps_plotr (xrel, yrel, kpen)
              double xrel, yrel;
              int kpen;
                 Move  (kpen = 3) or draw (kpen = 2) relative to current point
                 (see ps_plot).

              void ps_polygon (xarray, yarray, npoints, rgb, outline)
              double xarray[], yarray[];
              int npoints, rgb[3], outline;
                 Creates a colored polygon  from  the  positions  in  the  x-y
                 arrays.   Polygon  will  automatically be closed by the Post-
                 Script driver.  If outline == 0, no  outline  is  drawn.   If
                 outline == 1, the outline is drawn using current penwidth.

              int ps_read_rasheader (fp, header)
              FILE *fp;
              struct rasterfile *header;
                 Using  the  pointer  fp  to  the open file, return the header
                 structure of the Sun rasterfile.  This call is portable as it
                 operates  on the byte level.  Once the header is returned you
                 may obtain the raster image with ps_loadraster.

              void ps_rect (x1, y1, x2, y2, rgb, outline)
              double x1, y1, x2, y2;
              int red, green, blue, outline;
                 Plots a colored rectangle. (x1,y1) and (x2,y2)  are  any  two
                 corners  on a diagonal.  If outline == 1, the outline will be
                 drawn using current pen-width and -pattern.

              void ps_rotatetrans (x, y, angle)
              double x, y, angle;
                 Rotates the coordinate system by angle degrees,  then  trans-
                 lates origin to (x,y).

              void ps_setdash (pattern, offset)
              char *pattern;
              int offset;
                 Changes  the  current dashpattern.  The character string pat-
                 tern is set to the desired pattern.  E.g., "4 2" and offset =
                 1 will plot like:
                      x ----  ----  ----
                 etc,  where x is starting point (The x is not plotted).  That
                 is, the line is made up of a repeating pattern of a  4  units
                 long line and a 2 unit long gap, starting 1 unit after the x.
                 To reset to solid line, specify pattern = NULL ("") and  off-
                 set = 0.  Units are in dpi units.

              void ps_setfont (fontnr)
              int fontnr;
                 Changes  the current font number to fontnr.  The fonts avail-
                 able are:  0 = Helvetica, 1 = H. Bold, 2 = H. Oblique, 3 = H.
                 Bold-Oblique,  4  = Times, 5 = T. Bold, 6 = T. Italic, 7 = T.
                 Bold Italic, 8 = Courier, 9 = C. Bold, 10 = C Oblique, 11 = C
                 Bold  Oblique,  12  =  Symbol,  13  =  AvantGarde-Book,  14 =
                 A.-BookOblique, 15 = A.-Demi, 16 = A.-DemiOblique, 17 = Book-
                 man-Demi,  18 = B.-DemiItalic, 19 = B.-Light, 20 = B.-LightI-
                 talic, 21 =  Helvetica-Narrow,  22  =  H-N-Bold,  23  =  H-N-
                 Oblique,  24  = H-N-BoldOblique, 25 = NewCenturySchlbk-Roman,
                 26 = N.-Italic, 27  =  N.-Bold,  28  =  N.-BoldItalic,  29  =
                 Palatino-Roman,   30   =   P.-Italic,  31  =  P.-Bold,  32  =
                 P.-BoldItalic, 33 = ZapfChancery-MediumItalic.  If fontnr  is
                 outside this range, it is set to 0.

              void ps_setformat (n_decimals)
              int n_decimals;
                 Sets number of decimals to be used when writing color or gray
                 values.  The default setting of 3 gives 1000 choices per red,
                 green,  and  blue  value,  which is more than the 255 choices
                 offered by most 24-bit platforms.   Choosing  a  lower  value
                 will  make  the  output  file  smaller at the expense of less
                 color resolution.  Still, a value of 2 gives 100 x 100 x  100
                 = 1 million colors, more than most eyes can distinguish.  For
                 a setting of 1, you will have 10 nuances  per  primary  color
                 and a total of 1000 unique combinations.

              void ps_setline (linewidth)
              int linewidth;
                 Changes the current linewidth in DPI units.  0 gives thinnest
                 line, but the use of  0  is  implementation-dependent  (Works
                 fine on most laserwriters).

              void ps_setpaint (rgb)
              int rgb[3];
                 Changes the current RGB setting for pens and text.

              void ps_square (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots  a  square  and  fills it with the specified color.  If
                 outline == 1, the outline will be drawn  using  current  pen-
                 width  and  -pattern.  The symbol will fit inside a circle of
                 given diameter.

              void ps_star (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots a star and fills it with the specified color.  If  out-
                 line  == 1, the outline will be drawn using current pen-width
                 and -pattern.  The symbol will fit inside a circle  of  given
                 diameter.

              void ps_text (x, y, pointsize, text, angle, justify, form)
              double x, y, angle;
              char *text;
              int pointsize, justify, form;
                 The text is plotted starting at (x,y), and will make an angle
                 with the horizontal.  The point  (x,y)  maps  onto  different
                 points  of  the  textstring by giving various values for jus-
                 tify.  It is used as follows:

                           9------------10----------- 11
                            |                             |
                           5             6             7
                            |                             |
                           1------------ 2------------ 3
                 The  box  represents  the  textstring.   E.g.,  to   plot   a
                 textstring  with its center of gravity at (x,y), you must use
                 justify == 6.  If justify is negative, then all  leading  and
                 trailing  blanks are stripped before plotting.  Certain char-
                 acter sequences (flags) have special meaning to  ps_text.  @~
                 toggles  between  current  font  and the Mathematical Symbols
                 font.  @%no% sets font to no; @%% resets  to  starting  font.
                 @-  turns  subscript  on/off, @+ turns superscript on/off, @#
                 turns small caps on/off, and @\ will make a composite charac-
                 ter  of the following two character.  Give fontsize in points
                 (72 points = 1 inch).  Normally,  the  text  is  typed  using
                 solid characters.  To draw outline characters, set form == 1.

              void ps_textbox (x, y, pointsize, text, angle, justify, outline,
              dx, dy, rgb)
              double x, y, angle, dx, dy;
              char *text;
              int pointsize, justify, outline, rgb[3];
                 This  function is used in conjugation with ps_text when a box
                 surrounding the text string is desired.  Taking most  of  the
                 arguments of ps_text, the user must also specify the color of
                 the resulting rectangle, and whether its  outline  should  be
                 drawn.   More room between text and rectangle can be obtained
                 by setting dx and dy accordingly.

              void ps_transrotate (x, y, angle)
              double x, y, angle;
                 Translates the origin to (x,y), then rotates  the  coordinate
                 system by angle degrees.

              void ps_triangle (xcenter, ycenter, diameter, rgb, outline)
              double xcenter, ycenter, diameter;
              int rgb[3], outline;
                 Plots  a triangle and paints it with the specified RGB combi-
                 nation.  If outline == 1, the outline  will  be  drawn  using
                 current pen-width and -pattern.  The symbol will fit inside a
                 circle of given diameter.

              void ps_vector (xtail, ytail, xtip, ytip, tailwidth, headlength,
              headwidth, headshape, rgb, outline)
              double  xtail,  ytail,  xtip, ytip, tailwidth, headlength, head-
              width, headshape;
              int rgb[3], outline;
                 Draws a vector of size and appearance  as  specified  by  the
                 various  parameters.   headshape  can take on values from 0-1
                 and specifies how far the intersection point between the base
                 of a straight vector head and the vector line is moved toward
                 the tip.  0 gives a  triangular  head,  1.0  gives  an  arrow
                 shaped head. If outline == 1, the outline will be drawn using
                 current penwidth.

              void ps_words  (x,  y,  text,  n_words,  line_space,  par_width,
              par_just, font, font_size, angle, rgb, justify, draw_box, x_off,
              y_off, x_gap, y_gap, boxpen_width,  boxpen_texture,  boxpen_off-
              set,  boxpen_rgb,  vecpen_width,  vecpen_texture, vecpen_offset,
              vecpen_rgb, boxfill_rgb)
              double x, y, line_space, par_width, angle, x_off, y_off,  x_gap,
              y_gap;
              int  n_words,  font, font_size, justify, draw_box, boxpen_width,
              boxpen_offset;
              int boxpen_rgb[3], vecpen_width,  vecpen_offset,  vecpen_rgb[3],
              boxfill_rgb[3];
              char **text, *boxpen_texture, *vecpen_texture;
                 Typesets  paragraphs  of text.  text is an array of the words
                 to typeset, using the given line-spacing and paragraph width.
                 The  whole  text  block  is  positioned  at x, y which is the
                 anchor  point  on  the  box  as  indicated  by  justify  (see
                 ps_text).  The  whole  block is then shifted by x_off, y_off.
                 Inside the box, text is justified left, centered,  right,  or
                 justified  as governed by par_just (lcrj).  draw_box contains
                 4 bit flags pertaining to the surrounding  outline  box.   If
                 on, the first (lowest) bit draws the box outline.  The second
                 bit fills the box interior.  The third bit makes the  outline
                 box  have  rounded corners (unless x_gap, y_gap, which speci-
                 fies the padding between the text and  the  box,  are  zero),
                 while the forth bit draws a line from the original x, y point
                 to the shifted position.  The escape sequences described  for
                 ps_text  applies  here,  as  well as two additional commands:
                 @;r/g/b; changes the font color (@;; resets it), and  @:size:
                 changes the font size (@:: resets it).


AUTHOR

       Paul  Wessel,  School  of  Ocean and Earth Science and Technology, 1680
       East-West  Road,  Honolulu,  Hawaii  96822,  (808)  956-4778,  Internet
       address: wessel@soest.hawaii.edu.


BUGS

       Caveat  Emptor:   The author is not responsible for any disasters, sui-
       cide attempts, or ulcers caused by correct or incorrect use  of  pslib.
       If  you find bugs, please report them to the author by electronic mail.
       Be sure to provide enough detail so that I can recreate the problem.


RESTRICTIONS

       Due to the finite memory of some output devices like Laserwriters, cer-
       tain  restrictions  due  to  limitations  of the PostScript interpreter
       apply:  For now, the arrays passed to  ps_clipon  and  ps_polygon  must
       contain  less than about 1350 points.  Also, the buffer array passed to
       ps_image must be able to fit in the available memory.  Check the speci-
       fications  of the hardcopy device you are using.  Note that some Raster
       Image Processors (RIPs) do not support direct color so that the  colors
       you  get  may not be exactly the ones you wanted.  This is a limitation
       of the RIP, not the underlying PostScript code generated by pslib.


REFERENCES

       Adobe Systems Inc., 1990, PostScript  language  reference  manual,  2nd
       edition, Addison-Wesley, (ISBN 0-201-18127-4).



VERSION                              DATE                             pslib(l)

Man(1) output converted with man2html