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"

Reply via email to