obj->emit_state = EMIT_NDRAW;
if (flags & GVRENDER_DOES_Z) {
- obj->z = late_double(n, N_z, 0.0, -MAXFLOAT);
+ /* obj->z = late_double(n, N_z, 0.0, -MAXFLOAT); */
+ if (GD_odim(n->graph) >=3)
+ obj->z = POINTS(ND_pos(n)[2]);
+ else
+ obj->z = 0.0;
}
initObjMapData (job, ND_label(n), n);
if ((flags & (GVRENDER_DOES_MAPS | GVRENDER_DOES_TOOLTIPS))
}
if (flags & GVRENDER_DOES_Z) {
- obj->tail_z= late_double(e->tail, N_z, 0.0, -1000.0);
- obj->head_z= late_double(e->head, N_z, 0.0, -MAXFLOAT);
+ /* obj->tail_z = late_double(e->tail, N_z, 0.0, -1000.0); */
+ /* obj->head_z = late_double(e->head, N_z, 0.0, -MAXFLOAT); */
+ if (GD_odim(e->tail->graph) >=3) {
+ obj->tail_z = POINTS(ND_pos(e->tail)[2]);
+ obj->head_z = POINTS(ND_pos(e->head)[2]);
+ } else {
+ obj->tail_z = obj->head_z = 0.0;
+ }
}
if (flags & GVRENDER_DOES_LABELS) {
node_t *n;
edge_t *e;
point pt;
+ int dim3 = (GD_odim(g) >= 3);
e_arrows = s_arrows = 0;
setYInvert(g);
}
safe_dcl(g, g, "bb", "", agraphattr);
for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
- sprintf(buf, "%d,%d", ND_coord_i(n).x, YDIR(ND_coord_i(n).y));
+ if (dim3) {
+ sprintf(buf, "%d,%d,%d", ND_coord_i(n).x, YDIR(ND_coord_i(n).y), POINTS(ND_pos(n)[2]));
+ } else {
+ sprintf(buf, "%d,%d", ND_coord_i(n).x, YDIR(ND_coord_i(n).y));
+ }
agset(n, "pos", buf);
sprintf(buf, "%.2f", PS2INCH(ND_ht_i(n)));
agxset(n, N_height->index, buf);
node_t **neato_nlist;
int move;
double **dist, **spring, **sum_t, ***t;
- int ndim;
+ unsigned short ndim;
+ unsigned short odim;
#endif
#ifndef NEATO_ONLY
/* to have subgraphs */
#define GD_n_cluster(g) (g)->u.n_cluster
#define GD_n_nodes(g) (g)->u.n_nodes
#define GD_ndim(g) (g)->u.ndim
+#define GD_odim(g) (g)->u.odim
#define GD_neato_nlist(g) (g)->u.neato_nlist
#define GD_nlist(g) (g)->u.nlist
#define GD_nodesep(g) (g)->u.nodesep
return 0;
}
-static void neato_init_graphn(Agraph_t * g, int dfltdim)
+static void neato_init_graph (Agraph_t * g)
{
+ int outdim;
+
setEdgeType (g, ET_LINE);
- GD_ndim(g->root) = late_int(g, agfindattr(g, "dim"), dfltdim, 2);
+ outdim = late_int(g, agfindattr(g, "dimen"), 2, 2);
+ GD_ndim(g->root) = late_int(g, agfindattr(g, "dim"), outdim, 2);
Ndim = GD_ndim(g->root) = MIN(GD_ndim(g->root), MAXDIM);
+ GD_odim(g->root) = MIN(outdim, Ndim);
neato_init_node_edge(g);
}
-static void neato_init_graph(Agraph_t * g)
-{
- neato_init_graphn(g, 2);
-}
-
static int neatoModel(graph_t * g)
{
char *p = agget(g, "model");