home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / biz / patch / pgs32b72.lha / 3.2Beta7 / Printers.LHA / PostScript.prolog < prev    next >
Encoding:
Text File  |  1996-09-17  |  29.3 KB  |  1,113 lines

  1. %!PS-Adobe-3.0
  2. %%Copyright: 1994-96 Soft-Logik Publishing Corp.
  3. %%Creator: PageStream3 (PostScript 1.0j Beta.23)
  4. %%Title: platetest
  5. %%Copyright: 
  6. %CreationDate: 1996-8-28 18:44
  7. %%For: 
  8. %%BoundingBox:0 0 612 792
  9. %%Pages:
  10. %%DocumentFonts:
  11. %%DocumentNeededFonts:
  12. %%DocumentSuppliedFonts:
  13. %%EndComments
  14. %%BeginProlog
  15. % $VER: PostScript.prolog 1.1 (25.4.96)
  16. % fixed picstr problem in BeginRGBBitmap (7.10.94)
  17. % added font reencoding support (29.10.94)
  18. % complete change to fill/stroke for support for text (02.02.95)
  19. % fixed landscape to non-letter sizes
  20. % fixed grave/quotesingle encoding (15.02.95)
  21. % changed for new tm2d based code w/ new object calls (15.03.95)
  22. % fixed process color seps (24.03.95)
  23. % added PPDSetup/PPDCleanup (20.06.95)
  24. % now reencodes Courier for document name in slug (eeckk!) (09.07.95)
  25. % reencode dict increased by 2 (02.08.95)
  26. % recursive object tm (15.08.95)
  27. % prolog dict increased to 200 (01.09.95)
  28. % prolog rewrite of fill/stroke routines for text & added newpath to dograd/doradial/doshape (01.09.95)
  29. % new BeginClip/EndClip & BeginEPS/EndEPS (10.10.95)
  30. % new LNE/LNS line start & end routines (30.10.95)
  31. % moved LNE/LNS into ST (21.11.95)
  32. % fixed ST problem with y direction (18.01.96)
  33. % line ends no longer choke on zero length segments (28.3.96)
  34. % radial fills take offsets properly into account now (25.4.96)
  35. % RE nolonger reencodes Type42 fonts. Will later add a Type42 encoding vector to use (1.7.96)
  36. % added Type42 reencoding vector definition. (5.7.96)
  37. % added hack to get around LW8 font bug (23.7.96)
  38. % added overprint for plates & color, improved process/spot controls (28.8.96)
  39.  
  40. %Copyright 1994-96 Soft-Logik Publishing Corp.
  41.  
  42. /AsphaltDict dup 200 dict def load begin
  43.  
  44. %
  45. % basic definitions
  46. %
  47. /dko true def
  48. /cko true def
  49.  
  50. /bdef {bind def}bind def
  51. /xdef {exch def}bdef
  52. /ldef {load def}bdef
  53. /dmatrix matrix def
  54. /tmatrix matrix def
  55. /pmatrix matrix def
  56.  
  57. /deltax 0 def
  58. /deltay 0 def
  59. /slant 0 def
  60. /twist 0 def
  61. /xscl 0 def
  62. /yscl 0 def
  63. /bang 0 def
  64. /eang 0 def
  65.  
  66. /tilescalex 0 def
  67. /tilescaley 0 def
  68. /bh 0 def
  69. /bv 0 def
  70.  
  71. %
  72. % fill defines
  73. %
  74. /SG /setgray ldef
  75. /PSfill /fill ldef
  76. /PSeofill /eofill ldef
  77. /PSstroke /stroke ldef
  78. /PSshow /show ldef
  79. /PSashow /ashow ldef
  80. /PSwidthshow /widthshow ldef
  81. /PSawidthshow /awidthshow ldef
  82.  
  83. /fill {cko currentgray 1.0 ne or {PSfill}{newpath}ifelse} bdef
  84. /eofill {cko currentgray 1.0 ne or {PSeofill}{newpath}ifelse} bdef
  85. /stroke {cko currentgray 1.0 ne or {PSstroke}{newpath}ifelse} bdef
  86. /show {cko currentgray 1.0 ne or {PSshow}{stringwidth rmoveto}ifelse} bdef
  87. /ashow {cko currentgray 1.0 ne or {PSashow}{stringwidth rmoveto pop pop}ifelse} bdef
  88. /widthshow {cko currentgray 1.0 ne or {PSwidthshow}{stringwidth rmoveto pop pop pop pop}ifelse} bdef
  89. /awidthshow {cko currentgray 1.0 ne or {PSawidthshow}{stringwidth rmoveto pop pop pop pop pop}ifelse} bdef
  90.  
  91. systemdict /setcmykcolor known not
  92.  {/SCMYK {1 sub 4 1 roll 3 {3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdef}
  93.  {/SCMYK /setcmykcolor ldef}ifelse
  94.  
  95. %
  96. % drawing definitions
  97. %
  98. /sclm [0 0 0 0 0 0] def
  99. /scl{transform round .2 add exch round .2 add exch itransform}bdef
  100.  
  101. %
  102. %
  103. %
  104. /PGSEncoding 256 array def
  105. % duplicates: acute, quoteleft, quoteright
  106. % 000-007
  107. /.notdef        /dotlessi        /grave            /acute            /circumflex        /tilde            /breve            /dotaccent
  108. % 010-017
  109. /ring            /hungarumlaut    /ogonek            /caron            /.notdef        /.notdef        /.notdef        /.notdef
  110. % 020-027
  111. /quotedblbase    /quotesinglbase    /quotesingle    /quoteleft        /quoteright        /.notdef        /.notdef        /.notdef
  112. % 030-037
  113. /.notdef        /.notdef        /.notdef        /.notdef        /.notdef        /.notdef        /.notdef        /.notdef
  114. % 040-047
  115. /space            /exclam            /quotedbl        /numbersign        /dollar            /percent        /ampersand        /quotesingle
  116. % 050-057
  117. /parenleft        /parenright        /asterisk        /plus            /comma            /hyphen            /period            /slash
  118. % 060-067
  119. /zero            /one            /two            /three            /four            /five            /six            /seven
  120. % 070-077
  121. /eight            /nine            /colon            /semicolon        /less            /equal            /greater        /question
  122. % 100-107
  123. /at                /A                /B                /C                /D                /E                /F                /G
  124. % 110-117
  125. /H                /I                /J                /K                /L                /M                /N                /O
  126. % 120-127
  127. /P                /Q                /R                /S                /T                /U                /V                /W
  128. % 130-137
  129. /X                /Y                /Z                /bracketleft    /backslash        /bracketright    /asciicircum    /underscore
  130. % 140-147
  131. /grave            /a                /b                /c                /d                /e                /f                /g
  132. % 150-157
  133. /h                /i                /j                /k                /l                /m                /n                /o
  134. % 160-167
  135. /p                /q                /r                /s                /t                /u                /v                /w
  136. % 170-177
  137. /x                /y                /z                /braceleft        /bar            /braceright        /asciitilde        /.notdef
  138. % 200-207
  139. /perthousand    /florin            /notequal        /infinity        /lessequal        /greaterequal    /.notdef        /.notdef
  140. % 210-217
  141. /ellipsis        /endash            /emdash            /quotedblleft    /quotedblright    /guilsinglleft    /guilsinglright    /pi                
  142. % 220-227
  143. /fraction        /dagger            /daggerdbl        /trademark        /bullet            /fi                /fl                /Ydieresis        
  144. % 230-237
  145. /Lslash            /lslash            /OE                /oe                /Scaron            /scaron            /Zcaron            /zcaron            
  146. % 240-247
  147. /space            /exclamdown        /cent            /sterling        /currency        /yen            /brokenbar        /section
  148. % 250-257
  149. /dieresis        /copyright        /ordfeminine    /guillemotleft    /logicalnot        /minus            /registered        /macron
  150. % 260-267
  151. /degree            /plusminus        /twosuperior    /threesuperior    /acute            /mu                /paragraph        /periodcentered
  152. % 270-277
  153. /cedilla        /onesuperior    /ordmasculine    /guillemotright    /onequarter        /onehalf        /threequarters    /questiondown
  154. % 300-307
  155. /Agrave            /Aacute            /Acircumflex    /Atilde            /Adieresis        /Aring            /AE                /Ccedilla
  156. % 310-317
  157. /Egrave            /Eacute            /Ecircumflex    /Edieresis        /Igrave            /Iacute            /Icircumflex    /Idieresis
  158. % 320-327
  159. /Eth            /Ntilde            /Ograve            /Oacute            /Ocircumflex    /Otilde            /Odieresis        /multiply
  160. % 330-337
  161. /Oslash            /Ugrave            /Uacute            /Ucircumflex    /Udieresis        /Yacute            /Thorn            /germandbls
  162. % 340-347
  163. /agrave            /aacute            /acircumflex    /atilde            /adieresis        /aring            /ae                /ccedilla
  164. % 350-357
  165. /egrave            /eacute            /ecircumflex    /edieresis        /igrave            /iacute            /icircumflex    /idieresis
  166. % 360-367
  167. /eth            /ntilde            /ograve            /oacute            /ocircumflex    /otilde            /odieresis        /divide
  168. % 370-377
  169. /oslash            /ugrave            /uacute            /ucircumflex    /udieresis        /yacute            /thorn            /ydieresis
  170. PGSEncoding 0 256 getinterval astore pop
  171.  
  172. /PGS42Encoding 256 array def
  173. % 000-007
  174. /.notdef    /a215        /a67        /a141        /a216        /a97        /a219        /a220
  175. % 010-017
  176. /a221        /hungarumlaut    /a224        /a225    /.notdef    /.notdef    /.notdef    /.notdef
  177. % 020-027
  178. /a197        /a196        /a10        /a182        /a183        /.notdef    /.notdef    /.notdef
  179. % 030-037
  180. /.notdef    /.notdef    /.notdef    /.notdef    /.notdef    /.notdef    /.notdef    /.notdef
  181. % 040-047
  182. /a3            /a4            /a5            /a6            /a7            /a8            /a9            /a10
  183. % 050-057
  184. /a11        /a12        /a13        /a14        /a15        /a16        /a17        /a18
  185. % 060-067
  186. /a19        /a20        /a21        /a22        /a23        /a24        /a25        /a26
  187. % 070-077    
  188. /a27        /a28        /a29        /a30        /a31        /a32        /a33        /a34
  189. % 100-107
  190. /a35        /a36        /a37        /a38        /a39        /a40        /a41        /a42
  191. % 110-117
  192. /a43        /a44        /a45        /a46        /a47        /a48        /a49        /a50
  193. % 120-127
  194. /a51        /a52        /a53        /a54        /a55        /a56        /a57        /a58
  195. % 130-137
  196. /a59        /a60        /a61        /a62        /a63        /a64        /a65        /a66
  197. % 140-147
  198. /a67        /a68        /a69        /a70        /a71        /a72        /a73        /a74
  199. % 150-157
  200. /a75        /a76        /a77        /a78        /a79        /a80        /a81        /a82
  201. % 160-167
  202. /a83        /a84        /a85        /a86        /a87        /a88        /a89        /a90
  203. % 170-177
  204. /a91        /a92        /a93        /a94        /a95        /a96        /a97        /.notdef
  205. % 200-207
  206. /a198        /a156        /a143        /a146        /a148        /a149        /.notdef    /.notdef
  207. % 210-217
  208. /a171        /a178        /a179        /a180        /a181        /a190        /a191        /a154                
  209. % 220-227
  210. /a188        /a130        /a194        /a140        /a135        /a192        /a193        /a187        
  211. % 230-237
  212. /Lslash        /lslash        /a176        /a177        /Scaron        /scaron        /Zcaron        /zcaron            
  213. % 240-247
  214. /a3            /a163        /a132        /a133        /a189        /a150        /brokenbar    /a134
  215. % 250-257
  216. /a142        /a139        /a157        /a169        /a164        /minus        /a138        /a218
  217. % 260-267
  218. /a131        /a147        /twosuperior /threesuperior    /a141    /a151        /a136        /a195
  219. % 270-277
  220. /a222        /onesuperior /a158        /a170    /onequarter        /onehalf    /threequarters    /a162
  221. % 300-307
  222. /a173        /a201        /a199        /a174        /a98        /a99        /a144        /a100
  223. % 310-317
  224. /a203        /a101        /a200        /a202        /Igrave        /Iacute        /Icircumflex    /Idieresis
  225. % 320-327
  226. /Eth        /a102        /a211        /a208        /a209         /a175        /a103        /multiply
  227. % 330-337
  228. /a145        /a214        /a212        /a213        /a104        /Yacute        /Thorn        /a137
  229. % 340-347
  230. /a106        /a105        /a107         /a109        /a108        /a110        /a160        /a111
  231. % 350-357
  232. /a113        /a112        /a114         /a115        /a117        /a116        /a118        /a119
  233. % 360-367
  234. /eth        /a120        /a122        /a121        /a123        /a125        /a124        /a184
  235. % 370-377
  236. /a161        /a127        /a126        /a129        /a129        /yacute        /thorn        /a186
  237. PGS42Encoding 0 256 getinterval astore pop
  238.  
  239. %
  240. % path constructors
  241. %
  242. % - N -
  243. /N/newpath ldef
  244.  
  245. % x y M -
  246. /M{scl moveto}bdef
  247.  
  248. % x y L -
  249. /L{scl lineto}bdef
  250.  
  251. % cx1 cy1 cx2 cy2 px2 py2 C -
  252. /C{scl 6 2 roll scl 6 2 roll scl 6 2 roll curveto}bdef
  253.  
  254. % cx cy rx ry ba ea slant twist A -
  255. /A{matrix currentmatrix 9 1 roll /twist xdef/slant xdef/eang xdef/bang xdef/yscl xdef/xscl xdef scl translate xscl yscl scale sclm 0 twist cos put
  256. sclm 1 twist sin put sclm 2 slant sin neg put sclm 3 slant cos put sclm concat 0 0 1 bang eang arc setmatrix}bdef
  257.  
  258. % cx cy rx ry ba ea slant twist AN -
  259. /AN{matrix currentmatrix 9 1 roll /twist xdef/slant xdef/eang xdef/bang xdef/yscl xdef/xscl xdef scl translate xscl yscl scale sclm 0 twist cos put
  260. sclm 1 twist sin put sclm 2 slant sin neg put sclm 3 slant cos put sclm concat 0 0 1 bang eang arcn setmatrix}bdef
  261.  
  262. % - CP -
  263. /CP/closepath ldef
  264.  
  265. %
  266. % pattern fill operators
  267. %
  268. % - patternpath -
  269. /patternpath{ %bdef
  270.   cko currentgray 1.0 ne or {
  271.  
  272.   /mypatternfont findfont begin FontDict /ctm get setmatrix
  273.   currentdict setfont
  274.  
  275.   FontDict begin
  276.     FontMatrix concat
  277.     width 0 dtransform
  278.     round width div exch round width div exch
  279.     0 height dtransform
  280.     round height div exch
  281.     round height div exch
  282.     0 0 transform round exch round exch
  283.     ptm astore setmatrix
  284.     pathbbox
  285.     height div ceiling height mul 4 1 roll
  286.     width div ceiling width mul 4 1 roll
  287.     height div floor height mul 4 1 roll
  288.     width div floor width mul 4 1 roll
  289.     2 index sub height div ceiling cvi exch
  290.     3 index sub width div ceiling cvi exch
  291.     4 2 roll moveto
  292.     FontMatrix ptm invertmatrix pop
  293.     { %repeat
  294.       gsave
  295.       ptm concat
  296.       dup str length idiv {str PSshow}repeat
  297.       dup str length mod str exch 0 exch getinterval PSshow
  298.       grestore
  299.       0 height rmoveto
  300.     }repeat
  301.     pop
  302.   end end
  303.   } if
  304. }bdef
  305.  
  306. % - patternfill -
  307. /patternfill{ %bdef
  308.   gsave
  309.   1 setgray
  310.   fill
  311.   grestore
  312.  
  313.   gsave
  314.   clip patternpath
  315.   grestore
  316.   newpath
  317. }bdef
  318.  
  319. % - patterneofill -
  320. /patterneofill{ %bdef
  321.   gsave
  322.   1 setgray
  323.   eofill
  324.   grestore
  325.  
  326.   gsave
  327.   eoclip patternpath
  328.   grestore
  329.   newpath
  330. }bdef
  331.  
  332. % - patternstroke -
  333. /patternstroke{ %bdef
  334.   strokepath
  335.   gsave
  336.   1 setgray
  337.   eofill
  338.   grestore
  339.  
  340.   gsave
  341.   clip patternpath
  342.   grestore
  343.   newpath
  344. }bdef
  345.  
  346. % <pattern> P -
  347. /P{
  348.  /pattern xdef
  349.  /mypatternfont findfont begin
  350.  FontDict begin
  351.  true
  352.   0 1 patterncount 1 sub {
  353.    dup patterns exch get pattern eq
  354.       {0 1 str length 1 sub{str exch 2 index put}for pop pop false exit}
  355.    if
  356.    pop
  357.  }for
  358.  {
  359.    patterns patterncount pattern put
  360.     0 1 str length 1 sub {str exch patterncount put}for
  361.    /patterncount patterncount 1 add def
  362.  }if
  363.  end
  364.  end
  365.  /FILL{patternfill}bdef
  366.  /EOFILL{patterneofill}bdef
  367.  /STROKE{patternstroke}bdef
  368. }bdef
  369.  
  370. /S{
  371.  /FILL{fill}bdef
  372.  /EOFILL{eofill}bdef
  373.  /STROKE{stroke}bdef
  374. }bdef
  375.  
  376. %
  377. % gradient/radial/shape fill operators
  378. %
  379. /DOGRAD{
  380.  gsave
  381.  pmatrix setmatrix flattenpath exec 
  382.  pathbbox /ury xdef /urx xdef /lly xdef /llx xdef
  383.  angle 0 lt{/angle angle 360 add def}if
  384.  angle 180 gt{/angle angle 180 sub def tc1 tc2 /tc1 xdef /tc2 xdef}if
  385.  angle 90 gt{ /quad {ury exch sub}bdef tc1 tc2 /tc1 xdef /tc2 xdef}{ /quad {lly add}bdef}ifelse
  386.  /l urx llx sub def
  387.  /w ury lly sub def
  388.  /v angle dup 90 gt{90 sub neg 90 add}if dup sin l mul exch cos w mul add 2 mul def
  389.  /d angle dup 90 gt{90 sub neg 90 add}if dup sin w mul exch cos l mul add def
  390.  /steps d 72 div currentscreen pop pop mul cvi 1 add dup 256 gt{pop 256}if def
  391.  /dd d steps div def
  392.  
  393.  0 1 steps
  394.  {
  395.   steps div dup /frac xdef ramp /rfrac xdef
  396.   tc2 0 get tc1 0 get sub rfrac mul tc1 0 get add
  397.   tc2 1 get tc1 1 get sub rfrac mul tc1 1 get add
  398.   tc2 2 get tc1 2 get sub rfrac mul tc1 2 get add
  399.   tc2 3 get tc1 3 get sub rfrac mul tc1 3 get add scmyk
  400.  
  401.   newpath gsave
  402.   l frac mul llx add
  403.   w frac mul quad translate angle rotate 
  404.   dd 2 div neg v 2 div neg moveto
  405.   0 v rlineto dd 0 rlineto 0 v neg rlineto closepath
  406.   FILL grestore
  407.  }for
  408.  
  409.  grestore
  410.  newpath
  411. }bdef
  412.  
  413. %
  414. %
  415. /DORADIAL{
  416.  gsave
  417.  pmatrix setmatrix flattenpath exec 
  418.  pathbbox /ury xdef /urx xdef /lly xdef /llx xdef
  419.  /xc llx urx add 2 div dx add def
  420.  /yc lly ury add 2 div dy add def
  421.  /radius llx xc sub dup mul lly yc sub dup mul add sqrt def
  422.  llx xc sub dup mul ury yc sub dup mul add sqrt dup radius gt {/radius xdef}{pop}ifelse
  423.  urx xc sub dup mul lly yc sub dup mul add sqrt dup radius gt {/radius xdef}{pop}ifelse
  424.  urx xc sub dup mul ury yc sub dup mul add sqrt dup radius gt {/radius xdef}{pop}ifelse
  425.  
  426.  /steps radius 72 div currentscreen pop pop mul cvi 1 add dup 256 gt{pop 256}if def
  427.  
  428.  steps -1 0
  429.  {
  430.   steps div dup /frac xdef ramp /rfrac xdef
  431.   tc2 0 get tc1 0 get sub rfrac mul tc1 0 get add
  432.   tc2 1 get tc1 1 get sub rfrac mul tc1 1 get add
  433.   tc2 2 get tc1 2 get sub rfrac mul tc1 2 get add
  434.   tc2 3 get tc1 3 get sub rfrac mul tc1 3 get add scmyk
  435.   newpath xc yc radius frac mul 0 360 arc FILL
  436.  }for
  437.  
  438.  grestore
  439.  newpath
  440. }bdef
  441.  
  442. %
  443. %
  444. /DOSHAPE{
  445.  /steps 30 def
  446.  /fillproc xdef
  447.  
  448.  currentflat mark currentflat
  449.  {
  450.   {
  451.    dup setflat mark fillproc
  452.  
  453.    tc1 0 get tc1 1 get tc1 2 get tc1 3 get scmyk
  454.    currentflat mark currentflat
  455.    {
  456.     dup setflat mark
  457.     {FILL}gsave stopped grestore {cleartomark 1.3 mul dup 100 gt {cleartomark setflat stop}if}{cleartomark exit}ifelse
  458.    }loop
  459.    cleartomark setflat
  460.  
  461.    steps -1 0
  462.    {
  463.     steps div dup /frac xdef ramp /rfrac xdef
  464.     tc1 0 get tc2 0 get sub rfrac mul tc2 0 get add
  465.     tc1 1 get tc2 1 get sub rfrac mul tc2 1 get add
  466.     tc1 2 get tc2 2 get sub rfrac mul tc2 2 get add
  467.     tc1 3 get tc2 3 get sub rfrac mul tc2 3 get add scmyk
  468.     []0 setdash xc 2 mul frac mul setlinewidth
  469.  
  470.     currentflat mark currentflat
  471.     {
  472.      dup setflat mark
  473.      {STROKE}gsave stopped grestore {cleartomark 1.3 mul dup 100 gt {cleartomark setflat stop}if}{cleartomark exit}ifelse
  474.     }loop
  475.     cleartomark setflat
  476.  
  477.    }for
  478.   }
  479. %  gsave stopped grestore {cleartomark 1.3 mul dup 100 gt {cleartomark setflat stop}if}{cleartomark exit}ifelse
  480.   gsave stopped grestore {cleartomark 1.3 mul dup 100 gt {exit}if}{cleartomark exit}ifelse
  481.  }loop
  482.  cleartomark setflat
  483.  newpath
  484. }bdef
  485.  
  486. %
  487. % join miterlimit cap [dashpattern] dashoffset width lnsfunc lnefunc ST -
  488. %
  489. /ST{
  490.  load /lnefunc xdef load /lnsfunc xdef 
  491.  setlinewidth setdash setlinecap 2 div sin 1 exch div setmiterlimit setlinejoin
  492.  
  493.  /lnsfunc load /LENone load ne {
  494.   mark
  495.   /havestart 0 def
  496.   {havestart 2 eq {x2 x1 sub y1 y2 sub atan 90 add x1 y1 5 -2 roll}if /havestart 1 def /y1 xdef /x1 xdef} %moveto
  497.   {havestart 1 eq {/y2 xdef /x2 xdef x1 x2 ne y1 y2 ne or {/havestart 2 def}if}{pop pop}ifelse} %lineto
  498.   {havestart 1 eq {/py2 xdef /px2 xdef /cx2 xdef /cy2 xdef /y2 xdef /x2 xdef x1 x2 ne y1 y2 ne or
  499.     {/havestart 2 def}{x1 cx2 ne y1 cy2 ne or {/x2 cx2 def /y2 cy2 def /havestart 2 def}
  500.     {x1 px2 ne y1 py2 ne or {/x2 px2 def /y2 py2 def /havestart 2 def}if}
  501.     ifelse}ifelse}{pop pop pop pop pop pop}ifelse} %curveto
  502.   {/havestart 0 def} %closepath
  503.   pathforall
  504.   havestart 2 eq {x2 x1 sub y1 y2 sub atan 90 add x1 y1} if
  505.  }if
  506.  
  507.  /lnefunc load /LENone load ne {
  508.   mark
  509.   /havestart 0 def
  510.   {havestart 2 eq {x2 x1 sub y1 y2 sub atan 90 add x1 y1 5 -2 roll}if /havestart 1 def /y1 xdef /x1 xdef} %moveto
  511.   {/py2 xdef /px2 xdef x1 px2 ne y1 py2 ne or {/x2 x1 def /y2 y1 def /x1 px2 def /y1 py2 def /havestart 2 def}if} %lineto
  512.   {/py2 xdef /px2 xdef /cy2 xdef /cx2 xdef /cy1 xdef /cx1 xdef
  513.     x1 cx1 ne y1 cy1 ne or {/x2 x1 def /y2 y1 def /x1 cx1 def /y1 cy1 def /havestart 2 def}if
  514.     x1 cx2 ne y1 cy2 ne or {/x2 x1 def /y2 y1 def /x1 cx2 def /y1 cy2 def /havestart 2 def}if
  515.     x1 px2 ne y1 py2 ne or {/x2 x1 def /y2 y1 def /x1 px2 def /y1 py2 def /havestart 2 def}if} %curveto
  516.   {/havestart 0 def} %closepath
  517.   pathforall
  518.   havestart 2 eq {x2 x1 sub y1 y2 sub atan 90 add x1 y1} if
  519.  }if
  520.  
  521.  strokepath
  522.  
  523.  /lnefunc load /LENone load ne {
  524.   counttomark 3 div cvi {matrix currentmatrix 4 1 roll translate rotate currentlinewidth dup scale lnefunc setmatrix} repeat pop
  525.  }if
  526.  /lnsfunc load /LENone load ne {
  527.   counttomark 3 div cvi {matrix currentmatrix 4 1 roll translate rotate currentlinewidth dup scale lnsfunc setmatrix} repeat pop
  528.  }if
  529.  
  530. }bdef
  531.  
  532. % fill functions
  533.  
  534. %
  535. % screen spot functions
  536. %
  537. /SSNewDot {180 mul cos exch 180 mul cos add 2 div}bdef
  538. /SSDot {dup mul exch dup mul add 1.0 exch sub}bdef
  539. /SSRing {dup mul exch dup mul add 1.0 exch sub abs 1.0 exch sub}bdef
  540. /SSDonut {dup mul exch dup mul add sqrt .5 sub abs 1.0 exch sub}bdef
  541. /SSLine {exch pop abs}bdef
  542. /SSTriangle {2 exch sub exch abs 2 mul sub 3 div}bdef
  543. /SSPropeller {/y xdef /x xdef y x .001 add atan cvi 72 mod 72 sub abs 72 div y y mul x x mul add 1 exch sub add 2 div}bdef
  544.  
  545. %
  546. % fountain blend functions
  547. %
  548. /FBLinear {}bdef
  549. /FBInvLinear {1 exch sub}bdef
  550. /FBLog {9 mul 1 add log}bdef
  551. /FBInvLog {9 mul 1 add log 1 exch sub}bdef
  552. /FBSin {180 mul sin}bdef
  553. /FBInvSin {180 mul sin 1 exch sub}bdef
  554. /FBSaw {2 mul dup 1 gt {2 exch sub}if}bdef
  555. /FBInvSaw {2 mul dup 1 gt {2 exch sub}if 1 exch sub}bdef
  556.  
  557. %
  558. % line end functions
  559. %
  560. /LENone {}bdef
  561. /LERound {0 0 moveto 0 0 .5 -90 90 arc closepath}bdef
  562. /LEArrow {0 0 moveto 0 2 lineto 6 0 lineto 0 -2 lineto closepath}bdef
  563. /LEArrow1 {0 0 moveto 0 2 lineto 6 0 lineto 0 -2 lineto closepath}bdef
  564. /LEArrow2 {0 0 moveto -2 2 lineto 6 0 lineto -2 -2 lineto closepath}bdef
  565. /LEArrow3 {6 0 moveto -3 0 2.31 300 60 arc closepath}bdef
  566. /LEArrow4 {-1 0 moveto -4 2 .5 240 60 arcn 0 0 .5 60 300 arcn -4 -2 .5 300 120 arcn closepath}bdef
  567. /LESpike1 {0 .5 moveto .5 2 lineto 1 .5 lineto 6 0 lineto 1 -.5 lineto .5 -2 lineto 0 -.5 lineto closepath}bdef
  568. /LESpike2 {0 .5 moveto 2 2 lineto 6 0 lineto 2 -2 lineto 0 -.5 lineto closepath}bdef
  569. /LEFeather1 {-2 0 moveto 0 2 lineto 6 2 lineto 4 0 lineto 6 -2 lineto 0 -2 lineto closepath}bdef
  570. /LEFeather2 {0 -2 moveto 0 0 2 270 90 arcn 6 0 2 90 270 arc closepath}bdef
  571. /LEBox {-2 0 moveto -2 2 lineto 2 2 lineto 2 -2 lineto -2 -2 lineto closepath}bdef
  572. /LEDiamond {-2 0 moveto 0 2 lineto 2 0 lineto 0 -2 lineto closepath}bdef
  573. /LEBall {0 0 moveto 0 0 2 360 0 arcn closepath}bdef
  574. /LEEllipse {2 1 scale 0 0 moveto 0 0 2 360 0 arcn closepath}bdef
  575.  
  576. %
  577. % freq angle spot SS -
  578. %
  579. /SS {
  580.  load setscreen
  581. }bdef
  582.  
  583. %
  584. % text prototypes
  585. %
  586. % (string) F1 -
  587. % (string) kernamt F2 -
  588. % (string) skernamt F3 -
  589. % (string) skernamt kernamt F4 -
  590. %
  591.  
  592. /FS{dup length 1 sub 0 exch 1 exch}bdef
  593. /Fx{1 index exch 1 getinterval dup currentpoint currentpoint newpath moveto 3 -1 roll false charpath FP moveto}bdef
  594. /Sx{1 index exch 1 getinterval dup currentpoint currentpoint newpath moveto 3 -1 roll false charpath SP moveto}bdef
  595.  
  596. /S1{FS {Sx stringwidth rmoveto}for pop}bdef
  597. /S2{/dx xdef FS {Sx stringwidth rmoveto dx 0 rmoveto}for pop}bdef
  598. /S3{/dy xdef FS {Sx dup stringwidth rmoveto ( ) eq {dy 0 rmoveto}if}for pop}bdef
  599. /S4{/dy xdef /dx xdef FS {Sx dup stringwidth rmoveto dx 0 rmoveto ( ) eq {dy 0 rmoveto}if}for pop}bdef
  600.  
  601. /CFx{
  602.  /F1{FS {Fx stringwidth rmoveto}for pop}bdef
  603.  /F2{/dx xdef FS {Fx stringwidth rmoveto dx 0 rmoveto}for pop}bdef
  604.  /F3{/dy xdef FS {Fx dup stringwidth rmoveto ( ) eq {dy 0 rmoveto}if}for pop}bdef
  605.  /F4{/dy xdef /dx xdef FS {Fx dup stringwidth rmoveto dx 0 rmoveto ( ) eq {dy 0 rmoveto}if}for pop}bdef
  606. }bdef
  607.  
  608. %
  609. % c m y k CMYK -
  610. %
  611. /CMYK {
  612.  scmyk
  613.  
  614.  /FP{FILL}bdef
  615.  /EP{EOFILL}bdef
  616.  /SP{STROKE}bdef
  617.  
  618.  /F1{show}bdef
  619.  /F2{exch 0 exch ashow}bdef
  620.  /F3{exch 0 exch 32 exch widthshow}bdef
  621.  /F4{0 exch 32 exch 0 6 -1 roll awidthshow}bdef
  622. }bdef
  623.  
  624. %
  625. % angle /ramp [c1 m1 y1 k1][c2 m2 y2 k2] CMYKGRAD -
  626. %
  627. /CMYKGRAD{
  628.  /tc2 xdef
  629.  /tc1 xdef
  630.  /ramp exch ldef
  631.  /angle xdef
  632.  
  633.  /FP{{clip} DOGRAD}bdef
  634.  /EP{{eoclip} DOGRAD}bdef
  635.  /SP{strokepath {clip} DOGRAD}bdef
  636.  
  637.  CFx
  638. }bdef
  639.  
  640. %
  641. % dx dy /ramp [c1 m1 y1 k1][c2 m2 y2 k2] CMYKRADIAL -
  642. %
  643. /CMYKRADIAL{
  644.  /tc2 xdef
  645.  /tc1 xdef
  646.  /ramp exch ldef
  647.  /dy xdef
  648.  /dx xdef
  649.  
  650.  /FP{{clip} DORADIAL}bdef
  651.  /EP{{eoclip} DORADIAL}bdef
  652.  /SP{strokepath {clip} DORADIAL}bdef
  653.  
  654.  CFx
  655. }bdef
  656.  
  657. %
  658. % inset /ramp [c1 m1 y1 k1][c2 m2 y2 k2] CMYKSHAPE -
  659. %
  660. /CMYKSHAPE{
  661.  /tc2 xdef
  662.  /tc1 xdef
  663.  /ramp exch ldef
  664.  /xc xdef
  665.  
  666.  /FP{{clip} DOSHAPE}bdef
  667.  /EP{{eoclip} DOSHAPE}bdef
  668.  /SP{strokepath {clip} DOSHAPE}bdef
  669.  
  670.  CFx
  671. }bdef
  672.  
  673. /O`{/dko false def /cko false def}bdef
  674. /K`{/dko true def /cko true def}bdef
  675. /o`{/cko false def}bdef
  676. /k`{dko{/cko true def}if}bdef
  677.  
  678. /grayP{
  679.   /striptype 1 def
  680.   /scmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdef
  681.   /setgray /SG load def
  682. }bdef
  683.  
  684. /colorP{
  685.   /striptype 2 def
  686.   /scmyk /SCMYK load def
  687.   /setgray /SG load def
  688. }bdef
  689.  
  690. /cP{
  691.   /striptype 2 def
  692.   /scmyk {pop pop pop 1 exch sub SG}bdef
  693.   /setgray {pop 1 SG}bdef
  694. }bdef
  695.  
  696. /mP{
  697.   /striptype 2 def
  698.   /scmyk {pop pop 1 exch sub SG pop}bdef
  699.   /setgray {pop 1 SG}bdef
  700. }bdef
  701.  
  702. /yP{
  703.   /striptype 2 def
  704.   /scmyk {pop 1 exch sub SG pop pop}bdef
  705.   /setgray {pop 1 SG}bdef
  706. }bdef
  707.  
  708. /kP{
  709.   /striptype 2 def
  710.   /scmyk {1 exch sub SG pop pop pop}bdef
  711.   /setgray /SG load def
  712. }bdef
  713.  
  714. % spotname sP -
  715. /spotP{
  716.   /striptype 3 def
  717.   /spotname xdef
  718.  
  719. %for now
  720.  
  721.   /scmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdef
  722.   /setgray /SG load def
  723.  
  724. %  /sepcolor xdef
  725. %
  726. %  /scmyk {
  727. %   sepcolor 3 get eq exch
  728. %   sepcolor 2 get eq and exch
  729. %   sepcolor 1 get eq and exch
  730. %   sepcolor 0 get eq and {0 SG}{1 SG}ifelse}bdef
  731. %  sepcolor 3 get 1 eq sepcolor 2 get 0 eq and sepcolor 1 get 0 eq and sepcolor 0 get 0 eq and {/setgray /SG load def}{/setgray {pop 1 SG}bdef}ifelse
  732. }bdef
  733.  
  734. % freq angle setS -
  735. /setS{
  736.  dup type /stringtype eq {pop dangle}if exch dup type /stringtype eq {pop dfreq}if exch /dspot load setscreen
  737.  currentscreen /cspot xdef /cangle xdef /cfreq xdef
  738. }bdef
  739.  
  740. %
  741. % #copies BEGINDOCUMENT -
  742. %
  743. /BeginDocument{
  744.  /#copies xdef
  745.  
  746.   7 dict begin
  747.     /FontDict 12 dict def
  748.     FontDict begin
  749.       /key /mypatternfont def
  750.       /patterns 256 array def
  751.       /patterncount 0 def
  752.       /char 0 def
  753.       /mtx [300 72 div 0 0 300 72 div 0 0] matrix invertmatrix def
  754.       /height 30 def
  755.       /width 30 def
  756.       /ctm matrix currentmatrix def
  757.       /ptm matrix identmatrix def
  758.       /str 32 string def
  759.     end
  760.     /FontBBox [0 0 FontDict /width get FontDict /height get] def
  761.     /FontMatrix FontDict /mtx get def
  762.     /Encoding 256 array 0 1 255 {1 index exch dup 3 string cvs cvn put}for def
  763.     /FontType 3 def
  764.     /BuildChar { %def
  765.       exch begin
  766.       FontDict begin
  767.       /char xdef
  768.        width 0 0 0 width height setcachedevice
  769.       width height scale 8 8 true [8 0 0 -8 0 8] {patterns char get}imagemask
  770.       end end
  771.     }def
  772.     FontDict /key get currentdict definefont pop
  773.   end
  774.  
  775.  /dmatrix dmatrix currentmatrix def
  776.  currentscreen /dspot xdef /dangle xdef /dfreq xdef
  777.  
  778. }bdef
  779.  
  780. %
  781. % /newfontname /fontname RE -
  782. %
  783. /RE{
  784.  mark {FontDirectory 3 index get} stopped
  785.  {cleartomark
  786.   findfont dup length 2 add dict begin {1 index /FID ne {def}{pop pop}ifelse}forall
  787.   /FontType load 42 eq {/Encoding PGS42Encoding def}{/Encoding PGSEncoding def}ifelse
  788.   /FontName 1 index def
  789.   currentdict definefont pop
  790.   end
  791.  }
  792.  {cleartomark pop pop}ifelse
  793. }bdef
  794.  
  795. %
  796. % /fontname xscale yscale slant twist F -
  797. %
  798. /F{
  799.  /twist xdef /slant xdef /yscale xdef /xscale xdef
  800.  findfont [xscale 0 0 yscale 0 0] [twist cos twist sin slant sin neg slant cos 0 0] sclm concatmatrix makefont setfont
  801. }bdef
  802.  
  803. %
  804. % - ENDOCUMENT -
  805. %
  806. /EndDocument{% fixes printing extra page with GX
  807. userdict /restore {pop /showpage {} def} bind put
  808. }bdef
  809.  
  810. %
  811. % tilew tileh landscape scaleh scalex paperw paperh BEGINTILE -
  812. %
  813. /BeginTile{
  814.  2 div exch 2 div exch translate
  815.  /tilescaley xdef /tilescalex xdef tilescalex tilescaley scale
  816.  {90 rotate} if
  817.  -2 div exch -2 div exch translate
  818.  
  819.  /tmatrix tmatrix currentmatrix def
  820. }bdef
  821.  
  822. %
  823. % - ENDTILE -
  824. %
  825. /EndTile{
  826.  dmatrix setmatrix
  827. }bdef
  828.  
  829. %
  830. % title left top right bottom THUMBNAILMARKS -
  831. %
  832. /ThumbnailMarks{
  833.  /tiley2 xdef
  834.  /tilex2 xdef
  835.  /tiley1 xdef
  836.  /tilex1 xdef
  837.  /title1 xdef
  838.  
  839.  tmatrix setmatrix
  840.  .5 SG 6 setlinewidth
  841.  newpath
  842.  tilex1 3 add tiley2 3 sub moveto
  843.  tilex2 3 add tiley2 3 sub lineto
  844.  tilex2 3 add tiley1 3 sub lineto PSstroke
  845.  
  846.  0 SG [] 0 setdash .3 setlinewidth 0 setlinejoin 0 setlinecap
  847.  newpath tilex1 tiley1 moveto tilex2 tiley1 lineto tilex2 tiley2 lineto tilex1 tiley2 lineto closepath PSstroke
  848.  
  849.  gsave tilex1 tilex2 add 2 div tiley2 translate 1 tilescalex div 1 tilescaley div scale -2 -6 bv sub translate
  850.  /PGSCourier/Courier RE /PGSCourier findfont 6 scalefont setfont
  851.  0 0 moveto title1 PSshow
  852.  grestore
  853. }bdef
  854.  
  855. %
  856. % left top "BeginPage"
  857. %
  858. /BeginPage{
  859.  tmatrix setmatrix translate 
  860.  /pmatrix pmatrix currentmatrix def
  861. }bdef
  862.  
  863. %
  864. % "EndPage"
  865. %
  866. /EndPage{
  867.  tmatrix setmatrix
  868. }bdef
  869.  
  870. /PPDSetup{countdictstack mark}bdef
  871. /PPDCleanup{stopped cleartomark countdictstack exch sub dup 0 gt{{end}repeat}{pop}ifelse}bdef
  872.  
  873. %
  874. % - "BO" matrix
  875. %
  876. /BO{
  877.  matrix currentmatrix
  878. }bdef
  879.  
  880. %
  881. % slant twist "r" -
  882. %
  883. /r{
  884.  /twist xdef
  885.  /slant xdef
  886.  
  887.  sclm 0 twist cos put sclm 1 twist sin put sclm 2 slant sin neg put sclm 3 slant cos put sclm concat
  888. }bdef
  889.  
  890. %
  891. % aboutx abouty slant twist "R" -
  892. %
  893. /r'{
  894.  /twist xdef
  895.  /slant xdef
  896.  /deltay xdef
  897.  /deltax xdef
  898.  
  899.  deltax deltay translate
  900.  sclm 0 twist cos put sclm 1 twist sin put sclm 2 slant sin neg put sclm 3 slant cos put sclm concat
  901.  deltax neg deltay neg translate
  902. }bdef
  903.  
  904. %
  905. % hscale vscale "s" -
  906. %
  907. /s{scale}bdef
  908.  
  909. %
  910. % xoffset1 yoffset1 hscale vscale xoffset2 yoffset2 "S" -
  911. %
  912. /s'{translate scale neg exch neg exch translate}bdef
  913.  
  914. %
  915. % xoffset yoffset "t" -
  916. %
  917. /t{translate}bdef
  918.  
  919. %
  920. % matrix "EO" -
  921. %
  922. /EO {setmatrix}bdef
  923.  
  924. %
  925. % - BEGINCLIP -
  926. %
  927. /BeginClip {gsave clip}bdef
  928.  
  929. %
  930. % - ENDCLIP -
  931. %
  932. /EndClip {grestore}bdef
  933.  
  934. %
  935. % xscale yscale xoffset yoffset pixelw pixelh bitsperpixel BEGINBITMAP -
  936. %
  937. /BeginBitmap {
  938.  save 8 1 roll /bpp xdef /h xdef /w xdef
  939.  scl translate scale /picstr 8 bpp idiv dup w add 1 sub exch idiv string def
  940.  w h bpp [w 0 0 h neg 0 h] {currentfile picstr readhexstring pop}bind image
  941. }bdef
  942.  
  943. %
  944. % xscale yscale xoffset yoffset pixelw pixelh bitsperpixel BEGINRGBBITMAP -
  945. %
  946. /BeginRGBBitmap {
  947.  save 8 1 roll /bpp xdef /h xdef /w xdef
  948.  scl translate scale /picstr 8 bpp idiv dup w 3 mul add 1 sub exch idiv string def
  949.  w h bpp [w 0 0 h neg 0 h] {currentfile picstr readhexstring pop}bind false 3 colorimage
  950. }bdef
  951.  
  952. %
  953. % - ENDBITMAP -
  954. %
  955. /EndBitmap {restore}bdef
  956.  
  957. %
  958. % xscalex yscale xoffset yoffset BEGINEPS -
  959. %
  960. /BeginEPS {
  961.  scl translate scale translate
  962.  /PGSEPSSave save def
  963.  /showpage {}bdef
  964.  /dict_count countdictstack def /op_count count 1 sub def
  965.  userdict begin
  966.  newpath 0 setgray 1 setlinewidth [] 0 setdash 0 setlinecap 0 setlinejoin 10 setmiterlimit
  967.  /languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint}if }if
  968. }bdef
  969.  
  970. %
  971. % - ENDEPS -
  972. %
  973. /EndEPS {count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat PGSEPSSave restore}bdef
  974.  
  975. %
  976. % angle cx cy cropmark -
  977. %
  978. /cropmark {
  979.   gsave translate 1 tilescalex div 1 tilescaley div scale rotate
  980.   .3 setlinewidth newpath
  981.   bh 5 add 0 moveto 20 0 rlineto
  982.   0 bv 5 add moveto 0 20 rlineto
  983.   PSstroke grestore
  984. }bdef
  985.  
  986. %
  987. % dx dy cx cy regmark -
  988. %
  989. /regmark {
  990.   gsave translate 1 tilescalex div 1 tilescaley div scale translate
  991.   .3 setlinewidth newpath
  992.   10 0 moveto 0 0 10 0 360 arc
  993.   1 SG PSfill
  994.   8 0 moveto 0 0 8 0 360 arc
  995.   -10 0 moveto 10 0 lineto 0 -10 moveto 0 10 lineto
  996.   0 SG PSstroke
  997.   4 0 moveto 0 0 4 0 360 arc
  998.   PSfill
  999.   -4 0 moveto 4 0 lineto 0 -4 moveto 0 4 lineto
  1000.   1 SG PSstroke
  1001.   grestore
  1002. }bdef
  1003.  
  1004. %
  1005. % dx dy cx cy slurgauge -
  1006. %
  1007. /slurgauge {
  1008.   gsave translate 1 tilescalex div 1 tilescaley div scale translate
  1009.   .3 setlinewidth newpath
  1010.   0 0 10 0 360 arc
  1011.   1 SG PSfill
  1012.   0 0 10 0 360 arc
  1013.   0 SG PSstroke
  1014.   36 { 1 0 moveto 0 0 10 -2.5 2.5 arc PSfill 10 rotate}repeat
  1015.   grestore
  1016. }bdef
  1017.  
  1018. /boxit {newpath moveto 14 0 rlineto 0 -14 rlineto -14 0 rlineto closepath}def
  1019.  
  1020. %
  1021. % angle dx dy cx cy colorstrip -
  1022. %
  1023. /colorstrip {
  1024.   gsave translate 1 tilescalex div 1 tilescaley div scale translate rotate
  1025.  
  1026.   /PGSCourier/Courier RE /PGSCourier findfont 6 scalefont setfont
  1027.  
  1028.   striptype 1 eq {
  1029.     0 8 translate
  1030.     0 1 9 {dup 15 mul 0 boxit 10 div SG PSfill}for
  1031.    }if
  1032.  
  1033.   striptype 2 eq {
  1034.     gsave 320 15 translate
  1035.     0 0 boxit .5 .41 .41 0 scmyk PSfill
  1036.     15 0 boxit 0 0 0 .5 scmyk PSfill
  1037.     30 0 boxit 1 1 0 0 scmyk PSfill
  1038.     45 0 boxit 1 0 1 0 scmyk PSfill
  1039.     60 0 boxit 0 1 1 0 scmyk PSfill
  1040.     75 0 boxit 1 1 1 0 scmyk PSfill
  1041.     1 SG
  1042.     33 -6 moveto (CM) PSshow
  1043.     48 -6 moveto (CY) PSshow
  1044.     63 -6 moveto (MY) PSshow
  1045.     77 -6 moveto (CMY) PSshow
  1046.     grestore
  1047.  
  1048.  
  1049.     0 0 0 1 scmyk -6 9 moveto (K) PSshow
  1050.     0 1 9 {dup 15 mul 15 boxit 10 div 0 0 0 4 -1 roll scmyk PSfill}for
  1051.  
  1052.     1 0 0 0 scmyk -6 -6 moveto (C) PSshow
  1053.     0 1 9 {dup 15 mul 0 boxit 10 div 0 0 0 scmyk PSfill}for
  1054.  
  1055.     0 1 0 0 scmyk 154 9 moveto (M) PSshow
  1056.     0 1 9 {dup 15 mul 160 add 15 boxit 10 div 0 exch 0 0 scmyk PSfill}for
  1057.  
  1058.     0 0 1 0 scmyk 154 -6 moveto (Y) PSshow
  1059.     0 1 9 {dup 15 mul 160 add 0 boxit 10 div 0 0 3 -1 roll 0 scmyk PSfill}for
  1060.  
  1061.    }if
  1062.  
  1063.   striptype 3 eq {
  1064.     320 0 translate
  1065.     0 1 9 {dup 15 mul 0 boxit 10 div SG PSfill}for
  1066.    }if
  1067.  
  1068.   grestore
  1069. }def
  1070.  
  1071. %
  1072. % title1 title2 tilew tileh PRINTERSMARKS -
  1073. %
  1074. /PrintersMarks {
  1075.  /tileh xdef
  1076.  /tilew xdef
  1077.  /title2 xdef
  1078.  /title1 xdef
  1079.  
  1080.  gsave 0 SG [] 0 setdash 0 setlinejoin 0 setlinecap
  1081.  
  1082.  180 0 0 cropmark
  1083.  270 tilew 0 cropmark
  1084.  0 tilew tileh cropmark
  1085.  90 0 tileh cropmark
  1086.  
  1087.  0 15 bv add tilew 2 div tileh regmark
  1088.  0 -15 bv sub tilew 2 div 0 regmark
  1089.  
  1090.  -15 bh sub -15 bv sub 0 0 slurgauge
  1091.  15 bh add 15 bv add tilew tileh slurgauge
  1092.  
  1093.   gsave 1 tilescalex div 1 tilescaley div scale -15 bh sub 8 translate 90 rotate
  1094.   /PGSCourier/Courier RE /PGSCourier findfont 8 scalefont setfont
  1095.   0 0 moveto title1 PSshow
  1096.   0 -8 moveto title2 PSshow (  ) PSshow
  1097.   currentscreen pop exch 20 string cvs PSshow ( lpi  ) PSshow
  1098.   20 string cvs PSshow (\260  ) PSshow
  1099.   tilescalex 100 mul 20 string cvs PSshow (%) PSshow
  1100.   tilescaley tilescalex ne {(,) PSshow tilescaley 100 mul 20 string cvs PSshow (%) PSshow}if
  1101.   grestore
  1102.  
  1103.  90 bh 15 add 15 tilew 0 colorstrip
  1104.  grestore
  1105. }bdef
  1106.  
  1107. % hack around the @#!%$^% laserwriter8 driver bug
  1108. /*def/def load def
  1109. /def {1 index/fcheckload eq{pop{pop pop}}if *def}bdef
  1110.  
  1111. end
  1112. %%EndProlog
  1113.