evas: bug fix in bmp loader
authorJaeun Choi <jaeun12.choi@samsung.com>
Wed, 30 Nov 2016 02:37:26 +0000 (11:37 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 2 Jan 2017 07:23:56 +0000 (16:23 +0900)
when the DIB header is BITMAPINFOHEADER (size 40),
a bitmap file has alpha channel only if the compression method is BI_ALPHABITFIELDS (= 6).
the original code enabled alpha channel when the compression method was BI_RGB (= 0),
which made an opaque bmp image loaded as a transparent one.

@fix

Change-Id: Id175c82294c064d0d87c7f8fa9ccafcda8f84611

src/modules/evas/image_loaders/bmp/evas_image_load_bmp.c

index 49fb4e8..f798333 100644 (file)
@@ -205,7 +205,7 @@ _evas_image_load_file_header(void *map, size_t fsize, size_t *position, int *ima
            if (!read_int(map, fsize, position, &tmp2)) return EINA_FALSE;
            //important_colors = tmp2; // number of important colors - 0 if all
            if (*image_size == 0) *image_size = fsize - header->offset;
-           if ((header->comp == 0) && (header->bit_count == 32)) header->hasa = 1; // GIMP seems to store it this way
+           if ((header->comp == 6) && (header->bit_count == 32)) header->hasa = 1;
            break;
         }
       case 108: // Windows 95/NT4 + (v4)