$OpenBSD: patch-src__png_cpp,v 1.1 2011/07/08 20:36:09 naddy Exp $

Fix build with png-1.5.

--- src/_png.cpp.orig	Tue Jul  5 21:43:21 2011
+++ src/_png.cpp	Tue Jul  5 21:47:50 2011
@@ -122,7 +122,7 @@ Py::Object _png_module::write_png(const Py::Tuple& arg
       throw Py::RuntimeError("Could not create info struct");
     }
 
-    if (setjmp(png_ptr->jmpbuf)) {
+    if (setjmp(png_jmpbuf(png_ptr))) {
       throw Py::RuntimeError("Error building image");
     }
 
@@ -211,12 +211,12 @@ _png_module::read_png(const Py::Tuple& args) {
 
   png_read_info(png_ptr, info_ptr);
 
-  png_uint_32 width = info_ptr->width;
-  png_uint_32 height = info_ptr->height;
-  bool do_gray_conversion = (info_ptr->bit_depth < 8 &&
-                             info_ptr->color_type == PNG_COLOR_TYPE_GRAY);
+  png_uint_32 width = png_get_image_width(png_ptr, info_ptr);
+  png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
+  bool do_gray_conversion = (png_get_bit_depth(png_ptr, info_ptr) < 8 &&
+                             png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY);
 
-  int bit_depth = info_ptr->bit_depth;
+  int bit_depth = png_get_bit_depth(png_ptr, info_ptr);
   if (bit_depth == 16) {
     png_set_strip_16(png_ptr);
   } else if (bit_depth < 8) {
@@ -224,19 +224,19 @@ _png_module::read_png(const Py::Tuple& args) {
   }
 
   // convert misc color types to rgb for simplicity
-  if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
-      info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
+  if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY ||
+      png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA) {
     png_set_gray_to_rgb(png_ptr);
-  } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
+  } else if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) {
     png_set_palette_to_rgb(png_ptr);
   }
 
   png_set_interlace_handling(png_ptr);
   png_read_update_info(png_ptr, info_ptr);
 
-  bool rgba = info_ptr->color_type == PNG_COLOR_TYPE_RGBA;
-  if ( (info_ptr->color_type != PNG_COLOR_TYPE_RGB) && !rgba) {
-    std::cerr << "Found color type " << (int)info_ptr->color_type  << std::endl;
+  bool rgba = png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGBA;
+  if ( (png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_RGB) && !rgba) {
+    std::cerr << "Found color type " << (int)png_get_color_type(png_ptr, info_ptr)  << std::endl;
     throw Py::RuntimeError("_image_module::readpng: cannot handle color_type");
   }
 
@@ -288,7 +288,7 @@ _png_module::read_png(const Py::Tuple& args) {
 
   //free the png memory
   png_read_end(png_ptr, info_ptr);
-  png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
+  png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
   fclose(fp);
   for (row = 0; row < height; row++)
     delete [] row_pointers[row];