summaryrefslogtreecommitdiff
blob: a1b48ac36e2c8c46c127b6e762d9d4608069bbaa (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
--- a/src/png.c
+++ b/src/png.c
@@ -1,5 +1,6 @@
 /* $Id: png.c,v 1.1.1.1 2003/01/30 12:22:26 hito Exp $ */
 #include <stdio.h>
+#include <string.h>
 #include <png.h>
 #include "stimg.h"
 
@@ -102,8 +103,8 @@
 		0x00,
 		NULL);
 
-   alpha = (info_ptr->channels == 4 || info_ptr->channels == 2) ? 1: 0;
-   image = stimg_new(info_ptr->width, info_ptr->height, alpha);
+   alpha = (png_get_channels(png_ptr, info_ptr) == 4 || png_get_channels(png_ptr, info_ptr) == 2) ? 1: 0;
+   image = stimg_new(png_get_image_width(png_ptr, info_ptr), png_get_image_height(png_ptr, info_ptr), alpha);
 
    if (image == NULL) {
       png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
@@ -112,18 +113,18 @@
    }     
 
    row_pointers = png_get_rows(png_ptr, info_ptr);
-   row_size = info_ptr->width * (3 + alpha);
+   row_size = png_get_image_width(png_ptr, info_ptr) * (3 + alpha);
    data = stimg_get_data(image);
-   if (info_ptr->channels > 2) {
-     for (i = 0; i < info_ptr->height; i++) {
+   if (png_get_channels(png_ptr, info_ptr) > 2) {
+     for (i = 0; i < png_get_image_height(png_ptr, info_ptr); i++) {
        memcpy(data + row_size * i, row_pointers[i], row_size);
      }
    } else {
      unsigned char *buf = data;
      int x;
-     for (i = 0; i < info_ptr->height; i++) {
+     for (i = 0; i < png_get_image_height(png_ptr, info_ptr); i++) {
        x = 0;
-       for (j = 0; j < info_ptr->width; j++) {
+       for (j = 0; j < png_get_image_width(png_ptr, info_ptr); j++) {
 	 buf[0] = buf[1] = buf[2] = row_pointers[i][x];
 	 if (alpha) {
 	   buf[3] = row_pointers[i][++x];