home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 21 PDrivers / 21-PDrivers.zip / psnupos2.zip / nup.pro < prev    next >
Text File  |  1995-02-25  |  4KB  |  352 lines

  1. %! nup.pro -- Short version prelude for n-up printing. $Revision: 4.2 $
  2. /$Nup
  3. 75
  4. dict
  5. def
  6. $Nup
  7. begin/spots
  8. @#@Pages@#@
  9. def/reverse?
  10. @#@Rev@#@
  11. def/startspot
  12. @#@Start@#@
  13. def
  14. gsave/transforms[/ind
  15. 0
  16. def[2
  17. 4
  18. 8
  19. 16]{spots
  20. eq{exit}if/ind
  21. ind
  22. 1
  23. add
  24. def}forall/upright?[false
  25. true
  26. false
  27. true]ind
  28. get
  29. def/numwide[2
  30. 2
  31. 4
  32. 4]ind
  33. get
  34. def/sfactor[0.5833
  35. 0.4444
  36. 0.2916
  37. 0.2222]ind
  38. get
  39. def/pwidth
  40. sfactor
  41. 612
  42. mul
  43. def/pheight
  44. sfactor
  45. 792
  46. mul
  47. def
  48. upright?{/width
  49. 544
  50. def/height
  51. 704
  52. def}{/width
  53. 714
  54. def/height
  55. 462
  56. def}ifelse
  57. reverse?{spots
  58. 1
  59. sub
  60. -1
  61. 0}{0
  62. 1
  63. spots
  64. 1
  65. sub}ifelse{/p
  66. exch
  67. def
  68. initmatrix
  69. upright?{34
  70. 44
  71. translate}{537
  72. 39
  73. translate
  74. 90
  75. rotate}ifelse
  76. p
  77. numwide
  78. mod
  79. pwidth
  80. mul
  81. height
  82. p
  83. numwide
  84. idiv
  85. 1
  86. add
  87. pheight
  88. mul
  89. sub
  90. translate
  91. sfactor
  92. dup
  93. scale
  94. matrix
  95. currentmatrix}for]def
  96. grestore/spot
  97. startspot
  98. def/pods[/showpage/copypage/erasepage/initgraphics/initmatrix/initclip/defaultmatrix
  99. /currentmatrix/setmatrix/restore/gsave/grestore/grestoreall]def/+s
  100. 128
  101. string
  102. dup
  103. 0(+)putinterval
  104. def/-s
  105. 128
  106. string
  107. dup
  108. 0(-)putinterval
  109. def/namestr
  110. 128
  111. string
  112. def
  113. pods{dup
  114. namestr
  115. cvs
  116. dup
  117. length/l
  118. exch
  119. def
  120. -s
  121. exch
  122. 1
  123. exch
  124. putinterval
  125. systemdict
  126. exch
  127. get
  128. -s
  129. 0
  130. l
  131. 1
  132. add
  133. getinterval
  134. exch
  135. def}forall/psave{-gsave[/newpath
  136. load{/moveto
  137. load}{/lineto
  138. load}{/curveto
  139. load}{/closepath
  140. load}pathforall]-grestore}def/prestore{cvx
  141. exec}def
  142. gsave
  143. initgraphics
  144. clippath/page-clip
  145. psave
  146. def
  147. grestore/astr
  148. 128
  149. string
  150. def/numstr
  151. 10
  152. string
  153. def/$arrays
  154. 50
  155. dict
  156. def/a2s{/l
  157. 0
  158. def{100
  159. mul
  160. cvi
  161. numstr
  162. cvs
  163. astr
  164. exch
  165. l
  166. exch
  167. dup
  168. length
  169. l
  170. add/l
  171. exch
  172. def
  173. putinterval
  174. astr
  175. l(:)putinterval/l
  176. l
  177. 1
  178. add
  179. def}forall
  180. astr
  181. 0
  182. l
  183. 1
  184. sub
  185. getinterval}def/arrdef{exch
  186. a2s
  187. exch
  188. $arrays
  189. 3
  190. 1
  191. roll
  192. put}def/arrload{a2s
  193. $arrays
  194. exch
  195. 2
  196. copy
  197. known{get
  198. true}{false}ifelse}def/m
  199. matrix
  200. def/m2
  201. matrix
  202. def/m3
  203. matrix
  204. def/fix-gstate{psave
  205. clippath
  206. psave
  207. 4
  208. 2
  209. roll
  210. fix-trans
  211. -initclip
  212. prestore
  213. clip
  214. prestore}def/fix-trans{/newspot
  215. exch
  216. def/oldspot
  217. exch
  218. def
  219. m
  220. -currentmatrix
  221. transforms
  222. oldspot
  223. get
  224. m2
  225. invertmatrix
  226. m3
  227. concatmatrix
  228. transforms
  229. newspot
  230. get
  231. m
  232. concatmatrix
  233. -setmatrix}def/page-edges{-gsave
  234. +initgraphics
  235. -initclip
  236. 0.0
  237. setlinewidth
  238. newpath
  239. 0
  240. 0
  241. moveto
  242. 0
  243. 792
  244. lineto
  245. 612
  246. 792
  247. lineto
  248. 612
  249. 0
  250. lineto
  251. closepath
  252. stroke
  253. -grestore}def/+defaultmatrix{transforms
  254. spot
  255. get
  256. exch
  257. copy}def/+initmatrix{m
  258. +defaultmatrix
  259. -setmatrix}def/+initgraphics{-initgraphics
  260. +initmatrix
  261. +initclip}def/+initclip{psave
  262. m
  263. -currentmatrix
  264. -initclip
  265. +defaultmatrix
  266. page-clip
  267. prestore
  268. clip
  269. -setmatrix
  270. prestore}def/+showpage{+copypage
  271. +erasepage
  272. +initgraphics}def/+copypage{page-edges
  273. spot
  274. 1
  275. add
  276. dup
  277. spots
  278. eq{-copypage
  279. -erasepage
  280. pop
  281. 0}if/spot
  282. exch
  283. def}def/+erasepage{-gsave
  284. +initgraphics
  285. page-clip
  286. prestore
  287. 1
  288. setgray
  289. fill
  290. -grestore}def/+restore{spot
  291. exch
  292. -restore
  293. dup
  294. spot
  295. ne{dup
  296. spot
  297. exch
  298. fix-gstate/spot
  299. exch
  300. def}{pop}ifelse}def/+gsave{-gsave
  301. m
  302. -currentmatrix
  303. spot
  304. arrdef}def/+grestore{-grestore
  305. m
  306. -currentmatrix
  307. arrload{spot
  308. fix-gstate}if}def/+grestoreall{-grestoreall
  309. m
  310. -currentmatrix
  311. arrload{spot
  312. fix-gstate}if}def/+currentmatrix{-currentmatrix
  313. dup
  314. spot
  315. arrdef}def/+setmatrix{dup
  316. -setmatrix
  317. dup
  318. arrload{spot
  319. fix-trans
  320. pop}{(bad setmatrix: )print
  321. ==}ifelse}def
  322. pods{/pod
  323. exch
  324. def
  325. userdict
  326. pod[$Nup/begin
  327. load
  328. pod
  329. namestr
  330. cvs
  331. dup
  332. length/l
  333. exch
  334. def
  335. +s
  336. exch
  337. 1
  338. exch
  339. putinterval
  340. +s
  341. 0
  342. l
  343. 1
  344. add
  345. getinterval
  346. cvn
  347. cvx/end
  348. load]cvx
  349. put}forall
  350. end
  351. initgraphics
  352.