info_ptr in libpng is opaque

Greetings!

First, my personal thanks to you good folks who make
a wonderful tool like matplotlib available.

I am currently trying to build matplotlib-1.0.1 against
libpng1.5.1, and _png.cpp failed to compile. Apparently,
libpng's info_ptr is now opaque, so the code required
multiple changes of this nature:

-- _png.cpp.orig 2011-02-12 16:42:42.000000000 -0500

···

***************
*** 350,362 ****
      png_set_sig_bytes(png_ptr, 8);
      png_read_info(png_ptr, info_ptr);

! /*png_uint_32 width = info_ptr->width;*/
! /*png_uint_32 height = info_ptr->height;*/
! png_uint_32 width = png_get_image_width( png_ptr, info_ptr );
! png_uint_32 height = png_get_image_height( png_ptr, info_ptr );

! /*int bit_depth = info_ptr->bit_depth;*/
! int bit_depth = png_get_bit_depth( png_ptr, info_ptr );

      // Unpack 1, 2, and 4-bit images
      if (bit_depth < 8)
--- 350,359 ----
      png_set_sig_bytes(png_ptr, 8);
      png_read_info(png_ptr, info_ptr);

! png_uint_32 width = info_ptr->width;
! png_uint_32 height = info_ptr->height;

! int bit_depth = info_ptr->bit_depth;

      // Unpack 1, 2, and 4-bit images
      if (bit_depth < 8)
***************

Sorry to be sending problems :-).
I suspect you have probably noticed this
already, but just in case I figured I'd send
a "head's up". Thanks!

Sincerely,
Mike Albert

Greetings!

First, my personal thanks to you good folks who make
a wonderful tool like matplotlib available.

I am currently trying to build matplotlib-1.0.1 against
libpng1.5.1, and _png.cpp failed to compile. Apparently,
libpng's info_ptr is now opaque, so the code required
multiple changes of this nature:

Mike,

A quick check indicates that the png_get* functions are available way back in libpng 1.2.x, so I suspect we can support everything we need to with a single modern version.

Does anyone know of a reason we need to support libpng prior to 1.2.x?

Would you attach your complete diff, please?

Thanks.

Eric

···

On 02/12/2011 12:11 PM, Michael Albert wrote:

-- _png.cpp.orig 2011-02-12 16:42:42.000000000 -0500
***************
*** 350,362 ****
       png_set_sig_bytes(png_ptr, 8);
       png_read_info(png_ptr, info_ptr);

! /*png_uint_32 width = info_ptr->width;*/
! /*png_uint_32 height = info_ptr->height;*/
! png_uint_32 width = png_get_image_width( png_ptr, info_ptr );
! png_uint_32 height = png_get_image_height( png_ptr, info_ptr );

! /*int bit_depth = info_ptr->bit_depth;*/
! int bit_depth = png_get_bit_depth( png_ptr, info_ptr );

       // Unpack 1, 2, and 4-bit images
       if (bit_depth< 8)
--- 350,359 ----
       png_set_sig_bytes(png_ptr, 8);
       png_read_info(png_ptr, info_ptr);

! png_uint_32 width = info_ptr->width;
! png_uint_32 height = info_ptr->height;

! int bit_depth = info_ptr->bit_depth;

       // Unpack 1, 2, and 4-bit images
       if (bit_depth< 8)
***************

Sorry to be sending problems :-).
I suspect you have probably noticed this
already, but just in case I figured I'd send
a "head's up". Thanks!

Sincerely,
  Mike Albert

------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
matplotlib-devel List Signup and Options