40 #define _POSIX_SOURCE 1
52 #ifdef PNG_USER_CONFIG
55 # ifndef PNG_USER_PRIVATEBUILD
56 # define PNG_USER_PRIVATEBUILD "Custom libpng build"
58 # ifndef PNG_USER_DLLFNAME_POSTFIX
59 # define PNG_USER_DLLFNAME_POSTFIX "Cb"
77 # define PNG_BUILD_DLL
86 # define PNG_BUILD_DLL
92 # define PNG_BUILD_DLL
109 # ifdef PNG_BUILD_DLL
110 # define PNG_IMPEXP PNG_DLL_EXPORT
120 #ifndef PNG_DEPRECATED
121 # define PNG_DEPRECATED
132 #ifndef PNG_DLL_EXPORT
133 # define PNG_DLL_EXPORT
148 #ifdef PNG_CONFIGURE_LIBPNG
149 # ifdef HAVE_CONFIG_H
170 #if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
171 # define PNG_MAX_MALLOC_64K
181 # define PNG_UNUSED(param) (void)param;
187 #if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K)
188 # undef PNG_ZBUF_SIZE
189 # define PNG_ZBUF_SIZE 65536L
196 # define PNG_STATIC static
203 #ifdef PNG_CONFIGURE_LIBPNG
204 # define PNG_RESTRICT restrict
209 # if defined __GNUC__ || defined _MSC_VER || defined __WATCOMC__
210 # define PNG_RESTRICT restrict
212 # define PNG_RESTRICT
220 #ifdef PNG_WARNINGS_SUPPORTED
221 # define PNG_WARNING_PARAMETERS(p) png_warning_parameters p;
223 # define png_warning(s1,s2) ((void)(s1))
224 # define png_chunk_warning(s1,s2) ((void)(s1))
225 # define png_warning_parameter(p,number,string) ((void)0)
226 # define png_warning_parameter_unsigned(p,number,format,value) ((void)0)
227 # define png_warning_parameter_signed(p,number,format,value) ((void)0)
228 # define png_formatted_warning(pp,p,message) ((void)(pp))
229 # define PNG_WARNING_PARAMETERS(p)
231 #ifndef PNG_ERROR_TEXT_SUPPORTED
232 # define png_error(s1,s2) png_err(s1)
233 # define png_chunk_error(s1,s2) png_err(s1)
234 # define png_fixed_error(s1,s2) png_err(s1)
243 # define png_voidcast(type, value) static_cast<type>(value)
245 # define png_voidcast(type, value) (value)
258 # define PNG_EXTERN extern
265 #ifdef PNG_FIXED_POINT_SUPPORTED
266 # define PNGFAPI PNGAPI
274 #if defined(PNG_FLOATING_POINT_SUPPORTED) ||\
275 defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)
285 # if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
286 defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
291 # if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
297 # if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
306 #if defined(__TURBOC__) && defined(__MSDOS__)
311 #if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \
312 defined(_WIN32) || defined(__WIN32__)
313 # include <windows.h>
324 # define PNG_ABORT() ExitProcess(0)
326 # define PNG_ABORT() abort()
330 #ifdef USE_FAR_KEYWORD
334 # define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK))
335 # define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK))
336 # define png_strlen _fstrlen
337 # define png_memcmp _fmemcmp
338 # define png_memcpy _fmemcpy
339 # define png_memset _fmemset
342 # define CVT_PTR(ptr) (ptr)
343 # define CVT_PTR_NOCHECK(ptr) (ptr)
344 # define png_strlen lstrlenA
345 # define png_memcmp memcmp
346 # define png_memcpy CopyMemory
347 # define png_memset memset
349 # define CVT_PTR(ptr) (ptr)
350 # define CVT_PTR_NOCHECK(ptr) (ptr)
351 # define png_strlen strlen
352 # define png_memcmp memcmp
353 # define png_memcpy memcpy
354 # define png_memset memset
359 #define PNG_ALIGN_NONE 0
360 #define PNG_ALIGN_ALWAYS 1
362 # define PNG_ALIGN_OFFSET 2
364 # define PNG_ALIGN_OFFSET -1
366 #define PNG_ALIGN_SIZE 3
368 #ifndef PNG_ALIGN_TYPE
373 # define PNG_ALIGN_TYPE PNG_ALIGN_SIZE
376 #if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE
383 # define png_alignof(type) (sizeof (type))
385 # if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET
386 # define png_alignof(type) offsetof(struct{char c; type t;}, t)
388 # if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS
389 # define png_alignof(type) (1)
397 # define png_isaligned(ptr, type)\
398 ((((const char*)ptr-(const char*)0) & (png_alignof(type)-1)) == 0)
400 # define png_isaligned(ptr, type) 0
417 #define PNG_HAVE_IDAT 0x04
419 #define PNG_HAVE_IEND 0x10
420 #define PNG_HAVE_gAMA 0x20
421 #define PNG_HAVE_cHRM 0x40
422 #define PNG_HAVE_sRGB 0x80
423 #define PNG_HAVE_CHUNK_HEADER 0x100
424 #define PNG_WROTE_tIME 0x200
425 #define PNG_WROTE_INFO_BEFORE_PLTE 0x400
426 #define PNG_BACKGROUND_IS_GRAY 0x800
427 #define PNG_HAVE_PNG_SIGNATURE 0x1000
428 #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000
431 #define PNG_BGR 0x0001
432 #define PNG_INTERLACE 0x0002
433 #define PNG_PACK 0x0004
434 #define PNG_SHIFT 0x0008
435 #define PNG_SWAP_BYTES 0x0010
436 #define PNG_INVERT_MONO 0x0020
437 #define PNG_QUANTIZE 0x0040
438 #define PNG_COMPOSE 0x0080
439 #define PNG_BACKGROUND_EXPAND 0x0100
440 #define PNG_EXPAND_16 0x0200
441 #define PNG_16_TO_8 0x0400
442 #define PNG_RGBA 0x0800
443 #define PNG_EXPAND 0x1000
444 #define PNG_GAMMA 0x2000
445 #define PNG_GRAY_TO_RGB 0x4000
446 #define PNG_FILLER 0x8000
447 #define PNG_PACKSWAP 0x10000
448 #define PNG_SWAP_ALPHA 0x20000
449 #define PNG_STRIP_ALPHA 0x40000
450 #define PNG_INVERT_ALPHA 0x80000
451 #define PNG_USER_TRANSFORM 0x100000
452 #define PNG_RGB_TO_GRAY_ERR 0x200000
453 #define PNG_RGB_TO_GRAY_WARN 0x400000
454 #define PNG_RGB_TO_GRAY 0x600000
455 #define PNG_ENCODE_ALPHA 0x800000
456 #define PNG_ADD_ALPHA 0x1000000
457 #define PNG_EXPAND_tRNS 0x2000000
458 #define PNG_SCALE_16_TO_8 0x4000000
464 #define PNG_STRUCT_PNG 0x0001
465 #define PNG_STRUCT_INFO 0x0002
468 #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
469 #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
472 #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
473 #define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002
474 #define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004
475 #define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008
476 #define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010
477 #define PNG_FLAG_ZLIB_FINISHED 0x0020
478 #define PNG_FLAG_ROW_INIT 0x0040
479 #define PNG_FLAG_FILLER_AFTER 0x0080
480 #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
481 #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
482 #define PNG_FLAG_CRC_CRITICAL_USE 0x0400
483 #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
484 #define PNG_FLAG_ASSUME_sRGB 0x1000
485 #define PNG_FLAG_OPTIMIZE_ALPHA 0x2000
486 #define PNG_FLAG_DETECT_UNINITIALIZED 0x4000
487 #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000
488 #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000
489 #define PNG_FLAG_LIBRARY_MISMATCH 0x20000
490 #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000
491 #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000
492 #define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000
495 #define PNG_FLAG_BENIGN_ERRORS_WARN 0x800000
496 #define PNG_FLAG_ZTXT_CUSTOM_STRATEGY 0x1000000
497 #define PNG_FLAG_ZTXT_CUSTOM_LEVEL 0x2000000
498 #define PNG_FLAG_ZTXT_CUSTOM_MEM_LEVEL 0x4000000
499 #define PNG_FLAG_ZTXT_CUSTOM_WINDOW_BITS 0x8000000
500 #define PNG_FLAG_ZTXT_CUSTOM_METHOD 0x10000000
504 #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
505 PNG_FLAG_CRC_ANCILLARY_NOWARN)
507 #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
508 PNG_FLAG_CRC_CRITICAL_IGNORE)
510 #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
511 PNG_FLAG_CRC_CRITICAL_MASK)
522 # define ZLIB_IO_MAX ((uInt)-1)
527 #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
528 abs((int)((c1).green) - (int)((c2).green)) + \
529 abs((int)((c1).blue) - (int)((c2).blue)))
532 #define PNG_ROWBYTES(pixel_bits, width) \
533 ((pixel_bits) >= 8 ? \
534 ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \
535 (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) )
542 #define PNG_OUT_OF_RANGE(value, ideal, delta) \
543 ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
549 #ifdef PNG_FLOATING_POINT_SUPPORTED
557 #define png_float(png_ptr, fixed, s) (.00001 * (fixed))
575 #ifdef PNG_FIXED_POINT_MACRO_SUPPORTED
576 #define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\
577 ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0))
597 #define PNG_32b(b,s) ((png_uint_32)(b) << (s))
598 #define PNG_CHUNK(b1,b2,b3,b4) \
599 (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0))
601 #define png_IHDR PNG_CHUNK( 73, 72, 68, 82)
602 #define png_IDAT PNG_CHUNK( 73, 68, 65, 84)
603 #define png_IEND PNG_CHUNK( 73, 69, 78, 68)
604 #define png_PLTE PNG_CHUNK( 80, 76, 84, 69)
605 #define png_bKGD PNG_CHUNK( 98, 75, 71, 68)
606 #define png_cHRM PNG_CHUNK( 99, 72, 82, 77)
607 #define png_gAMA PNG_CHUNK(103, 65, 77, 65)
608 #define png_hIST PNG_CHUNK(104, 73, 83, 84)
609 #define png_iCCP PNG_CHUNK(105, 67, 67, 80)
610 #define png_iTXt PNG_CHUNK(105, 84, 88, 116)
611 #define png_oFFs PNG_CHUNK(111, 70, 70, 115)
612 #define png_pCAL PNG_CHUNK(112, 67, 65, 76)
613 #define png_sCAL PNG_CHUNK(115, 67, 65, 76)
614 #define png_pHYs PNG_CHUNK(112, 72, 89, 115)
615 #define png_sBIT PNG_CHUNK(115, 66, 73, 84)
616 #define png_sPLT PNG_CHUNK(115, 80, 76, 84)
617 #define png_sRGB PNG_CHUNK(115, 82, 71, 66)
618 #define png_sTER PNG_CHUNK(115, 84, 69, 82)
619 #define png_tEXt PNG_CHUNK(116, 69, 88, 116)
620 #define png_tIME PNG_CHUNK(116, 73, 77, 69)
621 #define png_tRNS PNG_CHUNK(116, 82, 78, 83)
622 #define png_zTXt PNG_CHUNK(122, 84, 88, 116)
627 #define PNG_CHUNK_FROM_STRING(s)\
628 PNG_CHUNK(0xff&(s)[0], 0xff&(s)[1], 0xff&(s)[2], 0xff&(s)[3])
634 #define PNG_STRING_FROM_CHUNK(s,c)\
635 (void)(((char*)(s))[0]=(char)((c)>>24), ((char*)(s))[1]=(char)((c)>>16),\
636 ((char*)(s))[2]=(char)((c)>>8), ((char*)(s))[3]=(char)((c)))
639 #define PNG_CSTRING_FROM_CHUNK(s,c)\
640 (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0)
643 #define PNG_CHUNK_ANCILLIARY(c) (1 & ((c) >> 29))
644 #define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLIARY(c))
645 #define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21))
646 #define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13))
647 #define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5))
650 #define PNG_GAMMA_MAC_OLD 151724
651 #define PNG_GAMMA_MAC_INVERSE 65909
652 #define PNG_GAMMA_sRGB_INVERSE 45455
683 png_free_ptr free_fn,
png_voidp mem_ptr));
704 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
712 #ifdef PNG_WRITE_FLUSH_SUPPORTED
713 # ifdef PNG_STDIO_SUPPORTED
740 #if defined(PNG_READ_COMPRESSED_TEXT_SUPPORTED)
759 #ifdef PNG_WRITE_FLUSH_SUPPORTED
770 int bit_depth,
int color_type,
int compression_method,
int filter_method,
771 int interlace_method));
781 #ifdef PNG_WRITE_gAMA_SUPPORTED
782 # ifdef PNG_FLOATING_POINT_SUPPORTED
785 # ifdef PNG_FIXED_POINT_SUPPORTED
791 #ifdef PNG_WRITE_sBIT_SUPPORTED
796 #ifdef PNG_WRITE_cHRM_SUPPORTED
797 # ifdef PNG_FLOATING_POINT_SUPPORTED
799 double white_x,
double white_y,
800 double red_x,
double red_y,
double green_x,
double green_y,
801 double blue_x,
double blue_y));
810 #ifdef PNG_WRITE_sRGB_SUPPORTED
815 #ifdef PNG_WRITE_iCCP_SUPPORTED
822 #ifdef PNG_WRITE_sPLT_SUPPORTED
827 #ifdef PNG_WRITE_tRNS_SUPPORTED
833 #ifdef PNG_WRITE_bKGD_SUPPORTED
838 #ifdef PNG_WRITE_hIST_SUPPORTED
844 #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
845 defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
850 #ifdef PNG_WRITE_tEXt_SUPPORTED
855 #ifdef PNG_WRITE_zTXt_SUPPORTED
860 #ifdef PNG_WRITE_iTXt_SUPPORTED
866 #ifdef PNG_TEXT_SUPPORTED
871 #ifdef PNG_WRITE_oFFs_SUPPORTED
876 #ifdef PNG_WRITE_pCAL_SUPPORTED
882 #ifdef PNG_WRITE_pHYs_SUPPORTED
888 #ifdef PNG_WRITE_tIME_SUPPORTED
893 #ifdef PNG_WRITE_sCAL_SUPPORTED
927 #ifndef PNG_USE_COMPILE_TIME_MASKS
928 # define PNG_USE_COMPILE_TIME_MASKS 1
933 #ifdef PNG_READ_INTERLACING_SUPPORTED
946 #ifdef PNG_WRITE_INTERLACING_SUPPORTED
983 #ifdef PNG_READ_TRANSFORMS_SUPPORTED
990 #ifdef PNG_READ_FILLER_SUPPORTED
995 #ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
1000 #ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
1005 #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
1010 #ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
1015 #if defined(PNG_WRITE_FILLER_SUPPORTED) || \
1016 defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
1021 #ifdef PNG_16BIT_SUPPORTED
1022 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
1028 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
1029 defined(PNG_WRITE_PACKSWAP_SUPPORTED)
1034 #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1039 #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
1044 #ifdef PNG_READ_PACK_SUPPORTED
1049 #ifdef PNG_READ_SHIFT_SUPPORTED
1054 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
1059 #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
1064 #ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED
1069 #ifdef PNG_READ_QUANTIZE_SUPPORTED
1074 # ifdef PNG_CORRECT_PALETTE_SUPPORTED
1080 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
1085 #ifdef PNG_WRITE_PACK_SUPPORTED
1090 #ifdef PNG_WRITE_SHIFT_SUPPORTED
1095 #if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\
1096 defined(PNG_READ_ALPHA_MODE_SUPPORTED)
1101 #ifdef PNG_READ_GAMMA_SUPPORTED
1106 #ifdef PNG_READ_ALPHA_MODE_SUPPORTED
1111 #ifdef PNG_READ_EXPAND_SUPPORTED
1119 #ifdef PNG_READ_EXPAND_16_SUPPORTED
1136 #ifdef PNG_READ_bKGD_SUPPORTED
1141 #ifdef PNG_READ_cHRM_SUPPORTED
1146 #ifdef PNG_READ_gAMA_SUPPORTED
1151 #ifdef PNG_READ_hIST_SUPPORTED
1156 #ifdef PNG_READ_iCCP_SUPPORTED
1161 #ifdef PNG_READ_iTXt_SUPPORTED
1166 #ifdef PNG_READ_oFFs_SUPPORTED
1171 #ifdef PNG_READ_pCAL_SUPPORTED
1176 #ifdef PNG_READ_pHYs_SUPPORTED
1181 #ifdef PNG_READ_sBIT_SUPPORTED
1186 #ifdef PNG_READ_sCAL_SUPPORTED
1191 #ifdef PNG_READ_sPLT_SUPPORTED
1196 #ifdef PNG_READ_sRGB_SUPPORTED
1201 #ifdef PNG_READ_tEXt_SUPPORTED
1206 #ifdef PNG_READ_tIME_SUPPORTED
1211 #ifdef PNG_READ_tRNS_SUPPORTED
1216 #ifdef PNG_READ_zTXt_SUPPORTED
1221 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
1229 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
1238 #ifdef PNG_READ_TRANSFORMS_SUPPORTED
1242 #ifdef PNG_WRITE_TRANSFORMS_SUPPORTED
1247 #ifdef PNG_READ_TRANSFORMS_SUPPORTED
1251 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1279 # ifdef PNG_READ_tEXt_SUPPORTED
1285 # ifdef PNG_READ_zTXt_SUPPORTED
1291 # ifdef PNG_READ_iTXt_SUPPORTED
1300 #ifdef PNG_MNG_FEATURES_SUPPORTED
1308 #ifdef PNG_CHECK_cHRM_SUPPORTED
1316 #ifdef PNG_CHECK_cHRM_SUPPORTED
1320 unsigned long *hi_product,
unsigned long *lo_product));
1323 #ifdef PNG_cHRM_SUPPORTED
1355 int color_type,
int interlace_type,
int compression_type,
1365 #ifdef USE_FAR_KEYWORD
1370 #if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)
1385 #if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED)
1395 #define PNG_FORMAT_NUMBER(buffer,format,number) \
1396 png_format_number(buffer, buffer + (sizeof buffer), format, number)
1399 #define PNG_NUMBER_BUFFER_SIZE 24
1404 #define PNG_NUMBER_FORMAT_u 1
1405 #define PNG_NUMBER_FORMAT_02u 2
1406 #define PNG_NUMBER_FORMAT_d 1
1407 #define PNG_NUMBER_FORMAT_02d 2
1408 #define PNG_NUMBER_FORMAT_x 3
1409 #define PNG_NUMBER_FORMAT_02x 4
1410 #define PNG_NUMBER_FORMAT_fixed 5
1413 #ifdef PNG_WARNINGS_SUPPORTED
1415 # define PNG_WARNING_PARAMETER_SIZE 32
1416 # define PNG_WARNING_PARAMETER_COUNT 8
1448 #if defined(PNG_READ_sCAL_SUPPORTED)
1454 #define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1+1+10)
1456 #ifdef PNG_FLOATING_POINT_SUPPORTED
1461 #ifdef PNG_FIXED_POINT_SUPPORTED
1467 #if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
1498 #define PNG_FP_INTEGER 0
1499 #define PNG_FP_FRACTION 1
1500 #define PNG_FP_EXPONENT 2
1501 #define PNG_FP_STATE 3
1502 #define PNG_FP_SAW_SIGN 4
1503 #define PNG_FP_SAW_DIGIT 8
1504 #define PNG_FP_SAW_DOT 16
1505 #define PNG_FP_SAW_E 32
1506 #define PNG_FP_SAW_ANY 60
1510 #define PNG_FP_WAS_VALID 64
1511 #define PNG_FP_NEGATIVE 128
1512 #define PNG_FP_NONZERO 256
1513 #define PNG_FP_STICKY 448
1518 #define PNG_FP_INVALID 512
1523 #define PNG_FP_MAYBE 0
1531 #define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO)
1533 #define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO)
1536 #define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT)
1537 #define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK)
1538 #define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK)
1568 #if defined(PNG_READ_GAMMA_SUPPORTED) ||\
1569 defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED)
1580 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED)
1586 #ifdef PNG_READ_GAMMA_SUPPORTED
1601 #ifdef PNG_READ_GAMMA_SUPPORTED
void png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
void png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
void png_push_read_IDAT(png_structp png_ptr)
void PNGCBAPI png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
void png_do_packswap(png_row_infop row_info, png_bytep row)
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_write_start_row(png_structp png_ptr)
void png_zfree(voidpf png_ptr, voidpf ptr)
void png_push_have_row(png_structp png_ptr, png_bytep row)
void png_write_sPLT(png_structp png_ptr, png_const_sPLT_tp spalette)
void png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_write_PLTE(png_structp png_ptr, png_const_colorp palette, png_uint_32 num_pal)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
PNG_CONST png_uint_16p FAR * png_const_uint_16pp
void png_do_invert(png_row_infop row_info, png_bytep row)
int png_user_version_check(png_structp png_ptr, png_const_charp user_png_ver)
PNG_CONST png_time FAR * png_const_timep
void png_ascii_from_fp(png_structp png_ptr, png_charp ascii, png_size_t size, double fp, unsigned int precision)
GLsizei GLenum GLuint GLuint GLsizei GLchar * message
void png_write_sBIT(png_structp png_ptr, png_const_color_8p sbit, int color_type)
void png_do_read_filler(png_row_infop row_info, png_bytep row, png_uint_32 filler, png_uint_32 flags)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
png_size_t FAR * png_size_tp
void png_do_unshift(png_row_infop row_info, png_bytep row, png_const_color_8p sig_bits)
void png_warning_parameter(png_warning_parameters p, int number, png_const_charp string)
char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][PNG_WARNING_PARAMETER_SIZE]
void png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
void png_do_gamma(png_row_infop row_info, png_bytep row, png_structp png_ptr)
void png_push_have_end(png_structp png_ptr, png_infop info_ptr)
void png_do_strip_channel(png_row_infop row_info, png_bytep row, int at_start)
void png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
void png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth)
void png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_fixed_point png_fixed(png_structp png_ptr, double fp, png_const_charp text)
void png_check_chunk_name(png_structp png_ptr, png_uint_32 chunk_name)
void png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
png_fixed_point FAR * png_fixed_point_p
void png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
png_fixed_point png_reciprocal(png_fixed_point a)
void png_write_zTXt(png_structp png_ptr, png_const_charp key, png_const_charp text, png_size_t text_len, int compression)
int png_XYZ_from_xy_checked(png_structp png_ptr, png_XYZ *XYZ, png_xy xy)
EGLSurface EGLint EGLint EGLint EGLint height
void png_do_scale_16_to_8(png_row_infop row_info, png_bytep row)
GLboolean GLboolean GLboolean GLboolean a
PNG_CONST png_color FAR * png_const_colorp
EGLImageKHR EGLint * name
PNG_CONST char FAR * png_const_charp
void png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset, int unit_type)
png_charp png_format_number(png_const_charp start, png_charp end, int format, png_alloc_size_t number)
void png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
void png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
void PNGCBAPI png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
void png_do_chop(png_row_infop row_info, png_bytep row)
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)
PNG_CONST png_color_8 FAR * png_const_color_8p
int png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
#define PNG_WARNING_PARAMETER_COUNT
void png_do_quantize(png_row_infop row_info, png_bytep row, png_const_bytep palette_lookup, png_const_bytep quantize_lookup)
void png_read_finish_row(png_structp png_ptr)
void png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
void png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, png_const_charp units, png_charpp params)
size_t png_safecat(png_charp buffer, size_t bufsize, size_t pos, png_const_charp string)
void png_flush(png_structp png_ptr)
void png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_size_t png_alloc_size_t
void png_write_data(png_structp png_ptr, png_const_bytep data, png_size_t length)
void png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, int unit_type)
void png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
void png_init_read_transformations(png_structp png_ptr)
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)
EGLContext EGLenum EGLClientBuffer buffer
int png_xy_from_XYZ(png_xy *xy, png_XYZ XYZ)
void png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_save_buffer(png_structp png_ptr)
void png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
GLenum GLenum GLvoid * row
void png_check_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, int interlace_type, int compression_type, int filter_type)
png_struct FAR * png_structp
void png_read_start_row(png_structp png_ptr)
void png_write_tIME(png_structp png_ptr, png_const_timep mod_time)
void png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x, png_fixed_point blue_y)
void PNGCBAPI png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
void png_write_tEXt(png_structp png_ptr, png_const_charp key, png_const_charp text, png_size_t text_len)
void png_info_destroy(png_structp png_ptr, png_infop info_ptr)
void png_warning_parameter_signed(png_warning_parameters p, int number, int format, png_int_32 value)
PNG_CONST png_text FAR * png_const_textp
void png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
int png_check_fp_number(png_const_charp string, png_size_t size, int *statep, png_size_tp whereami)
png_fixed_point png_muldiv_warn(png_structp png_ptr, png_fixed_point a, png_int_32 times, png_int_32 divisor)
void png_destroy_struct(png_voidp struct_ptr)
void png_do_read_swap_alpha(png_row_infop row_info, png_bytep row)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
EGLSurface EGLint EGLint EGLint width
void png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
void png_push_crc_finish(png_structp png_ptr)
void png_build_gamma_table(png_structp png_ptr, int bit_depth)
unsigned short png_uint_16
void png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, int compression_type, int filter_type, int interlace_type)
void png_combine_row(png_structp png_ptr, png_bytep dp, int display)
int png_check_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x, png_fixed_point blue_y)
void png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_ascii_from_fixed(png_structp png_ptr, png_charp ascii, png_size_t size, png_fixed_point fp)
void png_do_bgr(png_row_infop row_info, png_bytep row)
void PNGCBAPI png_default_flush(png_structp png_ptr)
png_uint_16 FAR * png_uint_16p
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
PNG_CONST png_byte FAR * png_const_bytep
void png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_crc_skip(png_structp png_ptr, png_uint_32 skip)
int png_muldiv(png_fixed_point_p res, png_fixed_point a, png_int_32 times, png_int_32 divisor)
void png_process_IDAT_data(png_structp png_ptr, png_bytep buffer, png_size_t buffer_length)
void png_read_push_finish_row(png_structp png_ptr)
void png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
PNG_CONST png_color_16 FAR * png_const_color_16p
void png_write_iCCP(png_structp png_ptr, png_const_charp name, int compression_type, png_const_charp profile, int profile_len)
void png_do_compose(png_row_infop row_info, png_bytep row, 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)
png_fixed_point png_reciprocal2(png_fixed_point a, png_fixed_point b)
void png_do_shift(png_row_infop row_info, png_bytep row, png_const_color_8p bit_depth)
png_size_t png_check_keyword(png_structp png_ptr, png_const_charp key, png_charpp new_key)
int png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_const_textp text_ptr, int num_text)
void png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_restore_buffer(png_structp png_ptr, png_bytep buffer, png_size_t buffer_length)
void png_do_unpack(png_row_infop row_info, png_bytep row)
void png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_do_expand(png_row_infop row_info, png_bytep row, png_const_color_16p trans_color)
void png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
void png_write_destroy(png_structp png_ptr)
void png_do_expand_palette(png_row_infop row_info, png_bytep row, png_const_colorp palette, png_const_bytep trans_alpha, int num_trans)
int png_XYZ_from_xy(png_XYZ *XYZ, png_xy xy)
EGLSurface EGLint void ** value
png_row_info FAR * png_row_infop
void png_64bit_product(long v1, long v2, unsigned long *hi_product, unsigned long *lo_product)
void png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structp png_ptr)
void png_write_sRGB(png_structp png_ptr, int srgb_intent)
void png_do_swap(png_row_infop row_info, png_bytep row)
GLenum GLuint GLsizei const GLchar * buf
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
png_byte png_gamma_8bit_correct(unsigned int value, png_fixed_point gamma_val)
void png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_write_tRNS(png_structp png_ptr, png_const_bytep trans_alpha, png_const_color_16p tran, int num_trans, int color_type)
void png_process_some_data(png_structp png_ptr, png_infop info_ptr)
void png_write_IEND(png_structp png_ptr)
void png_write_iTXt(png_structp png_ptr, int compression, png_const_charp key, png_const_charp lang, png_const_charp lang_key, png_const_charp text)
png_int_32 png_fixed_point
void png_destroy_gamma_table(png_structp png_ptr)
char FAR *FAR * png_charpp
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)
GLdouble GLdouble GLdouble b
void png_calculate_crc(png_structp png_ptr, png_const_bytep ptr, png_size_t length)
void png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
int png_crc_error(png_structp png_ptr)
void png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_process_row(png_structp png_ptr)
void png_do_write_transformations(png_structp png_ptr, png_row_infop row_info)
#define PNG_FUNCTION(type, name, args, attributes)
void png_write_hIST(png_structp png_ptr, png_const_uint_16p hist, int num_hist)
void png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp
#define PNG_WARNING_PARAMETER_SIZE
void png_decompress_chunk(png_structp png_ptr, int comp_type, png_size_t chunklength, png_size_t prefix_size, png_size_t *newlength)
int png_check_fp_string(png_const_charp string, png_size_t size)
void png_write_finish_row(png_structp png_ptr)
GLenum GLint GLint * precision
void png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
int png_chunk_unknown_handling(png_structp png_ptr, png_uint_32 chunk_name)
void png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
png_uint_16 png_gamma_correct(png_structp png_ptr, unsigned int value, png_fixed_point gamma_val)
void png_push_have_info(png_structp png_ptr, png_infop info_ptr)
png_uint_16 png_gamma_16bit_correct(unsigned int value, png_fixed_point gamma_val)
void png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void png_write_sCAL_s(png_structp png_ptr, int unit, png_const_charp width, png_const_charp height)
void png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
void png_formatted_warning(png_structp png_ptr, png_warning_parameters p, png_const_charp message)
PNG_CONST png_uint_16 FAR * png_const_uint_16p
GLint GLsizei const GLuint64 * values
void png_reset_crc(png_structp png_ptr)
GLfloat GLfloat GLfloat v2
void png_do_expand_16(png_row_infop row_info, png_bytep row)
int png_gamma_significant(png_fixed_point gamma_val)
void png_warning_parameter_unsigned(png_warning_parameters p, int number, int format, png_alloc_size_t value)
png_uint_32 png_read_chunk_header(png_structp png_ptr)
void png_do_write_swap_alpha(png_row_infop row_info, png_bytep row)
void png_write_bKGD(png_structp png_ptr, png_const_color_16p back, int color_type)
void png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
png_color FAR * png_colorp