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