blob: 256891a9a248078f19fa4fa594013bfca85422e2 [file] [log] [blame]
rsc13f73912004-05-15 23:45:13 +00001%
2% Center pages, based on pageheight and pagewidth, and redefine showpage
3% to put cropmarks at each corner. Device dependent code to expand the
4% paper size goes in procedure expandpagesize. Currently only supports
5% a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
6% add code to expandpagesize to support different typesetters or even a
7% 200P that's running differently.
8%
9
10/CropmarkDict 40 dict dup begin
11
12/expandpage true def
13/magnification 1 def
14/pageheight 11.0 def
15/pagewidth 8.5 def
16/scaletofit false def
17/scaling 1 def
18
19/marklength .3 def % inches
20/markstart .125 def % inches
21/markend .04 def % inches
22/marklinewidth .25 def % points
23
24/inch {72 mul} def
25/min {2 copy gt {exch} if pop} def
26/max {2 copy lt {exch} if pop} def
27
28/setup {
29 /markspace markstart marklength add markend add inch marklinewidth add def
30 /totalheight pageheight inch markspace 2 mul add def
31 /totalwidth pagewidth inch markspace 2 mul add def
32
33 pagedimensions
34 checkpagesize
35 /scaling getscaling def
36 xcenter ycenter translate
37 scaling scaling scale
38 pagewidth inch 2 div neg pageheight inch 2 div neg translate
39 clippage
40} def
41
42/pagedimensions {
43 clippath pathbbox newpath
44 4 -1 roll exch 4 1 roll 4 copy
45 sub /width exch def
46 sub /height exch def
47 add 2 div /xcenter exch def
48 add 2 div /ycenter exch def
49} def
50
51/checkpagesize {
52 height totalheight lt width totalwidth lt or expandpage and {
53 expandpagesize
54 pagedimensions
55 } if
56} def
57
58/expandpagesize { % device dependent code
59 /Product statusdict begin /product where {pop product}{()} ifelse end def
60
61 Product (Linotype) eq { % Linotronic 200P and other models?
62 statusdict /setpageparams known {
63 /maxwidth 12.0 inch def % 12 inch wide paper?
64 totalheight maxwidth le {
65 totalheight
66 totalwidth
67 maxwidth totalheight sub 2 div
68 0
69 }{
70 totalwidth maxwidth min
71 totalheight
72 maxwidth totalwidth maxwidth min sub 2 div
73 1
74 } ifelse
75 statusdict /setpageparams get exec
76 } if
77 } if
78} def
79
80/getscaling {
81 scaletofit
82 {height totalheight div width totalwidth div min 1 min}
83 {1}
84 ifelse
85} def
86
87/clippage {
88 newpath
89 0 0 moveto
90 pagewidth inch 0 rlineto
91 0 pageheight inch rlineto
92 pagewidth neg inch 0 rlineto
93 closepath clip
94 newpath
95} def
96
97/cropmark {
98 gsave
99 translate
100 rotate
101 marklinewidth dup translate
102 0 0 transform round exch round exch itransform translate
103 markstart inch 0 moveto marklength inch 0 rlineto stroke
104 0 markstart inch moveto 0 marklength inch rlineto stroke
105 grestore
106} bind def
107
108/@PreviousShowpage /showpage load def
109
110end def
111
112%
113% Cropmarks - in the default coordinate system.
114%
115
116/showpage {
117 gsave
118 CropmarkDict begin
119 initgraphics
120 marklinewidth setlinewidth
121 xcenter ycenter translate
122 scaling scaling scale
123 0 pagewidth inch 2 div pageheight inch 2 div cropmark
124 90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
125 180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
126 270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
127 @PreviousShowpage
128 end
129 grestore
130} bind def
131