BalloonCanvas question

Bert Freudenberg bert at freudenbergs.de
Mon Nov 20 20:16:39 UTC 2006


On Nov 20, 2006, at 20:45 , Hilaire Fernandes wrote:

> Bert Freudenberg a écrit :
>> On Nov 20, 2006, at 17:04 , Hilaire Fernandes wrote:
>>> Karl a écrit :
>>>> Bert Freudenberg wrote:
>>>>>
>>>>> On Nov 19, 2006, at 12:41 , Hilaire Fernandes wrote:
>>>>>
>>>>>> Bert Freudenberg a écrit :
>>>>>>> On Nov 19, 2006, at 10:22 , Hilaire Fernandes wrote:
>>>>>>>> What is the use of the ifNoTransformWithIn: method?
>>>>>>>> When I use the BalloonCanvas within a morph drawOn:  method,  
>>>>>>>> the ifNoTransformWithIn: is forcing the use of the super  
>>>>>>>> graphic method, so no anti-aliasing take place.
>>>>>>>> I am sure there are pretty good reason, but I don't get it.
>>>>>>> An axis-aligned rectangle can be drawn much faster using  
>>>>>>> BitBlt than using Balloon. That case is detected by the method.
>>>>>>
>>>>>> Ok, so it is a feature. However in that case the AA is off and  
>>>>>> there are no way to get it back, right?
>>>>>
>>>>> BitBlt does no AA, right.
>>>> I did some hacking a few years ago and did some overriding of  
>>>> the super calls and did get anti alias with a speed penalty.
>>>> karl
>>>
>>> Thanks for your info.
>>>
>>> I guess that all of my consideration will become more or less  
>>> obsolete with the coming CAIRO support. I have not yet checked  
>>> Rome, but I guess in that situation the cairo graphic functions  
>>> could be used in the drawOn: morphic methods. Is it that?
>> If you speak of Rome, it defines a new Canvas protocol, which is  
>> similar, but not exactly as the old Canvas. It currently renders  
>> into an offscreen bitmap (registered in SurfacePlugin), which can  
>> be copied to the screeb using BitBlt. Rome specifically is *not* a  
>> Cairo binding, but happens to use the Cairo library as one of its  
>> backends.
>
> Thanks for the clarification.
> Rome being more than a Cairo binding looks exiting!

There is an almost complete pure Smalltalk backend, a Balloon-engine  
backend, and the plugin.

> Is the Rome canvas upward compatible with the old canvas?

No. For Tweak, we created a RomeTweakCanvas that implements the old  
protocol and delegates to a RomeCanvas. The same could surely be done  
for a Morphic canvas.

> Could we use Rome to render custom Morph?

In principle, yes. You can have the Rome plugin draw into a surface  
matching the original canvas's Form, and when finished you need to  
update the dirty rectangle (which uses BitBlt to copy to the original  
Form).

- Bert -





More information about the Squeak-dev mailing list