static char *PS_head[] = { "%ps_include: begin", "save", "/ed {exch def} def", "{} /showpage ed", "{} /copypage ed", "{} /erasepage ed", "{} /letter ed", "36 dict dup /PS-include-dict-dw ed begin", "/context ed", "count array astore /o-stack ed", "%ps_include: variables begin", 0 }; static char *PS_setup[] = { "%ps_include: variables end", "{dup mul exch dup mul add sqrt} /len ed", "{2 copy gt {exch} if pop} /min ed", "{2 copy lt {exch} if pop} /max ed", "{6 array} /n ed", "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed", "urx llx sub 0 A dtransform len /Sx ed", "0 ury lly sub A dtransform len /Sy ed", "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed", /* "rot dup sin abs /S ed cos abs /C ed", /* "Sx S mul Sy C mul add /H ed", /* "Sx C mul Sy S mul add /W ed", /* "sy H div /Scaley ed", /* "sx W div /Scalex ed", /* "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if", /* "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed", /* "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed", /* "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed", /* "n currentmatrix initgraphics setmatrix", */ "sx Sx div /Scalex ed", "sy Sy div /Scaley ed", "cx cy translate", "Scalex Scaley scale", /* "rot rotate", */ "Cx neg Cy neg translate", "A concat", "newpath", "end", "%ps_include: inclusion begin", 0 }; static char *PS_tail[] = { "%ps_include: inclusion end", "PS-include-dict-dw begin", "clear o-stack aload pop", "context end restore", "%ps_include: end", 0 }; static char *Pic_setup[] = { "%ps_include: variables end", "{dup mul exch dup mul add sqrt} /len ed", "{2 copy gt {exch} if pop} /min ed", "{2 copy lt {exch} if pop} /max ed", "{6 array} /n ed", "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed", "urx llx sub 0 A dtransform len /Sx ed", "0 ury lly sub A dtransform len /Sy ed", "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed", /* "rot dup sin abs /S ed cos abs /C ed", /* "Sx S mul Sy C mul add /H ed", /* "Sx C mul Sy S mul add /W ed", /* "sy H div /Scaley ed", /* "sx W div /Scalex ed", /* "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if", /* "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed", /* "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed", /* "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed", /* "n currentmatrix initgraphics setmatrix", */ "sx Sx div /Scalex ed", "sy Sy div /Scaley ed", "cx cy translate", "B concat", "newpath sx 2 div sy 2 div moveto sx neg 0 rlineto", "0 sy neg rlineto sx 0 rlineto closepath clip", "Scalex Scaley scale", /* "rot rotate", */ "Cx neg Cy neg translate", "A concat", "newpath", "end", "%ps_include: inclusion begin", 0 };