On Fri, Feb 13, 2009 at 10:52 AM, Brad Kemper <brad.kemper@gmail.com> wrote:
> On Thu, Feb 12, 2009 at 12:22 PM, Robert O'Callahan <robert@ocallahan.org>wrote:
>
>> On Fri, Feb 13, 2009 at 8:43 AM, Brad Kemper <brad.kemper@gmail.com>wrote:
>>
>>> 1. How to deal with soft image edges, where there is variable opacity?
>>> Currently, WebKit seems to clip shadows to the vector edge of the border
>>> box, and not draw them behind areas of variable opacity (such as
>>> backgrounds). It seems like for a raster image that was 50% opaque, it would
>>> have draw the shadow behind the whole image at 50% of its normal opacity.
>>
>>
>> That's the way to go. What you would do is construct a mask the size of
>> the border-box whose alpha values in the border are the border-image's alpha
>> values, and whose alpha values in the padding-box are 1. Then you apply blur
>> to that mask (or not)
>>
>
> ..and then clip out the padding-box from that, which ordinarily would not
> have a shadow from the border cast onto it (or does this shadow still get
> drawn behind the padding box?)...
>
You build the element's mask, then you build the shadow, then you cut the
mask out of the shadow by painting alpha=0 with the "source" Porter-Duff
operator using the element's mask as the mask. The alpha values of the
cut-out shadow will be the shadow alpha value multiplied by (1 - the mask
alpha value). So no shadow will draw under the padding-box.
So one question just came to mind: how do we deal with box-shadow "spread"
if we're using the border-images to generate a non-rectangular mask? I don't
see any reasonable option.
Rob
--
"He was pierced for our transgressions, he was crushed for our iniquities;
the punishment that brought us peace was upon him, and by his wounds we are
healed. We all, like sheep, have gone astray, each of us has turned to his
own way; and the LORD has laid on him the iniquity of us all." [Isaiah
53:5-6]