Hi Alex,
Thanks for the work on improving the layouts.
I'm confronted with a problem with RTClusterLayout.
|elements view interval centerElement|
view := RTView new.
interval := (2 to: 4).
elements := ((RTEllipse new color: Color red; size: [:each | each + 30]) +
(RTLabel new text: 'very very very long names')) elementsOn: interval
asOrderedCollection.
centerElement := ((RTEllipse new color: Color green; size: [:each | each +
30]) + (RTLabel new text: 'Center Node')) elementOn: 1.
elements add: centerElement.
elements @ RTDraggable.
view addAll: elements.
interval do: [:each | view add: (RTEdge from: (view elementFromModel: 1)
to: (view elementFromModel: each)) + (RTLine new color: Color purple) ].
view edges do: [ :each | each trachelShape pushBack ].
(RTClusterLayout new horizontalGap: 200) on: view elements.
view open
With fewer nodes, I get the problem where nodes overlap the center node:
[image: Inline image 2]
It works well when I have much more nodes:
[image: Inline image 3]
Any idea how can i fix this problem?
thanx.
usman
On Thu, Jul 3, 2014 at 8:27 PM, Alexandre Bergel <alexandre.bergel(a)me.com>
wrote:
Hi!
Daniel has worked on additional circle layouts, which are now included in
Roassal.
We now have RTEquidistantCircleLayout and RTWeightedCircleLayout in
addition to RTCircleLayout and RTCenteredCircleLayout
Consider this small script:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 20 do: [ :i |
aux sizeElement: i*4+5.
view add: (aux elementOn: i) ].
RTCircleLayout
new
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=
It produces the output:
There are two recurrent problems with this rendering:
- circles are not centered
- circles overlaps and this overlap can be avoided since there is spaces
between the small circles. The layout does not consider the size of the
elements
RTEquidistantCircleLayout and RTWeightedCircleLayout address these
problems.
In the script above, replacing RTCircleLayout by RTWeightedCircleLayout
produces the following:
The space is allocated to each element according to its size.
A variation of this situation may be seen with the following:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 10 do: [ :i |
aux sizeElement: i*10+5.
view add: (aux elementOn: i) ].
RTWeightedCircleLayout
new
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=
The script produces
It may happens however that you want always the same space between the
elements. You should therefore use RTEquidistantCircleLayout as in:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 10 do: [ :i |
aux sizeElement: i*10+5.
view add: (aux elementOn: i) ].
RTEquidistantCircleLayout
new
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=
It produces the following:
The work of Daniel may be found in Roassal2.
Thanks Daniel!
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel
http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev