and are redundant given rw, lw and ht.
ND_alg(n) = (void *) NEW(cdata);
if (isNode) {
ND_pos(n) = N_NEW(Ndim, double);
+#if 0
ND_xsize(n) = ND_xsize((node_t *) orig);
ND_ysize(n) = ND_ysize((node_t *) orig);
+#endif
ORIGN(n) = (node_t *) orig;
} else
ORIGG(n) = (graph_t *) orig;
#define POINTS_PER_MM ((double)POINTS_PER_INCH * 0.0393700787)
#define POINTS(a_inches) (ROUND((a_inches)*POINTS_PER_INCH))
+#define INCH2PS(a_inches) ((a_inches)*(double)POINTS_PER_INCH)
#define PS2INCH(a_points) ((a_points)/(double)POINTS_PER_INCH)
#define P2PF(p,pf) ((pf).x = (p).x,(pf).y = (p).y)
#ifndef DOT_ONLY
unsigned char pinned;
- short xsize, ysize;
int id, heapindex, hops;
double *pos, dist;
#endif
#define ND_tree_out(n) (((Agnodeinfo_t*)AGDATA(n))->tree_out)
#define ND_weight_class(n) (((Agnodeinfo_t*)AGDATA(n))->weight_class)
#define ND_width(n) (((Agnodeinfo_t*)AGDATA(n))->width)
-#define ND_xsize(n) (((Agnodeinfo_t*)AGDATA(n))->xsize)
-#define ND_ysize(n) (((Agnodeinfo_t*)AGDATA(n))->ysize)
+#define ND_xsize(n) (ND_lw(n)+ND_rw(n))
+#define ND_ysize(n) (ND_ht(n))
#else
#define ND_tree_out(n) (n)->u.tree_out
#define ND_weight_class(n) (n)->u.weight_class
#define ND_width(n) (n)->u.width
-#define ND_xsize(n) (n)->u.xsize
-#define ND_ysize(n) (n)->u.ysize
+#define ND_xsize(n) (ND_lw(n)+ND_rw(n))
+#define ND_ysize(n) (ND_ht(n))
#endif
typedef struct Agedgeinfo_t {
bb.UR = pointfof(-INT_MAX, -INT_MAX);
for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
ptf = coord(n);
- s2.x = ND_xsize(n) / 2. + 1;
- s2.y = ND_ysize(n) / 2. + 1;
+ s2.x = ND_xsize(n) / 2.0;
+ s2.y = ND_ysize(n) / 2.0;
b.LL = sub_pointf(ptf, s2);
b.UR = add_pointf(ptf, s2);
void gv_nodesize(node_t * n, boolean flip)
{
- int w;
+ double w;
if (flip) {
- w = ND_xsize(n) = POINTS(ND_height(n));
+ w = INCH2PS(ND_height(n));
ND_lw(n) = ND_rw(n) = w / 2;
- ND_ht(n) = ND_ysize(n) = POINTS(ND_width(n));
+ ND_ht(n) = INCH2PS(ND_width(n));
}
else {
- w = ND_xsize(n) = POINTS(ND_width(n));
+ w = INCH2PS(ND_width(n));
ND_lw(n) = ND_rw(n) = w / 2;
- ND_ht(n) = ND_ysize(n) = POINTS(ND_height(n));
+ ND_ht(n) = INCH2PS(ND_height(n));
}
}
ND_id(dn) = id++;
ND_width(dn) = ND_width(n);
ND_height(dn) = ND_height(n);
- ND_xsize(dn) = ND_xsize(n);
- ND_ysize(dn) = ND_ysize(n);
+ ND_lw(dn) = ND_lw(n);
+ ND_rw(dn) = ND_rw(n);
+ ND_ht(dn) = ND_ht(n);
ND_shape(dn) = ND_shape(n);
ND_shape_info(dn) = ND_shape_info(n);
if (ND_pinned(n)) {
pointf ctr;
node_t *n;
double w, h;
- int h2, w2, h_i;
+ double h2, w2;
pointf *vertices;
for (n = agfstnode(root); n; n = agnxtnode(root, n)) {
h = bb.UR.y - bb.LL.y;
ctr.x = w / 2.0;
ctr.y = h / 2.0;
- w2 = POINTS(w / 2.0);
- h2 = POINTS(h / 2.0);
- h_i = POINTS(h);
+ w2 = INCH2PS(w / 2.0);
+ h2 = INCH2PS(h / 2.0);
+ h = INCH2PS(h);
ND_pos(n)[0] = ctr.x;
ND_pos(n)[1] = ctr.y;
ND_width(n) = w;
ND_height(n) = h;
- ND_xsize(n) = POINTS(w);
+ /* ND_xsize(n) = POINTS(w); */
ND_lw(n) = ND_rw(n) = w2;
- ND_ht(n) = ND_ysize(n) = h_i;
+ ND_ht(n) = h;
vertices = ((polygon_t *) ND_shape_info(n))->vertices;
vertices[0].x = ND_rw(n);
ND_height(n) = BB(sg).UR.y;
pt.x = POINTS_PER_INCH * BB(sg).UR.x;
pt.y = POINTS_PER_INCH * BB(sg).UR.y;
- ND_xsize(n) = pt.x;
- ND_ysize(n) = pt.y;
+ ND_rw(n) = ND_lw(n) = pt.x/2;
+ ND_ht(n) = pt.y;
} else if (IS_PORT(n))
agdelete(cg, n); /* remove ports from component */
}