/usr/share/graphviz/gvpr
/* finds root node of graph. * scales the x and y position of all other nodes using, first, * ARGV[0], or $G.scale. * * The expected syntax is "x,y" where at least one of x or y must * be given. If only one is given, the other is taken as 1. */ BEGIN { double scalex, scaley; int r, done; int setScale (char* s) { if ((sscanf (s, ",%f",&scaley))) { scalex = 1; return 1; } else { r = sscanf (s, "%f,%f",&scalex,&scaley); if (r) { if (r == 1) scaley = 1; return 1; } } return 0; } } BEG_G { node_t ctr = node($,aget($,"root")); double cx, cy, x, y, delx; /* get scale argument */ done = 0; if (ARGC == 1) done = setScale (ARGV[0]); if (!done && isAttr($,"G","scale")) done = setScale ($.scale); if (!done) scalex = scaley = 1.0; if ((scalex == 1.0) && (scaley == 1.0)) exit (0); $.bb = ""; sscanf (ctr.pos, "%f,%f", &cx, &cy); } N [$ != ctr] { sscanf ($.pos, "%f,%f", &x, &y); delx = scalex*(x - cx) + cx; dely = scaley*(y - cy) + cy; $.pos = sprintf ("%f,%f", delx, dely); }
.
Edit
..
Edit
addedges
Edit
addranks
Edit
addrings
Edit
anon
Edit
attr
Edit
bb
Edit
bbox
Edit
binduce
Edit
bipart
Edit
chkclusters
Edit
chkedges
Edit
cliptree
Edit
col
Edit
collapse
Edit
color
Edit
cycle
Edit
dechain
Edit
deghist
Edit
deledges
Edit
delmulti
Edit
delnodes
Edit
depath
Edit
dijkstra
Edit
flatten
Edit
get-layers-list
Edit
group
Edit
histogram
Edit
indent
Edit
knbhd
Edit
maxdeg
Edit
path
Edit
rotate
Edit
scale
Edit
scalexy
Edit
span
Edit
topon
Edit
treetoclust
Edit