% This PS file defines some functions that look around, find the current % coordinate system and clipping region, and draw a coordinate grid % for it. Just drop it in to any PS context and it will cope. % % Brian Reid, Stanford % April 1985 /Gdict 50 dict def Gdict begin /Courier findfont 7 scalefont setfont /rawshow {gsave currentpoint translate 0 0 transform /cm matrix currentmatrix def /ang 1 0 dtransform neg exch atan def initmatrix ang rotate itransform translate show grestore} def /rawstroke { /cm matrix currentmatrix def initmatrix stroke cm setmatrix } def /showgrid {gsave 2 setlinecap 0 setgray /y ymin def /ycount ymax ymin sub yincr idiv 1 add def ycount {newpath [3 3] 0 setdash y 0.0 eq {2 setlinewidth}{0.5 setlinewidth} ifelse xmin y moveto xmax y lineto rawstroke xorg y yincr 20 div add moveto y 20 string cvs rawshow /y y yincr add def } repeat /x xmin def /xcount xmax xmin sub xincr idiv 1 add def xcount {newpath x ymin moveto [10 5] 5 setdash x 0.0 eq {2 setlinewidth}{0.5 setlinewidth} ifelse x ymin moveto x ymax lineto rawstroke gsave x xincr 20 div add yorg translate -90 rotate x 20 string cvs 0 0 moveto rawshow grestore /x x xincr add def } repeat grestore} def /findgrid { clippath pathbbox /ymax exch def /xmax exch def /ymin exch def /xmin exch def xmax xmin sub 10 div log 0.5 add truncate 10 exch exp /xincr exch def ymax ymin sub 10 div log 0.5 add truncate 10 exch exp /yincr exch def xincr 1 gt {/xincr xincr round def} if yincr 1 gt {/yincr yincr round def} if xmin xincr div dup 0 lt {2}{1} ifelse sub truncate xincr mul /xmin exch def ymin yincr div dup 0 lt {2}{1} ifelse sub truncate yincr mul /ymin exch def } def /findcenter { /xorg xmax xmin sub 2 div xmin add xincr div round xincr mul xincr 20 div add def /yorg ymax ymin sub 2 div ymin add yincr div round yincr mul yincr -20 div add def } def findgrid findcenter showgrid end