/nodepoint {
12 dict begin
dup isstring {
%% argument = nom du noeud
/node_name exch def
/node_name node_name (node_dict) append store
node_name cvlit cvx exec /cc get exec
} {
dup isname {
%% argument = un litteral + nom du noeud
/litteral exch def
/node_name exch def
/node_name node_name (node_dict) append store
node_name cvlit cvx exec litteral get exec
} {
%% argument = un nombre + nom du noeud
/alpha exch def
/nodeA_name exch def
/nodeA_name nodeA_name (node_dict) append store
/n@deAdict nodeA_name cvx def
n@deAdict /cc get /A exch def
%% calcul du point de connection
n@deAdict /noderayon known {
%% on a un noeud cercle
alpha A
n@deAdict /noderayon get
cpoint
} {
n@deAdict /nodetype known {
%% on a un noeud ovale
alpha [
n@deAdict /dl get exec
n@deAdict /dr get exec
n@deAdict /ur get exec
n@deAdict /ul get exec
] pol2ell Epoint
} {
n@deAdict /ddia known {
%% on a un noeud diamond
n@deAdict /dl get exec
n@deAdict /dr get exec
n@deAdict /ur get exec
n@deAdict /ul get exec
alpha
quadrilatereanglepoint
} {
%% on a un noeud rectangle
n@deAdict /dl get exec
n@deAdict /dr get exec
n@deAdict /ur get exec
n@deAdict /ul get exec
alpha
quadrilatereanglepoint
} ifelse
} ifelse
} ifelse
} ifelse
} ifelse
end
} def
|