ref: c8d87b22d50a17b8832019a93b9293fef19fbd02
dir: /sys/src/cmd/postscript/postmd/postmd.ps/
% % Version 3.3.2 prologue for matrix display files. % /#copies 1 store /aspectratio 1 def /font /Helvetica def /formsperpage 1 def /landscape false def /magnification 1 def /margin 10 def /orientation 0 def /rotation 1 def /size 9 def /statspace 1.6 def /ticklength .06 def /tickspacing 10 def /xoffset 0 def /yoffset 0 def /useclippath true def /pagebbox [0 0 612 792] def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /show {show} bind def % so later references don't bind /stringwidth {stringwidth} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if pagedimensions height width lt { /statspace statspace height width div mul def /size size height width div mul def /ticklength ticklength height width div mul def } if /height height margin sub statspace inch sub ticklength inch sub size 6 mul sub def /width width margin sub ticklength inch sub def xcenter ycenter translate orientation rotation mul rotate xoffset inch yoffset inch translate 0 height 2 div height width min 2 div sub translate 0 statspace inch 2 div translate magnification dup aspectratio mul scale 0 setlinewidth } def /pagedimensions { useclippath { /pagebbox [clippath pathbbox newpath] def } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /pagesetup {/page exch def} bind def /bitmap { /scanlines exch def /scanlength exch def /picstr scanlength string def gsave height scanlines div width scanlength div min /scaling exch def scaling scaling scale scanlength neg 2 div scanlines neg 2 div translate scanlength scanlines scale getbitmap grestore } bind def /getbitmap { scanlength scanlines 8 [scanlength 0 0 scanlines neg 0 scanlines] { 0 { currentfile token pop dup 0 eq {pop pop exit} if /charcount exch def picstr 1 index charcount getinterval /repl exch def currentfile repl readhexstring pop pop charcount add currentfile token pop { picstr 1 index repl putinterval charcount add } repeat } loop picstr } image } bind def /labelmatrix { /matrixlimits exch def /matrixname exch def gsave scaling scaling scale font findfont size scaling div scalefont setfont scanlength neg 2 div scanlines 2 div translate 0 scanlines size 1.5 mul scaling div add neg moveto matrixname show scanlength scanlines size 1.5 mul scaling div add neg moveto matrixlimits stringwidth pop neg 0 rmoveto matrixlimits show newpath 0 0 moveto scanlength 0 rlineto 0 scanlines neg rlineto scanlength neg 0 rlineto closepath stroke scanlength tickspacing idiv 1 add tickspacing 0 ticks scanlines tickspacing idiv 1 add 0 tickspacing neg ticks grestore } bind def /ticks { /dy exch def /dx exch def /tl ticklength inch scaling div def newpath 0 0 moveto { gsave dx 0 eq {tl neg 0} {0 tl} ifelse rlineto stroke grestore dx dy rmoveto } repeat } bind def /legend { /regions exch def /total exch def gsave width height min 2 div neg dup size 2 mul sub translate 0 statspace inch neg translate gsave regions { gsave total div statspace inch size 2 mul sub mul size 2 mul add width height min regions div exch scale 1 1 8 [1 0 0 1 0 0] 5 -1 roll image grestore width height min regions div 0 translate } repeat grestore width height min size 1.5 mul neg translate font findfont size scalefont setfont dup dup add 1 add width height min exch div /interval exch def { interval neg 0 translate interval 2 div neg 0 translate dup stringwidth pop 2 div neg 0 moveto show interval 2 div neg 0 translate } repeat grestore } bind def /done {/lastpage where {pop lastpage} if} def