summaryrefslogtreecommitdiffstats
path: root/graphics/exact-image/exact-image-libpng15.patch
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/exact-image/exact-image-libpng15.patch')
-rw-r--r--graphics/exact-image/exact-image-libpng15.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/graphics/exact-image/exact-image-libpng15.patch b/graphics/exact-image/exact-image-libpng15.patch
new file mode 100644
index 0000000000..ba9df19e81
--- /dev/null
+++ b/graphics/exact-image/exact-image-libpng15.patch
@@ -0,0 +1,109 @@
+Description: Fix FTBFS with libpng 1.5
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Approved: Ralf Treinen <treinen@debian.org>
+Bug-Debian: #635745
+
+--- exactimage-0.8.5.orig/codecs/png.cc
++++ exactimage-0.8.5/codecs/png.cc
+@@ -17,6 +17,7 @@
+
+ #include <stdlib.h>
+ #include <png.h>
++#include <zlib.h>
+
+ #include <iostream>
+
+@@ -58,7 +59,7 @@ int PNGCodec::readImage (std::istream* s
+ png_structp png_ptr;
+ png_infop info_ptr;
+ png_uint_32 width, height;
+- int bit_depth, color_type, interlace_type;
++ int bit_depth, color_type, interlace_type, num_trans;
+
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
+ NULL /*user_error_ptr*/,
+@@ -71,7 +72,7 @@ int PNGCodec::readImage (std::istream* s
+ /* Allocate/initialize the memory for image information. REQUIRED. */
+ info_ptr = png_create_info_struct(png_ptr);
+ if (info_ptr == NULL) {
+- png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
++ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return 0;
+ }
+
+@@ -82,7 +83,7 @@ int PNGCodec::readImage (std::istream* s
+
+ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* Free all of the memory associated with the png_ptr and info_ptr */
+- png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
++ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ /* If we get here, we had a problem reading the file */
+ return 0;
+ }
+@@ -99,13 +100,13 @@ int PNGCodec::readImage (std::istream* s
+ png_read_info (png_ptr, info_ptr);
+
+ png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
+- &interlace_type, int_p_NULL, int_p_NULL);
++ &interlace_type, NULL, NULL);
+
+ image.w = width;
+ image.h = height;
+ image.bps = bit_depth;
+- image.spp = info_ptr->channels;
+-
++ image.spp = png_get_channels(png_ptr, info_ptr);
++
+ png_uint_32 res_x, res_y;
+ res_x = png_get_x_pixels_per_meter(png_ptr, info_ptr);
+ res_y = png_get_y_pixels_per_meter(png_ptr, info_ptr);
+@@ -119,11 +120,13 @@ int PNGCodec::readImage (std::istream* s
+ * (not useful if you are using png_set_packing). */
+ // png_set_packswap(png_ptr);
+
++ png_get_tRNS(png_ptr, info_ptr, NULL, &num_trans, NULL);
++
+ /* Expand paletted colors into true RGB triplets */
+ if (color_type == PNG_COLOR_TYPE_PALETTE) {
+ png_set_palette_to_rgb(png_ptr);
+ image.bps = 8;
+- if (info_ptr->num_trans)
++ if (num_trans)
+ image.spp = 4;
+ else
+ image.spp = 3;
+@@ -196,11 +199,11 @@ int PNGCodec::readImage (std::istream* s
+ for (int pass = 0; pass < number_passes; ++pass)
+ for (unsigned int y = 0; y < height; ++y) {
+ row_pointers[0] = image.getRawData() + y * stride;
+- png_read_rows(png_ptr, row_pointers, png_bytepp_NULL, 1);
++ png_read_rows(png_ptr, row_pointers, NULL, 1);
+ }
+
+ /* clean up after the read, and free any memory allocated - REQUIRED */
+- png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
++ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+
+ /* that's it */
+ return true;
+@@ -224,7 +227,7 @@ bool PNGCodec::writeImage (std::ostream*
+ /* Allocate/initialize the memory for image information. REQUIRED. */
+ info_ptr = png_create_info_struct(png_ptr);
+ if (info_ptr == NULL) {
+- png_destroy_write_struct(&png_ptr, png_infopp_NULL);
++ png_destroy_write_struct(&png_ptr, NULL);
+ return false;
+ }
+
+@@ -244,8 +247,10 @@ bool PNGCodec::writeImage (std::ostream*
+ else if (quality > Z_BEST_COMPRESSION) quality = Z_BEST_COMPRESSION;
+ png_set_compression_level(png_ptr, quality);
+
++ /* Need?
+ png_info_init (info_ptr);
+-
++ */
++
+ /* Set up our STL stream output control */
+ png_set_write_fn (png_ptr, stream, &stdstream_write_data, &stdstream_flush_data);
+