summaryrefslogtreecommitdiff
path: root/graphics/py-matplotlib/patches/patch-ab
blob: ceac7d65efe12a3a13628205f119fe49b8d6eba0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
$NetBSD: patch-ab,v 1.4 2011/02/06 08:57:07 markd Exp $

Fix build with png 1.5

--- src/_png.cpp.orig	2009-08-01 19:14:01.000000000 +0000
+++ src/_png.cpp
@@ -122,7 +122,7 @@ Py::Object _png_module::write_png(const 
       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");
     }
 
@@ -210,10 +210,10 @@ _png_module::read_png(const Py::Tuple& a
   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)
@@ -221,7 +221,7 @@ _png_module::read_png(const Py::Tuple& a
 
   // If sig bits are set, shift data
   png_color_8p sig_bit;
-  if ((info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) && png_get_sBIT(png_ptr, info_ptr, &sig_bit))
+  if ((png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE) && png_get_sBIT(png_ptr, info_ptr, &sig_bit))
     png_set_shift(png_ptr, sig_bit);
 
   // Convert big endian to little
@@ -229,11 +229,11 @@ _png_module::read_png(const Py::Tuple& a
     png_set_swap(png_ptr);
 
   // Convert palletes to full RGB
-  if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+  if (png_get_color_type(png_ptr, info_ptr) == 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 (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA)
     png_set_gray_to_rgb(png_ptr);
 
   png_set_interlace_handling(png_ptr);
@@ -254,14 +254,14 @@ _png_module::read_png(const Py::Tuple& a
   npy_intp dimensions[3];
   dimensions[0] = height;  //numrows
   dimensions[1] = width;   //numcols
-  if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
+  if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA)
     dimensions[2] = 4;     //RGBA images
-  else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
+  else if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_COLOR)
     dimensions[2] = 3;     //RGB images
   else
     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  = (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_COLOR) ? 3 : 2;
 
   double max_value = (1 << ((bit_depth < 8) ? 8 : bit_depth)) - 1;
   PyArrayObject *A = (PyArrayObject *) PyArray_SimpleNew(num_dims, dimensions, PyArray_FLOAT);
@@ -290,7 +290,7 @@ _png_module::read_png(const Py::Tuple& a
 
   //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];