summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro
blob: 2ce5859c8f148b52d4fb669fde2153aa6642915b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
%!
TeXDict begin /@beginspec{gsave texpsmatrix setmatrix treedict begin}def
/@endspec{end grestore}def /texpsmatrix matrix defaultmatrix isls{dup[0.0 -1.0
1.0 0.0 0.0 0.0]exch concatmatrix}if def userdict begin /bop-hook{
/texpsmatrix matrix defaultmatrix isls{dup[0.0 -1.0 1.0 0.0 0.0 0.0]exch
concatmatrix}if def}B end /treedict 200 dict def treedict begin /pt{72 mul
72.07 div}def /nodemargin 2 def /nodes 100 dict def /node{/dpth exch def /hght
exch def /wdth exch def 4 dict dup begin /x /y currentpoint dpth sub
nodemargin sub exch 3 1 roll def nodemargin sub def /h hght dpth add
nodemargin dup add add def /w wdth nodemargin dup add add def end nodes 3 1
roll put}def /nodebottom{begin x w 2 div add y end}def /nodetop{begin x w 2
div add y h add end}def /nodeleft{begin x y h 2 div add end}def /noderight{
begin x w add y h 2 div add end}def /nodetopleft{begin x y h add end}def
/nodetopright{begin x w add y h add end}def /nodebottomleft{begin x y end}def
/nodebottomright{begin x w add y end}def /farright{begin x w add depth add h 2
div y add end}def /farleft{begin x depth sub h 2 div y add end}def /farbottom{
begin x w 2 div add y depth sub end}def /fartop{begin x w 2 div add y h add
depth add end}def /farbottomleft{begin x depth 45 cos mul sub y depth 45 sin
mul sub end}def /farbottomright{begin x w add depth 45 cos mul add y depth 45
sin mul sub end}def /fartopright{begin x w add depth 45 cos mul add y h add
depth 45 sin mul add end}def /fartopleft{begin x depth 45 cos mul sub y h add
depth 45 sin mul add end}def /alignpoint{2 copy sub abs 1 le{add 2 div round
dup}if}def /getnode{nodes exch get}def /nodeconnect{gsave transform 4 2 roll
transform exch 4 1 roll alignpoint 4 2 roll alignpoint 4 1 roll exch
itransform moveto itransform lineto stroke grestore}def /arrowdict 14 dict def
arrowdict begin /mtrx matrix def end /arrow{arrowdict begin /headlength exch
def /halfheadthickness exch 2 div def /tipy exch def /tipx exch def /taily
exch def /tailx exch def /dx tipx tailx sub def /dy tipy taily sub def /angle
dy dx atan def /savematrix mtrx currentmatrix def tipx tipy translate angle
rotate 0 0 moveto headlength neg halfheadthickness neg lineto headlength neg
halfheadthickness lineto closepath savematrix setmatrix end}def
/arrownodeconnect{gsave transform 4 2 roll transform exch 4 1 roll alignpoint
4 2 roll alignpoint 4 1 roll exch itransform 4 2 roll itransform 4 2 roll 4
copy moveto lineto gsave newpath 4 2 roll arrowwidth arrowlength arrow fill
grestore stroke grestore}def /barnodeconnect{4 2 roll 2 copy moveto 5 -1 roll
add dup 3 1 roll lineto 2 index exch lineto lineto stroke}def
/arrowbarnodeconnect{4 2 roll 2 copy moveto 5 -1 roll add dup 3 1 roll lineto
2 index exch 4 copy lineto lineto gsave newpath 4 2 roll arrowwidth
arrowlength arrow fill grestore stroke}def /nodetriangle{gsave exch nodes exch
get nodebottom moveto dup nodes exch get nodetopleft lineto nodes exch get
nodetopright lineto closepath stroke grestore}def /slope{/y1 exch def /x1 exch
def /y0 exch def /x0 exch def y1 y0 sub x1 x0 sub div}def /midpoint{/y1 exch
def /x1 exch def /y0 exch def /x0 exch def x1 x0 sub abs x1 x0 ge{x0 add}{x1
add}ifelse y1 y0 sub abs y1 y0 ge{y0 add}{y1 add}ifelse}def /tancurveto{1
index exch curveto}def /nodetancurve{/depth exch def /to exch def /from exch
def gsave nodes from get noderight moveto nodes to get noderight tancurveto
stroke grestore}def /rightcur{nodes exch get dup noderight 3 -1 roll farright}
def /leftcur{nodes exch get dup nodeleft 3 -1 roll farleft}def /topcur{nodes
exch get dup nodetop 3 -1 roll fartop}def /bottomcur{nodes exch get dup
nodebottom 3 -1 roll farbottom}def /topleftcur{nodes exch get dup nodetopleft
3 -1 roll fartopleft}def /toprightcur{nodes exch get dup nodetopright 3 -1
roll fartopright}def /bottomleftcur{nodes exch get dup nodebottomleft 3 -1
roll farbottomleft}def /bottomrightcur{nodes exch get dup nodebottomright 3 -1
roll farbottomright}def /nodecurve{gsave 4 2 roll moveto 6 2 roll 4 2 roll
curveto stroke grestore}def /arrownodecurve{gsave 4 2 roll moveto 6 2 roll 4 2
roll 4 copy 10 4 roll curveto gsave newpath arrowwidth arrowlength arrow fill
grestore stroke grestore}def /nodebox{nodes exch get begin gsave newpath x y
moveto h w dobox cleanup stroke grestore end}def /nodecircle{nodes exch get
begin gsave newpath w 2 div x add h 2 div y add w w mul h h mul add sqrt 2 div
4 -1 roll add 360 0 arcn cleanup stroke grestore end}def /nodecircletrans{
nodes exch get begin gsave newpath w 2 div x add h 2 div y add w w mul h h mul
add sqrt 2 div 4 -1 roll add 360 0 arcn stroke grestore end}def /nodeoval{
nodes exch get begin gsave newpath x 2 sub y 2 sub moveto h 4 add w 4 add
dooval cleanup stroke grestore end}def /testnodeoval{nodes exch get begin
gsave newpath h h mul w w mul add sqrt div dup dup dup w mul neg x add exch h
mul neg y add moveto dup h mul 2 mul h add exch w mul 2 mul w add testdooval
stroke grestore end}def /cleanup{gsave x y moveto h nodemargin sub .5 add w
nodemargin sub .5 add doccbox 1 setgray fill grestore}def /boxdict 4 dict def
boxdict /mtrx matrix put /dobox{boxdict begin /w exch def /h exch def
/savematrix mtrx currentmatrix def 0 h rlineto w 0 rlineto 0 h neg rlineto
closepath savematrix setmatrix end}def /doccbox{boxdict begin /w exch def /h
exch def /savematrix mtrx currentmatrix def w 0 rlineto 0 h rlineto w neg 0
rlineto closepath savematrix setmatrix end}def /ovaldict 6 dict def ovaldict
/mtrx matrix put /dooval{ovaldict begin /w exch def /h exch def /savematrix
mtrx currentmatrix def 0 h 2 div rmoveto 0 h 2 div nodemargin sub nodemargin h
2 div w 2 div h 2 div rcurveto w 2 div nodemargin sub 0 w 2 div nodemargin neg
w 2 div h 2 div neg rcurveto 0 h 2 div neg nodemargin add nodemargin neg h 2
div neg w 2 div neg h 2 div neg rcurveto w 2 div neg nodemargin add 0 w 2 div
neg nodemargin w 2 div neg h 2 div rcurveto savematrix setmatrix end}def
/testdooval{ovaldict begin /w exch def /h exch def /r exch def h 2 div neg r
mul dup h 2 div dup r mul 3 1 roll 2 r sub mul 0 h rcurveto w 2 div dup r mul
exch 2 r sub mul w 2 div r mul dup 3 1 roll w 0 rcurveto h 2 div r mul dup h 2
div neg dup r mul 3 1 roll 2 r sub mul 0 h neg rcurveto w 2 div neg dup r mul
exch 2 r sub mul w 2 div neg r mul dup 3 1 roll w neg 0 rcurveto end}def end
end