281#define PNG_LIBPNG_VER_STRING "1.6.53"
282#define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n"
285#define PNG_LIBPNG_VER_SHAREDLIB 16
286#define PNG_LIBPNG_VER_SONUM PNG_LIBPNG_VER_SHAREDLIB
287#define PNG_LIBPNG_VER_DLLNUM PNG_LIBPNG_VER_SHAREDLIB
290#define PNG_LIBPNG_VER_MAJOR 1
291#define PNG_LIBPNG_VER_MINOR 6
292#define PNG_LIBPNG_VER_RELEASE 53
297#define PNG_LIBPNG_VER_BUILD 0
300#define PNG_LIBPNG_BUILD_ALPHA 1
301#define PNG_LIBPNG_BUILD_BETA 2
302#define PNG_LIBPNG_BUILD_RC 3
303#define PNG_LIBPNG_BUILD_STABLE 4
304#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
307#define PNG_LIBPNG_BUILD_PATCH 8
309#define PNG_LIBPNG_BUILD_PRIVATE 16
311#define PNG_LIBPNG_BUILD_SPECIAL 32
314#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
323#define PNG_LIBPNG_VER 10653
335#ifndef PNG_VERSION_INFO_ONLY
354#ifdef PNG_USER_PRIVATEBUILD
355# define PNG_LIBPNG_BUILD_TYPE \
356 (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
358# ifdef PNG_LIBPNG_SPECIALBUILD
359# define PNG_LIBPNG_BUILD_TYPE \
360 (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
362# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
366#ifndef PNG_VERSION_INFO_ONLY
376#define png_libpng_ver png_get_header_ver(NULL)
433typedef char* png_libpng_version_1_6_53;
442typedef const png_struct * png_const_structp;
443typedef png_struct * png_structp;
444typedef png_struct * * png_structpp;
456typedef png_info * png_infop;
457typedef const png_info * png_const_infop;
458typedef png_info * * png_infopp;
471typedef png_struct * PNG_RESTRICT png_structrp;
472typedef const png_struct * PNG_RESTRICT png_const_structrp;
473typedef png_info * PNG_RESTRICT png_inforp;
474typedef const png_info * PNG_RESTRICT png_const_inforp;
486typedef png_color * png_colorp;
487typedef const png_color * png_const_colorp;
488typedef png_color * * png_colorpp;
498typedef png_color_16 * png_color_16p;
499typedef const png_color_16 * png_const_color_16p;
500typedef png_color_16 * * png_color_16pp;
510typedef png_color_8 * png_color_8p;
511typedef const png_color_8 * png_const_color_8p;
512typedef png_color_8 * * png_color_8pp;
524 png_uint_16 frequency;
526typedef png_sPLT_entry * png_sPLT_entryp;
527typedef const png_sPLT_entry * png_const_sPLT_entryp;
528typedef png_sPLT_entry * * png_sPLT_entrypp;
539 png_sPLT_entryp entries;
542typedef png_sPLT_t * png_sPLT_tp;
543typedef const png_sPLT_t * png_const_sPLT_tp;
544typedef png_sPLT_t * * png_sPLT_tpp;
546#ifdef PNG_TEXT_SUPPORTED
581typedef png_text * png_textp;
582typedef const png_text * png_const_textp;
583typedef png_text * * png_textpp;
588#define PNG_TEXT_COMPRESSION_NONE_WR -3
589#define PNG_TEXT_COMPRESSION_zTXt_WR -2
590#define PNG_TEXT_COMPRESSION_NONE -1
591#define PNG_TEXT_COMPRESSION_zTXt 0
592#define PNG_ITXT_COMPRESSION_NONE 1
593#define PNG_ITXT_COMPRESSION_zTXt 2
594#define PNG_TEXT_COMPRESSION_LAST 3
611typedef png_time * png_timep;
612typedef const png_time * png_const_timep;
613typedef png_time * * png_timepp;
615#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\
616 defined(PNG_USER_CHUNKS_SUPPORTED)
640typedef png_unknown_chunk * png_unknown_chunkp;
641typedef const png_unknown_chunk * png_const_unknown_chunkp;
642typedef png_unknown_chunk * * png_unknown_chunkpp;
646#define PNG_HAVE_IHDR 0x01
647#define PNG_HAVE_PLTE 0x02
648#define PNG_AFTER_IDAT 0x08
651#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
652#define PNG_UINT_32_MAX ((png_uint_32)(-1))
653#define PNG_SIZE_MAX ((size_t)(-1))
658#define PNG_FP_1 100000
659#define PNG_FP_HALF 50000
660#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL)
661#define PNG_FP_MIN (-PNG_FP_MAX)
665#define PNG_COLOR_MASK_PALETTE 1
666#define PNG_COLOR_MASK_COLOR 2
667#define PNG_COLOR_MASK_ALPHA 4
670#define PNG_COLOR_TYPE_GRAY 0
671#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
672#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
673#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
674#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
676#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
677#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
680#define PNG_COMPRESSION_TYPE_BASE 0
681#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
684#define PNG_FILTER_TYPE_BASE 0
685#define PNG_INTRAPIXEL_DIFFERENCING 64
686#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
689#define PNG_INTERLACE_NONE 0
690#define PNG_INTERLACE_ADAM7 1
691#define PNG_INTERLACE_LAST 2
694#define PNG_OFFSET_PIXEL 0
695#define PNG_OFFSET_MICROMETER 1
696#define PNG_OFFSET_LAST 2
699#define PNG_EQUATION_LINEAR 0
700#define PNG_EQUATION_BASE_E 1
701#define PNG_EQUATION_ARBITRARY 2
702#define PNG_EQUATION_HYPERBOLIC 3
703#define PNG_EQUATION_LAST 4
706#define PNG_SCALE_UNKNOWN 0
707#define PNG_SCALE_METER 1
708#define PNG_SCALE_RADIAN 2
709#define PNG_SCALE_LAST 3
712#define PNG_RESOLUTION_UNKNOWN 0
713#define PNG_RESOLUTION_METER 1
714#define PNG_RESOLUTION_LAST 2
717#define PNG_sRGB_INTENT_PERCEPTUAL 0
718#define PNG_sRGB_INTENT_RELATIVE 1
719#define PNG_sRGB_INTENT_SATURATION 2
720#define PNG_sRGB_INTENT_ABSOLUTE 3
721#define PNG_sRGB_INTENT_LAST 4
724#define PNG_KEYWORD_MAX_LENGTH 79
727#define PNG_MAX_PALETTE_LENGTH 256
734#define PNG_INFO_gAMA 0x0001U
735#define PNG_INFO_sBIT 0x0002U
736#define PNG_INFO_cHRM 0x0004U
737#define PNG_INFO_PLTE 0x0008U
738#define PNG_INFO_tRNS 0x0010U
739#define PNG_INFO_bKGD 0x0020U
740#define PNG_INFO_hIST 0x0040U
741#define PNG_INFO_pHYs 0x0080U
742#define PNG_INFO_oFFs 0x0100U
743#define PNG_INFO_tIME 0x0200U
744#define PNG_INFO_pCAL 0x0400U
745#define PNG_INFO_sRGB 0x0800U
746#define PNG_INFO_iCCP 0x1000U
747#define PNG_INFO_sPLT 0x2000U
748#define PNG_INFO_sCAL 0x4000U
749#define PNG_INFO_IDAT 0x8000U
750#define PNG_INFO_eXIf 0x10000U
751#define PNG_INFO_cICP 0x20000U
752#define PNG_INFO_cLLI 0x40000U
753#define PNG_INFO_mDCV 0x80000U
763#define PNG_INFO_acTL 0x100000U
764#define PNG_INFO_fcTL 0x200000U
765#define PNG_INFO_fdAT 0x400000U
778 png_byte pixel_depth;
781typedef png_row_info * png_row_infop;
782typedef png_row_info * * png_row_infopp;
792typedef PNG_CALLBACK(
void, *png_error_ptr, (png_structp, png_const_charp));
793typedef PNG_CALLBACK(
void, *png_rw_ptr, (png_structp, png_bytep,
size_t));
794typedef PNG_CALLBACK(
void, *png_flush_ptr, (png_structp));
795typedef PNG_CALLBACK(
void, *png_read_status_ptr, (png_structp, png_uint_32,
797typedef PNG_CALLBACK(
void, *png_write_status_ptr, (png_structp, png_uint_32,
800#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
801typedef PNG_CALLBACK(
void, *png_progressive_info_ptr, (png_structp, png_infop));
802typedef PNG_CALLBACK(
void, *png_progressive_end_ptr, (png_structp, png_infop));
814typedef PNG_CALLBACK(
void, *png_progressive_row_ptr, (png_structp, png_bytep,
818#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
819 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
820typedef PNG_CALLBACK(
void, *png_user_transform_ptr, (png_structp, png_row_infop,
824#ifdef PNG_USER_CHUNKS_SUPPORTED
825typedef PNG_CALLBACK(
int, *png_user_chunk_ptr, (png_structp,
826 png_unknown_chunkp));
828#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
833#ifdef PNG_SETJMP_SUPPORTED
845PNG_FUNCTION(
void, (PNGCAPI *png_longjmp_ptr), (jmp_buf,
int),
typedef);
849#define PNG_TRANSFORM_IDENTITY 0x0000
850#define PNG_TRANSFORM_STRIP_16 0x0001
851#define PNG_TRANSFORM_STRIP_ALPHA 0x0002
852#define PNG_TRANSFORM_PACKING 0x0004
853#define PNG_TRANSFORM_PACKSWAP 0x0008
854#define PNG_TRANSFORM_EXPAND 0x0010
855#define PNG_TRANSFORM_INVERT_MONO 0x0020
856#define PNG_TRANSFORM_SHIFT 0x0040
857#define PNG_TRANSFORM_BGR 0x0080
858#define PNG_TRANSFORM_SWAP_ALPHA 0x0100
859#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200
860#define PNG_TRANSFORM_INVERT_ALPHA 0x0400
861#define PNG_TRANSFORM_STRIP_FILLER 0x0800
863#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER
864#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000
866#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000
868#define PNG_TRANSFORM_EXPAND_16 0x4000
870#define PNG_TRANSFORM_SCALE_16 0x8000
874#define PNG_FLAG_MNG_EMPTY_PLTE 0x01
875#define PNG_FLAG_MNG_FILTER_64 0x04
876#define PNG_ALL_MNG_FEATURES 0x05
884typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp,
886typedef PNG_CALLBACK(
void, *png_free_ptr, (png_structp, png_voidp));
918PNG_EXPORT(1, png_uint_32, png_access_version_number, (
void));
923PNG_EXPORT(2,
void, png_set_sig_bytes, (png_structrp png_ptr,
int num_bytes));
930PNG_EXPORT(3,
int, png_sig_cmp, (png_const_bytep sig,
size_t start,
931 size_t num_to_check));
936#define png_check_sig(sig, n) (png_sig_cmp((sig), 0, (n)) == 0)
939PNG_EXPORTA(4, png_structp, png_create_read_struct,
940 (png_const_charp user_png_ver, png_voidp error_ptr,
941 png_error_ptr error_fn, png_error_ptr warn_fn),
945PNG_EXPORTA(5, png_structp, png_create_write_struct,
946 (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
947 png_error_ptr warn_fn),
950PNG_EXPORT(6,
size_t, png_get_compression_buffer_size,
951 (png_const_structrp png_ptr));
953PNG_EXPORT(7,
void, png_set_compression_buffer_size, (png_structrp png_ptr,
959#ifdef PNG_SETJMP_SUPPORTED
967PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr,
968 png_longjmp_ptr longjmp_fn,
size_t jmp_buf_size));
969# define png_jmpbuf(png_ptr) \
970 (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf))))
972# define png_jmpbuf(png_ptr) \
973 (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)
980PNG_EXPORTA(9,
void, png_longjmp, (png_const_structrp png_ptr,
int val),
983#ifdef PNG_READ_SUPPORTED
985PNG_EXPORTA(10,
int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED);
989#ifdef PNG_USER_MEM_SUPPORTED
990PNG_EXPORTA(11, png_structp, png_create_read_struct_2,
991 (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
992 png_error_ptr warn_fn,
993 png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
995PNG_EXPORTA(12, png_structp, png_create_write_struct_2,
996 (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
997 png_error_ptr warn_fn,
998 png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
1003PNG_EXPORT(13,
void, png_write_sig, (png_structrp png_ptr));
1006PNG_EXPORT(14,
void, png_write_chunk, (png_structrp png_ptr, png_const_bytep
1007 chunk_name, png_const_bytep data,
size_t length));
1010PNG_EXPORT(15,
void, png_write_chunk_start, (png_structrp png_ptr,
1011 png_const_bytep chunk_name, png_uint_32 length));
1014PNG_EXPORT(16,
void, png_write_chunk_data, (png_structrp png_ptr,
1015 png_const_bytep data,
size_t length));
1018PNG_EXPORT(17,
void, png_write_chunk_end, (png_structrp png_ptr));
1021PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr),
1028PNG_EXPORTA(19,
void, png_info_init_3, (png_infopp info_ptr,
1029 size_t png_info_struct_size), PNG_DEPRECATED);
1032PNG_EXPORT(20,
void, png_write_info_before_PLTE,
1033 (png_structrp png_ptr, png_const_inforp info_ptr));
1034PNG_EXPORT(21,
void, png_write_info,
1035 (png_structrp png_ptr, png_const_inforp info_ptr));
1037#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1039PNG_EXPORT(22,
void, png_read_info,
1040 (png_structrp png_ptr, png_inforp info_ptr));
1043#ifdef PNG_TIME_RFC1123_SUPPORTED
1048#if PNG_LIBPNG_VER < 10700
1050PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr,
1051 png_const_timep ptime),PNG_DEPRECATED);
1053PNG_EXPORT(241,
int, png_convert_to_rfc1123_buffer, (
char out[29],
1054 png_const_timep ptime));
1057#ifdef PNG_CONVERT_tIME_SUPPORTED
1059PNG_EXPORT(24,
void, png_convert_from_struct_tm, (png_timep ptime,
1060 const struct tm * ttime));
1063PNG_EXPORT(25,
void, png_convert_from_time_t, (png_timep ptime, time_t ttime));
1066#ifdef PNG_READ_EXPAND_SUPPORTED
1068PNG_EXPORT(26,
void, png_set_expand, (png_structrp png_ptr));
1069PNG_EXPORT(27,
void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr));
1070PNG_EXPORT(28,
void, png_set_palette_to_rgb, (png_structrp png_ptr));
1071PNG_EXPORT(29,
void, png_set_tRNS_to_alpha, (png_structrp png_ptr));
1074#ifdef PNG_READ_EXPAND_16_SUPPORTED
1078PNG_EXPORT(221,
void, png_set_expand_16, (png_structrp png_ptr));
1081#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
1083PNG_EXPORT(30,
void, png_set_bgr, (png_structrp png_ptr));
1086#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
1088PNG_EXPORT(31,
void, png_set_gray_to_rgb, (png_structrp png_ptr));
1091#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1093#define PNG_ERROR_ACTION_NONE 1
1094#define PNG_ERROR_ACTION_WARN 2
1095#define PNG_ERROR_ACTION_ERROR 3
1096#define PNG_RGB_TO_GRAY_DEFAULT (-1)
1098PNG_FP_EXPORT(32,
void, png_set_rgb_to_gray, (png_structrp png_ptr,
1099 int error_action,
double red,
double green))
1100PNG_FIXED_EXPORT(33,
void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr,
1101 int error_action, png_fixed_point red, png_fixed_point green))
1103PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp
1107#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED
1108PNG_EXPORT(35,
void, png_build_grayscale_palette, (
int bit_depth,
1109 png_colorp palette));
1112#ifdef PNG_READ_ALPHA_MODE_SUPPORTED
1147#define PNG_ALPHA_PNG 0
1148#define PNG_ALPHA_STANDARD 1
1149#define PNG_ALPHA_ASSOCIATED 1
1150#define PNG_ALPHA_PREMULTIPLIED 1
1151#define PNG_ALPHA_OPTIMIZED 2
1152#define PNG_ALPHA_BROKEN 3
1154PNG_FP_EXPORT(227,
void, png_set_alpha_mode, (png_structrp png_ptr,
int mode,
1155 double output_gamma))
1156PNG_FIXED_EXPORT(228,
void, png_set_alpha_mode_fixed, (png_structrp png_ptr,
1157 int mode, png_fixed_point output_gamma))
1160#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED)
1164#define PNG_DEFAULT_sRGB -1
1165#define PNG_GAMMA_MAC_18 -2
1166#define PNG_GAMMA_sRGB 220000
1167#define PNG_GAMMA_LINEAR PNG_FP_1
1246#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
1247PNG_EXPORT(36,
void, png_set_strip_alpha, (png_structrp png_ptr));
1250#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
1251 defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
1252PNG_EXPORT(37,
void, png_set_swap_alpha, (png_structrp png_ptr));
1255#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
1256 defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
1257PNG_EXPORT(38,
void, png_set_invert_alpha, (png_structrp png_ptr));
1260#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
1262PNG_EXPORT(39,
void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler,
1265# define PNG_FILLER_BEFORE 0
1266# define PNG_FILLER_AFTER 1
1268PNG_EXPORT(40,
void, png_set_add_alpha, (png_structrp png_ptr,
1269 png_uint_32 filler,
int flags));
1272#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
1274PNG_EXPORT(41,
void, png_set_swap, (png_structrp png_ptr));
1277#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
1279PNG_EXPORT(42,
void, png_set_packing, (png_structrp png_ptr));
1282#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
1283 defined(PNG_WRITE_PACKSWAP_SUPPORTED)
1285PNG_EXPORT(43,
void, png_set_packswap, (png_structrp png_ptr));
1288#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
1290PNG_EXPORT(44,
void, png_set_shift, (png_structrp png_ptr, png_const_color_8p
1294#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
1295 defined(PNG_WRITE_INTERLACING_SUPPORTED)
1302PNG_EXPORT(45,
int, png_set_interlace_handling, (png_structrp png_ptr));
1305#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
1307PNG_EXPORT(46,
void, png_set_invert_mono, (png_structrp png_ptr));
1310#ifdef PNG_READ_BACKGROUND_SUPPORTED
1316PNG_FP_EXPORT(47,
void, png_set_background, (png_structrp png_ptr,
1317 png_const_color_16p background_color,
int background_gamma_code,
1318 int need_expand,
double background_gamma))
1319PNG_FIXED_EXPORT(215,
void, png_set_background_fixed, (png_structrp png_ptr,
1320 png_const_color_16p background_color,
int background_gamma_code,
1321 int need_expand, png_fixed_point background_gamma))
1323#ifdef PNG_READ_BACKGROUND_SUPPORTED
1324# define PNG_BACKGROUND_GAMMA_UNKNOWN 0
1325# define PNG_BACKGROUND_GAMMA_SCREEN 1
1326# define PNG_BACKGROUND_GAMMA_FILE 2
1327# define PNG_BACKGROUND_GAMMA_UNIQUE 3
1330#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
1332PNG_EXPORT(229,
void, png_set_scale_16, (png_structrp png_ptr));
1335#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED
1336#define PNG_READ_16_TO_8_SUPPORTED
1338PNG_EXPORT(48,
void, png_set_strip_16, (png_structrp png_ptr));
1341#ifdef PNG_READ_QUANTIZE_SUPPORTED
1345PNG_EXPORT(49,
void, png_set_quantize, (png_structrp png_ptr,
1346 png_colorp palette,
int num_palette,
int maximum_colors,
1347 png_const_uint_16p histogram,
int full_quantize));
1350#ifdef PNG_READ_GAMMA_SUPPORTED
1354#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001)
1367PNG_FP_EXPORT(50,
void, png_set_gamma, (png_structrp png_ptr,
1368 double screen_gamma,
double override_file_gamma))
1369PNG_FIXED_EXPORT(208,
void, png_set_gamma_fixed, (png_structrp png_ptr,
1370 png_fixed_point screen_gamma, png_fixed_point override_file_gamma))
1373#ifdef PNG_WRITE_FLUSH_SUPPORTED
1375PNG_EXPORT(51,
void, png_set_flush, (png_structrp png_ptr,
int nrows));
1377PNG_EXPORT(52,
void, png_write_flush, (png_structrp png_ptr));
1381PNG_EXPORT(53,
void, png_start_read_image, (png_structrp png_ptr));
1384PNG_EXPORT(54,
void, png_read_update_info, (png_structrp png_ptr,
1385 png_inforp info_ptr));
1387#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1389PNG_EXPORT(55,
void, png_read_rows, (png_structrp png_ptr, png_bytepp row,
1390 png_bytepp display_row, png_uint_32 num_rows));
1393#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1395PNG_EXPORT(56,
void, png_read_row, (png_structrp png_ptr, png_bytep row,
1396 png_bytep display_row));
1399#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1401PNG_EXPORT(57,
void, png_read_image, (png_structrp png_ptr, png_bytepp image));
1405PNG_EXPORT(58,
void, png_write_row, (png_structrp png_ptr,
1406 png_const_bytep row));
1413PNG_EXPORT(59,
void, png_write_rows, (png_structrp png_ptr, png_bytepp row,
1414 png_uint_32 num_rows));
1417PNG_EXPORT(60,
void, png_write_image, (png_structrp png_ptr, png_bytepp image));
1420PNG_EXPORT(61,
void, png_write_end, (png_structrp png_ptr,
1421 png_inforp info_ptr));
1423#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1425PNG_EXPORT(62,
void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr));
1429PNG_EXPORT(63,
void, png_destroy_info_struct, (png_const_structrp png_ptr,
1430 png_infopp info_ptr_ptr));
1433PNG_EXPORT(64,
void, png_destroy_read_struct, (png_structpp png_ptr_ptr,
1434 png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
1437PNG_EXPORT(65,
void, png_destroy_write_struct, (png_structpp png_ptr_ptr,
1438 png_infopp info_ptr_ptr));
1441PNG_EXPORT(66,
void, png_set_crc_action, (png_structrp png_ptr,
int crit_action,
1453#define PNG_CRC_DEFAULT 0
1454#define PNG_CRC_ERROR_QUIT 1
1455#define PNG_CRC_WARN_DISCARD 2
1456#define PNG_CRC_WARN_USE 3
1457#define PNG_CRC_QUIET_USE 4
1458#define PNG_CRC_NO_CHANGE 5
1460#ifdef PNG_WRITE_SUPPORTED
1472PNG_EXPORT(67,
void, png_set_filter, (png_structrp png_ptr,
int method,
1481#define PNG_NO_FILTERS 0x00
1482#define PNG_FILTER_NONE 0x08
1483#define PNG_FILTER_SUB 0x10
1484#define PNG_FILTER_UP 0x20
1485#define PNG_FILTER_AVG 0x40
1486#define PNG_FILTER_PAETH 0x80
1487#define PNG_FAST_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP)
1488#define PNG_ALL_FILTERS (PNG_FAST_FILTERS | PNG_FILTER_AVG | PNG_FILTER_PAETH)
1493#define PNG_FILTER_VALUE_NONE 0
1494#define PNG_FILTER_VALUE_SUB 1
1495#define PNG_FILTER_VALUE_UP 2
1496#define PNG_FILTER_VALUE_AVG 3
1497#define PNG_FILTER_VALUE_PAETH 4
1498#define PNG_FILTER_VALUE_LAST 5
1500#ifdef PNG_WRITE_SUPPORTED
1501#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
1502PNG_FP_EXPORT(68,
void, png_set_filter_heuristics, (png_structrp png_ptr,
1503 int heuristic_method,
int num_weights, png_const_doublep filter_weights,
1504 png_const_doublep filter_costs))
1505PNG_FIXED_EXPORT(209,
void, png_set_filter_heuristics_fixed,
1506 (png_structrp png_ptr,
int heuristic_method,
int num_weights,
1507 png_const_fixed_point_p filter_weights,
1508 png_const_fixed_point_p filter_costs))
1512#define PNG_FILTER_HEURISTIC_DEFAULT 0
1513#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1
1514#define PNG_FILTER_HEURISTIC_WEIGHTED 2
1515#define PNG_FILTER_HEURISTIC_LAST 3
1524#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED
1525PNG_EXPORT(69,
void, png_set_compression_level, (png_structrp png_ptr,
1528PNG_EXPORT(70,
void, png_set_compression_mem_level, (png_structrp png_ptr,
1531PNG_EXPORT(71,
void, png_set_compression_strategy, (png_structrp png_ptr,
1537PNG_EXPORT(72,
void, png_set_compression_window_bits, (png_structrp png_ptr,
1540PNG_EXPORT(73,
void, png_set_compression_method, (png_structrp png_ptr,
1544#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
1546PNG_EXPORT(222,
void, png_set_text_compression_level, (png_structrp png_ptr,
1549PNG_EXPORT(223,
void, png_set_text_compression_mem_level, (png_structrp png_ptr,
1552PNG_EXPORT(224,
void, png_set_text_compression_strategy, (png_structrp png_ptr,
1558PNG_EXPORT(225,
void, png_set_text_compression_window_bits,
1559 (png_structrp png_ptr,
int window_bits));
1561PNG_EXPORT(226,
void, png_set_text_compression_method, (png_structrp png_ptr,
1575#ifdef PNG_STDIO_SUPPORTED
1577PNG_EXPORT(74,
void, png_init_io, (png_structrp png_ptr, FILE *fp));
1588PNG_EXPORT(75,
void, png_set_error_fn, (png_structrp png_ptr,
1589 png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
1592PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr));
1604PNG_EXPORT(77,
void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr,
1605 png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
1608PNG_EXPORT(78,
void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr,
1609 png_rw_ptr read_data_fn));
1612PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr));
1614PNG_EXPORT(80,
void, png_set_read_status_fn, (png_structrp png_ptr,
1615 png_read_status_ptr read_row_fn));
1617PNG_EXPORT(81,
void, png_set_write_status_fn, (png_structrp png_ptr,
1618 png_write_status_ptr write_row_fn));
1620#ifdef PNG_USER_MEM_SUPPORTED
1622PNG_EXPORT(82,
void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr,
1623 png_malloc_ptr malloc_fn, png_free_ptr free_fn));
1625PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr));
1628#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
1629PNG_EXPORT(84,
void, png_set_read_user_transform_fn, (png_structrp png_ptr,
1630 png_user_transform_ptr read_user_transform_fn));
1633#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
1634PNG_EXPORT(85,
void, png_set_write_user_transform_fn, (png_structrp png_ptr,
1635 png_user_transform_ptr write_user_transform_fn));
1638#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
1639PNG_EXPORT(86,
void, png_set_user_transform_info, (png_structrp png_ptr,
1640 png_voidp user_transform_ptr,
int user_transform_depth,
1641 int user_transform_channels));
1643PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr,
1644 (png_const_structrp png_ptr));
1647#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED
1659PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp));
1660PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp));
1663#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
1683PNG_EXPORT(88,
void, png_set_read_user_chunk_fn, (png_structrp png_ptr,
1684 png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
1687#ifdef PNG_USER_CHUNKS_SUPPORTED
1688PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr));
1691#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1695PNG_EXPORT(90,
void, png_set_progressive_read_fn, (png_structrp png_ptr,
1696 png_voidp progressive_ptr, png_progressive_info_ptr info_fn,
1697 png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn));
1700PNG_EXPORT(91, png_voidp, png_get_progressive_ptr,
1701 (png_const_structrp png_ptr));
1704PNG_EXPORT(92,
void, png_process_data, (png_structrp png_ptr,
1705 png_inforp info_ptr, png_bytep buffer,
size_t buffer_size));
1714PNG_EXPORT(219,
size_t, png_process_data_pause, (png_structrp,
int save));
1722PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp));
1729PNG_EXPORT(93,
void, png_progressive_combine_row, (png_const_structrp png_ptr,
1730 png_bytep old_row, png_const_bytep new_row));
1733PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr,
1734 png_alloc_size_t size), PNG_ALLOCATED);
1736PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr,
1737 png_alloc_size_t size), PNG_ALLOCATED);
1740PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr,
1741 png_alloc_size_t size), PNG_ALLOCATED);
1744PNG_EXPORT(97,
void, png_free, (png_const_structrp png_ptr, png_voidp ptr));
1747PNG_EXPORT(98,
void, png_free_data, (png_const_structrp png_ptr,
1748 png_inforp info_ptr, png_uint_32 free_me,
int num));
1754PNG_EXPORT(99,
void, png_data_freer, (png_const_structrp png_ptr,
1755 png_inforp info_ptr,
int freer, png_uint_32 mask));
1758#define PNG_DESTROY_WILL_FREE_DATA 1
1759#define PNG_SET_WILL_FREE_DATA 1
1760#define PNG_USER_WILL_FREE_DATA 2
1762#define PNG_FREE_HIST 0x0008U
1763#define PNG_FREE_ICCP 0x0010U
1764#define PNG_FREE_SPLT 0x0020U
1765#define PNG_FREE_ROWS 0x0040U
1766#define PNG_FREE_PCAL 0x0080U
1767#define PNG_FREE_SCAL 0x0100U
1768#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
1769# define PNG_FREE_UNKN 0x0200U
1772#define PNG_FREE_PLTE 0x1000U
1773#define PNG_FREE_TRNS 0x2000U
1774#define PNG_FREE_TEXT 0x4000U
1775#define PNG_FREE_EXIF 0x8000U
1776#define PNG_FREE_ALL 0xffffU
1777#define PNG_FREE_MUL 0x4220U
1779#ifdef PNG_USER_MEM_SUPPORTED
1780PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr,
1781 png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED);
1782PNG_EXPORTA(101,
void, png_free_default, (png_const_structrp png_ptr,
1783 png_voidp ptr), PNG_DEPRECATED);
1786#ifdef PNG_ERROR_TEXT_SUPPORTED
1788PNG_EXPORTA(102,
void, png_error, (png_const_structrp png_ptr,
1789 png_const_charp error_message), PNG_NORETURN);
1792PNG_EXPORTA(103,
void, png_chunk_error, (png_const_structrp png_ptr,
1793 png_const_charp error_message), PNG_NORETURN);
1797PNG_EXPORTA(104,
void, png_err, (png_const_structrp png_ptr), PNG_NORETURN);
1798# define png_error(s1,s2) png_err(s1)
1799# define png_chunk_error(s1,s2) png_err(s1)
1802#ifdef PNG_WARNINGS_SUPPORTED
1804PNG_EXPORT(105,
void, png_warning, (png_const_structrp png_ptr,
1805 png_const_charp warning_message));
1808PNG_EXPORT(106,
void, png_chunk_warning, (png_const_structrp png_ptr,
1809 png_const_charp warning_message));
1811# define png_warning(s1,s2) ((void)(s1))
1812# define png_chunk_warning(s1,s2) ((void)(s1))
1815#ifdef PNG_BENIGN_ERRORS_SUPPORTED
1818PNG_EXPORT(107,
void, png_benign_error, (png_const_structrp png_ptr,
1819 png_const_charp warning_message));
1821#ifdef PNG_READ_SUPPORTED
1823PNG_EXPORT(108,
void, png_chunk_benign_error, (png_const_structrp png_ptr,
1824 png_const_charp warning_message));
1827PNG_EXPORT(109,
void, png_set_benign_errors,
1828 (png_structrp png_ptr,
int allowed));
1830# ifdef PNG_ALLOW_BENIGN_ERRORS
1831# define png_benign_error png_warning
1832# define png_chunk_benign_error png_chunk_warning
1834# define png_benign_error png_error
1835# define png_chunk_benign_error png_chunk_error
1852PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr,
1853 png_const_inforp info_ptr, png_uint_32 flag));
1856PNG_EXPORT(111,
size_t, png_get_rowbytes, (png_const_structrp png_ptr,
1857 png_const_inforp info_ptr));
1859#ifdef PNG_INFO_IMAGE_SUPPORTED
1863PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr,
1864 png_const_inforp info_ptr));
1869PNG_EXPORT(113,
void, png_set_rows, (png_const_structrp png_ptr,
1870 png_inforp info_ptr, png_bytepp row_pointers));
1874PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr,
1875 png_const_inforp info_ptr));
1877#ifdef PNG_EASY_ACCESS_SUPPORTED
1879PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr,
1880 png_const_inforp info_ptr));
1883PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr,
1884 png_const_inforp info_ptr));
1887PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr,
1888 png_const_inforp info_ptr));
1891PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr,
1892 png_const_inforp info_ptr));
1895PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr,
1896 png_const_inforp info_ptr));
1899PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr,
1900 png_const_inforp info_ptr));
1903PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr,
1904 png_const_inforp info_ptr));
1907PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter,
1908 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1909PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter,
1910 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1911PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter,
1912 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1915PNG_FP_EXPORT(125,
float, png_get_pixel_aspect_ratio,
1916 (png_const_structrp png_ptr, png_const_inforp info_ptr))
1917PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed,
1918 (png_const_structrp png_ptr, png_const_inforp info_ptr))
1921PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels,
1922 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1923PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels,
1924 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1925PNG_EXPORT(128, png_int_32, png_get_x_offset_microns,
1926 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1927PNG_EXPORT(129, png_int_32, png_get_y_offset_microns,
1928 (png_const_structrp png_ptr, png_const_inforp info_ptr));
1932#ifdef PNG_READ_SUPPORTED
1934PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr,
1935 png_const_inforp info_ptr));
1938#ifdef PNG_bKGD_SUPPORTED
1939PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr,
1940 png_inforp info_ptr, png_color_16p *background));
1943#ifdef PNG_bKGD_SUPPORTED
1944PNG_EXPORT(132,
void, png_set_bKGD, (png_const_structrp png_ptr,
1945 png_inforp info_ptr, png_const_color_16p background));
1948#ifdef PNG_cHRM_SUPPORTED
1949PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr,
1950 png_const_inforp info_ptr,
double *white_x,
double *white_y,
double *red_x,
1951 double *red_y,
double *green_x,
double *green_y,
double *blue_x,
1953PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr,
1954 png_const_inforp info_ptr,
double *red_X,
double *red_Y,
double *red_Z,
1955 double *green_X,
double *green_Y,
double *green_Z,
double *blue_X,
1956 double *blue_Y,
double *blue_Z))
1957PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed,
1958 (png_const_structrp png_ptr, png_const_inforp info_ptr,
1959 png_fixed_point *int_white_x, png_fixed_point *int_white_y,
1960 png_fixed_point *int_red_x, png_fixed_point *int_red_y,
1961 png_fixed_point *int_green_x, png_fixed_point *int_green_y,
1962 png_fixed_point *int_blue_x, png_fixed_point *int_blue_y))
1963PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed,
1964 (png_const_structrp png_ptr, png_const_inforp info_ptr,
1965 png_fixed_point *int_red_X, png_fixed_point *int_red_Y,
1966 png_fixed_point *int_red_Z, png_fixed_point *int_green_X,
1967 png_fixed_point *int_green_Y, png_fixed_point *int_green_Z,
1968 png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y,
1969 png_fixed_point *int_blue_Z))
1972#ifdef PNG_cHRM_SUPPORTED
1973PNG_FP_EXPORT(135,
void, png_set_cHRM, (png_const_structrp png_ptr,
1974 png_inforp info_ptr,
1975 double white_x,
double white_y,
double red_x,
double red_y,
double green_x,
1976 double green_y,
double blue_x,
double blue_y))
1977PNG_FP_EXPORT(232,
void, png_set_cHRM_XYZ, (png_const_structrp png_ptr,
1978 png_inforp info_ptr,
double red_X,
double red_Y,
double red_Z,
1979 double green_X,
double green_Y,
double green_Z,
double blue_X,
1980 double blue_Y,
double blue_Z))
1981PNG_FIXED_EXPORT(136,
void, png_set_cHRM_fixed, (png_const_structrp png_ptr,
1982 png_inforp info_ptr, png_fixed_point int_white_x,
1983 png_fixed_point int_white_y, png_fixed_point int_red_x,
1984 png_fixed_point int_red_y, png_fixed_point int_green_x,
1985 png_fixed_point int_green_y, png_fixed_point int_blue_x,
1986 png_fixed_point int_blue_y))
1987PNG_FIXED_EXPORT(233,
void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr,
1988 png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y,
1989 png_fixed_point int_red_Z, png_fixed_point int_green_X,
1990 png_fixed_point int_green_Y, png_fixed_point int_green_Z,
1991 png_fixed_point int_blue_X, png_fixed_point int_blue_Y,
1992 png_fixed_point int_blue_Z))
1995#ifdef PNG_cICP_SUPPORTED
1996PNG_EXPORT(250, png_uint_32, png_get_cICP, (png_const_structrp png_ptr,
1997 png_const_inforp info_ptr, png_bytep colour_primaries,
1998 png_bytep transfer_function, png_bytep matrix_coefficients,
1999 png_bytep video_full_range_flag));
2002#ifdef PNG_cICP_SUPPORTED
2003PNG_EXPORT(251,
void, png_set_cICP, (png_const_structrp png_ptr,
2004 png_inforp info_ptr, png_byte colour_primaries,
2005 png_byte transfer_function, png_byte matrix_coefficients,
2006 png_byte video_full_range_flag));
2009#ifdef PNG_cLLI_SUPPORTED
2010PNG_FP_EXPORT(252, png_uint_32, png_get_cLLI, (png_const_structrp png_ptr,
2011 png_const_inforp info_ptr,
double *maximum_content_light_level,
2012 double *maximum_frame_average_light_level))
2013PNG_FIXED_EXPORT(253, png_uint_32, png_get_cLLI_fixed,
2014 (png_const_structrp png_ptr, png_const_inforp info_ptr,
2018 png_uint_32p maximum_content_light_level_scaled_by_10000,
2019 png_uint_32p maximum_frame_average_light_level_scaled_by_10000))
2022#ifdef PNG_cLLI_SUPPORTED
2023PNG_FP_EXPORT(254,
void, png_set_cLLI, (png_const_structrp png_ptr,
2024 png_inforp info_ptr,
double maximum_content_light_level,
2025 double maximum_frame_average_light_level))
2026PNG_FIXED_EXPORT(255,
void, png_set_cLLI_fixed, (png_const_structrp png_ptr,
2027 png_inforp info_ptr,
2031 png_uint_32 maximum_content_light_level_scaled_by_10000,
2032 png_uint_32 maximum_frame_average_light_level_scaled_by_10000))
2035#ifdef PNG_eXIf_SUPPORTED
2036PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr,
2037 png_inforp info_ptr, png_bytep *exif));
2038PNG_EXPORT(247,
void, png_set_eXIf, (png_const_structrp png_ptr,
2039 png_inforp info_ptr, png_bytep exif));
2041PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, (png_const_structrp png_ptr,
2042 png_const_inforp info_ptr, png_uint_32 *num_exif, png_bytep *exif));
2043PNG_EXPORT(249,
void, png_set_eXIf_1, (png_const_structrp png_ptr,
2044 png_inforp info_ptr, png_uint_32 num_exif, png_bytep exif));
2047#ifdef PNG_gAMA_SUPPORTED
2048PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr,
2049 png_const_inforp info_ptr,
double *file_gamma))
2050PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed,
2051 (png_const_structrp png_ptr, png_const_inforp info_ptr,
2052 png_fixed_point *int_file_gamma))
2055#ifdef PNG_gAMA_SUPPORTED
2056PNG_FP_EXPORT(139,
void, png_set_gAMA, (png_const_structrp png_ptr,
2057 png_inforp info_ptr,
double file_gamma))
2058PNG_FIXED_EXPORT(140,
void, png_set_gAMA_fixed, (png_const_structrp png_ptr,
2059 png_inforp info_ptr, png_fixed_point int_file_gamma))
2062#ifdef PNG_hIST_SUPPORTED
2063PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr,
2064 png_inforp info_ptr, png_uint_16p *hist));
2065PNG_EXPORT(142,
void, png_set_hIST, (png_const_structrp png_ptr,
2066 png_inforp info_ptr, png_const_uint_16p hist));
2069PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr,
2070 png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height,
2071 int *bit_depth,
int *color_type,
int *interlace_method,
2072 int *compression_method,
int *filter_method));
2074PNG_EXPORT(144,
void, png_set_IHDR, (png_const_structrp png_ptr,
2075 png_inforp info_ptr, png_uint_32 width, png_uint_32 height,
int bit_depth,
2076 int color_type,
int interlace_method,
int compression_method,
2077 int filter_method));
2079#ifdef PNG_mDCV_SUPPORTED
2080PNG_FP_EXPORT(256, png_uint_32, png_get_mDCV, (png_const_structrp png_ptr,
2081 png_const_inforp info_ptr,
2086 double *white_x,
double *white_y,
double *red_x,
double *red_y,
2087 double *green_x,
double *green_y,
double *blue_x,
double *blue_y,
2089 double *mastering_display_maximum_luminance,
2090 double *mastering_display_minimum_luminance))
2092PNG_FIXED_EXPORT(257, png_uint_32, png_get_mDCV_fixed,
2093 (png_const_structrp png_ptr, png_const_inforp info_ptr,
2094 png_fixed_point *int_white_x, png_fixed_point *int_white_y,
2095 png_fixed_point *int_red_x, png_fixed_point *int_red_y,
2096 png_fixed_point *int_green_x, png_fixed_point *int_green_y,
2097 png_fixed_point *int_blue_x, png_fixed_point *int_blue_y,
2101 png_uint_32p mastering_display_maximum_luminance_scaled_by_10000,
2102 png_uint_32p mastering_display_minimum_luminance_scaled_by_10000))
2105#ifdef PNG_mDCV_SUPPORTED
2106PNG_FP_EXPORT(258,
void, png_set_mDCV, (png_const_structrp png_ptr,
2107 png_inforp info_ptr,
2111 double white_x,
double white_y,
double red_x,
double red_y,
double green_x,
2112 double green_y,
double blue_x,
double blue_y,
2114 double mastering_display_maximum_luminance,
2115 double mastering_display_minimum_luminance))
2117PNG_FIXED_EXPORT(259,
void, png_set_mDCV_fixed, (png_const_structrp png_ptr,
2118 png_inforp info_ptr,
2122 png_fixed_point int_white_x, png_fixed_point int_white_y,
2123 png_fixed_point int_red_x, png_fixed_point int_red_y,
2124 png_fixed_point int_green_x, png_fixed_point int_green_y,
2125 png_fixed_point int_blue_x, png_fixed_point int_blue_y,
2129 png_uint_32 mastering_display_maximum_luminance_scaled_by_10000,
2130 png_uint_32 mastering_display_minimum_luminance_scaled_by_10000))
2133#ifdef PNG_oFFs_SUPPORTED
2134PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr,
2135 png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y,
2139#ifdef PNG_oFFs_SUPPORTED
2140PNG_EXPORT(146,
void, png_set_oFFs, (png_const_structrp png_ptr,
2141 png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y,
2145#ifdef PNG_pCAL_SUPPORTED
2146PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr,
2147 png_inforp info_ptr, png_charp *purpose, png_int_32 *X0,
2148 png_int_32 *X1,
int *type,
int *nparams, png_charp *units,
2149 png_charpp *params));
2152#ifdef PNG_pCAL_SUPPORTED
2153PNG_EXPORT(148,
void, png_set_pCAL, (png_const_structrp png_ptr,
2154 png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1,
2155 int type,
int nparams, png_const_charp units, png_charpp params));
2158#ifdef PNG_pHYs_SUPPORTED
2159PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr,
2160 png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,
2164#ifdef PNG_pHYs_SUPPORTED
2165PNG_EXPORT(150,
void, png_set_pHYs, (png_const_structrp png_ptr,
2166 png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y,
int unit_type));
2169PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr,
2170 png_inforp info_ptr, png_colorp *palette,
int *num_palette));
2172PNG_EXPORT(152,
void, png_set_PLTE, (png_structrp png_ptr,
2173 png_inforp info_ptr, png_const_colorp palette,
int num_palette));
2175#ifdef PNG_sBIT_SUPPORTED
2176PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr,
2177 png_inforp info_ptr, png_color_8p *sig_bit));
2180#ifdef PNG_sBIT_SUPPORTED
2181PNG_EXPORT(154,
void, png_set_sBIT, (png_const_structrp png_ptr,
2182 png_inforp info_ptr, png_const_color_8p sig_bit));
2185#ifdef PNG_sRGB_SUPPORTED
2186PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr,
2187 png_const_inforp info_ptr,
int *file_srgb_intent));
2190#ifdef PNG_sRGB_SUPPORTED
2191PNG_EXPORT(156,
void, png_set_sRGB, (png_const_structrp png_ptr,
2192 png_inforp info_ptr,
int srgb_intent));
2193PNG_EXPORT(157,
void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr,
2194 png_inforp info_ptr,
int srgb_intent));
2197#ifdef PNG_iCCP_SUPPORTED
2198PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr,
2199 png_inforp info_ptr, png_charpp name,
int *compression_type,
2200 png_bytepp profile, png_uint_32 *proflen));
2203#ifdef PNG_iCCP_SUPPORTED
2204PNG_EXPORT(159,
void, png_set_iCCP, (png_const_structrp png_ptr,
2205 png_inforp info_ptr, png_const_charp name,
int compression_type,
2206 png_const_bytep profile, png_uint_32 proflen));
2209#ifdef PNG_sPLT_SUPPORTED
2210PNG_EXPORT(160,
int, png_get_sPLT, (png_const_structrp png_ptr,
2211 png_inforp info_ptr, png_sPLT_tpp entries));
2214#ifdef PNG_sPLT_SUPPORTED
2215PNG_EXPORT(161,
void, png_set_sPLT, (png_const_structrp png_ptr,
2216 png_inforp info_ptr, png_const_sPLT_tp entries,
int nentries));
2219#ifdef PNG_TEXT_SUPPORTED
2221PNG_EXPORT(162,
int, png_get_text, (png_const_structrp png_ptr,
2222 png_inforp info_ptr, png_textp *text_ptr,
int *num_text));
2232#ifdef PNG_TEXT_SUPPORTED
2233PNG_EXPORT(163,
void, png_set_text, (png_const_structrp png_ptr,
2234 png_inforp info_ptr, png_const_textp text_ptr,
int num_text));
2237#ifdef PNG_tIME_SUPPORTED
2238PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr,
2239 png_inforp info_ptr, png_timep *mod_time));
2242#ifdef PNG_tIME_SUPPORTED
2243PNG_EXPORT(165,
void, png_set_tIME, (png_const_structrp png_ptr,
2244 png_inforp info_ptr, png_const_timep mod_time));
2247#ifdef PNG_tRNS_SUPPORTED
2248PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr,
2249 png_inforp info_ptr, png_bytep *trans_alpha,
int *num_trans,
2250 png_color_16p *trans_color));
2253#ifdef PNG_tRNS_SUPPORTED
2254PNG_EXPORT(167,
void, png_set_tRNS, (png_structrp png_ptr,
2255 png_inforp info_ptr, png_const_bytep trans_alpha,
int num_trans,
2256 png_const_color_16p trans_color));
2259#ifdef PNG_sCAL_SUPPORTED
2260PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr,
2261 png_const_inforp info_ptr,
int *unit,
double *width,
double *height))
2262#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \
2263 defined(PNG_FLOATING_POINT_SUPPORTED)
2269PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed,
2270 (png_const_structrp png_ptr, png_const_inforp info_ptr,
int *unit,
2271 png_fixed_point *width, png_fixed_point *height))
2273PNG_EXPORT(169, png_uint_32, png_get_sCAL_s,
2274 (png_const_structrp png_ptr, png_const_inforp info_ptr,
int *unit,
2275 png_charpp swidth, png_charpp sheight));
2277PNG_FP_EXPORT(170,
void, png_set_sCAL, (png_const_structrp png_ptr,
2278 png_inforp info_ptr,
int unit,
double width,
double height))
2279PNG_FIXED_EXPORT(213,
void, png_set_sCAL_fixed, (png_const_structrp png_ptr,
2280 png_inforp info_ptr,
int unit, png_fixed_point width,
2281 png_fixed_point height))
2282PNG_EXPORT(171,
void, png_set_sCAL_s, (png_const_structrp png_ptr,
2283 png_inforp info_ptr,
int unit,
2284 png_const_charp swidth, png_const_charp sheight));
2287#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED
2386#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
2387PNG_EXPORT(172,
void, png_set_keep_unknown_chunks, (png_structrp png_ptr,
2388 int keep, png_const_bytep chunk_list,
int num_chunks));
2395PNG_EXPORT(173,
int, png_handle_as_unknown, (png_const_structrp png_ptr,
2396 png_const_bytep chunk_name));
2399#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
2400PNG_EXPORT(174,
void, png_set_unknown_chunks, (png_const_structrp png_ptr,
2401 png_inforp info_ptr, png_const_unknown_chunkp unknowns,
2412PNG_EXPORT(175,
void, png_set_unknown_chunk_location,
2413 (png_const_structrp png_ptr, png_inforp info_ptr,
int chunk,
int location));
2415PNG_EXPORT(176,
int, png_get_unknown_chunks, (png_const_structrp png_ptr,
2416 png_inforp info_ptr, png_unknown_chunkpp entries));
2423PNG_EXPORT(177,
void, png_set_invalid, (png_const_structrp png_ptr,
2424 png_inforp info_ptr,
int mask));
2426#ifdef PNG_INFO_IMAGE_SUPPORTED
2428#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
2429PNG_EXPORT(178,
void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr,
2430 int transforms, png_voidp params));
2432#ifdef PNG_WRITE_SUPPORTED
2433PNG_EXPORT(179,
void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr,
2434 int transforms, png_voidp params));
2438PNG_EXPORT(180, png_const_charp, png_get_copyright,
2439 (png_const_structrp png_ptr));
2440PNG_EXPORT(181, png_const_charp, png_get_header_ver,
2441 (png_const_structrp png_ptr));
2442PNG_EXPORT(182, png_const_charp, png_get_header_version,
2443 (png_const_structrp png_ptr));
2444PNG_EXPORT(183, png_const_charp, png_get_libpng_ver,
2445 (png_const_structrp png_ptr));
2447#ifdef PNG_MNG_FEATURES_SUPPORTED
2448PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr,
2449 png_uint_32 mng_features_permitted));
2453#define PNG_HANDLE_CHUNK_AS_DEFAULT 0
2454#define PNG_HANDLE_CHUNK_NEVER 1
2455#define PNG_HANDLE_CHUNK_IF_SAFE 2
2456#define PNG_HANDLE_CHUNK_ALWAYS 3
2457#define PNG_HANDLE_CHUNK_LAST 4
2462#ifdef PNG_ERROR_NUMBERS_SUPPORTED
2463PNG_EXPORT(185,
void, png_set_strip_error_numbers, (png_structrp png_ptr,
2464 png_uint_32 strip_mode));
2468#ifdef PNG_SET_USER_LIMITS_SUPPORTED
2469PNG_EXPORT(186,
void, png_set_user_limits, (png_structrp png_ptr,
2470 png_uint_32 user_width_max, png_uint_32 user_height_max));
2471PNG_EXPORT(187, png_uint_32, png_get_user_width_max,
2472 (png_const_structrp png_ptr));
2473PNG_EXPORT(188, png_uint_32, png_get_user_height_max,
2474 (png_const_structrp png_ptr));
2476PNG_EXPORT(189,
void, png_set_chunk_cache_max, (png_structrp png_ptr,
2477 png_uint_32 user_chunk_cache_max));
2478PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max,
2479 (png_const_structrp png_ptr));
2481PNG_EXPORT(191,
void, png_set_chunk_malloc_max, (png_structrp png_ptr,
2482 png_alloc_size_t user_chunk_cache_max));
2483PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max,
2484 (png_const_structrp png_ptr));
2487#if defined(PNG_INCH_CONVERSIONS_SUPPORTED)
2488PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch,
2489 (png_const_structrp png_ptr, png_const_inforp info_ptr));
2491PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch,
2492 (png_const_structrp png_ptr, png_const_inforp info_ptr));
2494PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch,
2495 (png_const_structrp png_ptr, png_const_inforp info_ptr));
2497PNG_FP_EXPORT(196,
float, png_get_x_offset_inches,
2498 (png_const_structrp png_ptr, png_const_inforp info_ptr))
2499#ifdef PNG_FIXED_POINT_SUPPORTED
2500PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed,
2501 (png_const_structrp png_ptr, png_const_inforp info_ptr))
2504PNG_FP_EXPORT(197,
float, png_get_y_offset_inches, (png_const_structrp png_ptr,
2505 png_const_inforp info_ptr))
2506#ifdef PNG_FIXED_POINT_SUPPORTED
2507PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed,
2508 (png_const_structrp png_ptr, png_const_inforp info_ptr))
2511# ifdef PNG_pHYs_SUPPORTED
2512PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr,
2513 png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,
2519#ifdef PNG_IO_STATE_SUPPORTED
2520PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr));
2523PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr),
2526PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type,
2527 (png_const_structrp png_ptr));
2530# define PNG_IO_NONE 0x0000
2531# define PNG_IO_READING 0x0001
2532# define PNG_IO_WRITING 0x0002
2533# define PNG_IO_SIGNATURE 0x0010
2534# define PNG_IO_CHUNK_HDR 0x0020
2535# define PNG_IO_CHUNK_DATA 0x0040
2536# define PNG_IO_CHUNK_CRC 0x0080
2537# define PNG_IO_MASK_OP 0x000f
2538# define PNG_IO_MASK_LOC 0x00f0
2545#define PNG_INTERLACE_ADAM7_PASSES 7
2551#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7)
2552#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7)
2559#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8)
2560#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1))
2566#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3)
2567#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3)
2574#define PNG_PASS_ROWS(height, pass) (((height)+(((1<<PNG_PASS_ROW_SHIFT(pass))\
2575 -1)-PNG_PASS_START_ROW(pass)))>>PNG_PASS_ROW_SHIFT(pass))
2576#define PNG_PASS_COLS(width, pass) (((width)+(((1<<PNG_PASS_COL_SHIFT(pass))\
2577 -1)-PNG_PASS_START_COL(pass)))>>PNG_PASS_COL_SHIFT(pass))
2583#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \
2584 (((y_in)<<PNG_PASS_ROW_SHIFT(pass))+PNG_PASS_START_ROW(pass))
2585#define PNG_COL_FROM_PASS_COL(x_in, pass) \
2586 (((x_in)<<PNG_PASS_COL_SHIFT(pass))+PNG_PASS_START_COL(pass))
2594#define PNG_PASS_MASK(pass,off) ( \
2595 ((0x110145AF>>(((7-(off))-(pass))<<2)) & 0xF) | \
2596 ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0))
2598#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \
2599 ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1)
2600#define PNG_COL_IN_INTERLACE_PASS(x, pass) \
2601 ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1)
2603#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
2618# define png_composite(composite, fg, alpha, bg) \
2620 png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \
2621 * (png_uint_16)(alpha) \
2622 + (png_uint_16)(bg)*(png_uint_16)(255 \
2623 - (png_uint_16)(alpha)) + 128); \
2624 (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); \
2627# define png_composite_16(composite, fg, alpha, bg) \
2629 png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \
2630 * (png_uint_32)(alpha) \
2631 + (png_uint_32)(bg)*(65535 \
2632 - (png_uint_32)(alpha)) + 32768); \
2633 (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); \
2638# define png_composite(composite, fg, alpha, bg) \
2640 (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \
2641 (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
2644# define png_composite_16(composite, fg, alpha, bg) \
2646 (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \
2647 (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \
2651#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED
2652PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf));
2653PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf));
2654PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf));
2657PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr,
2658 png_const_bytep buf));
2662#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
2663PNG_EXPORT(205,
void, png_save_uint_32, (png_bytep buf, png_uint_32 i));
2665#ifdef PNG_SAVE_INT_32_SUPPORTED
2666PNG_EXPORT(206,
void, png_save_int_32, (png_bytep buf, png_int_32 i));
2673#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
2674PNG_EXPORT(207,
void, png_save_uint_16, (png_bytep buf,
unsigned int i));
2678#ifdef PNG_USE_READ_MACROS
2683# define PNG_get_uint_32(buf) \
2684 (((png_uint_32)(*(buf)) << 24) + \
2685 ((png_uint_32)(*((buf) + 1)) << 16) + \
2686 ((png_uint_32)(*((buf) + 2)) << 8) + \
2687 ((png_uint_32)(*((buf) + 3))))
2692# define PNG_get_uint_16(buf) \
2694 (((unsigned int)(*(buf)) << 8) + \
2695 ((unsigned int)(*((buf) + 1)))))
2697# define PNG_get_int_32(buf) \
2698 ((png_int_32)((*(buf) & 0x80) \
2699 ? -((png_int_32)(((png_get_uint_32(buf)^0xffffffffU)+1U)&0x7fffffffU)) \
2700 : (png_int_32)png_get_uint_32(buf)))
2706# define png_get_uint_32(buf) PNG_get_uint_32(buf)
2707# define png_get_uint_16(buf) PNG_get_uint_16(buf)
2708# define png_get_int_32(buf) PNG_get_int_32(buf)
2713# define PNG_get_uint_32 (png_get_uint_32)
2714# define PNG_get_uint_16 (png_get_uint_16)
2715# define PNG_get_int_32 (png_get_int_32)
2719#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
2720PNG_EXPORT(242,
void, png_set_check_for_invalid_index,
2721 (png_structrp png_ptr,
int allowed));
2722# ifdef PNG_GET_PALETTE_MAX_SUPPORTED
2723PNG_EXPORT(243,
int, png_get_palette_max, (png_const_structp png_ptr,
2724 png_const_infop info_ptr));
2774#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \
2775 defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
2777#define PNG_IMAGE_VERSION 1
2782 png_controlp opaque;
2783 png_uint_32 version;
2788 png_uint_32 colormap_entries;
2800# define PNG_IMAGE_WARNING 1
2801# define PNG_IMAGE_ERROR 2
2811# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1)
2813 png_uint_32 warning_or_error;
2886#define PNG_FORMAT_FLAG_ALPHA 0x01U
2887#define PNG_FORMAT_FLAG_COLOR 0x02U
2888#define PNG_FORMAT_FLAG_LINEAR 0x04U
2889#define PNG_FORMAT_FLAG_COLORMAP 0x08U
2891#ifdef PNG_FORMAT_BGR_SUPPORTED
2892# define PNG_FORMAT_FLAG_BGR 0x10U
2895#ifdef PNG_FORMAT_AFIRST_SUPPORTED
2896# define PNG_FORMAT_FLAG_AFIRST 0x20U
2899#define PNG_FORMAT_FLAG_ASSOCIATED_ALPHA 0x40U
2905#define PNG_FORMAT_GRAY 0
2906#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA
2907#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST)
2908#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR
2909#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR)
2910#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA)
2911#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST)
2912#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA)
2913#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST)
2918#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR
2919#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA)
2920#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR)
2921#define PNG_FORMAT_LINEAR_RGB_ALPHA \
2922 (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA)
2929#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP)
2930#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP)
2931#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP)
2932#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP)
2933#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP)
2934#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP)
2954#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\
2955 (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1)
2958#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\
2959 ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1)
2964#define PNG_IMAGE_SAMPLE_SIZE(fmt)\
2965 (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt))
2971#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\
2972 (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256)
2987#define PNG_IMAGE_PIXEL_(test,fmt)\
2988 (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt))
2990#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\
2991 PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt)
2996#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\
2997 PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt)
3002#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt)
3006#define PNG_IMAGE_ROW_STRIDE(image)\
3007 (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width)
3018#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\
3019 (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride))
3027#define PNG_IMAGE_SIZE(image)\
3028 PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image))
3033#define PNG_IMAGE_COLORMAP_SIZE(image)\
3034 (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries)
3046#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01
3051#define PNG_IMAGE_FLAG_FAST 0x02
3062#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04
3080#ifdef PNG_SIMPLIFIED_READ_SUPPORTED
3087#ifdef PNG_STDIO_SUPPORTED
3088PNG_EXPORT(234,
int, png_image_begin_read_from_file, (png_imagep image,
3089 const char *file_name));
3094PNG_EXPORT(235,
int, png_image_begin_read_from_stdio, (png_imagep image,
3099PNG_EXPORT(236,
int, png_image_begin_read_from_memory, (png_imagep image,
3100 png_const_voidp memory,
size_t size));
3103PNG_EXPORT(237,
int, png_image_finish_read, (png_imagep image,
3104 png_const_colorp background,
void *buffer, png_int_32 row_stride,
3138PNG_EXPORT(238,
void, png_image_free, (png_imagep image));
3144#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED
3161#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED
3162PNG_EXPORT(239,
int, png_image_write_to_file, (png_imagep image,
3163 const char *file,
int convert_to_8bit,
const void *buffer,
3164 png_int_32 row_stride,
const void *colormap));
3167PNG_EXPORT(240,
int, png_image_write_to_stdio, (png_imagep image, FILE *file,
3168 int convert_to_8_bit,
const void *buffer, png_int_32 row_stride,
3169 const void *colormap));
3194PNG_EXPORT(245,
int, png_image_write_to_memory, (png_imagep image,
void *memory,
3195 png_alloc_size_t * PNG_RESTRICT memory_bytes,
int convert_to_8_bit,
3196 const void *buffer, png_int_32 row_stride,
const void *colormap));
3219#define png_image_write_get_memory_size(image, size, convert_to_8_bit, buffer,\
3220 row_stride, colormap)\
3221 png_image_write_to_memory(&(image), 0, &(size), convert_to_8_bit, buffer,\
3222 row_stride, colormap)
3238#define PNG_IMAGE_DATA_SIZE(image) (PNG_IMAGE_SIZE(image)+(image).height)
3248#ifndef PNG_ZLIB_MAX_SIZE
3249# define PNG_ZLIB_MAX_SIZE(b) ((b)+(((b)+7U)>>3)+(((b)+63U)>>6)+11U)
3258#define PNG_IMAGE_COMPRESSED_SIZE_MAX(image)\
3259 PNG_ZLIB_MAX_SIZE((png_alloc_size_t)PNG_IMAGE_DATA_SIZE(image))
3262#define PNG_IMAGE_PNG_SIZE_MAX_(image, image_size)\
3263 ((8U+25U+16U+44U+12U+\
3264 (((image).format&PNG_FORMAT_FLAG_COLORMAP)?\
3265 12U+3U*(image).colormap_entries+\
3266 (((image).format&PNG_FORMAT_FLAG_ALPHA)?\
3267 12U+(image).colormap_entries:0U):0U)+\
3268 12U)+(12U*((image_size)/PNG_ZBUF_SIZE))+(image_size))
3275#define PNG_IMAGE_PNG_SIZE_MAX(image)\
3276 PNG_IMAGE_PNG_SIZE_MAX_(image, PNG_IMAGE_COMPRESSED_SIZE_MAX(image))
3309#ifdef PNG_SET_OPTION_SUPPORTED
3312#ifdef PNG_ARM_NEON_API_SUPPORTED
3313# define PNG_ARM_NEON 0
3317#define PNG_MAXIMUM_INFLATE_WINDOW 2
3320#define PNG_SKIP_sRGB_CHECK_PROFILE 4
3323#ifdef PNG_MIPS_MSA_API_SUPPORTED
3324# define PNG_MIPS_MSA 6
3328#ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED
3329# define PNG_IGNORE_ADLER32 8
3333#ifdef PNG_POWERPC_VSX_API_SUPPORTED
3334# define PNG_POWERPC_VSX 10
3338#ifdef PNG_MIPS_MMI_API_SUPPORTED
3339# define PNG_MIPS_MMI 12
3343#ifdef PNG_RISCV_RVV_API_SUPPORTED
3344# define PNG_RISCV_RVV 14
3348#define PNG_OPTION_NEXT 16
3351#define PNG_OPTION_UNSET 0
3352#define PNG_OPTION_INVALID 1
3353#define PNG_OPTION_OFF 2
3354#define PNG_OPTION_ON 3
3356PNG_EXPORT(244,
int, png_set_option, (png_structrp png_ptr,
int option,
3371#ifdef PNG_EXPORT_LAST_ORDINAL
3372 PNG_EXPORT_LAST_ORDINAL(259);