1*219b2ee8SDavid du Colombier static char *PS_head[] = { 2*219b2ee8SDavid du Colombier "%ps_include: begin\n", 3*219b2ee8SDavid du Colombier "save\n", 4*219b2ee8SDavid du Colombier "/ed {exch def} def\n", 5*219b2ee8SDavid du Colombier "{} /showpage ed\n", 6*219b2ee8SDavid du Colombier "{} /copypage ed\n", 7*219b2ee8SDavid du Colombier "{} /erasepage ed\n", 8*219b2ee8SDavid du Colombier "{} /letter ed\n", 9*219b2ee8SDavid du Colombier "currentdict /findfont known systemdict /findfont known and {\n", 10*219b2ee8SDavid du Colombier " /findfont systemdict /findfont get def\n", 11*219b2ee8SDavid du Colombier "} if\n", 12*219b2ee8SDavid du Colombier "36 dict dup /PS-include-dict-dw ed begin\n", 13*219b2ee8SDavid du Colombier "/context ed\n", 14*219b2ee8SDavid du Colombier "count array astore /o-stack ed\n", 15*219b2ee8SDavid du Colombier "%ps_include: variables begin\n", 16*219b2ee8SDavid du Colombier 0 17*219b2ee8SDavid du Colombier }; 18*219b2ee8SDavid du Colombier 19*219b2ee8SDavid du Colombier static char *PS_setup[] = { 20*219b2ee8SDavid du Colombier "%ps_include: variables end\n", 21*219b2ee8SDavid du Colombier "{llx lly urx ury} /bbox ed\n", 22*219b2ee8SDavid du Colombier "{newpath 2 index exch 2 index exch dup 6 index exch\n", 23*219b2ee8SDavid du Colombier " moveto 3 {lineto} repeat closepath} /boxpath ed\n", 24*219b2ee8SDavid du Colombier "{dup mul exch dup mul add sqrt} /len ed\n", 25*219b2ee8SDavid du Colombier "{2 copy gt {exch} if pop} /min ed\n", 26*219b2ee8SDavid du Colombier "{2 copy lt {exch} if pop} /max ed\n", 27*219b2ee8SDavid du Colombier "{transform round exch round exch A itransform} /nice ed\n", 28*219b2ee8SDavid du Colombier "{6 array} /n ed\n", 29*219b2ee8SDavid du Colombier "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed\n", 30*219b2ee8SDavid du Colombier "urx llx sub 0 A dtransform len /Sx ed\n", 31*219b2ee8SDavid du Colombier "0 ury lly sub A dtransform len /Sy ed\n", 32*219b2ee8SDavid du Colombier "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed\n", 33*219b2ee8SDavid du Colombier "rot dup sin abs /S ed cos abs /C ed\n", 34*219b2ee8SDavid du Colombier "Sx S mul Sy C mul add /H ed\n", 35*219b2ee8SDavid du Colombier "Sx C mul Sy S mul add /W ed\n", 36*219b2ee8SDavid du Colombier "sy H div /Scaley ed\n", 37*219b2ee8SDavid du Colombier "sx W div /Scalex ed\n", 38*219b2ee8SDavid du Colombier "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if\n", 39*219b2ee8SDavid du Colombier "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed\n", 40*219b2ee8SDavid du Colombier "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed\n", 41*219b2ee8SDavid du Colombier "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed\n", 42*219b2ee8SDavid du Colombier "n currentmatrix initgraphics setmatrix\n", 43*219b2ee8SDavid du Colombier "cx cy translate\n", 44*219b2ee8SDavid du Colombier "Scalex Scaley scale\n", 45*219b2ee8SDavid du Colombier "rot rotate\n", 46*219b2ee8SDavid du Colombier "Cx neg Cy neg translate\n", 47*219b2ee8SDavid du Colombier "A concat\n", 48*219b2ee8SDavid du Colombier "bbox boxpath clip newpath\n", 49*219b2ee8SDavid du Colombier "w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if\n", 50*219b2ee8SDavid du Colombier "end\n", 51*219b2ee8SDavid du Colombier "gsave\n", 52*219b2ee8SDavid du Colombier "%ps_include: inclusion begin\n", 53*219b2ee8SDavid du Colombier 0 54*219b2ee8SDavid du Colombier }; 55*219b2ee8SDavid du Colombier 56*219b2ee8SDavid du Colombier static char *PS_tail[] = { 57*219b2ee8SDavid du Colombier "%ps_include: inclusion end\n", 58*219b2ee8SDavid du Colombier "grestore\n", 59*219b2ee8SDavid du Colombier "PS-include-dict-dw begin\n", 60*219b2ee8SDavid du Colombier "o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice\n", 61*219b2ee8SDavid du Colombier " initgraphics 0.1 setlinewidth boxpath stroke grestore} if\n", 62*219b2ee8SDavid du Colombier "clear o-stack aload pop\n", 63*219b2ee8SDavid du Colombier "context end restore\n", 64*219b2ee8SDavid du Colombier "%ps_include: end\n", 65*219b2ee8SDavid du Colombier 0 66*219b2ee8SDavid du Colombier }; 67