/jtoppoint {
yunit mul exch
xunit mul exch
} def
/ptojpoint {
yunit div exch
xunit div exch
} def
%% bon, j'avoue, c'est un peu 'tricky' ce source...
-3 4 setyrange
%% unite pour les longueurs de fleches
/dt .75 def
%% l'espace a laisser entre la boite et le cadre
/dx_boxit 0 def
/dy_boxit 0 def
/a 3 def
/b 2 def
.2 setlinewidth
%% on veut recuperer les dimensions de la boite contenant la chaine de
%% caractere, elles seront stockees dans les variables llx, lly, wx,
%% wy, str_wd et str_ht
/transmet_dim true def
20 setfontsize
boxit
setTimes
(petit texte) O () [4 dup] bctext
O /bc defpoint
O str_wd 2 div 0 ptojpoint addv /br defpoint
O str_wd -2 div 0 ptojpoint addv /bl defpoint
O 0 wy ptojpoint addv /uc defpoint
O str_wd 2 div wy ptojpoint addv /ur defpoint
O str_wd -2 div wy ptojpoint addv /ul defpoint
O 0 lly ptojpoint addv /dc defpoint
O str_wd 2 div lly ptojpoint addv /dr defpoint
O str_wd -2 div lly ptojpoint addv /dl defpoint
O 0 lly wy add 2 div ptojpoint addv /cc defpoint
O str_wd 2 div lly wy add 2 div ptojpoint addv /cr defpoint
O str_wd -2 div lly wy add 2 div ptojpoint addv /cl defpoint
[bc br bl uc ur ul dc dr dl cc cr cl] points
[bl br] ligne
bc /bc_ defpoint
br dt 0 addv /br_ defpoint
bl dt neg 0 addv /bl_ defpoint
uc 0 dt addv /uc_ defpoint
ur dt dup addv /ur_ defpoint
ul dt neg dt addv /ul_ defpoint
dc 0 dt neg addv /dc_ defpoint
dr dt dt neg addv /dr_ defpoint
dl dt neg dup addv /dl_ defpoint
cc /cc_ defpoint
cr dt 0 addv /cr_ defpoint
cl dt neg 0 addv /cl_ defpoint
uc uc_ (->) line
ur ur_ (->) line
ul ul_ (->) line
br br_ (->) line
bl bl_ (->) line
dc dc_ (->) line
dr dr_ (->) line
dl dl_ (->) line
cr cr_ (->) line
cl cl_ (->) line
setCourierBold
(uc) uc_ uctext
(ul) ul_ ultext
(ur) ur_ urtext
(bl) bl_ cltext
(br) br_ crtext
(cl) cl_ cltext
(cr) cr_ crtext
(dc) dc_ dctext
(dl) dl_ dltext
(dr) dr_ drtext
/hadjust 1 def
/vadjust 1 def
(bc) bc_ dctext
(cc) cc_ (-2 0) uctext
|