/* wraps.psw
 *
 * (c) Copyright 1990-1994 Adobe Systems Incorporated.
 * All rights reserved.
 * 
 * Permission to use, copy, modify, distribute, and sublicense this software
 * and its documentation for any purpose and without fee is hereby granted,
 * provided that the above copyright notices appear in all copies and that
 * both those copyright notices and this permission notice appear in
 * supporting documentation and that the name of Adobe Systems Incorporated
 * not be used in advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.  No trademark license
 * to use the Adobe trademarks is hereby granted.  If the Adobe trademark
 * "Display PostScript"(tm) is used to describe this software, its
 * functionality or for any other purpose, such use shall be limited to a
 * statement that this software works in conjunction with the Display
 * PostScript system.  Proper trademark attribution to reflect Adobe's
 * ownership of the trademark shall be given whenever any such reference to
 * the Display PostScript system is made.
 * 
 * ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
 * ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
 * ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NON- INFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO EVENT SHALL ADOBE BE LIABLE
 * TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  ADOBE WILL NOT
 * PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
 * 
 * Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
 * Incorporated which may be registered in certain jurisdictions
 * 
 * Author:  Adobe Systems Incorporated
 */

defineps PSWSetXGCDrawable(
  DPSContext ctxt; int gc, drawable, x, y)
  matrix currentmatrix
  gc drawable x y setXgcdrawable
  setmatrix
endps

defineps PSWGetXGCDrawable(
  DPSContext ctxt | int *gc, *drawable, *x, *y)
  currentXgcdrawable y x drawable gc
endps

defineps PSWSetXOffset(DPSContext ctxt; int x, y)
  x y setXoffset
endps

defineps PSWquotation (float size)
    /spacing size -1.5 mul def gsave 
    (The Display PostScript system provides a device-independent) show 
    grestore 0 spacing rmoveto gsave 
    (imaging model for displaying information on a screen.  This) show 
    grestore 0 spacing rmoveto gsave 
    (imaging model is fully compatibile with the imaging model used in) show
    grestore 0 spacing rmoveto gsave
    (PostScript printers.  By allowing you to use the PostScript) show 
    grestore 0 spacing rmoveto gsave
    (language to display text, graphics, and sampled images, it frees) show
    grestore 0 spacing rmoveto gsave
    (you from display-specific details such as screen resolution and) show
    grestore 0 spacing rmoveto gsave
    (available colors.) show
    grestore
endps

defineps PSWStringCharWidths (char *str | float width[256])
    (str) { (X) dup 0 4 -1 roll put stringwidth pop width
    } forall
endps

defineps PSWtextwheel (char *str)
    gsave
    /width (XX) stringwidth pop def %% approximate size of 2 characters %%
    0 1 18 div 1 { 1 .7 sethsbcolor 
        20 rotate gsave width 0 rmoveto (str) show grestore 
    } for
    grestore
endps

defineps PSWWidthOfString (char *str | float *swidth)
    (str) stringwidth transform pop swidth
endps

defineps PSWoutlinetext (char *str)
    (str) false charpath stroke
endps

defineps PSWslantedtext (char *str)
    gsave [1 0 .5 1 0 0] concat 
    (str) show grestore
endps
