mirror of
https://abf.rosa.ru/djam/synfig.git
synced 2025-02-24 01:22:56 +00:00
49 lines
2.1 KiB
Diff
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;
|
|
}
|