diff options
Diffstat (limited to 'postscript/prologues/cropmarks.ps')
-rw-r--r-- | postscript/prologues/cropmarks.ps | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/postscript/prologues/cropmarks.ps b/postscript/prologues/cropmarks.ps new file mode 100644 index 00000000..256891a9 --- /dev/null +++ b/postscript/prologues/cropmarks.ps @@ -0,0 +1,131 @@ +% +% Center pages, based on pageheight and pagewidth, and redefine showpage +% to put cropmarks at each corner. Device dependent code to expand the +% paper size goes in procedure expandpagesize. Currently only supports +% a Linotronic 200P typesetter using 12 inch wide paper. You'll have to +% add code to expandpagesize to support different typesetters or even a +% 200P that's running differently. +% + +/CropmarkDict 40 dict dup begin + +/expandpage true def +/magnification 1 def +/pageheight 11.0 def +/pagewidth 8.5 def +/scaletofit false def +/scaling 1 def + +/marklength .3 def % inches +/markstart .125 def % inches +/markend .04 def % inches +/marklinewidth .25 def % points + +/inch {72 mul} def +/min {2 copy gt {exch} if pop} def +/max {2 copy lt {exch} if pop} def + +/setup { + /markspace markstart marklength add markend add inch marklinewidth add def + /totalheight pageheight inch markspace 2 mul add def + /totalwidth pagewidth inch markspace 2 mul add def + + pagedimensions + checkpagesize + /scaling getscaling def + xcenter ycenter translate + scaling scaling scale + pagewidth inch 2 div neg pageheight inch 2 div neg translate + clippage +} def + +/pagedimensions { + clippath pathbbox newpath + 4 -1 roll exch 4 1 roll 4 copy + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def +} def + +/checkpagesize { + height totalheight lt width totalwidth lt or expandpage and { + expandpagesize + pagedimensions + } if +} def + +/expandpagesize { % device dependent code + /Product statusdict begin /product where {pop product}{()} ifelse end def + + Product (Linotype) eq { % Linotronic 200P and other models? + statusdict /setpageparams known { + /maxwidth 12.0 inch def % 12 inch wide paper? + totalheight maxwidth le { + totalheight + totalwidth + maxwidth totalheight sub 2 div + 0 + }{ + totalwidth maxwidth min + totalheight + maxwidth totalwidth maxwidth min sub 2 div + 1 + } ifelse + statusdict /setpageparams get exec + } if + } if +} def + +/getscaling { + scaletofit + {height totalheight div width totalwidth div min 1 min} + {1} + ifelse +} def + +/clippage { + newpath + 0 0 moveto + pagewidth inch 0 rlineto + 0 pageheight inch rlineto + pagewidth neg inch 0 rlineto + closepath clip + newpath +} def + +/cropmark { + gsave + translate + rotate + marklinewidth dup translate + 0 0 transform round exch round exch itransform translate + markstart inch 0 moveto marklength inch 0 rlineto stroke + 0 markstart inch moveto 0 marklength inch rlineto stroke + grestore +} bind def + +/@PreviousShowpage /showpage load def + +end def + +% +% Cropmarks - in the default coordinate system. +% + +/showpage { + gsave + CropmarkDict begin + initgraphics + marklinewidth setlinewidth + xcenter ycenter translate + scaling scaling scale + 0 pagewidth inch 2 div pageheight inch 2 div cropmark + 90 pagewidth inch neg 2 div pageheight inch 2 div cropmark + 180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark + 270 pagewidth inch 2 div pageheight inch 2 div neg cropmark + @PreviousShowpage + end + grestore +} bind def + |