diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 01:01:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 01:01:02 +0000 |
commit | 4a6fbdc0e89fde6f9efcaa24de3db8e137da4404 (patch) | |
tree | efe2b5d7e2f07d6ce478982a9b1e5f43d41cb56c /Master/texmf-dist/dvips/tree-dvips | |
parent | 524dc4b7a5d60a1c703450ac6fd3749ffe81afa3 (diff) |
trunk/Master/texmf-dist/dvips
git-svn-id: svn://tug.org/texlive/trunk@88 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/dvips/tree-dvips')
-rw-r--r-- | Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro b/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro new file mode 100644 index 00000000000..2ce5859c8f1 --- /dev/null +++ b/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro @@ -0,0 +1,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 |