Arrow in Roassal

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Arrow in Roassal

Anne Etien
Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

abergel
Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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




_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

Anne Etien
Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"
| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].
u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.
^ Array with: toPointWithOffset with: arrowMiddle

Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

abergel
Hi!

I have added ROSimpleArrow.

=-==-==-==-==-==-==-==-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROSimpleArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
=-==-==-==-==-==-==-==-=

You just need to update Roassal

Cheers,
Alexandre

On Mar 6, 2014, at 12:09 PM, Anne Etien <[hidden email]> wrote:

Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"

| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].

u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.

^ Array with: toPointWithOffset with: arrowMiddle

<RoassalArrow.png>
Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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




_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

Anne Etien
Thanks a lot.
I will checked how you did just for information.

Anne
Le 6 mars 2014 à 18:24, Alexandre Bergel a écrit :

Hi!

I have added ROSimpleArrow.

=-==-==-==-==-==-==-==-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROSimpleArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
=-==-==-==-==-==-==-==-=
<Screen Shot 2014-03-06 at 2.22.56 PM.png>

You just need to update Roassal

Cheers,
Alexandre

On Mar 6, 2014, at 12:09 PM, Anne Etien <[hidden email]> wrote:

Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"

| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].

u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.

^ Array with: toPointWithOffset with: arrowMiddle

<RoassalArrow.png>
Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Fwd: Arrow in Roassal

Anne Etien
In reply to this post by abergel
Usman,

Since with the jet lag, you won't have any answer from Alexandre before a couple of hour, I resend his email on Arrow in Roassal. It's sure that it could be good if good if we can have the same arrow in Roassal 2.

Anne

PS: if you change the size value, it changes the size of the head of the arrow

Début du message réexpédié :

De : Alexandre Bergel <[hidden email]>
Objet : [Moose-dev] Re: Arrow in Roassal
Date : 6 mars 2014 18:24:53 HNEC
À : Moose-related development <[hidden email]>
Répondre à : Moose-related development <[hidden email]>

Hi!

I have added ROSimpleArrow.

=-==-==-==-==-==-==-==-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROSimpleArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
=-==-==-==-==-==-==-==-=

You just need to update Roassal

Cheers,
Alexandre

On Mar 6, 2014, at 12:09 PM, Anne Etien <[hidden email]> wrote:

Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"

| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].

u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.

^ Array with: toPointWithOffset with: arrowMiddle

<RoassalArrow.png>
Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

abergel
Arrowed edges are not trivial to implement. we have provided a first try here:
-=-=-=-=-=-=-=-=
| v e1 e2 l |
v := RTView new.
e1 := (RTEllipse new size: 10) element.
e2 := (RTEllipse new size: 10) element.

v add: e1.
v add: e2.
l := RTEdge from: e1 to: e2.
l + (RTLine new color: Color red) + (RTArrow new color: Color red).
v add: l.

e1 @ RTDraggable.
e2 @ RTDraggable.
-=-=-=-=-=-=-=-=

Is this what you need?
Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Apr 4, 2014, at 4:50 AM, Anne Etien <[hidden email]> wrote:

Usman,

Since with the jet lag, you won't have any answer from Alexandre before a couple of hour, I resend his email on Arrow in Roassal. It's sure that it could be good if good if we can have the same arrow in Roassal 2.

Anne

PS: if you change the size value, it changes the size of the head of the arrow

Début du message réexpédié :

De : Alexandre Bergel <[hidden email]>
Objet : [Moose-dev] Re: Arrow in Roassal
Date : 6 mars 2014 18:24:53 HNEC
À : Moose-related development <[hidden email]>
Répondre à : Moose-related development <[hidden email]>

Hi!

I have added ROSimpleArrow.

=-==-==-==-==-==-==-==-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROSimpleArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
=-==-==-==-==-==-==-==-=
<Screen Shot 2014-03-06 at 2.22.56 PM.png>

You just need to update Roassal

Cheers,
Alexandre

On Mar 6, 2014, at 12:09 PM, Anne Etien <[hidden email]> wrote:

Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"

| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].

u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.

^ Array with: toPointWithOffset with: arrowMiddle

<RoassalArrow.png>
Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Arrow in Roassal

Usman Bhatti
Tx Alex.
It works for me.


On Wed, Apr 16, 2014 at 12:55 AM, Alexandre Bergel <[hidden email]> wrote:
Arrowed edges are not trivial to implement. we have provided a first try here:
-=-=-=-=-=-=-=-=
| v e1 e2 l |
v := RTView new.
e1 := (RTEllipse new size: 10) element.
e2 := (RTEllipse new size: 10) element.

v add: e1.
v add: e2.
l := RTEdge from: e1 to: e2.
l + (RTLine new color: Color red) + (RTArrow new color: Color red).
v add: l.

e1 @ RTDraggable.
e2 @ RTDraggable.
-=-=-=-=-=-=-=-=

Is this what you need?
Alexandre

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



On Apr 4, 2014, at 4:50 AM, Anne Etien <[hidden email]> wrote:

Usman,

Since with the jet lag, you won't have any answer from Alexandre before a couple of hour, I resend his email on Arrow in Roassal. It's sure that it could be good if good if we can have the same arrow in Roassal 2.

Anne

PS: if you change the size value, it changes the size of the head of the arrow

Début du message réexpédié :

De : Alexandre Bergel <[hidden email]>
Objet : [Moose-dev] Re: Arrow in Roassal
Date : 6 mars 2014 18:24:53 HNEC
À : Moose-related development <[hidden email]>
Répondre à : Moose-related development <[hidden email]>

Hi!

I have added ROSimpleArrow.

=-==-==-==-==-==-==-==-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROSimpleArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
=-==-==-==-==-==-==-==-=
<Screen Shot 2014-03-06 at 2.22.56 PM.png>

You just need to update Roassal

Cheers,
Alexandre

On Mar 6, 2014, at 12:09 PM, Anne Etien <[hidden email]> wrote:

Hi,

Thanks Alexandre.
With your explanation, I modified the drawOn: for: fromPoint: toPoint: line: method of ROAbstractRow. I have almost what I want. I removed the line closing the triangle of the head, I reduced the right and left extremity of the head. But I would like that there is no space between the head and the body of the arrow. Can you please indicated me where to look for since I modified the  toPointWithOffSet value with any modification on the image? Perhaps is it in another method that the body of the arrow is defined.
I think that when it will be done, it can interest others (We shouldn't be the only one using arrow ;))

Thanks in advance.

Anne


drawOn: aCanvas for: anEdge fromPoint: fromPoint toPoint: toPoint line: line
"Draw the arrow on the canvas and return the begining and ending of the arrow"

| vector u unit arrowMiddle arrowLeft arrowRight w c toPointWithOffset r |

"Draw head"
vector := self getDirectionVectorFrom: fromPoint to: toPoint.
r := vector r.
r = 0 ifTrue: [ ^ Array with: fromPoint with: fromPoint ].

u := vector normal.
unit := vector / r.
toPointWithOffset := toPoint - (offset * (vector r - size) * unit).
arrowMiddle := toPointWithOffset - (unit * size). 
arrowLeft :=  arrowMiddle- (u * size * 0.5).
arrowRight := arrowMiddle + (u * size * 0.5).

w :=  line width roValue: anEdge.
c := line colorFor: anEdge.
aCanvas line: toPointWithOffset to: arrowLeft width: w color: c.
"aCanvas line: arrowLeft to: arrowRight width: w color: c." 
aCanvas line: arrowRight to: toPointWithOffset width: w color: c.

^ Array with: toPointWithOffset with: arrowMiddle

<RoassalArrow.png>
Le 6 mars 2014 à 15:28, Alexandre Bergel a écrit :

Hi!

As you have seen, Roassal offers way to define arrows. Here is a short example:
-=-=-=-=-=-=-=-=-=-=-=-=
| v s e1 e2 l |
v := ROView new.
s := ROEllipse new size: 15.
e1 := s element.
e2 := s element.

e1 @ RODraggable.
e2 @ RODraggable.

e2 translateBy: 50 @ 80.

l := (ROLine new add: (ROArrow new size: 10)) elementFrom: e1 to: e2.

v add: e1; add: e2; add: l.
v open
-=-=-=-=-=-=-=-=-=-=-=-=
<Screen Shot 2014-03-06 at 10.54.46 AM.png>

You can always create a new array by subclassing ROArrow or ROLineDecoration.

Alexandre


On Mar 6, 2014, at 10:36 AM, Anne Etien <[hidden email]> wrote:

Hi,

We are currently making some visualizations of application with Usman. They rely on method invocations. In that case, it is better to know which method invokes which other one. We put arrow on our graph, but the only available arrow we found are 'UML like inheritance' arrow with big triangle. Would it be possible to have other type of arrow that are more discrete, but nevertheless indicates the sense? (If possible put acute and not obtuse angle between the two branches of the arrow, it is more easier to see when they are lot of links). 

More over, would it be possible to have hook on the lines to transform them as  broken lines. Indeed, when you have m1 linked to m2 and m2 linked to m1, there is superposition of the two links so not easy to read. It would be great if we can manually break the lines to see the two of them.

I put some examples of arrow below. 

Thanks a lot in advance.
Anne
 <images.jpg><images.jpg>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

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



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev