Package: metapixel
Version: 1.0.2-7.2
Severity: normal
Tags: patch pending

Dear maintainer,

I've prepared an NMU for metapixel (versioned as 1.0.2-7.3) and
uploaded it to DELAYED/7. Please feel free to tell me if I
should delay it longer.

Regards.
diff -u metapixel-1.0.2/debian/changelog metapixel-1.0.2/debian/changelog
--- metapixel-1.0.2/debian/changelog
+++ metapixel-1.0.2/debian/changelog
@@ -1,3 +1,12 @@
+metapixel (1.0.2-7.3) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix "FTBFS with libpng 1.5" by applying patch from Nobuhiro
+    (Closes: #636004)
+  * Change Build-Depends on libpng-dev from libpng12-dev (Closes: #662431)
+
+ -- Tobias Frost <t...@debian.org>  Wed, 06 Jan 2016 12:21:14 +0100
+
 metapixel (1.0.2-7.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -u metapixel-1.0.2/debian/control metapixel-1.0.2/debian/control
--- metapixel-1.0.2/debian/control
+++ metapixel-1.0.2/debian/control
@@ -2,7 +2,7 @@
 Section: graphics
 Priority: optional
 Maintainer: Chris Vanden Berghe <chris...@debian.org>
-Build-Depends: debhelper (>= 5.0.0), libpng12-dev, libjpeg-dev, xsltproc, 
docbook-xsl, docbook-xml, libgif-dev
+Build-Depends: debhelper (>= 5.0.0), libpng-dev, libjpeg-dev, xsltproc, 
docbook-xsl, docbook-xml, libgif-dev
 Standards-Version: 3.9.1
 
 Package: metapixel
only in patch2:
unchanged:
--- metapixel-1.0.2.orig/rwimg/rwpng.c
+++ metapixel-1.0.2/rwimg/rwpng.c
@@ -57,19 +57,39 @@
     data->end_info = png_create_info_struct(data->png_ptr);
     assert(data->end_info != 0);
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
-    png_init_io(data->png_ptr, data->file);
-
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       png_init_io(data->png_ptr, data->file);
+    png_read_info(data->png_ptr, data->info_ptr);
+#else
+       png_init_io(data->png_ptr, data->file);
     png_read_info(data->png_ptr, data->info_ptr);
+#endif
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       *width = png_get_image_width(data->png_ptr, data->info_ptr);
+       *height = png_get_image_height(data->png_ptr, data->info_ptr);
+       {
+               png_byte value = png_get_bit_depth(data->png_ptr, 
data->info_ptr);
+       assert(value == 8 || value == 16);
+               value = png_get_color_type(data->png_ptr, data->info_ptr);
+       assert(value == PNG_COLOR_TYPE_RGB || value == 
PNG_COLOR_TYPE_RGB_ALPHA);
+       value = png_get_interlace_type(data->png_ptr, data->info_ptr);
+       assert(value == PNG_INTERLACE_NONE);
+       }
+#else
     *width = data->info_ptr->width;
     *height = data->info_ptr->height;
-
     assert(data->info_ptr->bit_depth == 8 || data->info_ptr->bit_depth == 16);
     assert(data->info_ptr->color_type == PNG_COLOR_TYPE_RGB || 
data->info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA);
     assert(data->info_ptr->interlace_type == PNG_INTERLACE_NONE);
+#endif
 
     data->have_read = 0;
 
@@ -81,32 +101,51 @@
 {
     png_data_t *data = (png_data_t*)_data;
     int i;
-    int bps, spp;
+    int bps, spp, width;
     unsigned char *row;
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if(png_get_color_type(data->png_ptr, data->info_ptr) == 
PNG_COLOR_TYPE_RGB)
+#else
     if (data->info_ptr->color_type == PNG_COLOR_TYPE_RGB)
+#endif
        spp = 3;
     else
        spp = 4;
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if(png_get_bit_depth(data->png_ptr, data->info_ptr) == 16)
+#else
     if (data->info_ptr->bit_depth == 16)
+#endif
        bps = 2;
     else
        bps = 1;
 
-    row = (unsigned char*)malloc(data->info_ptr->width * spp * bps);
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       width = png_get_image_width(data->png_ptr, data->info_ptr);
+#else
+    width = data->info_ptr->width:
+#endif
+
+    row = (unsigned char*)malloc(width * spp * bps);
 
     for (i = 0; i < num_lines; ++i)
     {
        int j, channel;
 
        png_read_row(data->png_ptr, (png_bytep)row, 0);
-       for (j = 0; j < data->info_ptr->width; ++j)
+       for (j = 0; j < width; ++j)
            for (channel = 0; channel < 3; ++channel)
-               lines[i * data->info_ptr->width * 3 + j * 3 + channel] = row[j 
* spp * bps + channel * bps];
+               lines[i * width * 3 + j * 3 + channel] = row[j * spp * bps + 
channel * bps];
     }
 
     free(row);
@@ -119,7 +158,11 @@
 {
     png_data_t *data = (png_data_t*)_data;
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
     if (data->have_read)
@@ -148,7 +191,11 @@
     data->info_ptr = png_create_info_struct(data->png_ptr);
     assert(data->info_ptr != 0);
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
     if (pixel_stride == 4)
@@ -156,6 +203,16 @@
 
     png_init_io(data->png_ptr, data->file);
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       png_set_IHDR(data->png_ptr, data->info_ptr,
+               width, height, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
+               PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+
+       /* Maybe does not need following. */
+       png_set_tRNS(data->png_ptr, data->info_ptr, NULL, 0, NULL);
+       png_set_PLTE(data->png_ptr, data->info_ptr, NULL, 0);
+       png_set_invalid(data->png_ptr, data->info_ptr, 0);
+#else
     data->info_ptr->width = width;
     data->info_ptr->height = height;
     data->info_ptr->valid = 0;
@@ -168,6 +225,7 @@
     data->info_ptr->compression_type = PNG_COMPRESSION_TYPE_DEFAULT;
     data->info_ptr->filter_type = PNG_FILTER_TYPE_DEFAULT;
     data->info_ptr->interlace_type = PNG_INTERLACE_NONE;
+#endif
 
     png_write_info(data->png_ptr, data->info_ptr);
 
@@ -182,7 +240,11 @@
     png_data_t *data = (png_data_t*)_data;
     int i;
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
     for (i = 0; i < num_lines; ++i)
@@ -194,7 +256,11 @@
 {
     png_data_t *data = (png_data_t*)_data;
 
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
+       if (setjmp(png_jmpbuf((data->png_ptr))))
+#else
     if (setjmp(data->png_ptr->jmpbuf))
+#endif
        assert(0);
 
     png_write_end(data->png_ptr, data->info_ptr);

Reply via email to