19 #ifdef PNG_READ_SUPPORTED
27 #ifdef PNG_USER_MEM_SUPPORTED
28 return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
37 png_error_ptr error_fn, png_error_ptr warn_fn,
png_voidp mem_ptr,
38 png_malloc_ptr malloc_fn, png_free_ptr free_fn),
PNG_ALLOCATED)
42 #ifdef PNG_SETJMP_SUPPORTED
46 volatile int png_cleanup_needed = 0;
48 #ifdef PNG_SETJMP_SUPPORTED
49 #ifdef USE_FAR_KEYWORD
54 png_debug(1,
"in png_create_read_struct");
56 #ifdef PNG_USER_MEM_SUPPORTED
66 #ifdef PNG_USER_LIMITS_SUPPORTED
70 # ifdef PNG_USER_CHUNK_CACHE_MAX
75 # ifdef PNG_SET_USER_CHUNK_MALLOC_MAX
81 #ifdef PNG_SETJMP_SUPPORTED
86 #ifdef USE_FAR_KEYWORD
87 if (setjmp(tmp_jmpbuf))
92 #ifdef USE_FAR_KEYWORD
97 #ifdef PNG_USER_MEM_SUPPORTED
105 png_cleanup_needed = 1;
107 if (!png_cleanup_needed)
111 png_ptr->zbuf = (
png_bytep)png_malloc_warn(png_ptr, png_ptr->zbuf_size);
113 if (png_ptr->zbuf ==
NULL)
114 png_cleanup_needed = 1;
117 png_ptr->zstream.zalloc = png_zalloc;
119 png_ptr->zstream.opaque = (
voidpf)png_ptr;
121 if (!png_cleanup_needed)
130 png_cleanup_needed = 1;
135 png_cleanup_needed = 1;
140 png_cleanup_needed = 1;
143 default:
png_warning(png_ptr,
"Unknown zlib error");
144 png_cleanup_needed = 1;
148 if (png_cleanup_needed)
152 png_ptr->zbuf =
NULL;
153 #ifdef PNG_USER_MEM_SUPPORTED
155 (png_free_ptr)free_fn, (
png_voidp)mem_ptr);
162 png_ptr->zstream.next_out = png_ptr->zbuf;
163 png_ptr->zstream.avail_out = (
uInt)png_ptr->zbuf_size;
172 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
186 if (png_ptr ==
NULL || info_ptr ==
NULL)
210 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
225 png_error(png_ptr,
"Missing IHDR before IDAT");
229 png_error(png_ptr,
"Missing PLTE before IDAT");
241 png_error(png_ptr,
"Missing IHDR before IDAT");
245 png_error(png_ptr,
"Missing PLTE before IDAT");
247 png_ptr->idat_size =
length;
252 #ifdef PNG_READ_bKGD_SUPPORTED
257 #ifdef PNG_READ_cHRM_SUPPORTED
262 #ifdef PNG_READ_gAMA_SUPPORTED
267 #ifdef PNG_READ_hIST_SUPPORTED
272 #ifdef PNG_READ_oFFs_SUPPORTED
277 #ifdef PNG_READ_pCAL_SUPPORTED
282 #ifdef PNG_READ_sCAL_SUPPORTED
287 #ifdef PNG_READ_pHYs_SUPPORTED
292 #ifdef PNG_READ_sBIT_SUPPORTED
297 #ifdef PNG_READ_sRGB_SUPPORTED
302 #ifdef PNG_READ_iCCP_SUPPORTED
304 png_handle_iCCP(png_ptr, info_ptr, length);
307 #ifdef PNG_READ_sPLT_SUPPORTED
309 png_handle_sPLT(png_ptr, info_ptr, length);
312 #ifdef PNG_READ_tEXt_SUPPORTED
317 #ifdef PNG_READ_tIME_SUPPORTED
322 #ifdef PNG_READ_tRNS_SUPPORTED
327 #ifdef PNG_READ_zTXt_SUPPORTED
332 #ifdef PNG_READ_iTXt_SUPPORTED
354 #ifdef PNG_READ_TRANSFORMS_SUPPORTED
361 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
377 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
388 png_debug2(1,
"in png_read_row (row %lu, pass %d)",
389 (
unsigned long)png_ptr->row_number, png_ptr->pass);
398 row_info.
width = png_ptr->iwidth;
401 row_info.
channels = png_ptr->channels;
405 if (png_ptr->row_number == 0 && png_ptr->pass == 0)
408 #if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
410 png_warning(png_ptr,
"PNG_READ_INVERT_SUPPORTED is not defined");
413 #if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED)
415 png_warning(png_ptr,
"PNG_READ_FILLER_SUPPORTED is not defined");
418 #if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \
419 !defined(PNG_READ_PACKSWAP_SUPPORTED)
421 png_warning(png_ptr,
"PNG_READ_PACKSWAP_SUPPORTED is not defined");
424 #if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED)
425 if (png_ptr->transformations &
PNG_PACK)
426 png_warning(png_ptr,
"PNG_READ_PACK_SUPPORTED is not defined");
429 #if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED)
430 if (png_ptr->transformations &
PNG_SHIFT)
431 png_warning(png_ptr,
"PNG_READ_SHIFT_SUPPORTED is not defined");
434 #if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED)
435 if (png_ptr->transformations &
PNG_BGR)
436 png_warning(png_ptr,
"PNG_READ_BGR_SUPPORTED is not defined");
439 #if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED)
441 png_warning(png_ptr,
"PNG_READ_SWAP_SUPPORTED is not defined");
445 #ifdef PNG_READ_INTERLACING_SUPPORTED
452 if (png_ptr->interlaced && (png_ptr->transformations &
PNG_INTERLACE))
454 switch (png_ptr->pass)
457 if (png_ptr->row_number & 0x07)
467 if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
478 if ((png_ptr->row_number & 0x07) != 4)
480 if (dsp_row !=
NULL && (png_ptr->row_number & 4))
489 if ((png_ptr->row_number & 3) || png_ptr->width < 3)
500 if ((png_ptr->row_number & 3) != 2)
502 if (dsp_row !=
NULL && (png_ptr->row_number & 2))
510 if ((png_ptr->row_number & 1) || png_ptr->width < 2)
522 if (!(png_ptr->row_number & 1))
533 png_error(png_ptr,
"Invalid attempt to read row data");
535 png_ptr->zstream.next_out = png_ptr->row_buf;
536 png_ptr->zstream.avail_out =
538 png_ptr->iwidth) + 1);
542 if (!(png_ptr->zstream.avail_in))
544 while (!png_ptr->idat_size)
549 if (png_ptr->chunk_name !=
png_IDAT)
550 png_error(png_ptr,
"Not enough image data");
552 png_ptr->zstream.avail_in = (
uInt)png_ptr->zbuf_size;
553 png_ptr->zstream.next_in = png_ptr->zbuf;
554 if (png_ptr->zbuf_size > png_ptr->idat_size)
555 png_ptr->zstream.avail_in = (
uInt)png_ptr->idat_size;
558 png_ptr->idat_size -= png_ptr->zstream.avail_in;
565 if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in ||
574 png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
575 "Decompression error");
577 }
while (png_ptr->zstream.avail_out);
583 png_ptr->prev_row + 1, png_ptr->row_buf[0]);
585 png_error(png_ptr,
"bad adaptive filter value");
595 #ifdef PNG_MNG_FEATURES_SUPPORTED
605 #ifdef PNG_READ_TRANSFORMS_SUPPORTED
606 if (png_ptr->transformations)
611 if (png_ptr->transformed_pixel_depth == 0)
613 png_ptr->transformed_pixel_depth = row_info.
pixel_depth;
614 if (row_info.
pixel_depth > png_ptr->maximum_pixel_depth)
615 png_error(png_ptr,
"sequential row overflow");
618 else if (png_ptr->transformed_pixel_depth != row_info.
pixel_depth)
619 png_error(png_ptr,
"internal sequential row size calculation error");
621 #ifdef PNG_READ_INTERLACING_SUPPORTED
623 if (png_ptr->interlaced &&
626 if (png_ptr->pass < 6)
628 png_ptr->transformations);
648 if (png_ptr->read_row_fn !=
NULL)
649 (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
653 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
694 for (i = 0; i < num_rows; i++)
703 for (i = 0; i < num_rows; i++)
711 for (i = 0; i < num_rows; i++)
720 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
745 #ifdef PNG_READ_INTERLACING_SUPPORTED
754 if (png_ptr->interlaced && !(png_ptr->transformations &
PNG_INTERLACE))
760 png_warning(png_ptr,
"Interlace handling should be turned on when "
761 "using png_read_image");
763 png_ptr->num_rows = png_ptr->height;
772 if (png_ptr->interlaced)
774 "Cannot read interlaced image -- interlace handler disabled");
779 image_height=png_ptr->height;
781 for (j = 0; j < pass; j++)
784 for (i = 0; i < image_height; i++)
793 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
819 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
847 #ifdef PNG_READ_bKGD_SUPPORTED
852 #ifdef PNG_READ_cHRM_SUPPORTED
857 #ifdef PNG_READ_gAMA_SUPPORTED
862 #ifdef PNG_READ_hIST_SUPPORTED
867 #ifdef PNG_READ_oFFs_SUPPORTED
872 #ifdef PNG_READ_pCAL_SUPPORTED
877 #ifdef PNG_READ_sCAL_SUPPORTED
882 #ifdef PNG_READ_pHYs_SUPPORTED
887 #ifdef PNG_READ_sBIT_SUPPORTED
892 #ifdef PNG_READ_sRGB_SUPPORTED
897 #ifdef PNG_READ_iCCP_SUPPORTED
899 png_handle_iCCP(png_ptr, info_ptr, length);
902 #ifdef PNG_READ_sPLT_SUPPORTED
904 png_handle_sPLT(png_ptr, info_ptr, length);
907 #ifdef PNG_READ_tEXt_SUPPORTED
912 #ifdef PNG_READ_tIME_SUPPORTED
917 #ifdef PNG_READ_tRNS_SUPPORTED
922 #ifdef PNG_READ_zTXt_SUPPORTED
927 #ifdef PNG_READ_iTXt_SUPPORTED
945 #ifdef PNG_USER_MEM_SUPPORTED
946 png_free_ptr free_fn =
NULL;
950 png_debug(1,
"in png_destroy_read_struct");
952 if (png_ptr_ptr !=
NULL)
953 png_ptr = *png_ptr_ptr;
957 #ifdef PNG_USER_MEM_SUPPORTED
958 free_fn = png_ptr->free_fn;
959 mem_ptr = png_ptr->mem_ptr;
962 if (info_ptr_ptr !=
NULL)
963 info_ptr = *info_ptr_ptr;
965 if (end_info_ptr_ptr !=
NULL)
966 end_info_ptr = *end_info_ptr_ptr;
970 if (info_ptr !=
NULL)
972 #ifdef PNG_TEXT_SUPPORTED
976 #ifdef PNG_USER_MEM_SUPPORTED
982 *info_ptr_ptr =
NULL;
985 if (end_info_ptr !=
NULL)
987 #ifdef PNG_READ_TEXT_SUPPORTED
990 #ifdef PNG_USER_MEM_SUPPORTED
996 *end_info_ptr_ptr =
NULL;
1001 #ifdef PNG_USER_MEM_SUPPORTED
1007 *png_ptr_ptr =
NULL;
1016 #ifdef PNG_SETJMP_SUPPORTED
1019 png_error_ptr error_fn;
1020 #ifdef PNG_WARNINGS_SUPPORTED
1021 png_error_ptr warning_fn;
1024 #ifdef PNG_USER_MEM_SUPPORTED
1025 png_free_ptr free_fn;
1030 if (info_ptr !=
NULL)
1033 if (end_info_ptr !=
NULL)
1036 #ifdef PNG_READ_GAMMA_SUPPORTED
1041 png_free(png_ptr, png_ptr->big_row_buf);
1042 png_free(png_ptr, png_ptr->big_prev_row);
1043 png_free(png_ptr, png_ptr->chunkdata);
1045 #ifdef PNG_READ_QUANTIZE_SUPPORTED
1046 png_free(png_ptr, png_ptr->palette_lookup);
1047 png_free(png_ptr, png_ptr->quantize_index);
1054 #if defined(PNG_tRNS_SUPPORTED) || \
1055 defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1057 png_free(png_ptr, png_ptr->trans_alpha);
1061 #ifdef PNG_READ_hIST_SUPPORTED
1069 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1070 png_free(png_ptr, png_ptr->save_buffer);
1073 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1074 #ifdef PNG_TEXT_SUPPORTED
1075 png_free(png_ptr, png_ptr->current_text);
1082 #ifdef PNG_SETJMP_SUPPORTED
1086 error_fn = png_ptr->error_fn;
1087 #ifdef PNG_WARNINGS_SUPPORTED
1088 warning_fn = png_ptr->warning_fn;
1090 error_ptr = png_ptr->error_ptr;
1091 #ifdef PNG_USER_MEM_SUPPORTED
1092 free_fn = png_ptr->free_fn;
1097 png_ptr->error_fn = error_fn;
1098 #ifdef PNG_WARNINGS_SUPPORTED
1099 png_ptr->warning_fn = warning_fn;
1101 png_ptr->error_ptr = error_ptr;
1102 #ifdef PNG_USER_MEM_SUPPORTED
1103 png_ptr->free_fn = free_fn;
1106 #ifdef PNG_SETJMP_SUPPORTED
1115 if (png_ptr ==
NULL)
1118 png_ptr->read_row_fn = read_row_fn;
1122 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1123 #ifdef PNG_INFO_IMAGE_SUPPORTED
1131 if (png_ptr ==
NULL || info_ptr ==
NULL)
1139 png_error(png_ptr,
"Image is too high to process with png_read_png()");
1143 #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
1155 #ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED
1164 #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
1172 #if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
1180 #ifdef PNG_READ_PACKSWAP_SUPPORTED
1188 #ifdef PNG_READ_EXPAND_SUPPORTED
1195 if ((png_ptr->bit_depth < 8) ||
1204 #ifdef PNG_READ_INVERT_SUPPORTED
1211 #ifdef PNG_READ_SHIFT_SUPPORTED
1226 #ifdef PNG_READ_BGR_SUPPORTED
1232 #ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
1238 #ifdef PNG_READ_SWAP_SUPPORTED
1245 #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
1252 #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
1259 #ifdef PNG_READ_EXPAND_16_SUPPORTED
1280 if (info_ptr->row_pointers ==
NULL)
1284 info_ptr->row_pointers = (
png_bytepp)png_malloc(png_ptr,
1286 for (iptr=0; iptr<info_ptr->height; iptr++)
1287 info_ptr->row_pointers[iptr] =
NULL;
1291 for (row = 0; row < (
int)info_ptr->height; row++)
1292 info_ptr->row_pointers[
row] = (
png_bytep)png_malloc(png_ptr,
void png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
void PNGAPI png_set_packing(png_structp png_ptr)
#define PNG_TRANSFORM_SWAP_ENDIAN
void png_read_filter_row(png_structp pp, png_row_infop row_info, png_bytep row, png_const_bytep prev_row, int filter)
void png_zfree(voidpf png_ptr, voidpf ptr)
png_size_t PNGAPI png_get_rowbytes(png_const_structp png_ptr, png_const_infop info_ptr)
#define PNG_USER_CHUNK_MALLOC_MAX
void PNGAPI png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask, int num)
#define PNG_TRANSFORM_STRIP_16
#define PNG_FILTER_VALUE_LAST
void png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
GLvoid **typedef void(GLAPIENTRY *PFNGLGETVERTEXATTRIBDVPROC)(GLuint
#define PNG_UNUSED(param)
int png_user_version_check(png_structp png_ptr, png_const_charp user_png_ver)
void PNGAPI png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
#define PNG_TRANSFORM_INVERT_MONO
void PNGAPI png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)
int ZEXPORT inflateEnd(z_streamp strm)
void PNGAPI png_set_invert_alpha(png_structp png_ptr)
#define PNG_TRANSFORM_PACKSWAP
#define PNG_COLOR_TYPE_PALETTE
void png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void PNGAPI png_read_rows(png_structp png_ptr, png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)
png_error(png_ptr,"Missing IHDR before iCCP")
#define PNG_TRANSFORM_BGR
void PNGAPI png_set_expand_16(png_structp png_ptr)
PNG_CONST char FAR * png_const_charp
void PNGAPI png_set_strip_16(png_structp png_ptr)
void png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
void png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr)
void png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define png_jmpbuf(png_ptr)
png_struct FAR *FAR * png_structpp
#define PNG_HANDLE_CHUNK_AS_DEFAULT
void png_read_finish_row(png_structp png_ptr)
void png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define PNG_FLAG_ROW_INIT
void png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void PNGAPI png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
void PNGAPI png_set_bgr(png_structp png_ptr)
png_uint_32 PNGAPI png_get_sBIT(png_const_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
png_byte FAR *FAR * png_bytepp
void png_do_read_transformations(png_structp png_ptr, png_row_infop row_info)
void png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
GLenum GLenum GLvoid * row
png_struct FAR * png_structp
void png_read_start_row(png_structp png_ptr)
void PNGAPI png_read_end(png_structp png_ptr, png_infop info_ptr)
void png_info_destroy(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_set_packswap(png_structp png_ptr)
#define PNG_USER_HEIGHT_MAX
void png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_destroy_struct(png_voidp struct_ptr)
void PNGAPI png_set_swap(png_structp png_ptr)
#define PNG_HAVE_CHUNK_AFTER_IDAT
void png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define PNG_TRANSFORM_GRAY_TO_RGB
void PNGAPI png_set_scale_16(png_structp png_ptr)
void png_combine_row(png_structp png_ptr, png_bytep dp, int display)
void PNGAPI png_warning(png_structp png_ptr, png_const_charp warning_message)
void PNGAPI png_set_shift(png_structp png_ptr, png_const_color_8p true_bits)
int ZEXPORT inflate(z_streamp strm, int flush)
png_uint_32 PNGAPI png_get_valid(png_const_structp png_ptr, png_const_infop info_ptr, png_uint_32 flag)
void png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define PNG_USER_CHUNK_CACHE_MAX
#define PNG_TRANSFORM_SCALE_16
#define PNG_TRANSFORM_PACKING
#define PNG_TRANSFORM_INVERT_ALPHA
#define PNG_FLAG_ZLIB_FINISHED
void PNGAPI png_set_strip_alpha(png_structp png_ptr)
void png_read_sig(png_structp png_ptr, png_infop info_ptr)
int png_crc_finish(png_structp png_ptr, png_uint_32 skip)
void PNGAPI png_read_info(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_set_read_fn(png_structp png_ptr, png_voidp io_ptr, png_rw_ptr read_data_fn)
void PNGAPI png_set_invert_mono(png_structp png_ptr)
void PNGAPI png_start_read_image(png_structp png_ptr)
#define PNG_FLAG_MNG_FILTER_64
void png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define PNG_TRANSFORM_EXPAND_16
#define inflateInit(strm)
void PNGAPI png_set_expand(png_structp png_ptr)
png_color_8 FAR * png_color_8p
void png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
int PNGAPI png_set_interlace_handling(png_structp png_ptr)
void png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void PNGAPI png_read_png(png_structp png_ptr, png_infop info_ptr, int transforms, voidp params)
void png_destroy_gamma_table(png_structp png_ptr)
#define PNG_TRANSFORM_SWAP_ALPHA
void png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn, png_voidp mem_ptr)
void png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, png_uint_32 transformations)
void PNGAPI png_read_image(png_structp png_ptr, png_bytepp image)
#define PNG_FILTER_VALUE_NONE
void png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#define PNG_TRANSFORM_EXPAND
#define PNG_INTRAPIXEL_DIFFERENCING
#define PNG_FUNCTION(type, name, args, attributes)
#define PNG_USER_WIDTH_MAX
#define PNG_TRANSFORM_STRIP_ALPHA
void png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_info FAR *FAR * png_infopp
void PNGAPI png_free(png_structp png_ptr, png_voidp ptr)
void PNGAPI png_set_swap_alpha(png_structp png_ptr)
#define PNG_ROWBYTES(pixel_bits, width)
int png_chunk_unknown_handling(png_structp png_ptr, png_uint_32 chunk_name)
void PNGAPI png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)
#define PNG_TRANSFORM_SHIFT
void png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void PNGAPI png_set_error_fn(png_structp png_ptr, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)
void PNGAPI png_read_update_info(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_benign_error(png_structp png_ptr, png_const_charp error_message)
void PNGAPI png_set_gray_to_rgb(png_structp png_ptr)
png_uint_32 png_read_chunk_header(png_structp png_ptr)
#define png_debug2(l, m, p1, p2)