34# error Duplicate inclusion of pngpriv.h; please check the libpng source files
37#if defined(PNG_H) || defined(PNGCONF_H) || defined(PNGLCONF_H)
38# error This file must not be included by applications; please include <png.h>
54# define _POSIX_SOURCE 1
57#ifndef PNG_VERSION_INFO_ONLY
74#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
77# define PNG_RESTRICT restrict
88#if defined(PNG_PREFIX) && !defined(PNGPREFIX_H)
89# include "pngprefix.h"
95# ifndef PNG_USER_PRIVATEBUILD
96# define PNG_USER_PRIVATEBUILD "Custom libpng build"
98# ifndef PNG_USER_DLLFNAME_POSTFIX
99# define PNG_USER_DLLFNAME_POSTFIX "Cb"
122#ifndef PNG_ARM_NEON_OPT
142# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
143 defined(PNG_ALIGNED_MEMORY_SUPPORTED)
144# define PNG_ARM_NEON_OPT 2
146# define PNG_ARM_NEON_OPT 0
150#ifndef PNG_RISCV_RVV_OPT
161# define PNG_RISCV_RVV_OPT 0
164#if PNG_ARM_NEON_OPT > 0
168# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon
169# ifndef PNG_ARM_NEON_IMPLEMENTATION
171# define PNG_ARM_NEON_IMPLEMENTATION 1
174# define PNG_ARM_NEON_IMPLEMENTATION 0
177#ifndef PNG_MIPS_MSA_OPT
178# if defined(__mips_msa) && (__mips_isa_rev >= 5) && \
179 defined(PNG_ALIGNED_MEMORY_SUPPORTED)
180# define PNG_MIPS_MSA_OPT 2
182# define PNG_MIPS_MSA_OPT 0
186#ifndef PNG_MIPS_MMI_OPT
188# if defined(__mips_loongson_mmi) && (_MIPS_SIM == _ABI64) && \
189 defined(PNG_ALIGNED_MEMORY_SUPPORTED)
190# define PNG_MIPS_MMI_OPT 1
192# define PNG_MIPS_MMI_OPT 0
195# define PNG_MIPS_MMI_OPT 0
199#ifndef PNG_POWERPC_VSX_OPT
200# if defined(__PPC64__) && defined(__ALTIVEC__) && defined(__VSX__)
201# define PNG_POWERPC_VSX_OPT 2
203# define PNG_POWERPC_VSX_OPT 0
207#ifndef PNG_LOONGARCH_LSX_OPT
208# if defined(__loongarch_sx)
209# define PNG_LOONGARCH_LSX_OPT 1
211# define PNG_LOONGARCH_LSX_OPT 0
215#ifndef PNG_INTEL_SSE_OPT
221# if defined(__SSE4_1__) || defined(__AVX__) || defined(__SSSE3__) || \
222 defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
223 (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
224# define PNG_INTEL_SSE_OPT 1
226# define PNG_INTEL_SSE_OPT 0
229# define PNG_INTEL_SSE_OPT 0
233#if PNG_INTEL_SSE_OPT > 0
234# ifndef PNG_INTEL_SSE_IMPLEMENTATION
235# if defined(__SSE4_1__) || defined(__AVX__)
239# define PNG_INTEL_SSE_IMPLEMENTATION 3
240# elif defined(__SSSE3__)
241# define PNG_INTEL_SSE_IMPLEMENTATION 2
242# elif defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
243 (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
244# define PNG_INTEL_SSE_IMPLEMENTATION 1
246# define PNG_INTEL_SSE_IMPLEMENTATION 0
250# if PNG_INTEL_SSE_IMPLEMENTATION > 0
251# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2
254# define PNG_INTEL_SSE_IMPLEMENTATION 0
257#if PNG_MIPS_MSA_OPT > 0
258# ifndef PNG_MIPS_MSA_IMPLEMENTATION
259# if defined(__mips_msa)
260# if defined(__clang__)
261# elif defined(__GNUC__)
262# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
263# define PNG_MIPS_MSA_IMPLEMENTATION 2
267# define PNG_MIPS_MSA_IMPLEMENTATION 2
271# ifndef PNG_MIPS_MSA_IMPLEMENTATION
272# define PNG_MIPS_MSA_IMPLEMENTATION 1
273# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_mips
276# define PNG_MIPS_MSA_IMPLEMENTATION 0
279#if PNG_MIPS_MMI_OPT > 0
280# ifndef PNG_MIPS_MMI_IMPLEMENTATION
281# if defined(__mips_loongson_mmi) && (_MIPS_SIM == _ABI64)
282# define PNG_MIPS_MMI_IMPLEMENTATION 2
284# define PNG_MIPS_MMI_IMPLEMENTATION 0
288# if PNG_MIPS_MMI_IMPLEMENTATION > 0
289# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_mips
292# define PNG_MIPS_MMI_IMPLEMENTATION 0
295#if PNG_POWERPC_VSX_OPT > 0
296# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_vsx
297# define PNG_POWERPC_VSX_IMPLEMENTATION 1
299# define PNG_POWERPC_VSX_IMPLEMENTATION 0
302#if PNG_LOONGARCH_LSX_OPT > 0
303# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_lsx
304# define PNG_LOONGARCH_LSX_IMPLEMENTATION 1
306# define PNG_LOONGARCH_LSX_IMPLEMENTATION 0
309#if PNG_RISCV_RVV_OPT > 0 && __riscv_v >= 1000000
310# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_rvv
311# ifndef PNG_RISCV_RVV_IMPLEMENTATION
313# define PNG_RISCV_RVV_IMPLEMENTATION 1
316# define PNG_RISCV_RVV_IMPLEMENTATION 0
333# define PNG_BUILD_DLL
342# define PNG_BUILD_DLL
348# define PNG_BUILD_DLL
366# define PNG_IMPEXP PNG_DLL_EXPORT
376#ifndef PNG_DEPRECATED
377# define PNG_DEPRECATED
388#ifndef PNG_INTERNAL_DATA
389# define PNG_INTERNAL_DATA(type, name, array) PNG_LINKAGE_DATA type name array
392#ifndef PNG_INTERNAL_FUNCTION
393# define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\
394 PNG_LINKAGE_FUNCTION PNG_FUNCTION(type, name, args, PNG_EMPTY attributes)
397#ifndef PNG_INTERNAL_CALLBACK
398# define PNG_INTERNAL_CALLBACK(type, name, args, attributes)\
399 PNG_LINKAGE_CALLBACK PNG_FUNCTION(type, (PNGCBAPI name), args,\
400 PNG_EMPTY attributes)
413# ifndef PNG_FLOATING_POINT_SUPPORTED
414# define PNG_FP_EXPORT(ordinal, type, name, args)\
415 PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY);
416# ifndef PNG_VERSION_INFO_ONLY
417 typedef struct png_incomplete png_double;
418 typedef png_double* png_doublep;
419 typedef const png_double* png_const_doublep;
420 typedef png_double** png_doublepp;
424#ifndef PNG_FIXED_EXPORT
425# ifndef PNG_FIXED_POINT_SUPPORTED
426# define PNG_FIXED_EXPORT(ordinal, type, name, args)\
427 PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY);
434#ifndef PNG_DLL_EXPORT
435# define PNG_DLL_EXPORT
450#ifndef PNG_RELEASE_BUILD
451# define PNG_RELEASE_BUILD (PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC)
472#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
473# define PNG_MAX_MALLOC_64K
483# define PNG_UNUSED(param) (void)param;
489#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K)
491# define PNG_ZBUF_SIZE 65536L
498#ifdef PNG_WARNINGS_SUPPORTED
499# define PNG_WARNING_PARAMETERS(p) png_warning_parameters p;
501# define png_warning_parameter(p,number,string) ((void)0)
502# define png_warning_parameter_unsigned(p,number,format,value) ((void)0)
503# define png_warning_parameter_signed(p,number,format,value) ((void)0)
504# define png_formatted_warning(pp,p,message) ((void)(pp))
505# define PNG_WARNING_PARAMETERS(p)
507#ifndef PNG_ERROR_TEXT_SUPPORTED
508# define png_fixed_error(s1,s2) png_err(s1)
515#ifdef PNG_FIXED_POINT_SUPPORTED
516# define PNGFAPI PNGAPI
521#ifndef PNG_VERSION_INFO_ONLY
532# define png_voidcast(type, value) static_cast<type>(value)
533# define png_constcast(type, value) const_cast<type>(value)
534# define png_aligncast(type, value) \
535 static_cast<type>(static_cast<void*>(value))
536# define png_aligncastconst(type, value) \
537 static_cast<type>(static_cast<const void*>(value))
539# define png_voidcast(type, value) (value)
540# define png_constcast(type, value) ((type)(void*)(const void*)(value))
541# define png_aligncast(type, value) ((void*)(value))
542# define png_aligncastconst(type, value) ((const void*)(value))
545#if defined(PNG_FLOATING_POINT_SUPPORTED) ||\
546 defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)
558# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
567#if defined(__TURBOC__) && defined(__MSDOS__)
572#if defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
584# define PNG_ABORT() abort()
588#define PNG_ALIGN_NONE 0
589#define PNG_ALIGN_ALWAYS 1
591# define PNG_ALIGN_OFFSET 2
593# define PNG_ALIGN_OFFSET -1
595#define PNG_ALIGN_SIZE 3
597#ifndef PNG_ALIGN_TYPE
602# define PNG_ALIGN_TYPE PNG_ALIGN_SIZE
605#if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE
612# define png_alignof(type) (sizeof(type))
614# if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET
615# define png_alignof(type) offsetof(struct{char c; type t;}, t)
617# if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS
618# define png_alignof(type) 1
626# define png_isaligned(ptr, type) \
627 (((type)(size_t)((const void*)(ptr)) & (type)(png_alignof(type)-1)) == 0)
629# define png_isaligned(ptr, type) 0
646#define PNG_HAVE_IDAT 0x04U
648#define PNG_HAVE_IEND 0x10U
652#define PNG_HAVE_CHUNK_HEADER 0x100U
653#define PNG_WROTE_tIME 0x200U
654#define PNG_WROTE_INFO_BEFORE_PLTE 0x400U
655#define PNG_BACKGROUND_IS_GRAY 0x800U
656#define PNG_HAVE_PNG_SIGNATURE 0x1000U
657#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U
658#define PNG_WROTE_eXIf 0x4000U
659#define PNG_IS_READ_STRUCT 0x8000U
662#define PNG_BGR 0x0001U
663#define PNG_INTERLACE 0x0002U
664#define PNG_PACK 0x0004U
665#define PNG_SHIFT 0x0008U
666#define PNG_SWAP_BYTES 0x0010U
667#define PNG_INVERT_MONO 0x0020U
668#define PNG_QUANTIZE 0x0040U
669#define PNG_COMPOSE 0x0080U
670#define PNG_BACKGROUND_EXPAND 0x0100U
671#define PNG_EXPAND_16 0x0200U
672#define PNG_16_TO_8 0x0400U
673#define PNG_RGBA 0x0800U
674#define PNG_EXPAND 0x1000U
675#define PNG_GAMMA 0x2000U
676#define PNG_GRAY_TO_RGB 0x4000U
677#define PNG_FILLER 0x8000U
678#define PNG_PACKSWAP 0x10000U
679#define PNG_SWAP_ALPHA 0x20000U
680#define PNG_STRIP_ALPHA 0x40000U
681#define PNG_INVERT_ALPHA 0x80000U
682#define PNG_USER_TRANSFORM 0x100000U
683#define PNG_RGB_TO_GRAY_ERR 0x200000U
684#define PNG_RGB_TO_GRAY_WARN 0x400000U
685#define PNG_RGB_TO_GRAY 0x600000U
686#define PNG_ENCODE_ALPHA 0x800000U
687#define PNG_ADD_ALPHA 0x1000000U
688#define PNG_EXPAND_tRNS 0x2000000U
689#define PNG_SCALE_16_TO_8 0x4000000U
695#define PNG_STRUCT_PNG 0x0001U
696#define PNG_STRUCT_INFO 0x0002U
699#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001U
700#define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002U
702#define PNG_FLAG_ZSTREAM_ENDED 0x0008U
705#define PNG_FLAG_ROW_INIT 0x0040U
706#define PNG_FLAG_FILLER_AFTER 0x0080U
707#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100U
708#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200U
709#define PNG_FLAG_CRC_CRITICAL_USE 0x0400U
710#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800U
712#define PNG_FLAG_OPTIMIZE_ALPHA 0x2000U
713#define PNG_FLAG_DETECT_UNINITIALIZED 0x4000U
716#define PNG_FLAG_LIBRARY_MISMATCH 0x20000U
718#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000U
719#define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000U
720#define PNG_FLAG_APP_WARNINGS_WARN 0x200000U
721#define PNG_FLAG_APP_ERRORS_WARN 0x400000U
731#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
732 PNG_FLAG_CRC_ANCILLARY_NOWARN)
734#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
735 PNG_FLAG_CRC_CRITICAL_IGNORE)
737#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
738 PNG_FLAG_CRC_CRITICAL_MASK)
742#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
743 abs((int)((c1).green) - (int)((c2).green)) + \
744 abs((int)((c1).blue) - (int)((c2).blue)))
754#define PNG_DIV65535(v24) (((v24) + 32895) >> 16)
755#define PNG_DIV257(v16) PNG_DIV65535((png_uint_32)(v16) * 255)
758#define PNG_ROWBYTES(pixel_bits, width) \
759 ((pixel_bits) >= 8 ? \
760 ((size_t)(width) * (((size_t)(pixel_bits)) >> 3)) : \
761 (( ((size_t)(width) * ((size_t)(pixel_bits))) + 7) >> 3) )
775#define PNG_TRAILBITS(pixel_bits, width) \
776 (((pixel_bits) * ((width) % (png_uint_32)8)) % 8)
778#define PNG_PADBITS(pixel_bits, width) \
779 ((8 - PNG_TRAILBITS(pixel_bits, width)) % 8)
786#define PNG_OUT_OF_RANGE(value, ideal, delta) \
787 ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
793#ifdef PNG_FLOATING_POINT_SUPPORTED
801#define png_float(png_ptr, fixed, s) (.00001 * (fixed))
819#ifdef PNG_FIXED_POINT_MACRO_SUPPORTED
820#define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\
821 ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0))
822#define png_fixed_ITU(png_ptr, fp, s) ((fp) <= 214748 && (fp) >= 0 ?\
823 ((png_uint_32)(10000 * (fp))) : (png_fixed_error(png_ptr, s),0))
847#define PNG_32b(b,s) (((0xFFFFFFFFU)&(b)) << (s))
848#define PNG_U32(b1,b2,b3,b4) \
849 (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0))
858#define PNG_32to8(cn,s) (((cn) >> (s)) & 0xffU)
859#define PNG_CN_VALID_UPPER(b) ((b) >= 65 && (b) <= 90)
860#define PNG_CN_VALID_ASCII(b) PNG_CN_VALID_UPPER((b) & ~32U)
861#define PNG_CHUNK_NAME_VALID(cn) (\
862 PNG_CN_VALID_ASCII(PNG_32to8(cn,24)) && \
863 PNG_CN_VALID_ASCII(PNG_32to8(cn,16)) && \
864 PNG_CN_VALID_UPPER(PNG_32to8(cn, 8)) && \
865 PNG_CN_VALID_ASCII(PNG_32to8(cn, 0)) )
890#define png_IDAT PNG_U32( 73, 68, 65, 84)
891#define png_IEND PNG_U32( 73, 69, 78, 68)
892#define png_IHDR PNG_U32( 73, 72, 68, 82)
893#define png_PLTE PNG_U32( 80, 76, 84, 69)
894#define png_acTL PNG_U32( 97, 99, 84, 76)
895#define png_bKGD PNG_U32( 98, 75, 71, 68)
896#define png_cHRM PNG_U32( 99, 72, 82, 77)
897#define png_cICP PNG_U32( 99, 73, 67, 80)
898#define png_cLLI PNG_U32( 99, 76, 76, 73)
899#define png_eXIf PNG_U32(101, 88, 73, 102)
900#define png_fcTL PNG_U32(102, 99, 84, 76)
901#define png_fdAT PNG_U32(102, 100, 65, 84)
902#define png_fRAc PNG_U32(102, 82, 65, 99)
903#define png_gAMA PNG_U32(103, 65, 77, 65)
904#define png_gIFg PNG_U32(103, 73, 70, 103)
905#define png_gIFt PNG_U32(103, 73, 70, 116)
906#define png_gIFx PNG_U32(103, 73, 70, 120)
907#define png_hIST PNG_U32(104, 73, 83, 84)
908#define png_iCCP PNG_U32(105, 67, 67, 80)
909#define png_iTXt PNG_U32(105, 84, 88, 116)
910#define png_mDCV PNG_U32(109, 68, 67, 86)
911#define png_oFFs PNG_U32(111, 70, 70, 115)
912#define png_pCAL PNG_U32(112, 67, 65, 76)
913#define png_pHYs PNG_U32(112, 72, 89, 115)
914#define png_sBIT PNG_U32(115, 66, 73, 84)
915#define png_sCAL PNG_U32(115, 67, 65, 76)
916#define png_sPLT PNG_U32(115, 80, 76, 84)
917#define png_sRGB PNG_U32(115, 82, 71, 66)
918#define png_sTER PNG_U32(115, 84, 69, 82)
919#define png_tEXt PNG_U32(116, 69, 88, 116)
920#define png_tIME PNG_U32(116, 73, 77, 69)
921#define png_tRNS PNG_U32(116, 82, 78, 83)
922#define png_zTXt PNG_U32(122, 84, 88, 116)
927#define PNG_CHUNK_FROM_STRING(s)\
928 PNG_U32(0xff & (s)[0], 0xff & (s)[1], 0xff & (s)[2], 0xff & (s)[3])
934#define PNG_STRING_FROM_CHUNK(s,c)\
935 (void)(((char*)(s))[0]=(char)(((c)>>24) & 0xff), \
936 ((char*)(s))[1]=(char)(((c)>>16) & 0xff),\
937 ((char*)(s))[2]=(char)(((c)>>8) & 0xff), \
938 ((char*)(s))[3]=(char)((c & 0xff)))
941#define PNG_CSTRING_FROM_CHUNK(s,c)\
942 (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0)
945#define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29))
946#define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c))
947#define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21))
948#define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13))
949#define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5))
971#define PNG_KNOWN_CHUNKS\
1002#define PNG_GAMMA_MAC_OLD 151724
1003#define PNG_GAMMA_MAC_INVERSE 65909
1004#define PNG_GAMMA_sRGB_INVERSE 45455
1016#define PNG_LIB_GAMMA_MIN 1000
1017#define PNG_LIB_GAMMA_MAX 10000000
1022#ifndef PNG_VERSION_INFO_ONLY
1030#if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM
1031# error The include path of <zlib.h> is incorrect
1046typedef const png_uint_16p * png_const_uint_16pp;
1049#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\
1050 defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
1051#ifdef PNG_SIMPLIFIED_READ_SUPPORTED
1052PNG_INTERNAL_DATA(
const png_uint_16, png_sRGB_table, [256]);
1058PNG_INTERNAL_DATA(
const png_uint_16, png_sRGB_base, [512]);
1059PNG_INTERNAL_DATA(
const png_byte, png_sRGB_delta, [512]);
1061#define PNG_sRGB_FROM_LINEAR(linear) \
1062 ((png_byte)(0xff & ((png_sRGB_base[(linear)>>15] \
1063 + ((((linear) & 0x7fff)*png_sRGB_delta[(linear)>>15])>>12)) >> 8)))
1081#define PNG_UNEXPECTED_ZLIB_RETURN (-7)
1082PNG_INTERNAL_FUNCTION(
void, png_zstream_error,(png_structrp png_ptr,
int ret),
1088#ifdef PNG_WRITE_SUPPORTED
1089PNG_INTERNAL_FUNCTION(
void,png_free_buffer_list,(png_structrp png_ptr,
1090 png_compression_bufferp *list),PNG_EMPTY);
1094#if defined(PNG_FLOATING_POINT_SUPPORTED) && \
1095 !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \
1096 (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \
1097 defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \
1098 defined(PNG_mDCV_SUPPORTED) || \
1099 defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \
1100 (defined(PNG_sCAL_SUPPORTED) && \
1101 defined(PNG_FLOATING_ARITHMETIC_SUPPORTED))
1102PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr,
1103 double fp, png_const_charp text),PNG_EMPTY);
1106#if defined(PNG_FLOATING_POINT_SUPPORTED) && \
1107 !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \
1108 (defined(PNG_cLLI_SUPPORTED) || defined(PNG_mDCV_SUPPORTED))
1109PNG_INTERNAL_FUNCTION(png_uint_32,png_fixed_ITU,(png_const_structrp png_ptr,
1110 double fp, png_const_charp text),PNG_EMPTY);
1116PNG_INTERNAL_FUNCTION(
int,png_user_version_check,(png_structrp png_ptr,
1117 png_const_charp user_png_ver),PNG_EMPTY);
1119#ifdef PNG_READ_SUPPORTED
1124#ifdef PNG_SET_USER_LIMITS_SUPPORTED
1125# define png_chunk_max(png_ptr) ((png_ptr)->user_chunk_malloc_max)
1127#elif PNG_USER_CHUNK_MALLOC_MAX > 0
1128# define png_chunk_max(png_ptr) ((void)png_ptr, PNG_USER_CHUNK_MALLOC_MAX)
1130#elif (defined PNG_MAX_MALLOC_64K)
1131# define png_chunk_max(png_ptr) ((void)png_ptr, 65536U)
1134# define png_chunk_max(png_ptr) ((void)png_ptr, PNG_SIZE_MAX)
1142PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr,
1143 png_alloc_size_t size),PNG_ALLOCATED);
1145#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\
1146 defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED)
1150PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr,
1151 int nelements,
size_t element_size),PNG_ALLOCATED);
1157PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr,
1158 png_const_voidp array,
int old_elements,
int add_elements,
1159 size_t element_size),PNG_ALLOCATED);
1168PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct,
1169 (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
1170 png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn,
1171 png_free_ptr free_fn),PNG_ALLOCATED);
1174PNG_INTERNAL_FUNCTION(
void,png_destroy_png_struct,(png_structrp png_ptr),
1178PNG_INTERNAL_FUNCTION(
void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY);
1181PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size),
1185PNG_INTERNAL_FUNCTION(
void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY);
1192PNG_INTERNAL_FUNCTION(
void PNGCBAPI,png_default_read_data,(png_structp png_ptr,
1193 png_bytep data,
size_t length),PNG_EMPTY);
1195#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1196PNG_INTERNAL_FUNCTION(
void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr,
1197 png_bytep buffer,
size_t length),PNG_EMPTY);
1200PNG_INTERNAL_FUNCTION(
void PNGCBAPI,png_default_write_data,(png_structp png_ptr,
1201 png_bytep data,
size_t length),PNG_EMPTY);
1203#ifdef PNG_WRITE_FLUSH_SUPPORTED
1204# ifdef PNG_STDIO_SUPPORTED
1205PNG_INTERNAL_FUNCTION(
void PNGCBAPI,png_default_flush,(png_structp png_ptr),
1211PNG_INTERNAL_FUNCTION(
void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY);
1214PNG_INTERNAL_FUNCTION(
void,png_write_data,(png_structrp png_ptr,
1215 png_const_bytep data,
size_t length),PNG_EMPTY);
1218PNG_INTERNAL_FUNCTION(
void,png_read_sig,(png_structrp png_ptr,
1219 png_inforp info_ptr),PNG_EMPTY);
1222PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr),
1226PNG_INTERNAL_FUNCTION(
void,png_read_data,(png_structrp png_ptr, png_bytep data,
1227 size_t length),PNG_EMPTY);
1230PNG_INTERNAL_FUNCTION(
void,png_crc_read,(png_structrp png_ptr, png_bytep buf,
1231 png_uint_32 length),PNG_EMPTY);
1234PNG_INTERNAL_FUNCTION(
int,png_crc_finish,(png_structrp png_ptr,
1235 png_uint_32 skip),PNG_EMPTY);
1241PNG_INTERNAL_FUNCTION(
void,png_calculate_crc,(png_structrp png_ptr,
1242 png_const_bytep ptr,
size_t length),PNG_EMPTY);
1244#ifdef PNG_WRITE_FLUSH_SUPPORTED
1245PNG_INTERNAL_FUNCTION(
void,png_flush,(png_structrp png_ptr),PNG_EMPTY);
1253PNG_INTERNAL_FUNCTION(
void,png_write_IHDR,(png_structrp png_ptr,
1254 png_uint_32 width, png_uint_32 height,
int bit_depth,
int color_type,
1255 int compression_method,
int filter_method,
int interlace_method),PNG_EMPTY);
1257PNG_INTERNAL_FUNCTION(
void,png_write_PLTE,(png_structrp png_ptr,
1258 png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY);
1260PNG_INTERNAL_FUNCTION(
void,png_compress_IDAT,(png_structrp png_ptr,
1261 png_const_bytep row_data, png_alloc_size_t row_data_length,
int flush),
1264PNG_INTERNAL_FUNCTION(
void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY);
1266#ifdef PNG_WRITE_gAMA_SUPPORTED
1267PNG_INTERNAL_FUNCTION(
void,png_write_gAMA_fixed,(png_structrp png_ptr,
1268 png_fixed_point file_gamma),PNG_EMPTY);
1271#ifdef PNG_WRITE_sBIT_SUPPORTED
1272PNG_INTERNAL_FUNCTION(
void,png_write_sBIT,(png_structrp png_ptr,
1273 png_const_color_8p sbit,
int color_type),PNG_EMPTY);
1276#ifdef PNG_WRITE_cHRM_SUPPORTED
1277PNG_INTERNAL_FUNCTION(
void,png_write_cHRM_fixed,(png_structrp png_ptr,
1278 const png_xy *xy), PNG_EMPTY);
1282#ifdef PNG_WRITE_cICP_SUPPORTED
1283PNG_INTERNAL_FUNCTION(
void,png_write_cICP,(png_structrp png_ptr,
1284 png_byte colour_primaries, png_byte transfer_function,
1285 png_byte matrix_coefficients, png_byte video_full_range_flag), PNG_EMPTY);
1288#ifdef PNG_WRITE_cLLI_SUPPORTED
1289PNG_INTERNAL_FUNCTION(
void,png_write_cLLI_fixed,(png_structrp png_ptr,
1290 png_uint_32 maxCLL, png_uint_32 maxFALL), PNG_EMPTY);
1293#ifdef PNG_WRITE_mDCV_SUPPORTED
1294PNG_INTERNAL_FUNCTION(
void,png_write_mDCV_fixed,(png_structrp png_ptr,
1295 png_uint_16 red_x, png_uint_16 red_y,
1296 png_uint_16 green_x, png_uint_16 green_y,
1297 png_uint_16 blue_x, png_uint_16 blue_y,
1298 png_uint_16 white_x, png_uint_16 white_y,
1299 png_uint_32 maxDL, png_uint_32 minDL), PNG_EMPTY);
1302#ifdef PNG_WRITE_sRGB_SUPPORTED
1303PNG_INTERNAL_FUNCTION(
void,png_write_sRGB,(png_structrp png_ptr,
1304 int intent),PNG_EMPTY);
1307#ifdef PNG_WRITE_eXIf_SUPPORTED
1308PNG_INTERNAL_FUNCTION(
void,png_write_eXIf,(png_structrp png_ptr,
1309 png_bytep exif,
int num_exif),PNG_EMPTY);
1312#ifdef PNG_WRITE_iCCP_SUPPORTED
1313PNG_INTERNAL_FUNCTION(
void,png_write_iCCP,(png_structrp png_ptr,
1314 png_const_charp name, png_const_bytep profile, png_uint_32 proflen),
1321#ifdef PNG_WRITE_sPLT_SUPPORTED
1322PNG_INTERNAL_FUNCTION(
void,png_write_sPLT,(png_structrp png_ptr,
1323 png_const_sPLT_tp palette),PNG_EMPTY);
1326#ifdef PNG_WRITE_tRNS_SUPPORTED
1327PNG_INTERNAL_FUNCTION(
void,png_write_tRNS,(png_structrp png_ptr,
1328 png_const_bytep trans, png_const_color_16p values,
int number,
1329 int color_type),PNG_EMPTY);
1332#ifdef PNG_WRITE_bKGD_SUPPORTED
1333PNG_INTERNAL_FUNCTION(
void,png_write_bKGD,(png_structrp png_ptr,
1334 png_const_color_16p values,
int color_type),PNG_EMPTY);
1337#ifdef PNG_WRITE_hIST_SUPPORTED
1338PNG_INTERNAL_FUNCTION(
void,png_write_hIST,(png_structrp png_ptr,
1339 png_const_uint_16p hist,
int num_hist),PNG_EMPTY);
1343#ifdef PNG_WRITE_tEXt_SUPPORTED
1344PNG_INTERNAL_FUNCTION(
void,png_write_tEXt,(png_structrp png_ptr,
1345 png_const_charp key, png_const_charp text,
size_t text_len),PNG_EMPTY);
1348#ifdef PNG_WRITE_zTXt_SUPPORTED
1349PNG_INTERNAL_FUNCTION(
void,png_write_zTXt,(png_structrp png_ptr, png_const_charp
1350 key, png_const_charp text,
int compression),PNG_EMPTY);
1353#ifdef PNG_WRITE_iTXt_SUPPORTED
1354PNG_INTERNAL_FUNCTION(
void,png_write_iTXt,(png_structrp png_ptr,
1355 int compression, png_const_charp key, png_const_charp lang,
1356 png_const_charp lang_key, png_const_charp text),PNG_EMPTY);
1359#ifdef PNG_TEXT_SUPPORTED
1360PNG_INTERNAL_FUNCTION(
int,png_set_text_2,(png_const_structrp png_ptr,
1361 png_inforp info_ptr, png_const_textp text_ptr,
int num_text),PNG_EMPTY);
1364#ifdef PNG_WRITE_oFFs_SUPPORTED
1365PNG_INTERNAL_FUNCTION(
void,png_write_oFFs,(png_structrp png_ptr,
1366 png_int_32 x_offset, png_int_32 y_offset,
int unit_type),PNG_EMPTY);
1369#ifdef PNG_WRITE_pCAL_SUPPORTED
1370PNG_INTERNAL_FUNCTION(
void,png_write_pCAL,(png_structrp png_ptr,
1371 png_charp purpose, png_int_32 X0, png_int_32 X1,
int type,
int nparams,
1372 png_const_charp units, png_charpp params),PNG_EMPTY);
1375#ifdef PNG_WRITE_pHYs_SUPPORTED
1376PNG_INTERNAL_FUNCTION(
void,png_write_pHYs,(png_structrp png_ptr,
1377 png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
1378 int unit_type),PNG_EMPTY);
1381#ifdef PNG_WRITE_tIME_SUPPORTED
1382PNG_INTERNAL_FUNCTION(
void,png_write_tIME,(png_structrp png_ptr,
1383 png_const_timep mod_time),PNG_EMPTY);
1386#ifdef PNG_WRITE_sCAL_SUPPORTED
1387PNG_INTERNAL_FUNCTION(
void,png_write_sCAL_s,(png_structrp png_ptr,
1388 int unit, png_const_charp width, png_const_charp height),PNG_EMPTY);
1392PNG_INTERNAL_FUNCTION(
void,png_write_finish_row,(png_structrp png_ptr),
1396PNG_INTERNAL_FUNCTION(
void,png_write_start_row,(png_structrp png_ptr),
1422#ifndef PNG_USE_COMPILE_TIME_MASKS
1423# define PNG_USE_COMPILE_TIME_MASKS 1
1425PNG_INTERNAL_FUNCTION(
void,png_combine_row,(png_const_structrp png_ptr,
1426 png_bytep row,
int display),PNG_EMPTY);
1428#ifdef PNG_READ_INTERLACING_SUPPORTED
1435PNG_INTERNAL_FUNCTION(
void,png_do_read_interlace,(png_row_infop row_info,
1436 png_bytep row,
int pass, png_uint_32 transformations),PNG_EMPTY);
1441#ifdef PNG_WRITE_INTERLACING_SUPPORTED
1443PNG_INTERNAL_FUNCTION(
void,png_do_write_interlace,(png_row_infop row_info,
1444 png_bytep row,
int pass),PNG_EMPTY);
1450PNG_INTERNAL_FUNCTION(
void,png_read_filter_row,(png_structrp pp, png_row_infop
1451 row_info, png_bytep row, png_const_bytep prev_row,
int filter),PNG_EMPTY);
1453#if PNG_ARM_NEON_OPT > 0
1454PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_neon,(png_row_infop row_info,
1455 png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1456PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_neon,(png_row_infop
1457 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1458PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_neon,(png_row_infop
1459 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1460PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_neon,(png_row_infop
1461 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1462PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_neon,(png_row_infop
1463 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1464PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_neon,(png_row_infop
1465 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1466PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_neon,(png_row_infop
1467 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1470#if PNG_MIPS_MSA_IMPLEMENTATION == 1
1471PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_msa,(png_row_infop row_info,
1472 png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1473PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_msa,(png_row_infop
1474 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1475PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_msa,(png_row_infop
1476 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1477PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_msa,(png_row_infop
1478 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1479PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_msa,(png_row_infop
1480 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1481PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_msa,(png_row_infop
1482 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1483PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_msa,(png_row_infop
1484 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1487#if PNG_MIPS_MMI_IMPLEMENTATION > 0
1488PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_mmi,(png_row_infop row_info,
1489 png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1490PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_mmi,(png_row_infop
1491 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1492PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_mmi,(png_row_infop
1493 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1494PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_mmi,(png_row_infop
1495 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1496PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_mmi,(png_row_infop
1497 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1498PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_mmi,(png_row_infop
1499 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1500PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_mmi,(png_row_infop
1501 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1504#if PNG_POWERPC_VSX_OPT > 0
1505PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_vsx,(png_row_infop row_info,
1506 png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1507PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_vsx,(png_row_infop
1508 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1509PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_vsx,(png_row_infop
1510 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1511PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_vsx,(png_row_infop
1512 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1513PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_vsx,(png_row_infop
1514 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1515PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_vsx,(png_row_infop
1516 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1517PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_vsx,(png_row_infop
1518 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1521#if PNG_INTEL_SSE_IMPLEMENTATION > 0
1522PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_sse2,(png_row_infop
1523 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1524PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_sse2,(png_row_infop
1525 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1526PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_sse2,(png_row_infop
1527 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1528PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_sse2,(png_row_infop
1529 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1530PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_sse2,(png_row_infop
1531 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1532PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_sse2,(png_row_infop
1533 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1536#if PNG_LOONGARCH_LSX_IMPLEMENTATION == 1
1537PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_lsx,(png_row_infop
1538 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1539PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_lsx,(png_row_infop
1540 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1541PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_lsx,(png_row_infop
1542 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1543PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_lsx,(png_row_infop
1544 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1545PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_lsx,(png_row_infop
1546 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1547PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_lsx,(png_row_infop
1548 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1549PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_lsx,(png_row_infop
1550 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1553#if PNG_RISCV_RVV_IMPLEMENTATION == 1
1554PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_up_rvv,(png_row_infop
1555 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1556PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub3_rvv,(png_row_infop
1557 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1558PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_sub4_rvv,(png_row_infop
1559 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1560PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg3_rvv,(png_row_infop
1561 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1562PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_avg4_rvv,(png_row_infop
1563 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1564PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth3_rvv,(png_row_infop
1565 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1566PNG_INTERNAL_FUNCTION(
void,png_read_filter_row_paeth4_rvv,(png_row_infop
1567 row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1571PNG_INTERNAL_FUNCTION(
void,png_write_find_filter,(png_structrp png_ptr,
1572 png_row_infop row_info),PNG_EMPTY);
1574#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1575PNG_INTERNAL_FUNCTION(
void,png_read_IDAT_data,(png_structrp png_ptr,
1576 png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY);
1582PNG_INTERNAL_FUNCTION(
void,png_read_finish_IDAT,(png_structrp png_ptr),
1588PNG_INTERNAL_FUNCTION(
void,png_read_finish_row,(png_structrp png_ptr),
1594PNG_INTERNAL_FUNCTION(
void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY);
1596#if ZLIB_VERNUM >= 0x1240
1597PNG_INTERNAL_FUNCTION(
int,png_zlib_inflate,(png_structrp png_ptr,
int flush),
1599# define PNG_INFLATE(pp, flush) png_zlib_inflate(pp, flush)
1601# define PNG_INFLATE(pp, flush) inflate(&(pp)->zstream, flush)
1604#ifdef PNG_READ_TRANSFORMS_SUPPORTED
1606PNG_INTERNAL_FUNCTION(
void,png_read_transform_info,(png_structrp png_ptr,
1607 png_inforp info_ptr),PNG_EMPTY);
1611#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
1612 defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
1613PNG_INTERNAL_FUNCTION(
void,png_do_strip_channel,(png_row_infop row_info,
1614 png_bytep row,
int at_start),PNG_EMPTY);
1617#ifdef PNG_16BIT_SUPPORTED
1618#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
1619PNG_INTERNAL_FUNCTION(
void,png_do_swap,(png_row_infop row_info,
1620 png_bytep row),PNG_EMPTY);
1624#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
1625 defined(PNG_WRITE_PACKSWAP_SUPPORTED)
1626PNG_INTERNAL_FUNCTION(
void,png_do_packswap,(png_row_infop row_info,
1627 png_bytep row),PNG_EMPTY);
1630#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
1631PNG_INTERNAL_FUNCTION(
void,png_do_invert,(png_row_infop row_info,
1632 png_bytep row),PNG_EMPTY);
1635#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
1636PNG_INTERNAL_FUNCTION(
void,png_do_bgr,(png_row_infop row_info,
1637 png_bytep row),PNG_EMPTY);
1656} png_handle_result_code;
1658PNG_INTERNAL_FUNCTION(png_handle_result_code,png_handle_unknown,
1659 (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length,
int keep),
1667PNG_INTERNAL_FUNCTION(png_handle_result_code,png_handle_chunk,
1668 (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1673#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\
1674 defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
1675PNG_INTERNAL_FUNCTION(
int,png_chunk_unknown_handling,
1676 (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY);
1683#ifdef PNG_READ_TRANSFORMS_SUPPORTED
1684PNG_INTERNAL_FUNCTION(
void,png_do_read_transformations,(png_structrp png_ptr,
1685 png_row_infop row_info),PNG_EMPTY);
1687#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED
1688PNG_INTERNAL_FUNCTION(
void,png_do_write_transformations,(png_structrp png_ptr,
1689 png_row_infop row_info),PNG_EMPTY);
1692#ifdef PNG_READ_TRANSFORMS_SUPPORTED
1693PNG_INTERNAL_FUNCTION(
void,png_init_read_transformations,(png_structrp png_ptr),
1697#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1698PNG_INTERNAL_FUNCTION(
void,png_push_read_chunk,(png_structrp png_ptr,
1699 png_inforp info_ptr),PNG_EMPTY);
1700PNG_INTERNAL_FUNCTION(
void,png_push_read_sig,(png_structrp png_ptr,
1701 png_inforp info_ptr),PNG_EMPTY);
1702PNG_INTERNAL_FUNCTION(
void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY);
1703PNG_INTERNAL_FUNCTION(
void,png_push_save_buffer,(png_structrp png_ptr),
1705PNG_INTERNAL_FUNCTION(
void,png_push_restore_buffer,(png_structrp png_ptr,
1706 png_bytep buffer,
size_t buffer_length),PNG_EMPTY);
1707PNG_INTERNAL_FUNCTION(
void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY);
1708PNG_INTERNAL_FUNCTION(
void,png_process_IDAT_data,(png_structrp png_ptr,
1709 png_bytep buffer,
size_t buffer_length),PNG_EMPTY);
1710PNG_INTERNAL_FUNCTION(
void,png_push_process_row,(png_structrp png_ptr),
1712PNG_INTERNAL_FUNCTION(
void,png_push_have_info,(png_structrp png_ptr,
1713 png_inforp info_ptr),PNG_EMPTY);
1714PNG_INTERNAL_FUNCTION(
void,png_push_have_end,(png_structrp png_ptr,
1715 png_inforp info_ptr),PNG_EMPTY);
1716PNG_INTERNAL_FUNCTION(
void,png_push_have_row,(png_structrp png_ptr,
1717 png_bytep row),PNG_EMPTY);
1718PNG_INTERNAL_FUNCTION(
void,png_push_read_end,(png_structrp png_ptr,
1719 png_inforp info_ptr),PNG_EMPTY);
1720PNG_INTERNAL_FUNCTION(
void,png_process_some_data,(png_structrp png_ptr,
1721 png_inforp info_ptr),PNG_EMPTY);
1722PNG_INTERNAL_FUNCTION(
void,png_read_push_finish_row,(png_structrp png_ptr),
1726#ifdef PNG_iCCP_SUPPORTED
1728#ifdef PNG_READ_iCCP_SUPPORTED
1729PNG_INTERNAL_FUNCTION(
int,png_icc_check_length,(png_const_structrp png_ptr,
1730 png_const_charp name, png_uint_32 profile_length), PNG_EMPTY);
1732PNG_INTERNAL_FUNCTION(
int,png_icc_check_header,(png_const_structrp png_ptr,
1733 png_const_charp name, png_uint_32 profile_length,
1734 png_const_bytep profile ,
int color_type),
1736PNG_INTERNAL_FUNCTION(
int,png_icc_check_tag_table,(png_const_structrp png_ptr,
1737 png_const_charp name, png_uint_32 profile_length,
1738 png_const_bytep profile ), PNG_EMPTY);
1741#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1742PNG_INTERNAL_FUNCTION(
void,png_set_rgb_coefficients, (png_structrp png_ptr),
1748PNG_INTERNAL_FUNCTION(
void,png_check_IHDR,(png_const_structrp png_ptr,
1749 png_uint_32 width, png_uint_32 height,
int bit_depth,
1750 int color_type,
int interlace_type,
int compression_type,
1751 int filter_type),PNG_EMPTY);
1754#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \
1755 defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED)
1756PNG_INTERNAL_FUNCTION(
void,png_do_check_palette_indexes,
1757 (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY);
1760#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)
1761PNG_INTERNAL_FUNCTION(
void,png_fixed_error,(png_const_structrp png_ptr,
1762 png_const_charp name),PNG_NORETURN);
1769PNG_INTERNAL_FUNCTION(
size_t,png_safecat,(png_charp buffer,
size_t bufsize,
1770 size_t pos, png_const_charp
string),PNG_EMPTY);
1775#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED)
1781PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start,
1782 png_charp end,
int format, png_alloc_size_t number),PNG_EMPTY);
1785#define PNG_FORMAT_NUMBER(buffer,format,number) \
1786 png_format_number(buffer, buffer + (sizeof buffer), format, number)
1789#define PNG_NUMBER_BUFFER_SIZE 24
1794#define PNG_NUMBER_FORMAT_u 1
1795#define PNG_NUMBER_FORMAT_02u 2
1796#define PNG_NUMBER_FORMAT_d 1
1797#define PNG_NUMBER_FORMAT_02d 2
1798#define PNG_NUMBER_FORMAT_x 3
1799#define PNG_NUMBER_FORMAT_02x 4
1800#define PNG_NUMBER_FORMAT_fixed 5
1803#ifdef PNG_WARNINGS_SUPPORTED
1805# define PNG_WARNING_PARAMETER_SIZE 32
1806# define PNG_WARNING_PARAMETER_COUNT 8
1811typedef char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][
1812 PNG_WARNING_PARAMETER_SIZE];
1814PNG_INTERNAL_FUNCTION(
void,png_warning_parameter,(png_warning_parameters p,
1815 int number, png_const_charp
string),PNG_EMPTY);
1819PNG_INTERNAL_FUNCTION(
void,png_warning_parameter_unsigned,
1820 (png_warning_parameters p,
int number,
int format, png_alloc_size_t value),
1825PNG_INTERNAL_FUNCTION(
void,png_warning_parameter_signed,
1826 (png_warning_parameters p,
int number,
int format, png_int_32 value),
1829PNG_INTERNAL_FUNCTION(
void,png_formatted_warning,(png_const_structrp png_ptr,
1830 png_warning_parameters p, png_const_charp message),PNG_EMPTY);
1837#ifdef PNG_BENIGN_ERRORS_SUPPORTED
1852PNG_INTERNAL_FUNCTION(
void,png_app_warning,(png_const_structrp png_ptr,
1853 png_const_charp message),PNG_EMPTY);
1858PNG_INTERNAL_FUNCTION(
void,png_app_error,(png_const_structrp png_ptr,
1859 png_const_charp message),PNG_EMPTY);
1864# define png_app_warning(pp,s) png_warning(pp,s)
1865# define png_app_error(pp,s) png_error(pp,s)
1868PNG_INTERNAL_FUNCTION(
void,png_chunk_report,(png_const_structrp png_ptr,
1869 png_const_charp message,
int error),PNG_EMPTY);
1879#define PNG_CHUNK_WARNING 0
1880#define PNG_CHUNK_WRITE_ERROR 1
1881#define PNG_CHUNK_ERROR 2
1886#if defined(PNG_sCAL_SUPPORTED)
1892#define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1+1+10)
1894#ifdef PNG_FLOATING_POINT_SUPPORTED
1895PNG_INTERNAL_FUNCTION(
void,png_ascii_from_fp,(png_const_structrp png_ptr,
1896 png_charp ascii,
size_t size,
double fp,
unsigned int precision),
1900#ifdef PNG_FIXED_POINT_SUPPORTED
1901PNG_INTERNAL_FUNCTION(
void,png_ascii_from_fixed,(png_const_structrp png_ptr,
1902 png_charp ascii,
size_t size, png_fixed_point fp),PNG_EMPTY);
1906#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
1937#define PNG_FP_INTEGER 0
1938#define PNG_FP_FRACTION 1
1939#define PNG_FP_EXPONENT 2
1940#define PNG_FP_STATE 3
1941#define PNG_FP_SAW_SIGN 4
1942#define PNG_FP_SAW_DIGIT 8
1943#define PNG_FP_SAW_DOT 16
1944#define PNG_FP_SAW_E 32
1945#define PNG_FP_SAW_ANY 60
1949#define PNG_FP_WAS_VALID 64
1950#define PNG_FP_NEGATIVE 128
1951#define PNG_FP_NONZERO 256
1952#define PNG_FP_STICKY 448
1957#define PNG_FP_INVALID 512
1962#define PNG_FP_MAYBE 0
1970#define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO)
1972#define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO)
1975#define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT)
1976#define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK)
1977#define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK)
1994PNG_INTERNAL_FUNCTION(
int,png_check_fp_number,(png_const_charp
string,
1995 size_t size,
int *statep,
size_t *whereami),PNG_EMPTY);
2003PNG_INTERNAL_FUNCTION(
int,png_check_fp_string,(png_const_charp
string,
2004 size_t size),PNG_EMPTY);
2007#if defined(PNG_READ_GAMMA_SUPPORTED) ||\
2008 defined(PNG_COLORSPACE_SUPPORTED) ||\
2009 defined(PNG_INCH_CONVERSIONS_SUPPORTED) ||\
2010 defined(PNG_READ_pHYs_SUPPORTED)
2017PNG_INTERNAL_FUNCTION(
int,png_muldiv,(png_fixed_point_p res, png_fixed_point a,
2018 png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY);
2024PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a),
2028#ifdef PNG_READ_GAMMA_SUPPORTED
2033PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a,
2034 png_fixed_point b),PNG_EMPTY);
2037PNG_INTERNAL_FUNCTION(
int,png_gamma_significant,(png_fixed_point gamma_value),
2048PNG_INTERNAL_FUNCTION(png_fixed_point,png_resolve_file_gamma,
2049 (png_const_structrp png_ptr),PNG_EMPTY);
2058PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr,
2059 unsigned int value, png_fixed_point gamma_value),PNG_EMPTY);
2060PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(
unsigned int value,
2061 png_fixed_point gamma_value),PNG_EMPTY);
2062PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(
unsigned int value,
2063 png_fixed_point gamma_value),PNG_EMPTY);
2064PNG_INTERNAL_FUNCTION(
void,png_destroy_gamma_table,(png_structrp png_ptr),
2066PNG_INTERNAL_FUNCTION(
void,png_build_gamma_table,(png_structrp png_ptr,
2067 int bit_depth),PNG_EMPTY);
2070#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
2072PNG_INTERNAL_FUNCTION(
void,png_set_rgb_coefficients,(png_structrp png_ptr),
2076#if defined(PNG_cHRM_SUPPORTED) || defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
2077PNG_INTERNAL_FUNCTION(
int,png_XYZ_from_xy,(
png_XYZ *XYZ,
const png_xy *xy),
2081#ifdef PNG_COLORSPACE_SUPPORTED
2082PNG_INTERNAL_FUNCTION(
int,png_xy_from_XYZ,(
png_xy *xy,
const png_XYZ *XYZ),
2087#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\
2088 defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
2092 png_structp png_ptr;
2094 png_voidp error_buf;
2096 png_const_bytep memory;
2099 unsigned int for_write :1;
2100 unsigned int owned_file :1;
2107# define png_control_jmp_buf(pc) (((jmp_buf*)((pc)->error_buf))[0])
2109# define png_control_jmp_buf(pc) ((pc)->error_buf)
2116PNG_INTERNAL_CALLBACK(
void,png_safe_error,(png_structp png_ptr,
2117 png_const_charp error_message),PNG_NORETURN);
2119#ifdef PNG_WARNINGS_SUPPORTED
2120PNG_INTERNAL_CALLBACK(
void,png_safe_warning,(png_structp png_ptr,
2121 png_const_charp warning_message),PNG_EMPTY);
2123# define png_safe_warning 0
2126PNG_INTERNAL_FUNCTION(
int,png_safe_execute,(png_imagep image,
2127 int (*function)(png_voidp), png_voidp arg),PNG_EMPTY);
2132PNG_INTERNAL_FUNCTION(
int,png_image_error,(png_imagep image,
2133 png_const_charp error_message),PNG_EMPTY);
2135#ifndef PNG_SIMPLIFIED_READ_SUPPORTED
2137PNG_INTERNAL_FUNCTION(
void, png_image_free, (png_imagep image), PNG_EMPTY);
2147#ifdef PNG_FILTER_OPTIMIZATIONS
2148PNG_INTERNAL_FUNCTION(
void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr,
2149 unsigned int bpp), PNG_EMPTY);
2156# if PNG_ARM_NEON_OPT > 0
2157PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_neon,
2158 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2161#if PNG_MIPS_MSA_IMPLEMENTATION == 1
2162PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_mips,
2163 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2166# if PNG_MIPS_MMI_IMPLEMENTATION > 0
2167PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_mips,
2168 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2171# if PNG_INTEL_SSE_IMPLEMENTATION > 0
2172PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_sse2,
2173 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2177#if PNG_LOONGARCH_LSX_OPT > 0
2178PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_lsx,
2179 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2182# if PNG_RISCV_RVV_IMPLEMENTATION == 1
2183PNG_INTERNAL_FUNCTION(
void, png_init_filter_functions_rvv,
2184 (png_structp png_ptr,
unsigned int bpp), PNG_EMPTY);
2187PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr,
2188 png_const_charp key, png_bytep new_key), PNG_EMPTY);
2190#if PNG_ARM_NEON_IMPLEMENTATION == 1
2191PNG_INTERNAL_FUNCTION(
void,
2192 png_riffle_palette_neon,
2195PNG_INTERNAL_FUNCTION(
int,
2196 png_do_expand_palette_rgba8_neon,
2203PNG_INTERNAL_FUNCTION(
int,
2204 png_do_expand_palette_rgb8_neon,