/mtranslate { % matrixtype float float -- matrixtype 3 -1 roll matrix copy 3 1 roll 2 index 4 4 -1 roll put 1 index 5 3 -1 roll put } def /setxorop { % colortype colortype -- setcolor currentpixel exch setcolor currentpixel xor setpixel 6 setrasteropcode } def /rectinrect { % rectangle rectangle -- boolean 2 copy 0 get 2 index 1 get 3 -1 roll aload pop 6 -2 roll pointinrect? { exch 1 index 0 get 2 index 2 get add 2 index 1 get 4 -1 roll 3 get add 3 -1 roll aload pop 6 -2 roll pointinrect? } { pop pop false } ifelse } def /insetstroke { % float rectangle -- rectangle 1 index 2 mul 1 add [2 index 0 get 4 index add 3 index 1 get 6 -1 roll add 1 add 4 index 2 get 4 index sub 6 -1 roll 3 get 6 -1 roll sub] } def /truedicttype { % any -- name dup truetype dup /dicttype ne { exch pop } { pop dup /ParentDictArray known not { pop /dicttype } { /ParentDictArray get dup type /arraytype ne { pop /tnttype } { dup length dup 0 ne { 1 sub get /superclass known /hntype /tnttype ifelse } { pop pop /tnttype } ifelse } ifelse } ifelse } ifelse } def /cmp { % any any -- boolean 2 copy eq { pop pop true } { 1 index truedicttype 2 copy exch truedicttype ne { pop pop pop false } { cmp$SwiTch0 exch 2 copy known not { pop /$deFaUlT } if get exec } ifelse } ifelse } def /cmp$SwiTch0 3 dict dup begin /$deFaUlT { pop pop false } def /packedarraytype { exch dup length 3 -1 roll dup 3 1 roll length ne { pop pop false } { 1 index length { dup 1 sub exch 0 eq { pop pop pop true exit } if 2 index 1 index get 2 index 2 index get cmp not { pop pop pop false exit } if } loop } ifelse } def /arraytype currentdict /packedarraytype get def end def /lit_char { % int -- string dup lit_char$SwiTch1 exch 2 copy known not { pop /$deFaUlT } if get exec } def /lit_char$SwiTch1 8 dict dup begin /$deFaUlT { dup 32 lt true { dup 126 gt } ifelse { (\\000) dup 1 3 index -6 bitshift 3 and 48 add put dup 2 3 index -3 bitshift 7 and 48 add put dup 3 4 -1 roll 7 and 48 add } { ( ) dup 0 4 -1 roll } ifelse put } def 41 { pop (\\\)) } def 40 { pop (\\\() } def 92 { pop (\\\\) } def 12 { pop (\\f) } def 13 { pop (\\r) } def 9 { pop (\\t) } def 10 { pop (\\n) } def end def /name_ok_str 256 string def %begin postscript section ( ) 0 get 1 add 1 (~) 0 get { name_ok_str exch 1 put } for (\(\)\\<\\>\\[\\]\\{\\}\\/\\%\\) { name_ok_str exch 0 put } forall %end postscript section /name_ok { % name -- boolean cvns true exch { exch name_ok_str 3 -1 roll get 0 eq { false exch not exit } if } forall true if } def /stringpos_bin { % string float -- int 1 index length dup 0 eq { pop pop pop 0 } { dup 1 eq { pop exch stringwidth pop 2 div gt 1 0 } { 1 index 3 index 0 3 index 2 div cvi dup 5 1 roll getinterval dup 3 1 roll stringwidth pop dup 3 1 roll lt { pop exch pop exch pop 3 -1 roll pop exch stringpos_bin } { exch pop 1 index 6 -1 roll 3 index 6 -2 roll sub getinterval 4 -2 roll sub stringpos_bin add } } ifelse ifelse } ifelse } def /stringpos { % fonttype string float -- int currentfont 4 -1 roll setfont 3 -2 roll stringpos_bin exch setfont } def /GetInterval { % any * int int -- any * 2 index length 3 -1 roll 1 index min 3 1 roll 2 index sub min getinterval } def %begin postscript section systemdict /dbf known not { systemdict /dbf (/dev/console) (w) file put systemdict /DEBUG { % any -- dbf (DEBUG: ) writestring dbf exch 100 string cvs writestring dbf (\n) writestring dbf flushfile } put systemdict /STACK { 10 dict begin /tf currentprocess /Stdout get def currentprocess /Stdout dbf put dbf (STACK: ) writestring stack dbf flushfile currentprocess /Stdout tf put end } put } if %end postscript section %begin postscript section gsave framebuffer clippath pathbbox points2rect /screenheight exch def /screenwidth exch def grestore %end postscript section