File: bb

package info (click to toggle)
graphviz 14.1.2-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 139,476 kB
  • sloc: ansic: 142,288; cpp: 11,975; python: 7,883; makefile: 4,044; yacc: 3,030; xml: 2,972; tcl: 2,495; sh: 1,391; objc: 1,159; java: 560; lex: 423; perl: 243; awk: 156; pascal: 139; php: 58; ruby: 49; cs: 31; sed: 1
file content (39 lines) | stat: -rw-r--r-- 997 bytes parent folder | download | duplicates (7)
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
/* computes the bounding box of a graph based on its nodes 
   taking into account clusters and node sizes.
 */
BEGIN {
  double x, y, w2, h2;
  double llx, lly, urx, ury;
  double llx0, lly0, urx0, ury0;

  graph_t clustBB (graph_t G) {
    graph_t sg;
    for (sg = fstsubg(G); sg; sg = nxtsubg(sg)) {
	  sg = clustBB(sg);
    }
	if (G.name == "cluster*") {
      sscanf (G.bb, "%lf,%lf,%lf,%lf", &llx0, &lly0, &urx0, &ury0);
      if (llx0 < llx) llx = llx0;
      if (lly0 < lly) lly = lly0;
      if (urx0 > urx) urx = urx0;
      if (ury0 > ury) ury = ury0;
    }
    return G;
  }
}
BEG_G {
  llx = 1000000; lly = 1000000; urx = -1000000; ury = -1000000;
}
N {
  sscanf ($.pos, "%lf,%lf", &x, &y);
  w2 = (36.0*(double)$.width);
  h2 = (36.0*(double)$.height);
  if ((x - w2) < llx) llx = x - w2;
  if ((x + w2) > urx) urx = x + w2;
  if ((y - h2) < lly) lly = y - h2;
  if ((y + h2) > ury) ury = y + h2;
}
END_G {
  clustBB ($);
  $.bb = sprintf ("%lf,%lf,%lf,%lf", llx, lly, urx, ury);
}