BalloonCanvas question

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

BalloonCanvas question

Hilaire Fernandes-3
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.

Hilaire Fernandes


Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Bert Freudenberg
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.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Hilaire Fernandes-3
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?

Hilaire


Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Bert Freudenberg

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.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

karl-8
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

Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Hilaire Fernandes-3
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?

Hilaire



Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Bert Freudenberg

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.

- Bert -




Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Hilaire Fernandes-3
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!
Is the Rome canvas upward compatible with the old canvas?
Could we use Rome to render custom Morph?

Hilaire


Reply | Threaded
Open this post in threaded view
|

Re: BalloonCanvas question

Bert Freudenberg

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 -