If you wish to have some control points that may be manipulated with the mouse, then you need elements. Just in case you have not seen it: -=-=-=-=-=-=-=-=-= | v shape edge els | v := RTView new. shape := RTEllipse new size: 10; color: (Color purple alpha: 0.3). els := (shape elementsOn: (1 to: 6)) @ RTDraggable. v addAll: els . RTHorizontalLineLayout on: v elements. v elements first translateBy: -50 @ 50. v elements third translateBy: -10 @ 20. v elements fifth translateBy: 0 @ -60. v elements last translateBy: 150 @ 100. edge := (RTBezierLine new controllingElements: v elements) edgeFrom: els first to: els last. v add: edge. v open. -=-=-=-=-=-=-=-=-= Alexandre On Jul 30, 2014, at 5:37 PM, Peter Uhnák <i.uhnak@gmail.com> wrote:
Hi Alex!
I took a brief look at it and will play with it more tomorrow but it looks great! Especially the RTMultiLine>>block: message makes it is much more flexible for weird use cases (e.g. wanting to have control points while maintaining orthogonality etc). Perhaps we don't even need to add extra option for control points per se and just let it be handled from outside? E.g. something like --------------------------------- v := RTView new.
e1 := (RTEllipse new size: 30) elementOn: 'A'. e2 := (RTEllipse new size: 30) elementOn: 'B'.
ctrlShape := RTEllipse new size: 10; color: (Color purple alpha: 0.3). ctrls := (ctrlShape elementsOn: (1 to: 2)).
v add: e1; add: e2; addAll: ctrls. v elements @ RTDraggable.
e := RTEdge from: e1 to: e2.
ctrls do: [ :el | el addConnectedEdge: e ].
shape := RTMultiLine new color: Color blue. shape block: [ :fromPoint :toPoint | | points | points := ctrls collect: [ :el | el position ]. points addFirst: fromPoint; addLast: toPoint.
points asArray. ].
e + shape.
v add: e.
RTCircleLayout on: v elements. v open. -------------------------
Thanks!
Peter
p.s. should I be CC-ing to moose-dev list? not sure what the proper mailing policy is
On Wed, Jul 30, 2014 at 8:12 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote: Hi Peter!
Iâve just added the orthogonal vertical and horizontal lines in Roassal2. Here are some screenshots.
<Screen Shot 2014-07-30 at 2.04.23 PM.png> <Screen Shot 2014-07-30 at 2.07.44 PM.png>
These last script has been made with: -=-=-=-=-=-=-=-=-=-=-=-= | v | v := RTView new.
v addAll: ((RTEllipse new size: 20; color: (Color red alpha: 0.3)) elementsOn: (1 to: 20)).
shape := RTMultiLine new. shape orthoVertical. shape color: (Color blue alpha: 0.3).
RTEdge buildEdgesFromObjects: (1 to: 20) from: [ :n | n // 3 ] to: #yourself using: shape inView: v.
v elements @ RTDraggable @ RTPopup.
RTTreeLayout on: v elements. v open -=-=-=-=-=-=-=-=-=-=-=-=
Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
On Jul 26, 2014, at 3:57 PM, Peter Uhnák <i.uhnak@gmail.com> wrote:
Hi,
is there any support for orthogonal lines in Roassal2? I've seen something similar (ROOrthoVerticalLineShape), however nothing of that sort in Roassal2. I would imagine it to behave similarly to RTBezierLine - having controllingElements to specify the corners. (While ROOrtholines did it automatically I was looking for something more manual, so it can go in both directions - thus the controllingElements).
Second thing I wasn't able to figure out is whether it is possible to create line from element to itself. All *AttachPoint classes aren't really able to cope with that. The best result I got was from Vertical/Horizontal AttachPoints (combined with BezierLine), however I would like to be able to specify which side it would start on and end on. Ideally not just middle of sides, but arbitrary part of the shape (I imagine that might be hard for non-rectangular shapes).
Thanks, Peter
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.