[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Unexpect blit behavior when using BLEND_ADD



Brian Fisher wrote:
On Thu, Apr 17, 2008 at 10:41 AM, Lenard Lindstrom <len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>> wrote:

    For alpha surfaces a blend may be useful for doing shadow effects.
    Such effects require extracting and altering the alpha plane. Want
    to make a shadow for antialiased text. Extract the alpha and apply
    to an all black surface. Right now surfarray must be used to do
    this in a practical way. Otherwise it would have to be done
    per-pixel with get_at/set_at.

I'm curious - how exactly would you expect to be able to extract the alpha channel from a font char and apply it to a black surface using the blit flags? BLEND_MAX? Is there a technique that would also work for a surface with arbitrary color values?
I was thinking of this:

text = font.render("....", True, some_color)
alpha = pygame.Surface(text.get_size(), pgyame.SRCALPHA, 32)
alpha.fill((0, 0, 0, 255))
alpha.blit(text, (0, 0), None, pygame.BLEND_MIN)

This assumes BLEND_MIN applies to alpha as well. If dA = sA + dA - ((sA*dA)/255) then a destination color of (0, 0, 0, 0) will work. Source color is irrelevant. It extras alpha from any image.

--
Lenard Lindstrom
<len-l@xxxxxxxxx>