diff options
Diffstat (limited to 'nx-X11/lib/dpstk/FSBwraps.psw')
-rw-r--r-- | nx-X11/lib/dpstk/FSBwraps.psw | 491 |
1 files changed, 491 insertions, 0 deletions
diff --git a/nx-X11/lib/dpstk/FSBwraps.psw b/nx-X11/lib/dpstk/FSBwraps.psw new file mode 100644 index 000000000..c36a0d78c --- /dev/null +++ b/nx-X11/lib/dpstk/FSBwraps.psw @@ -0,0 +1,491 @@ +/* + * FSBwraps.psw + * + * (c) Copyright 1991-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 _DPSFClearWindow(DPSContext ctxt) + 1 setgray + 0 0 2000 2000 rectfill +endps + +defineps _DPSFPreviewString(DPSContext ctxt; char *font; float size; + char *text; int height | boolean *bogus) + mark { + /font size selectfont + 0 height neg 5 div itransform + exch pop 5 exch moveto + 0 setgray + (text) show + } stopped bogus cleartomark +endps + +defineps _DPSFReclip(DPSContext ctxt) + initclip + initviewclip +endps + +defineps _DPSFUndefineFont(DPSContext ctxt; char *font; boolean oldServer) + currentshared true setshared % currentshared + {/font undefinefont} stopped % currentshared [font] stopped + { + false setshared % currentshared font + {undefinefont} stopped { + pop + } if + } if + setshared + oldServer { 2 vmreclaim } if +endps + +defineps _DPSFDefineFontEnumFunctions(DPSContext ctxt) + $Adobe$DPS$Lib$Dict begin + /GetFontName { % int GetFontName string + $Adobe$DPS$Lib$Dict /FontDict get begin + dup maxItems div truncate cvi baseArray exch get + exch maxItems mod get + end + } bind def + + % (str) x y SafeBBox left bottom right top + /SafeBBox { + 3 copy % (str) x y (str) x y + newpath + moveto % (str) x y (str) + { + mark exch false charpath flattenpath pathbbox + } stopped { + cleartomark + 3 -1 roll dup length dup % x y (str) len len + 1 le { + pop + % punt; we can't divide it any more + 0 0 moveto stringwidth pop % x y wx + dup 2 index add exch 3 index add exch + } { + 2 copy % x y (str) len (str) len + 2 idiv % x y (str) len (str) len/2 + 0 exch % x y (str) len (str) 0 len/2 + getinterval dup % x y (str) len (s1) (s1) + 5 index 5 index % x y (str) len (s1) (s1) x y + $Adobe$DPS$Lib$Dict /SafeBBox get exec + % x y (str) len (s1) l1 b1 r1 t1 + 9 4 roll % l1 b1 r1 t1 x y (str) len (s1) + stringwidth % ... x y (str) len wx wy + 5 -1 roll add exch % ... x (str) len y+wy wx + 5 -1 roll add exch % ... (str) len x+wx y+wy + 4 2 roll % ... x+wx y+wy (str) len + dup 2 idiv % ... x+wx y+wy (str) len len/2 + exch 2 div ceiling cvi + % ... x+wx y+wy (str) len/2 ceil(len/2) + getinterval % ... x+wx y+wy (s2) + 3 1 roll % ... (s2) x+wx y+wy + $Adobe$DPS$Lib$Dict /SafeBBox get exec + % l1 b1 r1 t1 l2 b2 r2 t2 + 5 -1 roll 2 copy % l1 b1 r1 l2 b2 r2 t2 t1 t2 t1 + gt {pop} {exch pop} ifelse % l1 b1 r1 l2 b2 r2 t + 7 1 roll % t l1 b1 r1 l2 b2 r2 + 4 -1 roll 2 copy % t l1 b1 l2 b2 r2 r1 r2 r1 + gt {pop} {exch pop} ifelse % t l1 b1 l2 b2 r + 6 1 roll % r t l1 b1 l2 b2 + 3 -1 roll 2 copy % r t l1 l2 b2 b1 b2 b1 + lt {pop} {exch pop} ifelse % r t l1 l2 b + 5 1 roll % b r t l1 l2 + 2 copy % b r t l1 l2 l1 l2 + lt {pop} {exch pop} ifelse % b r t l + 4 1 roll % l b r t + } ifelse + } { % mark (str) x y l b r t + 8 -4 roll pop pop pop pop + } ifelse + } bind def + /DownloadPS { + $Adobe$DPS$Lib$Dict /downloadSuccess false put + (%stdin) (r) file + cvx stopped + pop % always true + % Flush until you get the magic line + { + {currentfile 256 string readline} stopped + pop % don't care stopped result + pop % don't care readline bool result +(Magic end of data line \)\)\)\)\)\)\)\)\)\) 99#2 2#99 <xyz> // 7gsad,32h4ghNmndFgj2) + eq + {exit} if + } loop + } bind def + end +endps + +defineps _DPSFEnumFonts(DPSContext ctxt | int *count; int *totalLength) + $Adobe$DPS$Lib$Dict begin + /FontDict 5 dict def + FontDict begin + /currentItem 0 def + /maxItems 100 def + /maxArrays 20 def % This is the max index, not the array size! + /baseArray maxArrays 1 add array def + /currentArray 0 def + baseArray 0 maxItems array put + end + + /AddFontName { % string AddFontName success + $Adobe$DPS$Lib$Dict /FontDict get begin + 1 { % provides enclosing loop for exit + currentItem maxItems eq + { + currentArray maxArrays eq {pop false exit} if + /currentArray currentArray 1 add def + baseArray currentArray maxItems array put + /currentItem 0 def + } if + dup length string copy + baseArray currentArray get currentItem 3 -1 roll put + /currentItem currentItem 1 add def + true + } repeat % provides enclosing loop for exit + end + } bind def + + 3 dict begin + /$listString 256 string def + /countFonts 0 def + /totalLen 0 def + + % Enumerate SharedFontDirectory + SharedFontDirectory { % forall + pop % /fontname + $listString cvs % (fontname) + dup AddFontName % (name) success + { + /countFonts countFonts 1 add def + length 1 add totalLen add /totalLen exch def + } { + pop + } ifelse + } forall + + % Enumerate %font% storage device, if available. + /filenameforall where { % if + pop + (%font%*) { % filenameforall + % Check if name is something we really believe + % is a font. Leave either "false" or "(name) true" + % on stack + + % Discard filenames containing "." + (.) search { % if + pop pop pop null false + } { % else + dup % (%font%name) (%font%name) + (%font%) anchorsearch { % if + % (%font%name) (name) (%font%) + pop exch pop % (name) + dup AddFontName % (name) success + } { % else + pop null false + } ifelse + } ifelse + + % Stack is either "<something> false" or "(name) true" + { + /countFonts countFonts 1 add def + length 1 add totalLen add /totalLen exch def + } { + pop + } ifelse + } $listString filenameforall + } if + totalLen totalLength countFonts count + end + end + + $Adobe$DPS$Lib$Dict /AddFontName undef +endps + +defineps _DPSFGetAllFontNames(DPSContext ctxt; int fontCount; int arrLen | + char fontNames[arrLen]) + $Adobe$DPS$Lib$Dict begin + FontDict begin + 0 1 fontCount 1 sub { + GetFontName fontNames + ( ) fontNames + } for + end + end +endps + +defineps _DPSFGetFontInfo(DPSContext ctxt; int fontNum; boolean oldServer | + char *familyName; char *fullName; char *weight; + boolean *blendedFont, *undefineIt, *bogus) + fontNum $Adobe$DPS$Lib$Dict /GetFontName get exec + + dup dup % fontname fontname fontname + SharedFontDirectory exch known % fontname fontname known + dup undefineIt exch % fontname known fontname + % (leave fontname and known on stack + % for the duration of this call + % even though I don't list them in + % the comments) + { % stopped + findfont dup % fontdir fontdir + /FontInfo known { % fontdir bool + /FontInfo get dup dup % fontinfo fontinfo fontinfo + /FamilyName known { % fontinfo fontinfo bool + /FamilyName get % fontinfo (familyname) + } { + pop () + } ifelse + exch dup dup % (familyname) fontinfo fontinfo fontinfo + /FullName known { % (familyname) fontinfo fontinfo bool + /FullName get % (familyname) fontinfo (fullname) + } { + pop () + } ifelse + exch dup dup % (familyname) (fullname) fontinfo*3 + /Weight known { % (familyname) (fullname) fontinfo*2 bool + /Weight get % (familyname) (fullname) fontinfo (weight) + } { + pop (Medium) + } ifelse + exch % (familyname) (fullname) (weight) fontinfo + /BlendAxisTypes known % (familyname) (fullname) (weight) blendedFont + + dup blendedFont % (familyname) (fullname) (weight) blendedFont + } { + pop () () () + false false blendedFont + } ifelse % (familyname) (fullname) (weight) blendedFont + false bogus + + } stopped { + () () () + false false blendedFont + true bogus + } if + + 4 1 roll % blendedFont (familyname) (fullname) (weight) + weight fullName familyName + % fontname known is still on the stack so... + % fontname known blendedFont + + % if blendedFont (the bool on the stack) is true, don't undefine things + % just yet since we'll be coming back quite soon for more stuff + + not and { % undefine font if we just defined + % it to get this information + currentshared true setshared + exch % currentshared fontname + {undefinefont} stopped % currentshared [fontname] stopped + { + false setshared % currentshared fontname + + {undefinefont} stopped { + pop + } if + } if + setshared + + oldServer {2 vmreclaim} if + } { + pop + } ifelse +endps + +defineps _DPSFFreeFontInfo(DPSContext ctxt) + $Adobe$DPS$Lib$Dict /FontDict undef + $Adobe$DPS$Lib$Dict /GetFontName undef + 1 vmreclaim +endps + +defineps _DPSFIsFontResident(DPSContext ctxt; char *name; | boolean *resident) + SharedFontDirectory /name known { + true resident + } { + /buf (name) length 6 add string def + buf 0 (%font%) putinterval + buf 6 (name) putinterval + buf status dup resident { pop pop pop pop } if + } ifelse +endps + +defineps _DPSFGetBlendedFontInfo(DPSContext ctxt; int fontNum; + boolean undefineIt; boolean oldServer | + int *axes; int *designs; + char axisNames[256]; + float blendPos[64]; int breakCount[4]; + int blendBreak[48]; float blendBreakValue[48]; + boolean *bogus) + + fontNum $Adobe$DPS$Lib$Dict /GetFontName get exec + $Adobe$DPS$Lib$Dict /stringbuf 256 string put + dup % duplicate fontname; we'll need it later + + findfont /FontInfo get dup % fontinfo fontinfo + /BlendAxisTypes get % fontinfo array + dup length axes % fontinfo array + { % Concatenate all the names into axisNames + $Adobe$DPS$Lib$Dict /stringbuf get cvs + axisNames + ( ) axisNames + } forall + dup dup % fontinfo fontinfo fontinfo + /BlendDesignPositions known { % fontinfo fontinfo known + /BlendDesignPositions get % fontinfo array + dup length designs % fontinfo array + { % enumerate the subarrays + { + blendPos + } forall + } forall + false + } { + pop true + } ifelse % fontinfo bool + exch dup % bool fontinfo fontinfo + /BlendDesignMap known { % bool fontinfo known + /BlendDesignMap get % bool array + { + dup length % bool subarray len + breakCount % bool subarray len + { + aload pop % bool break breakvalue + blendBreakValue + blendBreak + } forall + } forall + false + } { + pop true + } ifelse % bool bool + + or bogus + + undefineIt { % undefine font if we just defined + % it to get this information + currentshared true setshared + exch % currentshared fontname + {undefinefont} stopped % currentshared [fontname] stopped + { + false setshared % currentshared fontname + + {undefinefont} stopped { + pop + } if + } if + setshared + oldServer { 2 vmreclaim } if + } { + pop + } ifelse + $Adobe$DPS$Lib$Dict /stringbuf undef +endps + +defineps _DPSFShowText(DPSContext ctxt; char *text; char *font; float size; + int x, y | boolean *bogus) + mark { + /font size selectfont + x y moveto + (text) show + } stopped dup bogus cleartomark +endps + +defineps _DPSFShowTextAndGetDimensions(DPSContext ctxt; + char *text; char *font; float size; + int x, y | + float *width, *left, *right, + *top, *bottom) + mark { + /font size selectfont + x y moveto + (text) show + (text) stringwidth pop width + (text) x y $Adobe$DPS$Lib$Dict /SafeBBox get exec + } stopped {0 0 0 0} if + top right bottom left + cleartomark +endps + +defineps _DPSFGetTextDimensions(DPSContext ctxt; + char *text; char *font; float size; + float x, y | + float *width, *height, + *left, *right, *top, *bottom; + boolean *bogus) + mark { + /font size selectfont + (text) stringwidth height width + + (text) x y $Adobe$DPS$Lib$Dict /SafeBBox get exec + } stopped dup bogus {0 0 0 0} if + top right bottom left + cleartomark +endps + +defineps _DPSFGetCTM(DPSContext ctx | float ctm[6], invctm[6]) + matrix currentmatrix dup ctm matrix invertmatrix invctm +endps + +defineps _DPSFSetUpMM(DPSContext ctxt; char *font, *str; float size; + int height; float p[n]; int n | boolean *bogus) + userdict /fontDefined known { + /tempfont undefinefont + } if + mark { + /tempfont /font findfont p makeblendedfont definefont + size scalefont setfont + 0 height neg 5 div itransform + exch pop 5 exch moveto + (str) stringwidth pop pop + /fontDefined true def + } stopped bogus cleartomark +endps + +defineps _DPSFDrawMM(DPSContext ctxt; char *str; int height) + 0 height neg 5 div itransform + exch pop 5 exch moveto + (str) show +endps + +defineps _DPSFPrepareToDownload(DPSContext ctxt; boolean makeShared | + boolean *currShared) + $Adobe$DPS$Lib$Dict /DownloadPS get + currentshared currShared makeShared setshared +endps + +defineps _DPSFFinishDownload(DPSContext ctxt; boolean shared | boolean *ok) + shared setshared + $Adobe$DPS$Lib$Dict /downloadSuccess get ok +endps |