Hi guys
with igor we sat and had a look at Roassal for a couple of minutes and here are a list of points for real speed improvements.
Igor did not want to send them because he does not want to look like an asshole criticizing but I think that if we want roassal to be really
a success we should.
Now are the mooser and roassalers really interested in making Roassal scalable? (I hope so but I would respect otherwise and think for the future :)
because we (moosers) could ask for feedback to igor and Alex you could come to pair program here with him around ESUG.
Stef
* Point 1: wasting cycles to do conversion
--------------------------------------------------------
ROPharoCanvas>>line: aPoint to: aPoint2 width: aSmallInteger color: aColor
nativeCanvas line: (self virtualToRealPoint: aPoint) to: (self virtualToRealPoint: aPoint2) width: aSmallInteger color: aColor.
wasting cycles to convert from your local coordinate space into global one on every single operation is not a good idea. Guess why :)
Athens provides the user-space coordinate system for geometry by default.. so that you don't have to maintain it by yourself.
So if you want a real system these points should be addressed ;)
* Point 2: missing transformation matrix
-----------------------------------------------------
You don't even have a transformation as a concept.. and instead of simple and straightforward affine matrix which people
learn in schools today: a Camera
virtualToRealPointNoTrunc: aPoint
"Return a virtual point from a one expressed in the real coordinates"
| visibleBounds offset |
visibleBounds := self bounds.
offset := self position.
^ ((aPoint x asFloat - offset x * realExtent x / visibleBounds width) asFloat) @ ((aPoint y asFloat - offset y * realExtent y / visibleBounds height) asFloat)
ROAthensCanvas>>line: aPoint to: aPoint2 width: aSmallInteger color: aColor
| path |
path := nativeCanvas createPath: [:builder |
builder
absolute;
moveTo: (self virtualToRealPoint: aPoint);
lineTo: (self virtualToRealPoint: aPoint2).
].
(nativeCanvas setStrokePaint: aColor) width: aSmallInteger .
nativeCanvas drawShape: path
see this #virtualToRealPoint: calls?
Athens provides this for free. Do not do it the hard way: (do not transform poor vector
multiple times to get there.)
Athens do it for you using math:
(v * M1) * M2 = v * (M1*M2)
* Point 3 about design
------------------------------
ROAbstractArrow
ROArrow
ROReversedArrow
ROHorizontalArrow
ROReversedHorizontalArrow
ROVerticalArrow
ROReversedVerticalArrow
Why do we have all these classes? why they are not...
Hello everyone,
The energy flowing through this mailing list these days is amazing. Let's keep it up :)
Cheers,
Doru
--
www.tudorgirba.com
"When people care, great things can happen."
Hi guys
I would like to see how I can avoid to get confused.
I would like to see distribution maps improved and get some variations. Now I wonder
is distribution maps a layout?
Stef
Hi
I've made kind a big refactoring in Roassal-Algorithm, as I've
learnt that ROContainer's attributes was there for any kind of use, now
the CompactTree family uses it, there are new methods for ROElement in
the package, but no more need of ROCompactTreeNode (former RONode).
In
the same time, I've written tests to be sure that the code still works
(in fact it's the aim of tests I think).
So now, there ain't crossing
any more, in LaggeredTree.
Tell me what kind of new layout you wish to
see in Roassal, maybe you can have a look at D3 library.
Or maybe I
will start looking at how to increase roassal scalability.
Just tell
Regards
Mathieu
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
Hi!
Can I remove these methods?:
1. MooseEntity>>openInEasel (it is not called and there is MOEasel)
2. FAMIXClassGroup>>viewDuplicationComplexity (annotation is commented)
3. #browsePackageBlueprints (it is not called, annotations are commented)
6. HismoClassHistoryGroup>>viewEvolutionMatrix and #viewEvolutionMatrix
(it is not called)
Thanks,
Jura
Hi Sven,
I am looking at NeoCSV, and I would like to add it to Moose by default.
During the review, I noticed that it relies on perform:
addRawField: accessor
"Add a field based on an accessor to be written as a #raw field"
self addFieldAccessor: [ :object |
self writeRawField: (object perform: accessor) ]
I would prefer to have it modified to simply use value:. In this way we can
pass blocks as transformation specifications.
Why is this important? Because we often have values that we want to export
but that do not have a direct correspondent in a unary method.
Would it be Ok to make this modification?
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Hi. So FM3 has 4 predefined types: Object, String, Number and Boolean. What
is the best way to add more. For example I want to model a database and I
wan't to be able to have Integer, Float, Date, etc.
--
View this message in context: http://moose-dev.97923.n3.nabble.com/Adding-predefined-types-tp4027277.html
Sent from the moose-dev mailing list archive at Nabble.com.
Hi,
I am trying to load Moose in a fresh Pharo 2.0 image by doing
> Gofer new
> smalltalkhubUser: 'Moose' project: 'Moose';
> package: 'ConfigurationOfMoose';
> load.
>
> (Smalltalk at: #ConfigurationOfMoose)
> perform: #loadDevelopment
and it does not load correctly (i.e., there is an error after some minutes)
I also tried #loadMinimal but it does not work either and I got:
> MetacelloProjectSpecLoadError: No version found for 'default' of ConfigurationOfMooseAlgos
> MetacelloMCProjectSpec>>loadVersion:
> MetacelloMCProjectSpec>>load
> MetacelloProjectReferenceSpec>>loadUsing:gofer:
> MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories: in Block: [:pkg | pkg loadUsing: self gofer: gofer]
> OrderedCollection>>do:
Can anyone please take a look at the issue and fix the ConfigurationOfMoose?
Cheers,
R