[Pharo-dev] Red Box of Doom when changing the Roassal Canvas of the Easle to Athens

Alexandre Bergel alexandre.bergel at me.com
Tue Nov 26 16:18:03 EST 2013


> ok i got the moose 5 image via pharolauncher and that solves the problem. However I see when I try bezierCurve example and try to move its elements around, morphic version is at least 4 times faster while the athens version is very slow. Why is that ? 

You are putting your finger on one big problem of Roassal. Roassal only loosely uses Athens. For example, the bezier line is composed of many small lines. With Morphic, I suspect that drawing 1000 times 1 line is as fast as drawing 1 times 1000 lines.
In Athens, triggering a drawing takes times (since you need to define a path, and I guess the drawing is done by the graphic card). So, in Athens, drawing 1000 times 1 line, as it is done now with Bezier curve, is not really efficient.

However, the good news is that I have a pretty good idea on how to fix this. Currently, Roassal does too much. It should not do the rendering loop. We soon plan to add a layer between Roassal and Athens to do the rendering loop. Thanks to this layer, all the good thing of Athens will be available in Roassal.

In December I will lock myself in Igor office to extract all the juice of Athens. 

Alexandre


> 
> 
> On Tue, Nov 26, 2013 at 10:22 PM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> Have you tried to use the mouse distribution?
> https://ci.inria.fr/moose/job/moose-5.0/lastSuccessfulBuild/artifact/moose-5.0.zip
> 
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> On Nov 26, 2013, at 5:16 PM, kilon alios <kilon.alios at gmail.com> wrote:
> 
> > Nope I am afraid the problem remains.
> >
> > I went in Settings, did the select , unselect thing. Selected Monaco. Restored Roassal back to Morphic. Went to Easel , selected Canvas -> Athens and I get the MNU and Red Box of Doom once again. Tried Times New Roman and Courier , same problem.
> >
> >
> > On Tue, Nov 26, 2013 at 10:02 PM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> > Hi Kilon,
> >
> > You need to change the font of Pharo.
> > World Menu/systems/settings/Appearance
> > Select "Use Free Font”. If it is selected, then unselect it and select it again.
> > Change the source font of your image. Monaco is quite fine I find.
> >
> > Do your example again, you should not get the error anymore.
> >
> > Alexandre
> > --
> > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> > Alexandre Bergel  http://www.bergel.eu
> > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >
> >
> >
> > On Nov 26, 2013, at 3:47 PM, kilon alios <kilon.alios at gmail.com> wrote:
> >
> > > I get a MNU when I try to set Canvas in Easel (Roassal) to Athens. This is strange because I use also a very recent image and latest version from both Roassal and Athens at Win7 and I have no such problem.
> > >
> > > I am now on Macos 10.7
> > >
> > > I had a similar problem when I tried to render text with Athens. Here is the stack.
> > >
> > > StrikeFont(Object)>>doesNotUnderstand: #glyphRendererOn:
> > > AthensCairoCanvas>>setFont:
> > > ROAthensCanvas>>drawString:at:font:color:
> > > ROLabel>>drawOn:for: in Block: [ :line | ...
> > > Array(SequenceableCollection)>>do:
> > > ROLabel(ROAbstractLabel)>>linesOf:do:
> > > ROLabel>>drawOn:for:
> > > ROLabel(ROShape)>>chainedDrawOn:for:
> > > ROBorder(ROShape)>>chainedDrawOn:for:
> > > ROBox(ROShape)>>chainedDrawOn:for:
> > > ROElement(ROAbstractComponent)>>drawOn:
> > > ROViewStack(ROView)>>drawElementsOn: in Block: [ :n | n drawOn: canvas ]
> > > OrderedCollection>>do:
> > > ROViewStack(ROView)>>elementsToRenderDo: in Block: [ :assoc | assoc value do: aBlock ]
> > > OrderedCollection>>do:
> > > ROViewStack(ROView)>>elementsToRenderDo:
> > > ROViewStack(ROView)>>drawElementsOn:
> > > ROViewStack>>drawOn:
> > > ROAthensMorph>>drawOn: in Block: [ :cs | ...
> > > AthensCairoSurface>>drawDuring: in Block: [ ...
> > > BlockClosure>>ensure:
> > > AthensCairoSurface>>drawDuring:
> > > ROAthensMorph>>drawOn:
> > > FormCanvas(Canvas)>>draw:
> > > FormCanvas(Canvas)>>drawMorph:
> > > ROAthensMorph(Morph)>>fullDrawOn: in Block: [ ...
> > > FormCanvas>>roundCornersOf:in:during:
> > > FormCanvas(Canvas)>>roundCornersOf:during:
> > > ROAthensMorph(Morph)>>fullDrawOn: in Block: [ ...
> > > BlockClosure>>on:do:
> > >
> >
> >
> >
> 
> 
> 





More information about the Pharo-dev mailing list