}
}
-/* dot_splines:
+/* _dot_splines:
+ * Main spline routing code.
+ * The normalize parameter allows this function to be called by the
+ * recursive call in make_flat_edge without normalization occurring,
+ * so that the edge will only be normalized once in the top level call
+ * of dot_splines.
* If the splines attribute is defined but equal to "", skip edge routing.
*/
-void dot_splines(graph_t * g)
+static void _dot_splines(graph_t * g, int normalize)
{
int i, j, k, n_nodes, n_edges, ind, cnt;
node_t *n;
/* normalize splines so they always go from tail to head */
/* place_portlabel relies on this being done first */
- edge_normalize(g);
+ if (normalize)
+ edge_normalize(g);
/* vladimir: place port labels */
/* FIX: head and tail labels are not part of cluster bbox */
State = GVSPLINES;
}
+/* dot_splines:
+ * If the splines attribute is defined but equal to "", skip edge routing.
+ */
+void dot_splines(graph_t * g)
+{
+ _dot_splines (g, 1);
+}
+
/* place_vnlabel:
* assign position of an edge label from its virtual node
* This is for regular edges only.
else ND_coord_i(n).y = midx;
}
dot_sameports(auxg);
- dot_splines(auxg);
+ _dot_splines(auxg, 0);
dotneato_postprocess(auxg);
/* copy splines */