Hi All,

Yes indeed, I am very interested in this. Well, I already hacked together a way to display lines of opposite directions, but if this concept could be generalized and integrated into Roassal (by someone with better knowledge of Roassal then me :)), that would be very cool.

What I did is I created the class QSLine which has a offset property. This property simple offsets the line from its attachment point.

In my layout builder (QSVisualizer), I go through all edges and bundle them together as "bundled edges" by looking at all sources and destinations.

If such a bundle has more than one edge (meaning it has two edges going in opposite directions to the same two nodes), I offset the lines of these edges in opposite directions. This has to be done outside of QSLine, since the lines don't and shouldn't know if they have a "twin".

All of the code can be found in the Quicksilver-UI Package.

Quicksilver can be loaded in the following way:

Gofer new
        smalltalkhubUser: 'Quicksilver' project: 'Quicksilver';
        package: 'ConfigurationOfQuicksilver';
        load.
ConfigurationOfQuicksilver loadDefault.

The code where I bundle the edges together and offset them, can be found in:

QSVisualizer:edgesFor: nodes view: view

QSLine can also be found in the Quicksilver-UI Package. It is a subclass of ROLine.

Cheers,
Dennis


On Tue, May 7, 2013 at 10:38 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
> Yes, I think it would be better to display 2->2 lines.

Currently we cannot render 2->2 lines, but it would not be complicated to add a particular line shape for this.

>
> How do you mean "special shape"? Would it work in this example?:
>
> ---
> view shape rectangle size: 20.
> view nodes: #(1 2 3 4 5).
> view shape line color: Color green.
> view edgesToAll: #(1 2 3 4 5).
> view circleLayout.
> ---
>
> So every node will have 4 green edges to other node and 1 green edge to itself.
> I think we should also consider that in that example we cannot see two lines: one 1->2 and other 2->1. Should we take care of it and instead of two direct lines use, for example, bezier lines with different configuration?

I agree that ideally we should be able to see two lines 1->2 and 2->1. Currently we cannot because we do not have the appropriate shapes for this.

> I think user should see it.

Yes. There is several way to do this. As Softwarenaut does, is to have an offset.
By the way, scg guys, you never asked for such a thing? Now is a good moment for shouting :-)

Alexandre

>
>
> 2013/5/7 Alexandre Bergel <alexandre.bergel@me.com>
> But we could imagine a special shape that draw such edges.
>
> Alexandre
>
>
> On May 7, 2013, at 2:28 PM, Juraj Kubelka <juraj.kubelka@gmail.com> wrote:
>
> > All other methods in Roassal do not create 2->2 edges. This was only one. I think there is no visualisation support for such edges.
> >
> > Cheers,
> > Jura
> >
> >
> > 2013/5/6 Tudor Girba <tudor@tudorgirba.com>
> > Hi,
> >
> > Not really. When we say edgesToAll: we mean to draw edges from all nodes to all computed nodes. So, 2->2 is part of it, too. For a different behavior we should introduce another utility method.
> >
> > Cheers,
> > Doru
> >
> > --
> > www.tudorgirba.com
> >
> > "Every thing has its own flow."
> >
> > On 06.05.2013, at 18:28, Juraj Kubelka <juraj.kubelka@gmail.com> wrote:
> >
> >> Yes, I will fix it.
> >>
> >> Cheers,
> >> Jura
> >>
> >>
> >> 2013/5/6 Alexandre Bergel <alexandre.bergel@me.com>
> >> Your right Juraj, we should not have the edge 2->2.
> >> Would you mind to write a couple of tests and fix this problem please?
> >>
> >> Cheers,
> >> Alexandre
> >>
> >> On May 3, 2013, at 1:06 PM, Juraj Kubelka <juraj.kubelka@gmail.com> wrote:
> >>
> >> > The one edge I suppose not to be created is edge 2->2.
> >> >
> >> > Cheers,
> >> > Jura
> >> >
> >> >
> >> > 2013/5/3 Juraj Kubelka <juraj.kubelka@gmail.com>
> >> > I have a question: The example made by Usman creates 3 edges. I expected 2. What is right solution? Is it responsibility of user or should I check it in method #rawEdgesToAll: and create just 2 edges?
> >> >
> >> > Cheers,
> >> > Jura
> >> >
> >> >
> >> > 2013/5/3 Juraj Kubelka <juraj.kubelka@gmail.com>
> >> > Hi,
> >> >
> >> > you are right, I am going to fix it.
> >> >
> >> > Cheers,
> >> > Jura
> >> >
> >> >
> >> > 2013/5/3 Usman Bhatti <usman.bhatti@gmail.com>
> >> > Alex,
> >> >
> >> > When using ROMondrianViewBuilder >> edgesToAll: the direction of the edges is reversed. For example, in the script below, I am telling Roassal to draw edges to 2 but its drawing edges from 2.
> >> > Can you please confirm and correct, if need be.
> >> >
> >> > view := ROMondrianViewBuilder new.
> >> > view shape rectangle size:20.
> >> > view nodes: #(1 2 3).
> >> > view shape arrowedLine color: Color red.
> >> > view edgesToAll: #(2).
> >> > view forceBasedLayout.
> >> > view open.
> >> >
> >> >
> >> > Usman
> >> >
> >> > _______________________________________________
> >> > Moose-dev mailing list
> >> > Moose-dev@iam.unibe.ch
> >> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >> >
> >> >
> >> >
> >> >
> >> > _______________________________________________
> >> > Moose-dev mailing list
> >> > Moose-dev@iam.unibe.ch
> >> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>
> >> --
> >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >> Alexandre Bergel  http://www.bergel.eu
> >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> Moose-dev mailing list
> >> Moose-dev@iam.unibe.ch
> >> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>
> >> _______________________________________________
> >> Moose-dev mailing list
> >> Moose-dev@iam.unibe.ch
> >> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >
> > _______________________________________________
> > Moose-dev mailing list
> > Moose-dev@iam.unibe.ch
> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >
> >
> > _______________________________________________
> > Moose-dev mailing list
> > Moose-dev@iam.unibe.ch
> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev@iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev@iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev