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
|