void neato_nodesize(node_t * n, bool flip) { int w; w = ND_xsize(n) = POINTS(ND_width(n)); ND_lw_i(n) = ND_rw_i(n) = w / 2; ND_ht_i(n) = ND_ysize(n) = POINTS(ND_height(n)); }
static void ptest_nodesize(node_t * n, boolean flip) { int w; w = ND_xsize(n) = POINTS(ND_width(n)); ND_lw(n) = ND_rw(n) = w / 2; ND_ht(n) = ND_ysize(n) = POINTS(ND_height(n)); }
/* mkMaze: */ maze* mkMaze (graph_t* g, int doLbls) { node_t* n; maze* mp = NEW(maze); boxf* rects; int i, nrect; cell* cp; double w2, h2; boxf bb, BB; mp->ngcells = agnnodes(g); cp = mp->gcells = N_NEW(mp->ngcells, cell); BB.LL.x = BB.LL.y = MAXDOUBLE; BB.UR.x = BB.UR.y = -MAXDOUBLE; for (n = agfstnode (g); n; n = agnxtnode(g,n)) { w2 = ND_xsize(n)/2.0; if (w2 < 1) w2 = 1; h2 = ND_ysize(n)/2.0; if (h2 < 1) h2 = 1; bb.LL.x = ND_coord(n).x - w2; bb.UR.x = ND_coord(n).x + w2; bb.LL.y = ND_coord(n).y - h2; bb.UR.y = ND_coord(n).y + h2; BB.LL.x = MIN(BB.LL.x, bb.LL.x); BB.LL.y = MIN(BB.LL.y, bb.LL.y); BB.UR.x = MAX(BB.UR.x, bb.UR.x); BB.UR.y = MAX(BB.UR.y, bb.UR.y); cp->bb = bb; cp->flags |= MZ_ISNODE; ND_alg(n) = cp; cp++; } if (doLbls) { } BB.LL.x -= MARGIN; BB.LL.y -= MARGIN; BB.UR.x += MARGIN; BB.UR.y += MARGIN; rects = partition (mp->gcells, mp->ngcells, &nrect, BB); #ifdef DEBUG if (odb_flags & ODB_MAZE) psdump (mp->gcells, mp->ngcells, BB, rects, nrect); #endif mp->cells = N_NEW(nrect, cell); mp->ncells = nrect; for (i = 0; i < nrect; i++) { mp->cells[i].bb = rects[i]; } free (rects); mp->sg = mkMazeGraph (mp, BB); return mp; }
static void dumpG(graph_t * g) { node_t *n; /* point p; */ edge_t *e; for (n = agfstnode(g); n; n = agnxtnode(g, n)) { fprintf(stderr, " node %s \n", n->name); for (e = agfstout(g, n); e; e = agnxtout(g, e)) { fprintf(stderr, " %s - %s \n", e->tail->name, e->head->name); } #ifdef OLD p = coord(n); fprintf(stderr, " %s pos (%f,%f) (%d,%d)\n", n->name, ND_pos(n)[0], ND_pos(n)[1], p.x, p.y); fprintf(stderr, " width %f height %f xsize %d ysize %d\n", ND_width(n), ND_height(n), ND_xsize(n), ND_ysize(n)); #endif } }
/* compute_bb: * Compute bounding box of g using nodes, splines, and clusters. * Assumes bb of clusters already computed. * store in GD_bb. */ void compute_bb(graph_t * g) { node_t *n; edge_t *e; box b, bb; point pt, s2; int i, j; bb.LL = pointof(MAXINT, MAXINT); bb.UR = pointof(-MAXINT, -MAXINT); for (n = agfstnode(g); n; n = agnxtnode(g, n)) { pt = coord(n); s2.x = ND_xsize(n) / 2 + 1; s2.y = ND_ysize(n) / 2 + 1; b.LL = sub_points(pt, s2); b.UR = add_points(pt, s2); EXPANDBB(bb,b); for (e = agfstout(g, n); e; e = agnxtout(g, e)) { if (ED_spl(e) == 0) continue; for (i = 0; i < ED_spl(e)->size; i++) { for (j = 0; j < ED_spl(e)->list[i].size; j++) { pt = ED_spl(e)->list[i].list[j]; EXPANDBP(bb,pt); } } if (ED_label(e) && ED_label(e)->set) bb = addLabelBB(bb, ED_label(e), GD_flip(g)); } } for (i = 1; i <= GD_n_cluster(g); i++) { EXPANDBB(bb,GD_clust(g)[i]->u.bb); } GD_bb(g) = bb; }
/* compute_bb: * Compute bounding box of g using nodes, splines, and clusters. * Assumes bb of clusters already computed. * store in GD_bb. */ void compute_bb(graph_t * g) { node_t *n; edge_t *e; boxf b, bb; boxf BF; pointf ptf, s2; int i, j; if ((agnnodes(g) == 0) && (GD_n_cluster(g) ==0)) { bb.LL = pointfof(0, 0); bb.UR = pointfof(0, 0); return; } bb.LL = pointfof(INT_MAX, INT_MAX); 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.0; s2.y = ND_ysize(n) / 2.0; b.LL = sub_pointf(ptf, s2); b.UR = add_pointf(ptf, s2); EXPANDBB(bb,b); if (ND_xlabel(n) && ND_xlabel(n)->set) { bb = addLabelBB(bb, ND_xlabel(n), GD_flip(g)); } for (e = agfstout(g, n); e; e = agnxtout(g, e)) { if (ED_spl(e) == 0) continue; for (i = 0; i < ED_spl(e)->size; i++) { for (j = 0; j < (((Agedgeinfo_t*)AGDATA(e))->spl)->list[i].size; j++) { ptf = ED_spl(e)->list[i].list[j]; EXPANDBP(bb,ptf); } } if (ED_label(e) && ED_label(e)->set) { bb = addLabelBB(bb, ED_label(e), GD_flip(g)); } if (ED_head_label(e) && ED_head_label(e)->set) { bb = addLabelBB(bb, ED_head_label(e), GD_flip(g)); } if (ED_tail_label(e) && ED_tail_label(e)->set) { bb = addLabelBB(bb, ED_tail_label(e), GD_flip(g)); } if (ED_xlabel(e) && ED_xlabel(e)->set) { bb = addLabelBB(bb, ED_xlabel(e), GD_flip(g)); } } } for (i = 1; i <= GD_n_cluster(g); i++) { B2BF(GD_bb(GD_clust(g)[i]), BF); EXPANDBB(bb,BF); } if (GD_label(g) && GD_label(g)->set) { bb = addLabelBB(bb, GD_label(g), GD_flip(g)); } GD_bb(g) = bb; }