]> granicus.if.org Git - graphviz/commitdiff
Add extra field to splineInfo to better handle possibly swapped edges
authorerg <devnull@localhost>
Thu, 14 May 2009 15:47:20 +0000 (15:47 +0000)
committererg <devnull@localhost>
Thu, 14 May 2009 15:47:20 +0000 (15:47 +0000)
lib/common/splines.c
lib/common/types.h

index 979e81e83347ff41419fac354b711b202a501ba7..8cb48a8b4ed52ad2d281acb8960308e45b993acb 100644 (file)
@@ -69,7 +69,10 @@ arrow_clip(edge_t * fe, node_t * hn,
 
     for (e = fe; ED_to_orig(e); e = ED_to_orig(e));
 
-    j = info->swapEnds(e);
+    if (info->ignoreSwap)
+       j = 0;
+    else
+       j = info->swapEnds(e);
     arrow_flags(e, &sflag, &eflag);
     if (info->splineMerge(hn))
        eflag = ARR_NONE;
@@ -249,7 +252,7 @@ clip_and_install(edge_t * fe, node_t * hn, pointf * ps, int pn,
     for (orig = fe; ED_edge_type(orig) != NORMAL; orig = ED_to_orig(orig));
 
     /* may be a reversed flat edge */
-    if ((ND_rank(tn) == ND_rank(hn)) && (ND_order(tn) > ND_order(hn))) {
+    if (!info->ignoreSwap && (ND_rank(tn) == ND_rank(hn)) && (ND_order(tn) > ND_order(hn))) {
        node_t *tmp;
        tmp = hn;
        hn = tn;
index eec88bc93e0f414df6a9514001b69756582fb351..eea21595e23546712c469b20abdd36672d8a619d 100644 (file)
@@ -92,6 +92,7 @@ extern "C" {
     typedef struct {
        boolean(*swapEnds) (edge_t * e);        /* Should head and tail be swapped? */
        boolean(*splineMerge) (node_t * n);     /* Is n a node in the middle of an edge? */
+       boolean ignoreSwap;                     /* Test for swapped edges if false */
     } splineInfo;
 
     typedef struct pathend_t {