< prev index next >

src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h

Print this page

        

*** 27,37 **** * This file is available under and governed by the GNU General Public * License version 2 only, as published by the Free Software Foundation. * However, the following notice accompanied the original version of this * file and, per its terms, should not be removed: * ! * Last changed in libpng 1.6.22 [May 26, 2016] * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * * This code is released under the libpng license. --- 27,37 ---- * This file is available under and governed by the GNU General Public * License version 2 only, as published by the Free Software Foundation. * However, the following notice accompanied the original version of this * file and, per its terms, should not be removed: * ! * Last changed in libpng 1.6.26 [October 20, 2016] * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * * This code is released under the libpng license.
*** 208,217 **** --- 208,246 ---- /* Use the intrinsics code by default. */ # define PNG_ARM_NEON_IMPLEMENTATION 1 # endif #endif /* PNG_ARM_NEON_OPT > 0 */ + #ifndef PNG_MIPS_MSA_OPT + # if defined(__mips_msa) && (__mips_isa_rev >= 5) && defined(PNG_ALIGNED_MEMORY_SUPPORTED) + # define PNG_MIPS_MSA_OPT 2 + # else + # define PNG_MIPS_MSA_OPT 0 + # endif + #endif + + #if PNG_MIPS_MSA_OPT > 0 + # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_msa + # ifndef PNG_MIPS_MSA_IMPLEMENTATION + # if defined(__mips_msa) + # if defined(__clang__) + # elif defined(__GNUC__) + # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) + # define PNG_MIPS_MSA_IMPLEMENTATION 2 + # endif /* no GNUC support */ + # endif /* __GNUC__ */ + # else /* !defined __mips_msa */ + # define PNG_MIPS_MSA_IMPLEMENTATION 2 + # endif /* __mips_msa */ + # endif /* !PNG_MIPS_MSA_IMPLEMENTATION */ + + # ifndef PNG_MIPS_MSA_IMPLEMENTATION + # define PNG_MIPS_MSA_IMPLEMENTATION 1 + # endif + #endif /* PNG_MIPS_MSA_OPT > 0 */ + + /* Is this a build of a DLL where compilation of the object modules requires * different preprocessor settings to those required for a simple library? If * so PNG_BUILD_DLL must be set. * * If libpng is used inside a DLL but that DLL does not export the libpng APIs
*** 530,540 **** #endif /* This implicitly assumes alignment is always to a power of 2. */ #ifdef png_alignof # define png_isaligned(ptr, type)\ ! ((((const char*)ptr-(const char*)0) & (png_alignof(type)-1)) == 0) #else # define png_isaligned(ptr, type) 0 #endif /* End of memory model/platform independent support */ --- 559,570 ---- #endif /* This implicitly assumes alignment is always to a power of 2. */ #ifdef png_alignof # define png_isaligned(ptr, type)\ ! (((type)((const char*)ptr-(const char*)0) & \ ! (type)(png_alignof(type)-1)) == 0) #else # define png_isaligned(ptr, type) 0 #endif /* End of memory model/platform independent support */
*** 547,642 **** /* Various modes of operation. Note that after an init, mode is set to * zero automatically when the structure is created. Three of these * are defined in png.h because they need to be visible to applications * that call png_set_unknown_chunk(). */ ! /* #define PNG_HAVE_IHDR 0x01 (defined in png.h) */ ! /* #define PNG_HAVE_PLTE 0x02 (defined in png.h) */ ! #define PNG_HAVE_IDAT 0x04 ! /* #define PNG_AFTER_IDAT 0x08 (defined in png.h) */ ! #define PNG_HAVE_IEND 0x10 ! /* 0x20 (unused) */ ! /* 0x40 (unused) */ ! /* 0x80 (unused) */ ! #define PNG_HAVE_CHUNK_HEADER 0x100 ! #define PNG_WROTE_tIME 0x200 ! #define PNG_WROTE_INFO_BEFORE_PLTE 0x400 ! #define PNG_BACKGROUND_IS_GRAY 0x800 ! #define PNG_HAVE_PNG_SIGNATURE 0x1000 ! #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ ! /* 0x4000 (unused) */ ! #define PNG_IS_READ_STRUCT 0x8000 /* Else is a write struct */ /* Flags for the transformations the PNG library does on the image data */ ! #define PNG_BGR 0x0001 ! #define PNG_INTERLACE 0x0002 ! #define PNG_PACK 0x0004 ! #define PNG_SHIFT 0x0008 ! #define PNG_SWAP_BYTES 0x0010 ! #define PNG_INVERT_MONO 0x0020 ! #define PNG_QUANTIZE 0x0040 ! #define PNG_COMPOSE 0x0080 /* Was PNG_BACKGROUND */ ! #define PNG_BACKGROUND_EXPAND 0x0100 ! #define PNG_EXPAND_16 0x0200 /* Added to libpng 1.5.2 */ ! #define PNG_16_TO_8 0x0400 /* Becomes 'chop' in 1.5.4 */ ! #define PNG_RGBA 0x0800 ! #define PNG_EXPAND 0x1000 ! #define PNG_GAMMA 0x2000 ! #define PNG_GRAY_TO_RGB 0x4000 ! #define PNG_FILLER 0x8000 ! #define PNG_PACKSWAP 0x10000 ! #define PNG_SWAP_ALPHA 0x20000 ! #define PNG_STRIP_ALPHA 0x40000 ! #define PNG_INVERT_ALPHA 0x80000 ! #define PNG_USER_TRANSFORM 0x100000 ! #define PNG_RGB_TO_GRAY_ERR 0x200000 ! #define PNG_RGB_TO_GRAY_WARN 0x400000 ! #define PNG_RGB_TO_GRAY 0x600000 /* two bits, RGB_TO_GRAY_ERR|WARN */ ! #define PNG_ENCODE_ALPHA 0x800000 /* Added to libpng-1.5.4 */ ! #define PNG_ADD_ALPHA 0x1000000 /* Added to libpng-1.2.7 */ ! #define PNG_EXPAND_tRNS 0x2000000 /* Added to libpng-1.2.9 */ ! #define PNG_SCALE_16_TO_8 0x4000000 /* Added to libpng-1.5.4 */ ! /* 0x8000000 unused */ ! /* 0x10000000 unused */ ! /* 0x20000000 unused */ ! /* 0x40000000 unused */ /* Flags for png_create_struct */ ! #define PNG_STRUCT_PNG 0x0001 ! #define PNG_STRUCT_INFO 0x0002 /* Flags for the png_ptr->flags rather than declaring a byte for each one */ ! #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 ! #define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002 /* Added to libpng-1.6.0 */ ! /* 0x0004 unused */ ! #define PNG_FLAG_ZSTREAM_ENDED 0x0008 /* Added to libpng-1.6.0 */ ! /* 0x0010 unused */ ! /* 0x0020 unused */ ! #define PNG_FLAG_ROW_INIT 0x0040 ! #define PNG_FLAG_FILLER_AFTER 0x0080 ! #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 ! #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 ! #define PNG_FLAG_CRC_CRITICAL_USE 0x0400 ! #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 ! #define PNG_FLAG_ASSUME_sRGB 0x1000 /* Added to libpng-1.5.4 */ ! #define PNG_FLAG_OPTIMIZE_ALPHA 0x2000 /* Added to libpng-1.5.4 */ ! #define PNG_FLAG_DETECT_UNINITIALIZED 0x4000 /* Added to libpng-1.5.4 */ ! /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000 */ ! /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000 */ ! #define PNG_FLAG_LIBRARY_MISMATCH 0x20000 ! #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000 ! #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000 ! #define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000 /* Added to libpng-1.4.0 */ ! #define PNG_FLAG_APP_WARNINGS_WARN 0x200000 /* Added to libpng-1.6.0 */ ! #define PNG_FLAG_APP_ERRORS_WARN 0x400000 /* Added to libpng-1.6.0 */ ! /* 0x800000 unused */ ! /* 0x1000000 unused */ ! /* 0x2000000 unused */ ! /* 0x4000000 unused */ ! /* 0x8000000 unused */ ! /* 0x10000000 unused */ ! /* 0x20000000 unused */ ! /* 0x40000000 unused */ #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ PNG_FLAG_CRC_ANCILLARY_NOWARN) #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ --- 577,672 ---- /* Various modes of operation. Note that after an init, mode is set to * zero automatically when the structure is created. Three of these * are defined in png.h because they need to be visible to applications * that call png_set_unknown_chunk(). */ ! /* #define PNG_HAVE_IHDR 0x01U (defined in png.h) */ ! /* #define PNG_HAVE_PLTE 0x02U (defined in png.h) */ ! #define PNG_HAVE_IDAT 0x04U ! /* #define PNG_AFTER_IDAT 0x08U (defined in png.h) */ ! #define PNG_HAVE_IEND 0x10U ! /* 0x20U (unused) */ ! /* 0x40U (unused) */ ! /* 0x80U (unused) */ ! #define PNG_HAVE_CHUNK_HEADER 0x100U ! #define PNG_WROTE_tIME 0x200U ! #define PNG_WROTE_INFO_BEFORE_PLTE 0x400U ! #define PNG_BACKGROUND_IS_GRAY 0x800U ! #define PNG_HAVE_PNG_SIGNATURE 0x1000U ! #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U /* Have another chunk after IDAT */ ! /* 0x4000U (unused) */ ! #define PNG_IS_READ_STRUCT 0x8000U /* Else is a write struct */ /* Flags for the transformations the PNG library does on the image data */ ! #define PNG_BGR 0x0001U ! #define PNG_INTERLACE 0x0002U ! #define PNG_PACK 0x0004U ! #define PNG_SHIFT 0x0008U ! #define PNG_SWAP_BYTES 0x0010U ! #define PNG_INVERT_MONO 0x0020U ! #define PNG_QUANTIZE 0x0040U ! #define PNG_COMPOSE 0x0080U /* Was PNG_BACKGROUND */ ! #define PNG_BACKGROUND_EXPAND 0x0100U ! #define PNG_EXPAND_16 0x0200U /* Added to libpng 1.5.2 */ ! #define PNG_16_TO_8 0x0400U /* Becomes 'chop' in 1.5.4 */ ! #define PNG_RGBA 0x0800U ! #define PNG_EXPAND 0x1000U ! #define PNG_GAMMA 0x2000U ! #define PNG_GRAY_TO_RGB 0x4000U ! #define PNG_FILLER 0x8000U ! #define PNG_PACKSWAP 0x10000U ! #define PNG_SWAP_ALPHA 0x20000U ! #define PNG_STRIP_ALPHA 0x40000U ! #define PNG_INVERT_ALPHA 0x80000U ! #define PNG_USER_TRANSFORM 0x100000U ! #define PNG_RGB_TO_GRAY_ERR 0x200000U ! #define PNG_RGB_TO_GRAY_WARN 0x400000U ! #define PNG_RGB_TO_GRAY 0x600000U /* two bits, RGB_TO_GRAY_ERR|WARN */ ! #define PNG_ENCODE_ALPHA 0x800000U /* Added to libpng-1.5.4 */ ! #define PNG_ADD_ALPHA 0x1000000U /* Added to libpng-1.2.7 */ ! #define PNG_EXPAND_tRNS 0x2000000U /* Added to libpng-1.2.9 */ ! #define PNG_SCALE_16_TO_8 0x4000000U /* Added to libpng-1.5.4 */ ! /* 0x8000000U unused */ ! /* 0x10000000U unused */ ! /* 0x20000000U unused */ ! /* 0x40000000U unused */ /* Flags for png_create_struct */ ! #define PNG_STRUCT_PNG 0x0001U ! #define PNG_STRUCT_INFO 0x0002U /* Flags for the png_ptr->flags rather than declaring a byte for each one */ ! #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001U ! #define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002U /* Added to libpng-1.6.0 */ ! /* 0x0004U unused */ ! #define PNG_FLAG_ZSTREAM_ENDED 0x0008U /* Added to libpng-1.6.0 */ ! /* 0x0010U unused */ ! /* 0x0020U unused */ ! #define PNG_FLAG_ROW_INIT 0x0040U ! #define PNG_FLAG_FILLER_AFTER 0x0080U ! #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100U ! #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200U ! #define PNG_FLAG_CRC_CRITICAL_USE 0x0400U ! #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800U ! #define PNG_FLAG_ASSUME_sRGB 0x1000U /* Added to libpng-1.5.4 */ ! #define PNG_FLAG_OPTIMIZE_ALPHA 0x2000U /* Added to libpng-1.5.4 */ ! #define PNG_FLAG_DETECT_UNINITIALIZED 0x4000U /* Added to libpng-1.5.4 */ ! /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000U */ ! /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000U */ ! #define PNG_FLAG_LIBRARY_MISMATCH 0x20000U ! #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000U ! #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000U ! #define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000U /* Added to libpng-1.4.0 */ ! #define PNG_FLAG_APP_WARNINGS_WARN 0x200000U /* Added to libpng-1.6.0 */ ! #define PNG_FLAG_APP_ERRORS_WARN 0x400000U /* Added to libpng-1.6.0 */ ! /* 0x800000U unused */ ! /* 0x1000000U unused */ ! /* 0x2000000U unused */ ! /* 0x4000000U unused */ ! /* 0x8000000U unused */ ! /* 0x10000000U unused */ ! /* 0x20000000U unused */ ! /* 0x40000000U unused */ #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ PNG_FLAG_CRC_ANCILLARY_NOWARN) #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
*** 666,675 **** --- 696,723 ---- #define PNG_ROWBYTES(pixel_bits, width) \ ((pixel_bits) >= 8 ? \ ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \ (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) ) + /* This returns the number of trailing bits in the last byte of a row, 0 if the + * last byte is completely full of pixels. It is, in principle, (pixel_bits x + * width) % 8, but that would overflow for large 'width'. The second macro is + * the same except that it returns the number of unused bits in the last byte; + * (8-TRAILBITS), but 0 when TRAILBITS is 0. + * + * NOTE: these macros are intended to be self-evidently correct and never + * overflow on the assumption that pixel_bits is in the range 0..255. The + * arguments are evaluated only once and they can be signed (e.g. as a result of + * the integral promotions). The result of the expression always has type + * (png_uint_32), however the compiler always knows it is in the range 0..7. + */ + #define PNG_TRAILBITS(pixel_bits, width) \ + (((pixel_bits) * ((width) % (png_uint_32)8)) % 8) + + #define PNG_PADBITS(pixel_bits, width) \ + ((8 - PNG_TRAILBITS(pixel_bits, width)) % 8) + /* PNG_OUT_OF_RANGE returns true if value is outside the range * ideal-delta..ideal+delta. Each argument is evaluated twice. * "ideal" and "delta" should be constants, normally simple * integers, "value" a variable. Added to libpng-1.2.6 JB */
*** 1200,1209 **** --- 1248,1258 ---- * calling it for PNG_FILTER_VALUE_NONE. */ PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY); + #if PNG_ARM_NEON_OPT > 0 PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop
*** 1214,1223 **** --- 1263,1290 ---- row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + #endif + + #if PNG_MIPS_MSA_OPT > 0 + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_msa,(png_row_infop row_info, + png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + #endif /* Choose the best filter to use and filter the row data */ PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY);
*** 1241,1251 **** #endif /* SEQUENTIAL_READ */ /* Initialize the row buffers, etc. */ PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); ! #if PNG_ZLIB_VERNUM >= 0x1240 PNG_INTERNAL_FUNCTION(int,png_zlib_inflate,(png_structrp png_ptr, int flush), PNG_EMPTY); # define PNG_INFLATE(pp, flush) png_zlib_inflate(pp, flush) #else /* Zlib < 1.2.4 */ # define PNG_INFLATE(pp, flush) inflate(&(pp)->zstream, flush) --- 1308,1318 ---- #endif /* SEQUENTIAL_READ */ /* Initialize the row buffers, etc. */ PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); ! #if ZLIB_VERNUM >= 0x1240 PNG_INTERNAL_FUNCTION(int,png_zlib_inflate,(png_structrp png_ptr, int flush), PNG_EMPTY); # define PNG_INFLATE(pp, flush) png_zlib_inflate(pp, flush) #else /* Zlib < 1.2.4 */ # define PNG_INFLATE(pp, flush) inflate(&(pp)->zstream, flush)
*** 1518,1530 **** --- 1585,1599 ---- png_uint_32 profile_length, png_const_bytep profile, int color_type), PNG_EMPTY); /* The 'name' is used for information only */ /* Routines for checking parts of an ICC profile. */ + #ifdef PNG_READ_iCCP_SUPPORTED PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr, png_colorspacerp colorspace, png_const_charp name, png_uint_32 profile_length), PNG_EMPTY); + #endif /* READ_iCCP */ PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr, png_colorspacerp colorspace, png_const_charp name, png_uint_32 profile_length, png_const_bytep profile /* first 132 bytes only */, int color_type), PNG_EMPTY);
*** 1939,1952 **** --- 2008,2028 ---- #else /* List *all* the possible optimizations here - this branch is required if * the builder of libpng passes the definition of PNG_FILTER_OPTIMIZATIONS in * CFLAGS in place of CPPFLAGS *and* uses symbol prefixing. */ + # if PNG_ARM_NEON_OPT > 0 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif + #if PNG_MIPS_MSA_OPT > 0 + PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_msa, + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); + #endif + #endif + PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, png_const_charp key, png_bytep new_key), PNG_EMPTY); /* Maintainer: Put new private prototypes here ^ */
< prev index next >