aboutsummaryrefslogtreecommitdiff
path: root/lib/gdi/picload.cpp
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2008-11-20 01:15:26 +0100
committerghost <andreas.monzner@multimedia-labs.de>2008-11-20 01:15:26 +0100
commit3c31c5e7adaba2190409c39547ae4052ce5d83eb (patch)
tree480d9bcf8dd95889f0fef97b3b92654dc9f1a961 /lib/gdi/picload.cpp
parent7ce0a84a10b827f2a9cd0a123f759e16e1375b70 (diff)
downloadenigma2-3c31c5e7adaba2190409c39547ae4052ce5d83eb.tar.gz
enigma2-3c31c5e7adaba2190409c39547ae4052ce5d83eb.zip
fix alpha channel for 1 or 2 bit pngs
Diffstat (limited to 'lib/gdi/picload.cpp')
-rw-r--r--lib/gdi/picload.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/lib/gdi/picload.cpp b/lib/gdi/picload.cpp
index 0fafeabd..c162f89d 100644
--- a/lib/gdi/picload.cpp
+++ b/lib/gdi/picload.cpp
@@ -288,24 +288,12 @@ static unsigned char *png_load(const char *file, int *ox, int *oy)
png_read_info(png_ptr, info_ptr);
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL);
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_set_palette_to_rgb(png_ptr);
- png_set_background(png_ptr, (png_color_16 *)&my_background, PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
- }
- if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- png_set_gray_to_rgb(png_ptr);
- png_set_background(png_ptr, (png_color_16 *)&my_background, PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
- }
- if (color_type & PNG_COLOR_MASK_ALPHA)
- png_set_strip_alpha(png_ptr);
-
- if (bit_depth < 8)
- png_set_packing(png_ptr);
-
+ if ((color_type == PNG_COLOR_TYPE_PALETTE)||(color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)||(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
+ png_set_expand(png_ptr);
if (bit_depth == 16)
png_set_strip_16(png_ptr);
+ if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ png_set_gray_to_rgb(png_ptr);
int number_passes = png_set_interlace_handling(png_ptr);
png_read_update_info(png_ptr, info_ptr);