From 83180b25e90721e717bf37c5332c22713508786e Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Sun, 20 Feb 2011 19:18:19 -0500
Subject: [PATCH] png: add support for libpng 1.5.x

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 .../idirectfbimageprovider_png.c                   |   56 ++++++++++++-------
 1 files changed, 35 insertions(+), 21 deletions(-)

diff --git a/interfaces/IDirectFBImageProvider/idirectfbimageprovider_png.c b/interfaces/IDirectFBImageProvider/idirectfbimageprovider_png.c
index 6d65ea3..7d82c5c 100644
--- a/interfaces/IDirectFBImageProvider/idirectfbimageprovider_png.c
+++ b/interfaces/IDirectFBImageProvider/idirectfbimageprovider_png.c
@@ -207,7 +207,7 @@ Construct( IDirectFBImageProvider *thiz,
      if (!data->png_ptr)
           goto error;
 
-     if (setjmp( data->png_ptr->jmpbuf )) {
+     if (setjmp( png_jmpbuf( data->png_ptr ))) {
           D_ERROR( "ImageProvider/PNG: Error reading header!\n" );
           goto error;
      }
@@ -292,7 +292,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
           rect = dst_data->area.wanted;
      }
 
-     if (setjmp( data->png_ptr->jmpbuf )) {
+     if (setjmp( png_jmpbuf( data->png_ptr ))) {
           D_ERROR( "ImageProvider/PNG: Error during decoding!\n" );
 
           if (data->stage < STAGE_IMAGE)
@@ -327,6 +327,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
      }
      else {
           CoreSurfaceBufferLock lock;
+          png_byte bit_depth = png_get_bit_depth( data->png_ptr, data->info_ptr );
 
           ret = dfb_surface_lock_buffer( dst_surface, CSBR_BACK, CSAID_CPU, CSAF_WRITE, &lock );
           if (ret)
@@ -334,7 +335,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
 
           switch (data->color_type) {
                case PNG_COLOR_TYPE_PALETTE:
-                    if (dst_surface->config.format == DSPF_LUT8 && data->info_ptr->bit_depth == 8) {
+                    if (dst_surface->config.format == DSPF_LUT8 && bit_depth == 8) {
                          /*
                           * Special indexed PNG to LUT8 loading.
                           */
@@ -377,7 +378,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
                     }
                     else {
                          if (data->color_type == PNG_COLOR_TYPE_GRAY) {
-                              int num = 1 << data->info_ptr->bit_depth;
+                              int num = 1 << bit_depth;
 
                               for (x=0; x<num; x++) {
                                    int value = x * 255 / (num - 1);
@@ -386,7 +387,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
                               }
                          }
 
-                         switch (data->info_ptr->bit_depth) {
+                         switch (bit_depth) {
                               case 8:
                                    for (y=0; y<data->height; y++) {
                                         u8  *S = data->image + data->pitch * y;
@@ -441,7 +442,7 @@ IDirectFBImageProvider_PNG_RenderTo( IDirectFBImageProvider *thiz,
 
                               default:
                                    D_ERROR( "ImageProvider/PNG: Unsupported indexed bit depth %d!\n",
-                                            data->info_ptr->bit_depth );
+                                            bit_depth );
                          }
 
                          dfb_scale_linear_32( image_argb, data->width, data->height,
@@ -594,16 +595,26 @@ png_info_callback( png_structp png_read_ptr,
                    NULL, NULL, NULL );
 
      if (png_get_valid( data->png_ptr, data->info_ptr, PNG_INFO_tRNS )) {
+          png_bytep     trans;
+          png_color_16p trans_color;
+          int           num_trans;
+
+          png_get_tRNS( data->png_ptr, data->info_ptr, &trans, &num_trans, &trans_color );
+
           data->color_keyed = true;
 
           /* generate color key based on palette... */
           if (data->color_type == PNG_COLOR_TYPE_PALETTE) {
                u32        key;
-               png_colorp palette    = data->info_ptr->palette;
-               png_bytep  trans      = data->info_ptr->trans_alpha;
-               int        num_colors = MIN( MAXCOLORMAPSIZE,
-                                            data->info_ptr->num_palette );
-               u8         cmap[3][num_colors];
+               png_colorp palette;
+               int        num_colors;
+               u8        *cmap[3];
+
+               png_get_PLTE( data->png_ptr, data->info_ptr, &palette, &num_colors );
+               num_colors = MIN( MAXCOLORMAPSIZE, num_colors );
+               cmap[0] = alloca (num_colors);
+               cmap[1] = alloca (num_colors);
+               cmap[2] = alloca (num_colors);
 
                for (i=0; i<num_colors; i++) {
                     cmap[0][i] = palette[i].red;
@@ -613,7 +624,7 @@ png_info_callback( png_structp png_read_ptr,
 
                key = FindColorKey( num_colors, &cmap[0][0] );
 
-               for (i=0; i<data->info_ptr->num_trans; i++) {
+               for (i=0; i<num_trans; i++) {
                     if (!trans[i]) {
                          palette[i].red   = (key & 0xff0000) >> 16;
                          palette[i].green = (key & 0x00ff00) >>  8;
@@ -625,20 +636,23 @@ png_info_callback( png_structp png_read_ptr,
           }
           else {
                /* ...or based on trans rgb value */
-               png_color_16p trans = &data->info_ptr->trans_color;
-
-               data->color_key = (((trans->red & 0xff00) << 8) |
-                                  ((trans->green & 0xff00)) |
-                                  ((trans->blue & 0xff00) >> 8));
+               data->color_key = (((trans_color->red & 0xff00) << 8) |
+                                  ((trans_color->green & 0xff00)) |
+                                  ((trans_color->blue & 0xff00) >> 8));
           }
      }
 
      switch (data->color_type) {
           case PNG_COLOR_TYPE_PALETTE: {
-               png_colorp palette    = data->info_ptr->palette;
-               png_bytep  trans      = data->info_ptr->trans_alpha;
-               int        num_trans  = data->info_ptr->num_trans;
-               int        num_colors = MIN( MAXCOLORMAPSIZE, data->info_ptr->num_palette );
+               png_colorp    palette;
+               png_bytep     trans;
+               png_color_16p trans_color;
+               int           num_trans;
+               int           num_colors;
+
+               png_get_PLTE( data->png_ptr, data->info_ptr, &palette, &num_colors );
+               num_colors = MIN( MAXCOLORMAPSIZE, num_colors );
+               png_get_tRNS( data->png_ptr, data->info_ptr, &trans, &num_trans, &trans_color );
 
                for (i=0; i<num_colors; i++) {
                     data->colors[i].a = (i < num_trans) ? trans[i] : 0xff;
-- 
1.7.4.1

From 7a2a36fada3ecdd7f48fcfd782a552598477a8f5 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Sun, 20 Feb 2011 19:38:50 -0500
Subject: [PATCH] tools: add support for libpng 1.5.x

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 tools/directfb-csource.c |   20 +++++++++++++-------
 tools/mkdfiff.c          |    2 +-
 tools/mkdgifft.cpp       |    2 +-
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/tools/directfb-csource.c b/tools/directfb-csource.c
index 8f2cbf0..487ea3c 100644
--- a/tools/directfb-csource.c
+++ b/tools/directfb-csource.c
@@ -338,7 +338,7 @@ static DFBResult load_image (const char            *filename,
      if (!png_ptr)
           goto cleanup;
 
-     if (setjmp (png_ptr->jmpbuf)) {
+     if (setjmp (png_jmpbuf (png_ptr))) {
           if (desc->preallocated[0].data) {
                free (desc->preallocated[0].data);
                desc->preallocated[0].data = NULL;
@@ -405,17 +405,22 @@ static DFBResult load_image (const char            *filename,
        }
 
      switch (src_format) {
-          case DSPF_LUT8:
-               if (info_ptr->num_palette) {
+          case DSPF_LUT8: {
+               png_colorp png_palette;
+               int        num_palette;
+
+               png_get_PLTE( png_ptr, info_ptr, &png_palette, &num_palette );
+
+               if (num_palette) {
                     png_byte *alpha;
                     int       i, num;
 
-                    *palette_size = MIN (info_ptr->num_palette, 256);
+                    *palette_size = MIN (num_palette, 256);
                     for (i = 0; i < *palette_size; i++) {
                          palette[i].a = 0xFF;
-                         palette[i].r = info_ptr->palette[i].red;
-                         palette[i].g = info_ptr->palette[i].green;
-                         palette[i].b = info_ptr->palette[i].blue;
+                         palette[i].r = png_palette[i].red;
+                         palette[i].g = png_palette[i].green;
+                         palette[i].b = png_palette[i].blue;
                     }
                     if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
                          png_get_tRNS (png_ptr, info_ptr, &alpha, &num, NULL);
@@ -424,6 +429,7 @@ static DFBResult load_image (const char            *filename,
                     }
                }
                break;
+          }
           case DSPF_RGB32:
                 png_set_filler (png_ptr, 0xFF,
 #ifdef WORDS_BIGENDIAN
diff --git a/tools/mkdfiff.c b/tools/mkdfiff.c
index 68a3b4f..edb58a7 100644
--- a/tools/mkdfiff.c
+++ b/tools/mkdfiff.c
@@ -97,7 +97,7 @@ load_image (const char            *filename,
      if (!png_ptr)
           goto cleanup;
 
-     if (setjmp (png_ptr->jmpbuf)) {
+     if (setjmp (png_jmpbuf (png_ptr))) {
           if (desc->preallocated[0].data) {
                free (desc->preallocated[0].data);
                desc->preallocated[0].data = NULL;
diff --git a/tools/mkdgifft.cpp b/tools/mkdgifft.cpp
index 96e4220..d4b6bf4 100644
--- a/tools/mkdgifft.cpp
+++ b/tools/mkdgifft.cpp
@@ -595,7 +595,7 @@ load_image (const char            *filename,
      if (!png_ptr)
           goto cleanup;
 
-     if (setjmp (png_ptr->jmpbuf)) {
+     if (setjmp (png_jmpbuf (png_ptr))) {
           if (desc->preallocated[0].data) {
                free (desc->preallocated[0].data);
                desc->preallocated[0].data = NULL;
-- 
1.7.4.1

