Author: Konstantin Dmitriev <[email protected]>
Date:   Sun Oct 30 21:33:52 2011 +0700

Fix for compatibility with libpng 1.5. Patch #3427945 by SpeckFleck.

---

 synfig-core/src/modules/mod_png/mptr_png.cpp |   19 ++++++++++++++-----
 synfig-core/src/modules/mod_png/trgt_png.cpp |    4 ++--
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/synfig-core/src/modules/mod_png/mptr_png.cpp 
b/synfig-core/src/modules/mod_png/mptr_png.cpp
index a436d50..d5dd3be 100644
--- a/synfig-core/src/modules/mod_png/mptr_png.cpp
+++ b/synfig-core/src/modules/mod_png/mptr_png.cpp
@@ -304,12 +304,21 @@ png_mptr::png_mptr(const char *file_name)
                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 palette;
+                               int num_palette;
+                               png_get_PLTE(png_ptr, info_ptr, &palette, 
&num_palette);
+                               float r=gamma().r_U8_to_F32((unsigned 
char)palette[row_pointers[y][x]].red);
+                               float g=gamma().g_U8_to_F32((unsigned 
char)palette[row_pointers[y][x]].green);
+                               float b=gamma().b_U8_to_F32((unsigned 
char)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_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,
diff --git a/synfig-core/src/modules/mod_png/trgt_png.cpp 
b/synfig-core/src/modules/mod_png/trgt_png.cpp
index c4d4df4..853a651 100644
--- a/synfig-core/src/modules/mod_png/trgt_png.cpp
+++ b/synfig-core/src/modules/mod_png/trgt_png.cpp
@@ -61,7 +61,7 @@ SYNFIG_TARGET_SET_CVS_ID(png_trgt,"$Id$");
 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 @@ png_trgt::png_out_error(png_struct *png_data,const char *msg)
 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;
 }


------------------------------------------------------------------------------
Get your Android app more play: Bring it to the BlackBerry PlayBook 
in minutes. BlackBerry App World&#153; now supports Android&#153; Apps 
for the BlackBerry&reg; PlayBook&#153;. Discover just how easy and simple 
it is! http://p.sf.net/sfu/android-dev2dev
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to