synfig/synfig-0.63.00-libpng1.5.patch
2012-02-02 01:41:08 +04:00

49 lines
2.1 KiB
Diff

--- src/modules/mod_png/mptr_png.cpp.libpng 2011-07-15 18:44:58.000000000 +0200
+++ src/modules/mod_png/mptr_png.cpp 2011-09-17 14:51:33.000000000 +0200
@@ -304,12 +304,21 @@
for(y=0;y<height;y++)
for(x=0;x<width;x++)
{
- float r=gamma().r_U8_to_F32((unsigned char)png_ptr->palette[row_pointers[y][x]].red);
- float g=gamma().g_U8_to_F32((unsigned char)png_ptr->palette[row_pointers[y][x]].green);
- float b=gamma().b_U8_to_F32((unsigned char)png_ptr->palette[row_pointers[y][x]].blue);
+ png_colorp png_palette;
+ int num_palette;
+ png_get_PLTE( png_ptr, info_ptr, &png_palette, &num_palette );
+
+ float r=gamma().r_U8_to_F32((unsigned char)png_palette[row_pointers[y][x]].red);
+ float g=gamma().g_U8_to_F32((unsigned char)png_palette[row_pointers[y][x]].green);
+ float b=gamma().b_U8_to_F32((unsigned char)png_palette[row_pointers[y][x]].blue);
float a=1.0;
- if(info_ptr->valid & PNG_INFO_tRNS)
- a = (float)(unsigned char)png_ptr->trans[row_pointers[y][x]]*(1.0/255.0);
+ if(png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS) & PNG_INFO_tRNS) {
+ png_bytep trans_alpha;
+ int num_trans;
+ png_color_16p trans_color;
+ png_get_tRNS(png_ptr,info_ptr,&trans_alpha, &num_trans, &trans_color);
+ a = (float)(unsigned char)trans_alpha[row_pointers[y][x]]*(1.0/255.0);
+ }
surface_buffer[y][x]=Color(
r,
g,
--- src/modules/mod_png/trgt_png.cpp.libpng 2011-07-15 18:44:58.000000000 +0200
+++ src/modules/mod_png/trgt_png.cpp 2011-09-17 14:50:51.000000000 +0200
@@ -61,7 +61,7 @@
void
png_trgt::png_out_error(png_struct *png_data,const char *msg)
{
- png_trgt *me=(png_trgt*)png_data->error_ptr;
+ png_trgt *me=(png_trgt*)png_get_error_ptr(png_data);
synfig::error(strprintf("png_trgt: error: %s",msg));
me->ready=false;
}
@@ -69,7 +69,7 @@
void
png_trgt::png_out_warning(png_struct *png_data,const char *msg)
{
- png_trgt *me=(png_trgt*)png_data->error_ptr;
+ png_trgt *me=(png_trgt*)png_get_error_ptr(png_data);
synfig::warning(strprintf("png_trgt: warning: %s",msg));
me->ready=false;
}