]> granicus.if.org Git - graphviz/commitdiff
Fix neato spline code to revert to line segments if the nodes overlap
authorerg <devnull@localhost>
Wed, 1 Apr 2009 20:26:28 +0000 (20:26 +0000)
committererg <devnull@localhost>
Wed, 1 Apr 2009 20:26:28 +0000 (20:26 +0000)
lib/neatogen/neatosplines.c

index 6a816a9312fce1c1571f44c3d8ec105b58bb8714..9870585e46e1d58976bc42e07e3683ab8474e430 100644 (file)
@@ -755,6 +755,7 @@ static int _spline_edges(graph_t * g, expand_t* pmargin, int edgetype)
     path *P = NULL;
     int useEdges = (Nop > 1);
     router_t* rtr = 0;
+    int legal;
 
     /* build configuration */
     if (edgetype != ET_LINE) {
@@ -773,7 +774,7 @@ static int _spline_edges(graph_t * g, expand_t* pmargin, int edgetype)
     }
     npoly = i;
     if (obs) {
-       if (Plegal_arrangement(obs, npoly)) {
+       if ((legal = Plegal_arrangement(obs, npoly))) {
            if (edgetype != ET_ORTHO) vconfig = Pobsopen(obs, npoly);
        }
        else if (Verbose)
@@ -784,7 +785,7 @@ static int _spline_edges(graph_t * g, expand_t* pmargin, int edgetype)
     /* route edges  */
     if (Verbose)
        fprintf(stderr, "Creating edges using %s\n",
-           (edgetype == ET_ORTHO) ? "orthogonal lines" :
+           (legal && (edgetype == ET_ORTHO)) ? "orthogonal lines" :
            (vconfig ? (edgetype == ET_SPLINE ? "splines" : "polylines") : 
                "line segments"));
     if (vconfig) {
@@ -796,7 +797,7 @@ static int _spline_edges(graph_t * g, expand_t* pmargin, int edgetype)
        }
     }
 #ifdef ORTHO
-    else if (edgetype == ET_ORTHO) {
+    else if (legal && (edgetype == ET_ORTHO)) {
        orthoEdges (g, 0);
        useEdges = 1;
     }