On 05/25/2011 05:36 PM, Eric Firing wrote:
> On 05/25/2011 10:53 AM, Dieter Schön wrote:
>    
>> hi list,
>>
>> first, thanks for providing matplotlib, i am using it in several projects.
>>
>> i had problems with several png files and decided to upgrade libpng.
>> this broke matplotlib.
>> as you can see in the documentation of libpng15, it is no longer possible
>> to directly access png_infop.
>>
>> i have created the following patch:
>>      
> Dieter,
>
> Thank you, but the modification has already been made to the master
> branch.  I did not consider this as a bug fix, so I applied it only to
> master, not to the maintenance branch.
>    
It seems to have been applied to the maintenance branch...  Maybe 
someone backported it?

https://github.com/matplotlib/matplotlib/blob/v1.0.x/src/_png.cpp

Mike

> Eric
>
>    
>> --- matplotlib-1.0.1/src/_png.cpp    2010-10-12 16:14:42.000000000 +0000
>> +++ matplotlib-1.0.1X/src/_png.cpp   2011-05-25 19:23:36.261752651 +0000
>> @@ -350,18 +350,21 @@
>>        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)
>>            png_set_packing(png_ptr);
>>
>> +    // this is needed several times, so safe it in a variable
>> +    png_byte color_type = png_get_color_type(png_ptr, info_ptr);
>> +
>>        // If sig bits are set, shift data
>>        png_color_8p sig_bit;
>> -    if ((info_ptr->color_type != PNG_COLOR_TYPE_PALETTE)&&
>> +    if ((color_type != PNG_COLOR_TYPE_PALETTE)&&
>>            png_get_sBIT(png_ptr, info_ptr,&sig_bit))
>>        {
>>            png_set_shift(png_ptr, sig_bit);
>> @@ -374,13 +377,13 @@
>>        }
>>
>>        // Convert palletes to full RGB
>> -    if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
>> +    if (color_type == PNG_COLOR_TYPE_PALETTE)
>>        {
>>            png_set_palette_to_rgb(png_ptr);
>>        }
>>
>>        // If there's an alpha channel convert gray to RGB
>> -    if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
>> +    if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
>>        {
>>            png_set_gray_to_rgb(png_ptr);
>>        }
>> @@ -408,11 +411,11 @@
>>        npy_intp dimensions[3];
>>        dimensions[0] = height;  //numrows
>>        dimensions[1] = width;   //numcols
>> -    if (info_ptr->color_type&   PNG_COLOR_MASK_ALPHA)
>> +    if (color_type&   PNG_COLOR_MASK_ALPHA)
>>        {
>>            dimensions[2] = 4;     //RGBA images
>>        }
>> -    else if (info_ptr->color_type&   PNG_COLOR_MASK_COLOR)
>> +    else if (color_type&   PNG_COLOR_MASK_COLOR)
>>        {
>>            dimensions[2] = 3;     //RGB images
>>        }
>> @@ -421,7 +424,7 @@
>>            dimensions[2] = 1;     //Greyscale images
>>        }
>>        //For gray, return an x by y array, not an x by y by 1
>> -    int num_dims  = (info_ptr->color_type&   PNG_COLOR_MASK_COLOR) ? 3 : 2;
>> +    int num_dims  = (color_type&   PNG_COLOR_MASK_COLOR) ? 3 : 2;
>>
>>        double max_value = (1<<   ((bit_depth<   8) ? 8 : bit_depth)) - 1;
>>        PyArrayObject *A = (PyArrayObject *) PyArray_SimpleNew(
>>
>>
>> kind regards,
>> dieter
>>
>> ------------------------------------------------------------------------------
>> vRanger cuts backup time in half-while increasing security.
>> With the market-leading solution for virtual backup and recovery,
>> you get blazing-fast, flexible, and affordable data protection.
>> Download your free trial now.
>> http://p.sf.net/sfu/quest-d2dcopy1
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Matplotlib-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>      
>
>
> ------------------------------------------------------------------------------
> vRanger cuts backup time in half-while increasing security.
> With the market-leading solution for virtual backup and recovery,
> you get blazing-fast, flexible, and affordable data protection.
> Download your free trial now.
> http://p.sf.net/sfu/quest-d2dcopy1
> _______________________________________________
> Matplotlib-devel mailing list
> Matplotlib-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>    


-- 
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA


------------------------------------------------------------------------------
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery, 
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now. 
http://p.sf.net/sfu/quest-d2dcopy1
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to