[squeak-dev] Form>asFormOfDepth: appears to break transparency
J. Vuletich (mail lists)
juanlists at jvuletich.org
Sun Oct 12 13:01:48 UTC 2014
Quoting tim Rowledge <tim at rowledge.org>:
> On 11-10-2014, at 12:23 PM, J. Vuletich (mail lists)
> <juanlists at jvuletich.org> wrote:
>> Yes. In Squeak there is a bug in #asFormOfDepth: . The last lines are:
>>
>> "Special case: For a 16 -> 32 bit conversion fill the alpha
>> channel because it gets lost in translation."
>> (self depth = 16 and:[d= 32]) ifTrue:[newForm fillAlpha: 255].
>>
>> But they should be as in Cuis:
>>
>> "If we build a 32bpp from one of smaller depth,
>> it will have zero in the alpha channel (until BitBlt is fixed!)"
>> d = 32 ifTrue: [
>> newForm fixAlpha ].
>>
>> I think this should fix your problem.
>
> Yup. Given that there is a bitblt rule specifically to fix this
> problem, and a method specifically provided to use said bitblt to
> specifically fix this problem, I’m more than a bit puzzled as to why
> the most important bit of code (to be specific) in the image that
> needs this specific bit of code, doesn’t, specifically, have it.
> Even weirder is that Andreas wrote it and five years later carefully
> rewrote asFormOfDepth: to deal with this problem *and didn’t use his
> own careful fix*.
Yes. I'm puzzled too. Anybody can shed some light on this?
In any case, the Cuis way works.
>>
>> Besides, the sample code I sent gets transparent, although the
>> stuff in the Form, 16rFF000000, is opaque black. This is because of
>> another bug, this one at #colorFromPixelValue:depth: . I suggest
>> taking the code verbatim from Cuis.
>
> Probably a good idea.
>
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Useful random insult:- Can't find log base two of 65536 without a calculator.
Cheers,
Juan Vuletich
More information about the Squeak-dev
mailing list
|