< 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 >