xref: /plan9/sys/src/cmd/postscript/tr2post/ps_include.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
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