If you pass userDefinedEdges: to a graph layout, it will only consider those edges. This is what happens for example in the Meta Browser: the red arrows are not taken into account.
Doru On Wed, Jan 15, 2014 at 3:32 PM, Usman Bhatti <usman.bha...@gmail.com>wrote: > Alex, > > I remember to have talked to Mathieu about the making layouts ignore some > edges when drawing visualizations and I think he gave it a try as well. I > think that can be helpful in Clement's case (back jumps are ignored in the > layout). > Do you remember to have integrated something in Roassal on these lines > from Mathieu's work? > > Usman > > > > On Tue, Jan 14, 2014 at 6:20 PM, Alexandre Bergel <alexandre.ber...@me.com > > wrote: > >> Hi Clément, >> >> Thanks for your nice words. >> Layouts provided by Roassal are well known generic algorithm. Creating a >> new layout is not complicated at all. Just subclass ROLayout and override >> the hook methods. Creating a layout for your need is not easy. Have you >> tried to google for a layout? If you find one, it should be rather easy to >> implement it. >> >> Alexandre >> >> >> On Jan 14, 2014, at 12:50 PM, Clément Bera <bera.clem...@gmail.com> >> wrote: >> >> > Hello Roassal developers, >> > >> > A few time ago Usman Bhatti showed me Roassal. Today I decided to use >> it for my daily work on a project that aims to optimize Pharo's methods. >> > >> > Firstly I am quite impressed by the quality of Roassal, I am currently >> using the Roassal + Mondrian builder and I have a visual representation >> which is very close to what I want after 1 hour of work with the help of >> Usman. Good job guys. >> > >> > Here are 2 examples of what I use: >> > >> > exampleIfTrueIfFalse2 >> > | a b | >> > a := true. >> > a >> > ifTrue: [ >> > false ifTrue: [ ^ b := 1 ] ifFalse: [ b := 2 ] ] >> > ifFalse: [ >> > true ifTrue: [ b := 4 ] ifFalse: [ b := 5 ] ]. >> > ^ b >> > >> > <Screen Shot 2014-01-14 at 4.14.49 PM.png> >> > >> > Here there's one rectangle for each basic block, entrance/exits are >> basic blocks with bigger borders, and borders in red represents the "hot >> path", which the path the execution flow most frequently uses (based on >> native code counters added at some spots in the method by Cogit). >> > >> > Another example: >> > >> > exampleToDo >> > >> > 1 to: 10 do: [ :i | >> > self kick: i ] >> > >> > <Screen Shot 2014-01-14 at 4.36.47 PM.png> >> > >> > Now I have a few issues with the layout. I am currently using the >> narrowTreeLayout which seems to be the best for my visualisation. >> > >> > issue 1: When branches merges, which is in a tree when a node has 2 or >> more parents, or when I have a #ifTrue:ifFalse:, the child is not well >> aligned horizontally. Here in the first visualisation I showed, BasicBlock >> 5 is below but not in the middle of Basic block 8,7 and 4 (horizontally). I >> put a minimal width for each basic block to make it better but it's still >> not perfect. >> > issue 2: (most important issue) I cannot display back jumps because >> then all the graph is missdrawn, therefore I need to remember where they >> are instead of visualizing them all the time (I cannot display the back >> jump from basic block 3 to basic block 2 in the second representation. In >> addition, the back jump edge, when well displayed, overlaps the basic >> blocks visualizations. >> > >> > Here is an example of what I would like for the edges and basic block >> positions: >> > >> > <Screen Shot 2014-01-14 at 4.27.32 PM.png> >> > >> > As you can see, here exit is in the middle of B2 and B5 horizontally, >> which is not the case in my roassal visualization. >> > In addition, there's a back jump from B6 to B4 that I cannot display >> (or all the visual representation goes nuts). The edge for the back jump >> does not overlap with the basic blocks. In this graph, arrows follow a >> grid. I don't care that arrows are diagonals instead of a mix of horizontal >> and vertical lines but I would like to be able to see nicely the back jumps >> as in this graph. >> > >> > Do you have an idea on what layout/view options I could use with >> Roassal +Mondrian to have a better result ? >> > >> > I tried to create my own layout but after 2 hours I understood this >> cost too much time for my planning (or perhaps I'm just too dumb to do it >> fast :-( ). >> > >> > Anyway, the representation I have now is good enough for me to use it. >> But a better one would be better, especially for back jumps :-). >> > >> > Thanks for any help. >> > >> > Clement >> >> -- >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: >> Alexandre Bergel http://www.bergel.eu >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >> >> >> >> > -- www.tudorgirba.com "Every thing has its own flow"