31
31
/* Decoder structs */
34
void img_my_png_warning(png_structp, png_const_charp);
35
void img_my_png_error(png_structp, png_const_charp);
36
void png_info_callback(png_structp, png_infop);
37
void a2char_from_unsigned_short(unsigned char *, unsigned short *, int);
38
void unsigned_short_from_2char(unsigned short *, unsigned char *, int);
39
void png_row_callback(png_structp, png_bytep, png_uint_32, int);
40
void png_end_callback(png_structp, png_infop);
43
33
/* Warning for from-web PNG images */
44
void img_my_png_warning(png_structp a, png_const_charp b)
34
static void img_my_png_warning(png_structp a, png_const_charp b)
48
38
/* Error for from-web PNG images. */
49
void img_my_png_error(png_structp png_ptr, png_const_charp error_string)
39
static void img_my_png_error(png_structp png_ptr, png_const_charp error_string)
41
#if (PNG_LIBPNG_VER < 10500)
51
42
longjmp(png_ptr->jmpbuf,1);
44
png_longjmp(png_ptr,1);
54
void png_info_callback(png_structp png_ptr, png_infop info_ptr)
48
static void png_info_callback(png_structp png_ptr, png_infop info_ptr)
56
50
int bit_depth, color_type, intent;
115
109
img_my_png_error(png_ptr, "bad image size");
118
113
/* Converts unsigned shorts to doublechars (in big endian) */
119
void a2char_from_unsigned_short(unsigned char *chr, unsigned short *shrt, int len)
114
static void a2char_from_unsigned_short(unsigned char *chr, unsigned short *shrt, int len)
121
116
unsigned short s;
130
125
/* Converts doublechars (in big endian) to unsigned shorts */
131
void unsigned_short_from_2char(unsigned short *shrt, unsigned char *chr, int len)
126
static void unsigned_short_from_2char(unsigned short *shrt, unsigned char *chr, int len)
133
128
unsigned short s;
141
void png_row_callback(png_structp png_ptr, png_bytep new_row, png_uint_32
137
static void png_row_callback(png_structp png_ptr, png_bytep new_row, png_uint_32
142
138
row_num, int pass)
144
140
struct cached_image *cimg;
205
201
if (!info_ptr) internal ("png_create_info_struct failed\n");
206
202
#endif /* #ifdef DEBUG */
207
if (setjmp(png_ptr->jmpbuf)){
203
if (setjmp(png_jmpbuf(png_ptr))){
209
205
png_destroy_read_struct(&png_ptr, &info_ptr,
210
206
(png_infopp)NULL);
214
210
png_set_progressive_read_fn(png_ptr, NULL,
215
211
png_info_callback, png_row_callback,
216
212
png_end_callback);
217
if (setjmp(png_ptr->jmpbuf)) goto error;
213
if (setjmp(png_jmpbuf(png_ptr))) goto error;
218
214
decoder=mem_alloc(sizeof(*decoder));
219
215
decoder->png_ptr=png_ptr;
220
216
decoder->info_ptr=info_ptr;