From 822b394b677054d9d2314bb4a0013e600fd9266a Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Fri, 19 Aug 2016 20:49:47 +0100 Subject: allow 32bpp icon to use their alpha channel for opacity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit modified patch from François Revol --- src/libnsbmp.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/libnsbmp.c') diff --git a/src/libnsbmp.c b/src/libnsbmp.c index 7318347..0e241a1 100644 --- a/src/libnsbmp.c +++ b/src/libnsbmp.c @@ -555,6 +555,8 @@ static bmp_result bmp_decode_rgb32(bmp_image *bmp, uint8_t **start, int bytes) } if (bmp->opaque) { scanline[x] |= (0xff << 24); + } else { + scanline[x] |= data[3] << 24; } data += 4; scanline[x] = read_uint32((uint8_t *)&scanline[x],0); @@ -816,6 +818,11 @@ static bmp_result bmp_decode_mask(bmp_image *bmp, uint8_t *data, int bytes) uint32_t x, y, swidth; uint32_t cur_byte = 0; + if (bmp->bpp == 32) { + /* should already have proper alpha */ + return BMP_OK; + } + swidth = bmp->bitmap_callbacks.bitmap_get_bpp(bmp->bitmap) * bmp->width; top = bmp->bitmap_callbacks.bitmap_get_buffer(bmp->bitmap); if (!top) -- cgit v1.2.3