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;
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;
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 {