Le 31 janv. 2015 �� 09:48, Marcus Denker <marcus.denker@inria.fr> a ��crit :Nice! It works fine here (font looks strange, yes).The world size seems to be limited to the small windowthat pharo starts up with? Making it larger seems to still clip at that border.On 23 Jan 2015, at 17:40, Nicolai Hess <nicolaihess@web.de> wrote:<athens_test_display.3.cs><morphic_on_athens.cs>2015-01-10 13:18 GMT+01:00 Nicolai Hess <nicolaihess@web.de>:
I think I got the MorphTreeTransformMorph now working, need to clean up the codeand maybe I 'll upload this to the athens repository.nicolaiI don't know how often I thought "I got this working", but NOW I think I got this morphic transformation working :)
I give up to use the AthensTextRenderer classes, they aren't implemented fully, to much work for me to do this.Instead, I just subclass the DisplayScanner and reimplemented all Canvas-draw-methods with athens-drawing-methods.Still some morphs aren't "ported", but they use some magic. For example, for some morphs the drawOn:Canvas methodscalls many other methods drawBackroundOn: aCanvas, drawIconOn: aCanvas, drawLinesOn: ...(for exampe: IndentingListItemMorph, MorphTreeMorph). Porting this morphs means, we have to duplicate all this methods.(Ok there are other options, but I don't want to change something in the original Morphic/Canvas workflow).Other Morphs just delegate the drawing call, that delegate the calls further and deep in this call change the
drawing actually happens. This again means I have to duplicate all this methods just to use an AthensCanvas for drawing.So, for those Morphs I use a Canvas Wrapper (AthensCanvasWrapper). I already wrote about this one, it implements (most)of the Morphic/Canvas API on top of Athens, it was an alternative approach for Morphic<->Athens porting. This one is
now a much more advanced version and I can use it in combination with the other drawOnAthensCanvas methods.The drawOnAthensCanvas method in MorphTreeNodeMorph for example just calls this
drawOnAthensCanvas: anAthensCanvas
self drawOnCanvasWrapperFor: anAthensCanvaswhich in turn creates an AthensCanvasWrapper and then calls
self drawOn: wrapperThe same Morphic/Canvas drawOn method is used! But the rendering is done with Athens.Rubric does not work - Itself already duplicates many code, I don't want to look at this now.Brick does not work - It uses some of Canvas' private api, and it is difficult to provide this with Athens.
Many other things are working,
PLEASE try it out. Morphic on Athens looks great (except the font issue ...).
Just take a fresh image (I use 40442) and load the attached
morphic_on_athens.cs (<-- all code for Morphic<->Athens porting)
athens_test_display.3.cs (<-- Tests Athens for the whole MorphicWorld)Open a Workspace (old workspace preferred) and execute
AthensTestDisplay testSwitchToAthensFor: 25.This will switch the world display rendering for 25 seconds from Morphics Canvas-Api toAthens.Feedback welcome.