W3C home > Mailing lists > Public > www-style@w3.org > May 2011

Re: [css3-images] cross-fade()

From: Alex Danilo <alex@abbra.com>
Date: Fri, 06 May 2011 12:47:55 +1000
Message-Id: <VF6RKL.PYHFZCPO7ND@abbra.com>
To: fantasai <fantasai.lists@inkedblade.net>
Cc: www-style@w3.org, "Robert O'Callahan" <robert@ocallahan.org>
Hi Fantasai & All,

--Original Message--:
>On 05/04/2011 02:43 PM, Rik Cabanier wrote:
>>  David Baron wrote:
>>> I think the current definition of cross-fade() in
>>> http://dev.w3.org/csswg/css3-images/#cross-fade-function is
>>> incorrect.  It defines cross-fade() in terms of the porter-duff over
>>> operator, which is not symmetric.  This means that cross-fade(A, B,
>>> 30%) is different from cross-fade(B, A, 70%).

This is not correct, they are the same.

A * (1 - 0.3) + B * 0.3 == B * (1 - 0.7) + A * 0.7

>>> I *think*, though I'm not sure, that the right way to define
>>> cross-fade is in terms of the plus operator described in section 4.5
>>> of the original Porter-Duff paper:
>>> http://keithp.com/~keithp/porterduff/
>>
>> I *think* you're right.
>>
>> It should read either:
>>
>>   Then, the start image has a global alpha applied to it equal to
>>   (1-p), the end image has a global alpha applied to it equal to p,
>>   and the end image is then composited over the start image with
>>   the plus operation
>>
>> or
>>
>>   Then, the end image has a global alpha applied to it equal to p,
>>   and the end image is then composited over the start image
>>   with the source-over operation
>>
>> but I could be wrong...
>
>Ok, I've updated the spec with s/source-over/plus/ per dbaron's instructions.
>But as I'm not a graphics person /at all/, I would like someone to confirm
>whether the resulting is correct. :)
>   http://dev.w3.org/csswg/css3-images/#cross-fade-function

I don't think you want 'plus' here.

If you are using the alpha, src-over is just an addition - do
not confuse it with the 'plus' operator which adds the
unpremultiplied colors, then clamps them to avoid overflow.

What the function seems to be doing is just a src-over. If 'p'
is 30% you'll get 30% of one image, and 70% of the other. (1 - p).
Those would normally be composited with src-over which is plain
old alpha compositing.

'Plus' is used for a different kind of cross-fade as used in
movies. The two images are combined in such a way that values
exceed '1'. So, clipping of maximum values must be applied. The
effect of 'plus' is the second image appearing to take over the
old one - without any fade of the old one, then you kind of
reduce the old one by dropping it's alpha down. Hard to explain
in English.

Anyway, I doubt it would make any sense to expect web browser
makers and anyone using existing graphics libraries to add
P-D 'plus' just for image transitions.

Alex

>~fantasai
>
>
Received on Friday, 6 May 2011 02:48:33 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:40 GMT