Efficient sugiyama orthogonal layout - force edges not to be merged

Aug 16, 2012 at 10:42 AM

First of all. I am using only Graph# assembly, which performs layout calculations.
To be more exact only efficent Sugiyama layout is point of my interest.
My Project is written using win forms so having layout calculated I draw graph using my own control which I can customize any way I want.

Closer to the topic. Sugiyama algo has Traditional and Orthogonal ways to layout respectively.
I am using Grahp# to calculate layout for DCGs which represent program control flow - aka CFG.
That is why point of interest to me is only orthogonal layout.

Now, when I have layout calculated I see, that may edges are merged together. For example three edges from different sources to one target. As I have edges of different types with different colors that becomes real mess.

Is there any way to disable edge merging while calculating orthogonal layout using efficient Sugiyama algo.

As an example of the result I am trying to
achieve I can mention IDA disassembler CFGs.

Aug 28, 2012 at 9:38 AM

I looked through the code of efficient Sugiyama layout algorithm.
Seems that there is no way to layout as I wanted.
I will try to create a post process function for additional edge routing that runs based on result of
orthogonal layout. Google told me that Kandinsky approach is what I am trying to achieve.
Anyhow I hope I will be able to cope with this by my self. Though I dont have this confidence.
Any news about planning to implement such edge routing in Graph#?