Just to share a 10 min coding session, just before lunch.
Result here:
https://www.facebook.com/photo.php?fbid=564129843673617&set=a.341189379300999.82969.340543479365589&type=1&theater
code:
-=-=-=-=-=-=-=-=
| view stack selected statusBar |
stack := ROViewStack new.
view := ROView new.
selected := nil.
statusBar := nil.
view on: ROMouseClick do: [ :evt |
selected == #line ifTrue: [
| ex1 ex2 line |
ex1 := (ROBox new size: 10; color: (Color purple alpha: 0.2)) element.
ex2 := (ROBox new size: 10; color: (Color purple alpha: 0.2)) element.
ex1 translateTo: evt position.
ex2 translateTo: evt position + (100 @ 60).
ex1 @ ROLightlyHighlightable.
ex2 @ ROLightlyHighlightable.
ex1 @ RODraggable.
ex2 @ RODraggable.
line := (ROLine new width: 3; color: (Color blue alpha: 0.2)) elementFrom: ex1 to: ex2.
view addAll: { ex1 . ex2 . line }.
].
selected == #circle ifTrue: [
| ellipse |
ellipse := (ROEllipse new size: 40; color: (Color yellow alpha: 0.2)) element.
ellipse translateTo: evt position.
ellipse @ RODraggable.
view add: ellipse.
].
selected == #rectangle ifTrue: [
| box |
box := (ROBox new width: 40; height: 30; color: (Color blue alpha: 0.2)) element.
box translateTo: evt position.
box @ RODraggable.
view add: box.
].
view signalUpdate.
].
view @ RODraggable.
stack zoomInButton; zoomOutButton.
stack addMenu: '+ line' callBack: [ :evt | selected := #line. statusBar model: 'line' ].
stack addMenu: '+ rectangle' callBack: [ :evt | selected := #rectangle. statusBar model: 'rectangle' ].
stack addMenu: '+ circle' callBack: [ :evt | selected := #circle. statusBar model: 'circle' ].
stack addMenu: 'Info' callBack: [ :evt | UIManager default inform: 'Vectorial editing is hyper cool' ].
stack addView: view.
stack title: 'Vectorial edition'.
"Status bar at the bottom of the window"
statusBar := (ROElement new) + ROLabel + ROBox white.
stack add: statusBar.
ROConstraint stickAtTheBottomOfTheWindow: statusBar.
stack open
-=-=-=-=-=-=-=-=
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.