зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1491467 - Update libpng to 1.6.35. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D5913 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
c9db0052d9
Коммит
f53c113d39
|
@ -1,4 +1,3 @@
|
||||||
#if 0
|
|
||||||
CHANGES - changes for libpng
|
CHANGES - changes for libpng
|
||||||
|
|
||||||
version 0.1 [March 29, 1995]
|
version 0.1 [March 29, 1995]
|
||||||
|
@ -1454,7 +1453,7 @@ Version 1.2.6beta4 [July 28, 2004]
|
||||||
sequential read support.
|
sequential read support.
|
||||||
Added some "#if PNG_WRITE_SUPPORTED" blocks.
|
Added some "#if PNG_WRITE_SUPPORTED" blocks.
|
||||||
Added #ifdef to remove some redundancy in png_malloc_default().
|
Added #ifdef to remove some redundancy in png_malloc_default().
|
||||||
Use png_malloc instead of png_zalloc to allocate the pallete.
|
Use png_malloc instead of png_zalloc to allocate the palette.
|
||||||
|
|
||||||
Version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004]
|
Version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004]
|
||||||
Fixed buffer overflow vulnerability (CVE-2004-0597) in png_handle_tRNS().
|
Fixed buffer overflow vulnerability (CVE-2004-0597) in png_handle_tRNS().
|
||||||
|
@ -3259,7 +3258,7 @@ Version 1.5.2beta01 [February 13, 2011]
|
||||||
Revised PNG_EXPORTA macro to not use an empty parameter, to accommodate the
|
Revised PNG_EXPORTA macro to not use an empty parameter, to accommodate the
|
||||||
old VisualC++ preprocessor.
|
old VisualC++ preprocessor.
|
||||||
Turned on interlace handling in png_read_png().
|
Turned on interlace handling in png_read_png().
|
||||||
Fixed gcc pendantic warnings.
|
Fixed gcc pedantic warnings.
|
||||||
Handle longjmp in Cygwin.
|
Handle longjmp in Cygwin.
|
||||||
Fixed png_get_current_row_number() in the interlaced case.
|
Fixed png_get_current_row_number() in the interlaced case.
|
||||||
Cleaned up ALPHA flags and transformations.
|
Cleaned up ALPHA flags and transformations.
|
||||||
|
@ -3359,7 +3358,7 @@ Version 1.5.3beta05 [May 6, 2011]
|
||||||
Pass "" instead of '\0' to png_default_error() in png_err(). This mistake
|
Pass "" instead of '\0' to png_default_error() in png_err(). This mistake
|
||||||
was introduced in libpng-1.2.20beta01. This fixes CVE-2011-2691.
|
was introduced in libpng-1.2.20beta01. This fixes CVE-2011-2691.
|
||||||
Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make the zlib "CMF" byte
|
Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make the zlib "CMF" byte
|
||||||
optimization configureable.
|
optimization configurable.
|
||||||
IDAT compression failed if preceded by a compressed text chunk (bug
|
IDAT compression failed if preceded by a compressed text chunk (bug
|
||||||
introduced in libpng-1.5.3beta01-02). This was because the attempt to
|
introduced in libpng-1.5.3beta01-02). This was because the attempt to
|
||||||
reset the zlib stream in png_write_IDAT happened after the first IDAT
|
reset the zlib stream in png_write_IDAT happened after the first IDAT
|
||||||
|
@ -3643,7 +3642,7 @@ Version 1.5.6beta05 [October 12, 2011]
|
||||||
Fixed bug in png_write_chunk_header() debug print, introduced in 1.5.6beta01.
|
Fixed bug in png_write_chunk_header() debug print, introduced in 1.5.6beta01.
|
||||||
|
|
||||||
Version 1.5.6beta06 [October 17, 2011]
|
Version 1.5.6beta06 [October 17, 2011]
|
||||||
Removed two redundant tests for unitialized row.
|
Removed two redundant tests for uninitialized row.
|
||||||
Fixed a relatively harmless memory overwrite in compressed text writing
|
Fixed a relatively harmless memory overwrite in compressed text writing
|
||||||
with a 1 byte zlib buffer.
|
with a 1 byte zlib buffer.
|
||||||
Add ability to call png_read_update_info multiple times to pngvalid.c.
|
Add ability to call png_read_update_info multiple times to pngvalid.c.
|
||||||
|
@ -3689,7 +3688,7 @@ Version 1.5.7beta01 [November 4, 2011]
|
||||||
crash. The pngmem.c implementation of png_malloc() included a cast
|
crash. The pngmem.c implementation of png_malloc() included a cast
|
||||||
to png_size_t which would fail on large allocations on 16-bit systems.
|
to png_size_t which would fail on large allocations on 16-bit systems.
|
||||||
Fix for the preprocessor of the Intel C compiler. The preprocessor
|
Fix for the preprocessor of the Intel C compiler. The preprocessor
|
||||||
splits adjacent @ signs with a space; this changes the concatentation
|
splits adjacent @ signs with a space; this changes the concatenation
|
||||||
token from @-@-@ to PNG_JOIN; that should work with all compiler
|
token from @-@-@ to PNG_JOIN; that should work with all compiler
|
||||||
preprocessors.
|
preprocessors.
|
||||||
Paeth filter speed improvements from work by Siarhei Siamashka. This
|
Paeth filter speed improvements from work by Siarhei Siamashka. This
|
||||||
|
@ -3735,7 +3734,7 @@ Version 1.5.7beta03 [November 17, 2011]
|
||||||
gray (on palette) itself.
|
gray (on palette) itself.
|
||||||
Fixes for C++ compilation using g++ When libpng source is compiled
|
Fixes for C++ compilation using g++ When libpng source is compiled
|
||||||
using g++. The compiler imposes C++ rules on the C source; thus it
|
using g++. The compiler imposes C++ rules on the C source; thus it
|
||||||
is desireable to make the source work with either C or C++ rules
|
is desirable to make the source work with either C or C++ rules
|
||||||
without throwing away useful error information. This change adds
|
without throwing away useful error information. This change adds
|
||||||
png_voidcast to allow C semantic (void*) cases or the corresponding
|
png_voidcast to allow C semantic (void*) cases or the corresponding
|
||||||
C++ static_cast operation, as appropriate.
|
C++ static_cast operation, as appropriate.
|
||||||
|
@ -4061,7 +4060,7 @@ Version 1.6.0beta17 [March 10, 2012]
|
||||||
possible to call png_inflate() incrementally. A warning is no longer
|
possible to call png_inflate() incrementally. A warning is no longer
|
||||||
issued if the language tag or translated keyword in the iTXt chunk
|
issued if the language tag or translated keyword in the iTXt chunk
|
||||||
has zero length.
|
has zero length.
|
||||||
If benign errors are disabled use maximum window on ancilliary inflate.
|
If benign errors are disabled use maximum window on ancillary inflate.
|
||||||
This works round a bug introduced in 1.5.4 where compressed ancillary
|
This works round a bug introduced in 1.5.4 where compressed ancillary
|
||||||
chunks could end up with a too-small windowBits value in the deflate
|
chunks could end up with a too-small windowBits value in the deflate
|
||||||
header.
|
header.
|
||||||
|
@ -4176,7 +4175,7 @@ Version 1.6.0beta27 [August 11, 2012]
|
||||||
declared even though the functions are never actually defined. This
|
declared even though the functions are never actually defined. This
|
||||||
change provides a dummy definition so that the declarations work, yet any
|
change provides a dummy definition so that the declarations work, yet any
|
||||||
implementation will fail to compile because of an incomplete type.
|
implementation will fail to compile because of an incomplete type.
|
||||||
Re-eliminated the use of strcpy() in pngtest.c. An unncessary use of
|
Re-eliminated the use of strcpy() in pngtest.c. An unnecessary use of
|
||||||
strcpy() was accidentally re-introduced in libpng16; this change replaces
|
strcpy() was accidentally re-introduced in libpng16; this change replaces
|
||||||
it with strncpy().
|
it with strncpy().
|
||||||
Eliminated use of png_sizeof(); use sizeof() instead.
|
Eliminated use of png_sizeof(); use sizeof() instead.
|
||||||
|
@ -4309,7 +4308,7 @@ Version 1.6.0beta31 [November 1, 2012]
|
||||||
resulting in VS2010 having to update the files.
|
resulting in VS2010 having to update the files.
|
||||||
Removed non-working ICC profile support code that was mostly added to
|
Removed non-working ICC profile support code that was mostly added to
|
||||||
libpng-1.6.0beta29 and beta30. There was too much code for too little
|
libpng-1.6.0beta29 and beta30. There was too much code for too little
|
||||||
gain; implementing full ICC color correction may be desireable but is left
|
gain; implementing full ICC color correction may be desirable but is left
|
||||||
up to applications.
|
up to applications.
|
||||||
|
|
||||||
Version 1.6.0beta32 [November 25, 2012]
|
Version 1.6.0beta32 [November 25, 2012]
|
||||||
|
@ -4592,7 +4591,7 @@ Version 1.6.3beta07 [June 8, 2013]
|
||||||
the optimizations ('check' vs 'api') are exposed in the public header files
|
the optimizations ('check' vs 'api') are exposed in the public header files
|
||||||
except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the
|
except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the
|
||||||
decision about whether or not to use the optimizations.
|
decision about whether or not to use the optimizations.
|
||||||
Protect symbol prefixing against CC/CPPFLAGS/CFLAGS useage.
|
Protect symbol prefixing against CC/CPPFLAGS/CFLAGS usage.
|
||||||
Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test
|
Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test
|
||||||
on __ARM_NEON__ from configure time to compile time. This breaks symbol
|
on __ARM_NEON__ from configure time to compile time. This breaks symbol
|
||||||
prefixing because the definition of the special png_init_filter_functions
|
prefixing because the definition of the special png_init_filter_functions
|
||||||
|
@ -5635,7 +5634,7 @@ Version 1.6.24beta02 [June 23, 2016]
|
||||||
to All and adds a list of the warnings that need to be turned off. This is
|
to All and adds a list of the warnings that need to be turned off. This is
|
||||||
semi-documentary; the intent is to tell libpng users which warnings have
|
semi-documentary; the intent is to tell libpng users which warnings have
|
||||||
been examined and judged non-fixable at present. The warning about
|
been examined and judged non-fixable at present. The warning about
|
||||||
structure padding is fixable, but it would be a signficant change (moving
|
structure padding is fixable, but it would be a significant change (moving
|
||||||
structure members around).
|
structure members around).
|
||||||
|
|
||||||
Version 1.6.24beta03 [July 4, 2016]
|
Version 1.6.24beta03 [July 4, 2016]
|
||||||
|
@ -5781,7 +5780,7 @@ Version 1.6.28rc01 [January 3, 2017]
|
||||||
Added option to Cmake build allowing a custom location of zlib to be
|
Added option to Cmake build allowing a custom location of zlib to be
|
||||||
specified in a scenario where libpng is being built as a subproject
|
specified in a scenario where libpng is being built as a subproject
|
||||||
alongside zlib by another project (Sam Serrels).
|
alongside zlib by another project (Sam Serrels).
|
||||||
Changed png_ptr->options from a png_byte to png_uint_32, to accomodate
|
Changed png_ptr->options from a png_byte to png_uint_32, to accommodate
|
||||||
up to 16 options.
|
up to 16 options.
|
||||||
|
|
||||||
Version 1.6.28rc02 [January 4, 2017]
|
Version 1.6.28rc02 [January 4, 2017]
|
||||||
|
@ -5932,7 +5931,7 @@ Version 1.6.32beta04 [August 2, 2017]
|
||||||
Update libpng.3 and libpng-manual.txt about eXIf functions.
|
Update libpng.3 and libpng-manual.txt about eXIf functions.
|
||||||
|
|
||||||
Version 1.6.32beta05 [August 2, 2017]
|
Version 1.6.32beta05 [August 2, 2017]
|
||||||
Restored png_get_eXIf() and png_set_eXIf() to maintain API compatability.
|
Restored png_get_eXIf() and png_set_eXIf() to maintain API compatibility.
|
||||||
|
|
||||||
Version 1.6.32beta06 [August 2, 2017]
|
Version 1.6.32beta06 [August 2, 2017]
|
||||||
Removed png_get_eXIf_1() and png_set_eXIf_1().
|
Removed png_get_eXIf_1() and png_set_eXIf_1().
|
||||||
|
@ -6038,14 +6037,35 @@ Version 1.6.33 [September 28, 2017]
|
||||||
Add end_info structure and png_read_end() to the libpng fuzzer.
|
Add end_info structure and png_read_end() to the libpng fuzzer.
|
||||||
|
|
||||||
Version 1.6.34 [September 29, 2017]
|
Version 1.6.34 [September 29, 2017]
|
||||||
Removed contrib/pngsuite/i*.png; some of these were incorrect and caused
|
Removed contrib/pngsuite/i*.png; some of them caused test failures.
|
||||||
test failures.
|
|
||||||
|
Version 1.6.35beta01 [March 6, 2018]
|
||||||
|
Restored 21 of the contrib/pngsuite/i*.png, which do not cause test
|
||||||
|
failures. Placed the remainder in contrib/pngsuite/interlaced/i*.png.
|
||||||
|
Added calls to png_set_*() transforms commonly used by browsers to
|
||||||
|
the fuzzer.
|
||||||
|
Removed some unnecessary brackets in pngrtran.c
|
||||||
|
Fixed miscellaneous typos (Patch by github user "luzpaz").
|
||||||
|
Change "ASM C" to "C ASM" in CMakeLists.txt
|
||||||
|
Fixed incorrect handling of bKGD chunk in sub-8-bit files (Cosmin)
|
||||||
|
Added hardware optimization directories to zip and 7z distributions.
|
||||||
|
Fixed incorrect bitmask for options.
|
||||||
|
Fixed many spelling typos.
|
||||||
|
|
||||||
|
Version 1.6.35beta02 [March 28, 2018]
|
||||||
|
Make png_get_iCCP consistent with man page (allow compression-type argument
|
||||||
|
to be NULL, bug report by Lenard Szolnoki).
|
||||||
|
|
||||||
|
Version 1.6.35 [July 15, 2018]
|
||||||
|
Replaced the remaining uses of png_size_t with size_t (Cosmin)
|
||||||
|
Fixed the calculation of row_factor in png_check_chunk_length
|
||||||
|
(reported by Thuan Pham in SourceForge issue #278)
|
||||||
|
Added missing parentheses to a macro definition
|
||||||
|
(suggested by "irwir" in GitHub issue #216)
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||||
(subscription required; visit
|
(subscription required; visit
|
||||||
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
||||||
to subscribe)
|
to subscribe).
|
||||||
or to glennrp at users.sourceforge.net
|
|
||||||
|
|
||||||
Glenn R-P
|
Glenn R-P
|
||||||
#endif
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ surrounding them in the modified libpng source files.
|
||||||
|
|
||||||
This code is released under the libpng license.
|
This code is released under the libpng license.
|
||||||
|
|
||||||
libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are
|
libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are
|
||||||
Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
|
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
|
||||||
derived from libpng-1.0.6, and are distributed according to the same
|
derived from libpng-1.0.6, and are distributed according to the same
|
||||||
disclaimer and license as libpng-1.0.6 with the following individuals
|
disclaimer and license as libpng-1.0.6 with the following individuals
|
||||||
added to the list of Contributing Authors:
|
added to the list of Contributing Authors:
|
||||||
|
@ -140,4 +140,4 @@ any encryption software. See the EAR, paragraphs 734.3(b)(3) and
|
||||||
|
|
||||||
Glenn Randers-Pehrson
|
Glenn Randers-Pehrson
|
||||||
glennrp at users.sourceforge.net
|
glennrp at users.sourceforge.net
|
||||||
September 29, 2017
|
July 15, 2018
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
Changes made to pristine libpng source by mozilla.org developers.
|
Changes made to pristine libpng source by mozilla.org developers.
|
||||||
|
|
||||||
|
2018/09/14 -- Synced with libpng-1.6.35 (bug #1491467).
|
||||||
|
|
||||||
2017/08/30 -- Synced with libpng-1.6.34 (bug #1402057).
|
2017/08/30 -- Synced with libpng-1.6.34 (bug #1402057).
|
||||||
|
|
||||||
2017/03/18 -- Synced with libpng-1.6.31 (bug #1377118).
|
2017/03/18 -- Synced with libpng-1.6.31 (bug #1377118).
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
README for libpng version 1.6.34 - September 29, 2017 (shared library 16.0)
|
README for libpng version 1.6.35 - July 15, 2018 (shared library 16.0)
|
||||||
See the note about version numbers near the top of png.h
|
See the note about version numbers near the top of png.h
|
||||||
|
|
||||||
See INSTALL for instructions on how to install libpng.
|
See INSTALL for instructions on how to install libpng.
|
||||||
|
@ -118,7 +118,7 @@ development group.
|
||||||
Send comments/corrections/commendations to png-mng-implement at
|
Send comments/corrections/commendations to png-mng-implement at
|
||||||
lists.sourceforge.net (subscription required; visit
|
lists.sourceforge.net (subscription required; visit
|
||||||
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
||||||
to subscribe) or to glennrp at users.sourceforge.net
|
to subscribe).
|
||||||
|
|
||||||
You can't reach Guy, the original libpng author, at the addresses
|
You can't reach Guy, the original libpng author, at the addresses
|
||||||
given in previous versions of this document. He and Andreas will
|
given in previous versions of this document. He and Andreas will
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,11 +1,7 @@
|
||||||
diff --git ../../../libpng-1.6.16/arm/arm_init.c arm/arm_init.c
|
diff --git a/arm/arm_init.c b/arm/arm_init.c
|
||||||
--- ../../../libpng-1.6.16/arm/arm_init.c 2014-12-21 22:08:08.000000000 -0500
|
--- a/arm/arm_init.c
|
||||||
+++ arm/arm_init.c 2014-12-22 17:33:57.556305506 -0500
|
+++ b/arm/arm_init.c
|
||||||
@@ -29,17 +29,17 @@
|
@@ -33,9 +33,9 @@
|
||||||
* You may set the macro PNG_ARM_NEON_FILE to the file name of file containing
|
|
||||||
* a fragment of C source code which defines the png_have_neon function. There
|
|
||||||
* are a number of implementations in contrib/arm-neon, but the only one that
|
|
||||||
* has partial support is contrib/arm-neon/linux.c - a generic Linux
|
|
||||||
* implementation which reads /proc/cpufino.
|
* implementation which reads /proc/cpufino.
|
||||||
*/
|
*/
|
||||||
#ifndef PNG_ARM_NEON_FILE
|
#ifndef PNG_ARM_NEON_FILE
|
||||||
|
@ -16,18 +12,10 @@ diff --git ../../../libpng-1.6.16/arm/arm_init.c arm/arm_init.c
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_ARM_NEON_FILE
|
#ifdef PNG_ARM_NEON_FILE
|
||||||
|
diff --git a/arm/filter_neon.S b/arm/filter_neon.S
|
||||||
#include <signal.h> /* for sig_atomic_t */
|
--- a/arm/filter_neon.S
|
||||||
static int png_have_neon(png_structp png_ptr);
|
+++ b/arm/filter_neon.S
|
||||||
#include PNG_ARM_NEON_FILE
|
@@ -9,8 +9,14 @@
|
||||||
diff --git ../../../libpng-1.6.16/arm/filter_neon.S arm/filter_neon.S
|
|
||||||
--- ../../../libpng-1.6.16/arm/filter_neon.S 2014-12-21 22:08:08.000000000 -0500
|
|
||||||
+++ arm/filter_neon.S 2014-12-22 17:43:31.588323649 -0500
|
|
||||||
@@ -5,16 +5,22 @@
|
|
||||||
* Written by Mans Rullgard, 2011.
|
|
||||||
* Last changed in libpng 1.6.16 [December 22, 2014]
|
|
||||||
*
|
|
||||||
* This code is released under the libpng license.
|
|
||||||
* For conditions of distribution and use, see the disclaimer
|
* For conditions of distribution and use, see the disclaimer
|
||||||
* and license in png.h
|
* and license in png.h
|
||||||
*/
|
*/
|
||||||
|
@ -42,7 +30,3 @@ diff --git ../../../libpng-1.6.16/arm/filter_neon.S arm/filter_neon.S
|
||||||
* definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION.
|
* definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION.
|
||||||
*/
|
*/
|
||||||
#define PNG_VERSION_INFO_ONLY
|
#define PNG_VERSION_INFO_ONLY
|
||||||
#include "../pngpriv.h"
|
|
||||||
|
|
||||||
#if defined(__linux__) && defined(__ELF__)
|
|
||||||
.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* There is no pixel to the left of the first pixel. It's encoded directly.
|
* There is no pixel to the left of the first pixel. It's encoded directly.
|
||||||
* That works with our main loop if we just say that left pixel was zero.
|
* That works with our main loop if we just say that left pixel was zero.
|
||||||
*/
|
*/
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
|
|
||||||
__m128i a, d = _mm_setzero_si128();
|
__m128i a, d = _mm_setzero_si128();
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ void png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* There is no pixel to the left of the first pixel. It's encoded directly.
|
* There is no pixel to the left of the first pixel. It's encoded directly.
|
||||||
* That works with our main loop if we just say that left pixel was zero.
|
* That works with our main loop if we just say that left pixel was zero.
|
||||||
*/
|
*/
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
|
|
||||||
__m128i a, d = _mm_setzero_si128();
|
__m128i a, d = _mm_setzero_si128();
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* perfectly with our loop if we make sure a starts at zero.
|
* perfectly with our loop if we make sure a starts at zero.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
|
|
||||||
const __m128i zero = _mm_setzero_si128();
|
const __m128i zero = _mm_setzero_si128();
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ void png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* predicted to be half of the pixel above it. So again, this works
|
* predicted to be half of the pixel above it. So again, this works
|
||||||
* perfectly with our loop if we make sure a starts at zero.
|
* perfectly with our loop if we make sure a starts at zero.
|
||||||
*/
|
*/
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
const __m128i zero = _mm_setzero_si128();
|
const __m128i zero = _mm_setzero_si128();
|
||||||
__m128i b;
|
__m128i b;
|
||||||
__m128i a, d = zero;
|
__m128i a, d = zero;
|
||||||
|
@ -257,7 +257,7 @@ void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* Here we zero b and d, which become c and a respectively at the start of
|
* Here we zero b and d, which become c and a respectively at the start of
|
||||||
* the loop.
|
* the loop.
|
||||||
*/
|
*/
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
const __m128i zero = _mm_setzero_si128();
|
const __m128i zero = _mm_setzero_si128();
|
||||||
__m128i c, b = zero,
|
__m128i c, b = zero,
|
||||||
a, d = zero;
|
a, d = zero;
|
||||||
|
@ -356,7 +356,7 @@ void png_read_filter_row_paeth4_sse2(png_row_infop row_info, png_bytep row,
|
||||||
* Here we zero b and d, which become c and a respectively at the start of
|
* Here we zero b and d, which become c and a respectively at the start of
|
||||||
* the loop.
|
* the loop.
|
||||||
*/
|
*/
|
||||||
png_size_t rb;
|
size_t rb;
|
||||||
const __m128i zero = _mm_setzero_si128();
|
const __m128i zero = _mm_setzero_si128();
|
||||||
__m128i pa,pb,pc,smallest,nearest;
|
__m128i pa,pb,pc,smallest,nearest;
|
||||||
__m128i c, b = zero,
|
__m128i c, b = zero,
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
libpng-manual.txt - A description on how to use and modify libpng
|
libpng-manual.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
libpng version 1.6.34 - September 29, 2017
|
libpng version 1.6.35 - July 15, 2018
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
<glennrp at users.sourceforge.net>
|
Copyright (c) 1998-2018 Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2017 Glenn Randers-Pehrson
|
|
||||||
|
|
||||||
This document is released under the libpng license.
|
This document is released under the libpng license.
|
||||||
For conditions of distribution and use, see the disclaimer
|
For conditions of distribution and use, see the disclaimer
|
||||||
|
@ -11,7 +10,7 @@ libpng-manual.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
Based on:
|
Based on:
|
||||||
|
|
||||||
libpng versions 0.97, January 1998, through 1.6.34 - September 29, 2017
|
libpng versions 0.97, January 1998, through 1.6.35 - July 15, 2018
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2017 Glenn Randers-Pehrson
|
Copyright (c) 1998-2017 Glenn Randers-Pehrson
|
||||||
|
|
||||||
|
@ -348,18 +347,18 @@ Customizing libpng.
|
||||||
FILE *fp = fopen(file_name, "rb");
|
FILE *fp = fopen(file_name, "rb");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
{
|
{
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fread(header, 1, number, fp) != number)
|
if (fread(header, 1, number, fp) != number)
|
||||||
{
|
{
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_png = !png_sig_cmp(header, 0, number);
|
is_png = !png_sig_cmp(header, 0, number);
|
||||||
if (!is_png)
|
if (!is_png)
|
||||||
{
|
{
|
||||||
return (NOT_PNG);
|
return NOT_PNG;
|
||||||
}
|
}
|
||||||
|
|
||||||
Next, png_struct and png_info need to be allocated and initialized. In
|
Next, png_struct and png_info need to be allocated and initialized. In
|
||||||
|
@ -378,7 +377,7 @@ create the structure, so your application should check for that.
|
||||||
user_error_fn, user_warning_fn);
|
user_error_fn, user_warning_fn);
|
||||||
|
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
|
|
||||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||||
|
|
||||||
|
@ -386,7 +385,7 @@ create the structure, so your application should check for that.
|
||||||
{
|
{
|
||||||
png_destroy_read_struct(&png_ptr,
|
png_destroy_read_struct(&png_ptr,
|
||||||
(png_infopp)NULL, (png_infopp)NULL);
|
(png_infopp)NULL, (png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
If you want to use your own memory allocation routines,
|
If you want to use your own memory allocation routines,
|
||||||
|
@ -421,7 +420,7 @@ free any memory.
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||||
&end_info);
|
&end_info);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pass (png_infopp)NULL instead of &end_info if you didn't create
|
Pass (png_infopp)NULL instead of &end_info if you didn't create
|
||||||
|
@ -503,7 +502,7 @@ input stream. You must supply the function
|
||||||
|
|
||||||
png_byte name[5];
|
png_byte name[5];
|
||||||
png_byte *data;
|
png_byte *data;
|
||||||
png_size_t size;
|
size_t size;
|
||||||
|
|
||||||
/* Note that libpng has already taken care of
|
/* Note that libpng has already taken care of
|
||||||
the CRC handling */
|
the CRC handling */
|
||||||
|
@ -512,9 +511,9 @@ input stream. You must supply the function
|
||||||
unknown chunk structure, process it, and return one
|
unknown chunk structure, process it, and return one
|
||||||
of the following: */
|
of the following: */
|
||||||
|
|
||||||
return (-n); /* chunk had an error */
|
return -n; /* chunk had an error */
|
||||||
return (0); /* did not recognize */
|
return 0; /* did not recognize */
|
||||||
return (n); /* success */
|
return n; /* success */
|
||||||
}
|
}
|
||||||
|
|
||||||
(You can give your function another name that you like instead of
|
(You can give your function another name that you like instead of
|
||||||
|
@ -1003,7 +1002,7 @@ chunks to be assumed to be encoded using sRGB.
|
||||||
png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC);
|
png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC);
|
||||||
|
|
||||||
In this case the output is assumed to be something like an sRGB conformant
|
In this case the output is assumed to be something like an sRGB conformant
|
||||||
display preceeded by a power-law lookup table of power 1.45. This is how
|
display preceded by a power-law lookup table of power 1.45. This is how
|
||||||
early Mac systems behaved.
|
early Mac systems behaved.
|
||||||
|
|
||||||
png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR);
|
png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR);
|
||||||
|
@ -1055,7 +1054,7 @@ faster.)
|
||||||
|
|
||||||
When the default gamma of PNG files doesn't match the output gamma.
|
When the default gamma of PNG files doesn't match the output gamma.
|
||||||
If you have PNG files with no gamma information png_set_alpha_mode allows
|
If you have PNG files with no gamma information png_set_alpha_mode allows
|
||||||
you to provide a default gamma, but it also sets the ouput gamma to the
|
you to provide a default gamma, but it also sets the output gamma to the
|
||||||
matching value. If you know your PNG files have a gamma that doesn't
|
matching value. If you know your PNG files have a gamma that doesn't
|
||||||
match the output you can take advantage of the fact that
|
match the output you can take advantage of the fact that
|
||||||
png_set_alpha_mode always sets the output gamma but only sets the PNG
|
png_set_alpha_mode always sets the output gamma but only sets the PNG
|
||||||
|
@ -2409,7 +2408,7 @@ separate.
|
||||||
{
|
{
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||||
(png_infopp)NULL);
|
(png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_read_end(png_ptr, end_info);
|
png_read_end(png_ptr, end_info);
|
||||||
|
@ -2549,7 +2548,7 @@ png_infop info_ptr;
|
||||||
user_error_fn, user_warning_fn);
|
user_error_fn, user_warning_fn);
|
||||||
|
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
|
|
||||||
info_ptr = png_create_info_struct(png_ptr);
|
info_ptr = png_create_info_struct(png_ptr);
|
||||||
|
|
||||||
|
@ -2557,14 +2556,14 @@ png_infop info_ptr;
|
||||||
{
|
{
|
||||||
png_destroy_read_struct(&png_ptr,
|
png_destroy_read_struct(&png_ptr,
|
||||||
(png_infopp)NULL, (png_infopp)NULL);
|
(png_infopp)NULL, (png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setjmp(png_jmpbuf(png_ptr)))
|
if (setjmp(png_jmpbuf(png_ptr)))
|
||||||
{
|
{
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||||
(png_infopp)NULL);
|
(png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This one's new. You can provide functions
|
/* This one's new. You can provide functions
|
||||||
|
@ -2598,7 +2597,7 @@ png_infop info_ptr;
|
||||||
{
|
{
|
||||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||||
(png_infopp)NULL);
|
(png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This one's new also. Simply give it a chunk
|
/* This one's new also. Simply give it a chunk
|
||||||
|
@ -2742,7 +2741,7 @@ custom writing functions. See the discussion under Customizing libpng.
|
||||||
FILE *fp = fopen(file_name, "wb");
|
FILE *fp = fopen(file_name, "wb");
|
||||||
|
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
|
|
||||||
Next, png_struct and png_info need to be allocated and initialized.
|
Next, png_struct and png_info need to be allocated and initialized.
|
||||||
As these can be both relatively large, you may not want to store these
|
As these can be both relatively large, you may not want to store these
|
||||||
|
@ -2757,14 +2756,14 @@ both "png_ptr"; you can call them anything you like, such as
|
||||||
user_error_fn, user_warning_fn);
|
user_error_fn, user_warning_fn);
|
||||||
|
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
|
|
||||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||||
if (!info_ptr)
|
if (!info_ptr)
|
||||||
{
|
{
|
||||||
png_destroy_write_struct(&png_ptr,
|
png_destroy_write_struct(&png_ptr,
|
||||||
(png_infopp)NULL);
|
(png_infopp)NULL);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
If you want to use your own memory allocation routines,
|
If you want to use your own memory allocation routines,
|
||||||
|
@ -2791,7 +2790,7 @@ section below for more information on the libpng error handling.
|
||||||
{
|
{
|
||||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return (ERROR);
|
return ERROR;
|
||||||
}
|
}
|
||||||
...
|
...
|
||||||
return;
|
return;
|
||||||
|
@ -3779,7 +3778,7 @@ in-memory bitmap formats or to be written from the same formats. If these
|
||||||
formats do not accommodate your needs then you can, and should, use the more
|
formats do not accommodate your needs then you can, and should, use the more
|
||||||
sophisticated APIs above - these support a wide variety of in-memory formats
|
sophisticated APIs above - these support a wide variety of in-memory formats
|
||||||
and a wide variety of sophisticated transformations to those formats as well
|
and a wide variety of sophisticated transformations to those formats as well
|
||||||
as a wide variety of APIs to manipulate ancilliary information.
|
as a wide variety of APIs to manipulate ancillary information.
|
||||||
|
|
||||||
To read a PNG file using the simplified API:
|
To read a PNG file using the simplified API:
|
||||||
|
|
||||||
|
@ -4102,7 +4101,7 @@ READ APIs
|
||||||
The PNG header is read from the stdio FILE object.
|
The PNG header is read from the stdio FILE object.
|
||||||
|
|
||||||
int png_image_begin_read_from_memory(png_imagep image,
|
int png_image_begin_read_from_memory(png_imagep image,
|
||||||
png_const_voidp memory, png_size_t size)
|
png_const_voidp memory, size_t size)
|
||||||
|
|
||||||
The PNG header is read from the given memory buffer.
|
The PNG header is read from the given memory buffer.
|
||||||
|
|
||||||
|
@ -4255,10 +4254,10 @@ png_get_io_ptr(). For example:
|
||||||
The replacement I/O functions must have prototypes as follows:
|
The replacement I/O functions must have prototypes as follows:
|
||||||
|
|
||||||
void user_read_data(png_structp png_ptr,
|
void user_read_data(png_structp png_ptr,
|
||||||
png_bytep data, png_size_t length);
|
png_bytep data, size_t length);
|
||||||
|
|
||||||
void user_write_data(png_structp png_ptr,
|
void user_write_data(png_structp png_ptr,
|
||||||
png_bytep data, png_size_t length);
|
png_bytep data, size_t length);
|
||||||
|
|
||||||
void user_flush_data(png_structp png_ptr);
|
void user_flush_data(png_structp png_ptr);
|
||||||
|
|
||||||
|
@ -4784,7 +4783,7 @@ behavior in case the application runs out of memory part-way through
|
||||||
the process.
|
the process.
|
||||||
|
|
||||||
We changed the prototypes of png_get_compression_buffer_size() and
|
We changed the prototypes of png_get_compression_buffer_size() and
|
||||||
png_set_compression_buffer_size() to work with png_size_t instead of
|
png_set_compression_buffer_size() to work with size_t instead of
|
||||||
png_uint_32.
|
png_uint_32.
|
||||||
|
|
||||||
Support for numbered error messages was removed by default, since we
|
Support for numbered error messages was removed by default, since we
|
||||||
|
@ -5255,9 +5254,8 @@ or you can browse it with a web browser at
|
||||||
https://github.com/glennrp/libpng or
|
https://github.com/glennrp/libpng or
|
||||||
https://sourceforge.net/p/libpng/code/ci/libpng16/tree/
|
https://sourceforge.net/p/libpng/code/ci/libpng16/tree/
|
||||||
|
|
||||||
Patches can be sent to glennrp at users.sourceforge.net or to
|
Patches can be sent to png-mng-implement at lists.sourceforge.net or
|
||||||
png-mng-implement at lists.sourceforge.net or you can upload them to
|
you can upload them to the libpng bug tracker at
|
||||||
the libpng bug tracker at
|
|
||||||
|
|
||||||
https://libpng.sourceforge.io/
|
https://libpng.sourceforge.io/
|
||||||
|
|
||||||
|
@ -5266,9 +5264,9 @@ or as a "pull request" to
|
||||||
https://github.com/glennrp/libpng/pulls
|
https://github.com/glennrp/libpng/pulls
|
||||||
|
|
||||||
We also accept patches built from the tar or zip distributions, and
|
We also accept patches built from the tar or zip distributions, and
|
||||||
simple verbal discriptions of bug fixes, reported either to the
|
simple verbal descriptions of bug fixes, reported either to the
|
||||||
SourceForge bug tracker, to the png-mng-implement at lists.sf.net
|
SourceForge bug tracker, to the png-mng-implement at lists.sf.net
|
||||||
mailing list, as github issues, or directly to glennrp.
|
mailing list, as github issues.
|
||||||
|
|
||||||
XV. Coding style
|
XV. Coding style
|
||||||
|
|
||||||
|
@ -5289,7 +5287,7 @@ braces on separate lines:
|
||||||
The braces can be omitted from simple one-line actions:
|
The braces can be omitted from simple one-line actions:
|
||||||
|
|
||||||
if (condition)
|
if (condition)
|
||||||
return (0);
|
return 0;
|
||||||
|
|
||||||
We use 3-space indentation, except for continued statements which
|
We use 3-space indentation, except for continued statements which
|
||||||
are usually indented the same as the first line of the statement
|
are usually indented the same as the first line of the statement
|
||||||
|
@ -5414,7 +5412,7 @@ Since the PNG Development group is an ad-hoc body, we can't make
|
||||||
an official declaration.
|
an official declaration.
|
||||||
|
|
||||||
This is your unofficial assurance that libpng from version 0.71 and
|
This is your unofficial assurance that libpng from version 0.71 and
|
||||||
upward through 1.6.34 are Y2K compliant. It is my belief that earlier
|
upward through 1.6.35 are Y2K compliant. It is my belief that earlier
|
||||||
versions were also Y2K compliant.
|
versions were also Y2K compliant.
|
||||||
|
|
||||||
Libpng only has two year fields. One is a 2-byte unsigned integer
|
Libpng only has two year fields. One is a 2-byte unsigned integer
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* png.c - location for general purpose libpng functions
|
/* png.c - location for general purpose libpng functions
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.33 [September 28, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
#include "pngpriv.h"
|
#include "pngpriv.h"
|
||||||
|
|
||||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
/* Generate a compiler error if there is an old png.h in the search path. */
|
||||||
typedef png_libpng_version_1_6_34 Your_png_h_is_not_version_1_6_34;
|
typedef png_libpng_version_1_6_35 Your_png_h_is_not_version_1_6_35;
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
/* The version tests may need to be added to, but the problem warning has
|
/* The version tests may need to be added to, but the problem warning has
|
||||||
|
@ -71,7 +71,7 @@ png_set_sig_bytes(png_structrp png_ptr, int num_bytes)
|
||||||
* PNG signature (this is the same behavior as strcmp, memcmp, etc).
|
* PNG signature (this is the same behavior as strcmp, memcmp, etc).
|
||||||
*/
|
*/
|
||||||
int PNGAPI
|
int PNGAPI
|
||||||
png_sig_cmp(png_const_bytep sig, png_size_t start, png_size_t num_to_check)
|
png_sig_cmp(png_const_bytep sig, size_t start, size_t num_to_check)
|
||||||
{
|
{
|
||||||
png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
|
png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ png_reset_crc(png_structrp png_ptr)
|
||||||
* trouble of calculating it.
|
* trouble of calculating it.
|
||||||
*/
|
*/
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_calculate_crc(png_structrp png_ptr, png_const_bytep ptr, png_size_t length)
|
png_calculate_crc(png_structrp png_ptr, png_const_bytep ptr, size_t length)
|
||||||
{
|
{
|
||||||
int need_crc = 1;
|
int need_crc = 1;
|
||||||
|
|
||||||
|
@ -421,7 +421,7 @@ png_destroy_info_struct(png_const_structrp png_ptr, png_infopp info_ptr_ptr)
|
||||||
* those cases where it does anything other than a memset.
|
* those cases where it does anything other than a memset.
|
||||||
*/
|
*/
|
||||||
PNG_FUNCTION(void,PNGAPI
|
PNG_FUNCTION(void,PNGAPI
|
||||||
png_info_init_3,(png_infopp ptr_ptr, png_size_t png_info_struct_size),
|
png_info_init_3,(png_infopp ptr_ptr, size_t png_info_struct_size),
|
||||||
PNG_DEPRECATED)
|
PNG_DEPRECATED)
|
||||||
{
|
{
|
||||||
png_inforp info_ptr = *ptr_ptr;
|
png_inforp info_ptr = *ptr_ptr;
|
||||||
|
@ -816,21 +816,21 @@ png_get_copyright(png_const_structrp png_ptr)
|
||||||
#else
|
#else
|
||||||
# ifdef __STDC__
|
# ifdef __STDC__
|
||||||
return PNG_STRING_NEWLINE \
|
return PNG_STRING_NEWLINE \
|
||||||
"libpng version 1.6.34+apng - September 29, 2017" PNG_STRING_NEWLINE \
|
"libpng version 1.6.35+apng - July 15, 2018" PNG_STRING_NEWLINE \
|
||||||
"Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson" \
|
"Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
|
||||||
PNG_STRING_NEWLINE \
|
PNG_STRING_NEWLINE \
|
||||||
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
|
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
|
||||||
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
|
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
|
||||||
PNG_STRING_NEWLINE \
|
PNG_STRING_NEWLINE \
|
||||||
"Portions Copyright (c) 2006-2007 Andrew Smith" PNG_STRING_NEWLINE \
|
"Portions Copyright (c) 2006-2007 Andrew Smith" PNG_STRING_NEWLINE \
|
||||||
"Portions Copyright (c) 2008-2017 Max Stepin" PNG_STRING_NEWLINE ;
|
"Portions Copyright (c) 2008-2018 Max Stepin" PNG_STRING_NEWLINE ;
|
||||||
# else
|
# else
|
||||||
return "libpng version 1.6.34+apng - September 29, 2017\
|
return "libpng version 1.6.35+apng - July 15, 2018\
|
||||||
Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson\
|
Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson\
|
||||||
Copyright (c) 1996-1997 Andreas Dilger\
|
Copyright (c) 1996-1997 Andreas Dilger\
|
||||||
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\
|
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\
|
||||||
Portions Copyright (c) 2006-2007 Andrew Smith\
|
Portions Copyright (c) 2006-2007 Andrew Smith\
|
||||||
Portions Copyright (c) 2008-2017 Max Stepin";
|
Portions Copyright (c) 2008-2018 Max Stepin";
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -946,7 +946,7 @@ png_handle_as_unknown(png_const_structrp png_ptr, png_const_bytep chunk_name)
|
||||||
|
|
||||||
/* The code is the fifth byte after each four byte string. Historically this
|
/* The code is the fifth byte after each four byte string. Historically this
|
||||||
* code was always searched from the end of the list, this is no longer
|
* code was always searched from the end of the list, this is no longer
|
||||||
* necessary because the 'set' routine handles duplicate entries correcty.
|
* necessary because the 'set' routine handles duplicate entries correctly.
|
||||||
*/
|
*/
|
||||||
do /* num_chunk_list > 0, so at least one */
|
do /* num_chunk_list > 0, so at least one */
|
||||||
{
|
{
|
||||||
|
@ -2071,7 +2071,7 @@ png_icc_check_header(png_const_structrp png_ptr, png_colorspacerp colorspace,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Data checks (could be skipped). These checks must be independent of the
|
/* Data checks (could be skipped). These checks must be independent of the
|
||||||
* version number; however, the version number doesn't accomodate changes in
|
* version number; however, the version number doesn't accommodate changes in
|
||||||
* the header fields (just the known tags and the interpretation of the
|
* the header fields (just the known tags and the interpretation of the
|
||||||
* data.)
|
* data.)
|
||||||
*/
|
*/
|
||||||
|
@ -2711,7 +2711,7 @@ png_check_IHDR(png_const_structrp png_ptr,
|
||||||
|
|
||||||
#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
|
#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
|
||||||
/* ASCII to fp functions */
|
/* ASCII to fp functions */
|
||||||
/* Check an ASCII formated floating point value, see the more detailed
|
/* Check an ASCII formatted floating point value, see the more detailed
|
||||||
* comments in pngpriv.h
|
* comments in pngpriv.h
|
||||||
*/
|
*/
|
||||||
/* The following is used internally to preserve the sticky flags */
|
/* The following is used internally to preserve the sticky flags */
|
||||||
|
@ -2719,11 +2719,11 @@ png_check_IHDR(png_const_structrp png_ptr,
|
||||||
#define png_fp_set(state, value) ((state) = (value) | ((state) & PNG_FP_STICKY))
|
#define png_fp_set(state, value) ((state) = (value) | ((state) & PNG_FP_STICKY))
|
||||||
|
|
||||||
int /* PRIVATE */
|
int /* PRIVATE */
|
||||||
png_check_fp_number(png_const_charp string, png_size_t size, int *statep,
|
png_check_fp_number(png_const_charp string, size_t size, int *statep,
|
||||||
png_size_tp whereami)
|
png_size_tp whereami)
|
||||||
{
|
{
|
||||||
int state = *statep;
|
int state = *statep;
|
||||||
png_size_t i = *whereami;
|
size_t i = *whereami;
|
||||||
|
|
||||||
while (i < size)
|
while (i < size)
|
||||||
{
|
{
|
||||||
|
@ -2846,10 +2846,10 @@ PNG_FP_End:
|
||||||
|
|
||||||
/* The same but for a complete string. */
|
/* The same but for a complete string. */
|
||||||
int
|
int
|
||||||
png_check_fp_string(png_const_charp string, png_size_t size)
|
png_check_fp_string(png_const_charp string, size_t size)
|
||||||
{
|
{
|
||||||
int state=0;
|
int state=0;
|
||||||
png_size_t char_index=0;
|
size_t char_index=0;
|
||||||
|
|
||||||
if (png_check_fp_number(string, size, &state, &char_index) != 0 &&
|
if (png_check_fp_number(string, size, &state, &char_index) != 0 &&
|
||||||
(char_index == size || string[char_index] == 0))
|
(char_index == size || string[char_index] == 0))
|
||||||
|
@ -2910,7 +2910,7 @@ png_pow10(int power)
|
||||||
#pragma GCC diagnostic warning "-Wstrict-overflow=2"
|
#pragma GCC diagnostic warning "-Wstrict-overflow=2"
|
||||||
#endif /* GCC_STRICT_OVERFLOW */
|
#endif /* GCC_STRICT_OVERFLOW */
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_ascii_from_fp(png_const_structrp png_ptr, png_charp ascii, png_size_t size,
|
png_ascii_from_fp(png_const_structrp png_ptr, png_charp ascii, size_t size,
|
||||||
double fp, unsigned int precision)
|
double fp, unsigned int precision)
|
||||||
{
|
{
|
||||||
/* We use standard functions from math.h, but not printf because
|
/* We use standard functions from math.h, but not printf because
|
||||||
|
@ -3241,7 +3241,7 @@ png_ascii_from_fp(png_const_structrp png_ptr, png_charp ascii, png_size_t size,
|
||||||
*/
|
*/
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_ascii_from_fixed(png_const_structrp png_ptr, png_charp ascii,
|
png_ascii_from_fixed(png_const_structrp png_ptr, png_charp ascii,
|
||||||
png_size_t size, png_fixed_point fp)
|
size_t size, png_fixed_point fp)
|
||||||
{
|
{
|
||||||
/* Require space for 10 decimal digits, a decimal point, a minus sign and a
|
/* Require space for 10 decimal digits, a decimal point, a minus sign and a
|
||||||
* trailing \0, 13 characters:
|
* trailing \0, 13 characters:
|
||||||
|
@ -4348,7 +4348,7 @@ png_set_option(png_structrp png_ptr, int option, int onoff)
|
||||||
png_uint_32 setting = (2U + (onoff != 0)) << option;
|
png_uint_32 setting = (2U + (onoff != 0)) << option;
|
||||||
png_uint_32 current = png_ptr->options;
|
png_uint_32 current = png_ptr->options;
|
||||||
|
|
||||||
png_ptr->options = (png_uint_32)(((current & ~mask) | setting) & 0xff);
|
png_ptr->options = (png_uint_32)((current & ~mask) | setting);
|
||||||
|
|
||||||
return (int)(current & mask) >> option;
|
return (int)(current & mask) >> option;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
/* png.h - header file for PNG reference library
|
/* png.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* libpng version 1.6.34, September 29, 2017
|
* libpng version 1.6.35, July 15, 2018
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
* Authors and maintainers:
|
* Authors and maintainers:
|
||||||
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
|
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
|
||||||
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
|
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
|
||||||
* libpng versions 0.97, January 1998, through 1.6.34, September 29, 2017:
|
* libpng versions 0.97, January 1998, through 1.6.35, July 15, 2018:
|
||||||
* Glenn Randers-Pehrson.
|
* Glenn Randers-Pehrson.
|
||||||
* See also "Contributing Authors", below.
|
* See also "Contributing Authors", below.
|
||||||
*/
|
*/
|
||||||
|
@ -31,8 +31,8 @@
|
||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
*
|
*
|
||||||
* libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are
|
* libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are
|
||||||
* Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
|
* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
|
||||||
* derived from libpng-1.0.6, and are distributed according to the same
|
* derived from libpng-1.0.6, and are distributed according to the same
|
||||||
* disclaimer and license as libpng-1.0.6 with the following individuals
|
* disclaimer and license as libpng-1.0.6 with the following individuals
|
||||||
* added to the list of Contributing Authors:
|
* added to the list of Contributing Authors:
|
||||||
|
@ -219,7 +219,7 @@
|
||||||
* ...
|
* ...
|
||||||
* 1.5.30 15 10527 15.so.15.30[.0]
|
* 1.5.30 15 10527 15.so.15.30[.0]
|
||||||
* ...
|
* ...
|
||||||
* 1.6.34 16 10633 16.so.16.34[.0]
|
* 1.6.35 16 10635 16.so.16.35[.0]
|
||||||
*
|
*
|
||||||
* Henceforth the source version will match the shared-library major
|
* Henceforth the source version will match the shared-library major
|
||||||
* and minor numbers; the shared-library major version number will be
|
* and minor numbers; the shared-library major version number will be
|
||||||
|
@ -247,13 +247,13 @@
|
||||||
* Y2K compliance in libpng:
|
* Y2K compliance in libpng:
|
||||||
* =========================
|
* =========================
|
||||||
*
|
*
|
||||||
* September 29, 2017
|
* July 15, 2018
|
||||||
*
|
*
|
||||||
* Since the PNG Development group is an ad-hoc body, we can't make
|
* Since the PNG Development group is an ad-hoc body, we can't make
|
||||||
* an official declaration.
|
* an official declaration.
|
||||||
*
|
*
|
||||||
* This is your unofficial assurance that libpng from version 0.71 and
|
* This is your unofficial assurance that libpng from version 0.71 and
|
||||||
* upward through 1.6.34 are Y2K compliant. It is my belief that
|
* upward through 1.6.35 are Y2K compliant. It is my belief that
|
||||||
* earlier versions were also Y2K compliant.
|
* earlier versions were also Y2K compliant.
|
||||||
*
|
*
|
||||||
* Libpng only has two year fields. One is a 2-byte unsigned integer
|
* Libpng only has two year fields. One is a 2-byte unsigned integer
|
||||||
|
@ -315,9 +315,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Version information for png.h - this should match the version in png.c */
|
/* Version information for png.h - this should match the version in png.c */
|
||||||
#define PNG_LIBPNG_VER_STRING "1.6.34+apng"
|
#define PNG_LIBPNG_VER_STRING "1.6.35+apng"
|
||||||
#define PNG_HEADER_VERSION_STRING \
|
#define PNG_HEADER_VERSION_STRING \
|
||||||
" libpng version 1.6.34+apng - September 29, 2017\n"
|
" libpng version 1.6.35+apng - July 15, 2018\n"
|
||||||
|
|
||||||
#define PNG_LIBPNG_VER_SONUM 16
|
#define PNG_LIBPNG_VER_SONUM 16
|
||||||
#define PNG_LIBPNG_VER_DLLNUM 16
|
#define PNG_LIBPNG_VER_DLLNUM 16
|
||||||
|
@ -325,13 +325,13 @@
|
||||||
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
|
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
|
||||||
#define PNG_LIBPNG_VER_MAJOR 1
|
#define PNG_LIBPNG_VER_MAJOR 1
|
||||||
#define PNG_LIBPNG_VER_MINOR 6
|
#define PNG_LIBPNG_VER_MINOR 6
|
||||||
#define PNG_LIBPNG_VER_RELEASE 34
|
#define PNG_LIBPNG_VER_RELEASE 35
|
||||||
|
|
||||||
/* This should match the numeric part of the final component of
|
/* This should match the numeric part of the final component of
|
||||||
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
|
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PNG_LIBPNG_VER_BUILD 0
|
#define PNG_LIBPNG_VER_BUILD 02
|
||||||
|
|
||||||
/* Release Status */
|
/* Release Status */
|
||||||
#define PNG_LIBPNG_BUILD_ALPHA 1
|
#define PNG_LIBPNG_BUILD_ALPHA 1
|
||||||
|
@ -348,7 +348,7 @@
|
||||||
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
|
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
|
||||||
PNG_LIBPNG_BUILD_PRIVATE */
|
PNG_LIBPNG_BUILD_PRIVATE */
|
||||||
|
|
||||||
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
|
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA
|
||||||
|
|
||||||
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
|
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
|
||||||
* We must not include leading zeros.
|
* We must not include leading zeros.
|
||||||
|
@ -356,7 +356,7 @@
|
||||||
* version 1.0.0 was mis-numbered 100 instead of 10000). From
|
* version 1.0.0 was mis-numbered 100 instead of 10000). From
|
||||||
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
|
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
|
||||||
*/
|
*/
|
||||||
#define PNG_LIBPNG_VER 10634 /* 1.6.34 */
|
#define PNG_LIBPNG_VER 10635 /* 1.6.35 */
|
||||||
|
|
||||||
/* Library configuration: these options cannot be changed after
|
/* Library configuration: these options cannot be changed after
|
||||||
* the library has been built.
|
* the library has been built.
|
||||||
|
@ -481,7 +481,7 @@ extern "C" {
|
||||||
/* This triggers a compiler error in png.c, if png.c and png.h
|
/* This triggers a compiler error in png.c, if png.c and png.h
|
||||||
* do not agree upon the version number.
|
* do not agree upon the version number.
|
||||||
*/
|
*/
|
||||||
typedef char* png_libpng_version_1_6_34;
|
typedef char* png_libpng_version_1_6_35;
|
||||||
|
|
||||||
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
|
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
|
||||||
*
|
*
|
||||||
|
@ -622,8 +622,8 @@ typedef struct png_text_struct
|
||||||
png_charp key; /* keyword, 1-79 character description of "text" */
|
png_charp key; /* keyword, 1-79 character description of "text" */
|
||||||
png_charp text; /* comment, may be an empty string (ie "")
|
png_charp text; /* comment, may be an empty string (ie "")
|
||||||
or a NULL pointer */
|
or a NULL pointer */
|
||||||
png_size_t text_length; /* length of the text string */
|
size_t text_length; /* length of the text string */
|
||||||
png_size_t itxt_length; /* length of the itxt string */
|
size_t itxt_length; /* length of the itxt string */
|
||||||
png_charp lang; /* language code, 0-79 characters
|
png_charp lang; /* language code, 0-79 characters
|
||||||
or a NULL pointer */
|
or a NULL pointer */
|
||||||
png_charp lang_key; /* keyword translated UTF-8 string, 0 or more
|
png_charp lang_key; /* keyword translated UTF-8 string, 0 or more
|
||||||
|
@ -676,7 +676,7 @@ typedef struct png_unknown_chunk_t
|
||||||
{
|
{
|
||||||
png_byte name[5]; /* Textual chunk name with '\0' terminator */
|
png_byte name[5]; /* Textual chunk name with '\0' terminator */
|
||||||
png_byte *data; /* Data, should not be modified on read! */
|
png_byte *data; /* Data, should not be modified on read! */
|
||||||
png_size_t size;
|
size_t size;
|
||||||
|
|
||||||
/* On write 'location' must be set using the flag values listed below.
|
/* On write 'location' must be set using the flag values listed below.
|
||||||
* Notice that on read it is set by libpng however the values stored have
|
* Notice that on read it is set by libpng however the values stored have
|
||||||
|
@ -701,7 +701,7 @@ typedef png_unknown_chunk * * png_unknown_chunkpp;
|
||||||
/* Maximum positive integer used in PNG is (2^31)-1 */
|
/* Maximum positive integer used in PNG is (2^31)-1 */
|
||||||
#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
|
#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
|
||||||
#define PNG_UINT_32_MAX ((png_uint_32)(-1))
|
#define PNG_UINT_32_MAX ((png_uint_32)(-1))
|
||||||
#define PNG_SIZE_MAX ((png_size_t)(-1))
|
#define PNG_SIZE_MAX ((size_t)(-1))
|
||||||
|
|
||||||
/* These are constants for fixed point values encoded in the
|
/* These are constants for fixed point values encoded in the
|
||||||
* PNG specification manner (x100000)
|
* PNG specification manner (x100000)
|
||||||
|
@ -811,7 +811,7 @@ typedef png_unknown_chunk * * png_unknown_chunkpp;
|
||||||
typedef struct png_row_info_struct
|
typedef struct png_row_info_struct
|
||||||
{
|
{
|
||||||
png_uint_32 width; /* width of row */
|
png_uint_32 width; /* width of row */
|
||||||
png_size_t rowbytes; /* number of bytes in row */
|
size_t rowbytes; /* number of bytes in row */
|
||||||
png_byte color_type; /* color type of row */
|
png_byte color_type; /* color type of row */
|
||||||
png_byte bit_depth; /* bit depth of row */
|
png_byte bit_depth; /* bit depth of row */
|
||||||
png_byte channels; /* number of channels (1, 2, 3, or 4) */
|
png_byte channels; /* number of channels (1, 2, 3, or 4) */
|
||||||
|
@ -830,7 +830,7 @@ typedef png_row_info * * png_row_infopp;
|
||||||
* expected to return the read data in the buffer.
|
* expected to return the read data in the buffer.
|
||||||
*/
|
*/
|
||||||
typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp));
|
typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp));
|
||||||
typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t));
|
typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, size_t));
|
||||||
typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp));
|
typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp));
|
||||||
typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32,
|
typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32,
|
||||||
int));
|
int));
|
||||||
|
@ -971,8 +971,8 @@ PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes));
|
||||||
* signature, and non-zero otherwise. Having num_to_check == 0 or
|
* signature, and non-zero otherwise. Having num_to_check == 0 or
|
||||||
* start > 7 will always fail (ie return non-zero).
|
* start > 7 will always fail (ie return non-zero).
|
||||||
*/
|
*/
|
||||||
PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start,
|
PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, size_t start,
|
||||||
png_size_t num_to_check));
|
size_t num_to_check));
|
||||||
|
|
||||||
/* Simple signature checking function. This is the same as calling
|
/* Simple signature checking function. This is the same as calling
|
||||||
* png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
|
* png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
|
||||||
|
@ -991,11 +991,11 @@ PNG_EXPORTA(5, png_structp, png_create_write_struct,
|
||||||
png_error_ptr warn_fn),
|
png_error_ptr warn_fn),
|
||||||
PNG_ALLOCATED);
|
PNG_ALLOCATED);
|
||||||
|
|
||||||
PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size,
|
PNG_EXPORT(6, size_t, png_get_compression_buffer_size,
|
||||||
(png_const_structrp png_ptr));
|
(png_const_structrp png_ptr));
|
||||||
|
|
||||||
PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr,
|
PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr,
|
||||||
png_size_t size));
|
size_t size));
|
||||||
|
|
||||||
/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
|
/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
|
||||||
* match up.
|
* match up.
|
||||||
|
@ -1048,7 +1048,7 @@ PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr));
|
||||||
|
|
||||||
/* Write a PNG chunk - size, type, (optional) data, CRC. */
|
/* Write a PNG chunk - size, type, (optional) data, CRC. */
|
||||||
PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep
|
PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep
|
||||||
chunk_name, png_const_bytep data, png_size_t length));
|
chunk_name, png_const_bytep data, size_t length));
|
||||||
|
|
||||||
/* Write the start of a PNG chunk - length and chunk name. */
|
/* Write the start of a PNG chunk - length and chunk name. */
|
||||||
PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr,
|
PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr,
|
||||||
|
@ -1056,7 +1056,7 @@ PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr,
|
||||||
|
|
||||||
/* Write the data of a PNG chunk started with png_write_chunk_start(). */
|
/* Write the data of a PNG chunk started with png_write_chunk_start(). */
|
||||||
PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr,
|
PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr,
|
||||||
png_const_bytep data, png_size_t length));
|
png_const_bytep data, size_t length));
|
||||||
|
|
||||||
/* Finish a chunk started with png_write_chunk_start() (includes CRC). */
|
/* Finish a chunk started with png_write_chunk_start() (includes CRC). */
|
||||||
PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr));
|
PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr));
|
||||||
|
@ -1070,7 +1070,7 @@ PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr),
|
||||||
* the API will be removed in the future.
|
* the API will be removed in the future.
|
||||||
*/
|
*/
|
||||||
PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr,
|
PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr,
|
||||||
png_size_t png_info_struct_size), PNG_DEPRECATED);
|
size_t png_info_struct_size), PNG_DEPRECATED);
|
||||||
|
|
||||||
/* Writes all the PNG information before the image. */
|
/* Writes all the PNG information before the image. */
|
||||||
PNG_EXPORT(20, void, png_write_info_before_PLTE,
|
PNG_EXPORT(20, void, png_write_info_before_PLTE,
|
||||||
|
@ -1167,7 +1167,7 @@ PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth,
|
||||||
* corresponding composited pixel, and the color channels are unassociated
|
* corresponding composited pixel, and the color channels are unassociated
|
||||||
* (not premultiplied). The gamma encoded color channels must be scaled
|
* (not premultiplied). The gamma encoded color channels must be scaled
|
||||||
* according to the contribution and to do this it is necessary to undo
|
* according to the contribution and to do this it is necessary to undo
|
||||||
* the encoding, scale the color values, perform the composition and reencode
|
* the encoding, scale the color values, perform the composition and re-encode
|
||||||
* the values. This is the 'PNG' mode.
|
* the values. This is the 'PNG' mode.
|
||||||
*
|
*
|
||||||
* The alternative is to 'associate' the alpha with the color information by
|
* The alternative is to 'associate' the alpha with the color information by
|
||||||
|
@ -1223,7 +1223,7 @@ PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr,
|
||||||
*
|
*
|
||||||
* png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC);
|
* png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC);
|
||||||
* In this case the output is assumed to be something like an sRGB conformant
|
* In this case the output is assumed to be something like an sRGB conformant
|
||||||
* display preceeded by a power-law lookup table of power 1.45. This is how
|
* display preceded by a power-law lookup table of power 1.45. This is how
|
||||||
* early Mac systems behaved.
|
* early Mac systems behaved.
|
||||||
*
|
*
|
||||||
* png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR);
|
* png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR);
|
||||||
|
@ -1270,7 +1270,7 @@ PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr,
|
||||||
*
|
*
|
||||||
* When the default gamma of PNG files doesn't match the output gamma.
|
* When the default gamma of PNG files doesn't match the output gamma.
|
||||||
* If you have PNG files with no gamma information png_set_alpha_mode allows
|
* If you have PNG files with no gamma information png_set_alpha_mode allows
|
||||||
* you to provide a default gamma, but it also sets the ouput gamma to the
|
* you to provide a default gamma, but it also sets the output gamma to the
|
||||||
* matching value. If you know your PNG files have a gamma that doesn't
|
* matching value. If you know your PNG files have a gamma that doesn't
|
||||||
* match the output you can take advantage of the fact that
|
* match the output you can take advantage of the fact that
|
||||||
* png_set_alpha_mode always sets the output gamma but only sets the PNG
|
* png_set_alpha_mode always sets the output gamma but only sets the PNG
|
||||||
|
@ -1721,7 +1721,7 @@ PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp));
|
||||||
* chunk will cause an error at this point unless it is to be saved.
|
* chunk will cause an error at this point unless it is to be saved.
|
||||||
* positive: The chunk was handled, libpng will ignore/discard it.
|
* positive: The chunk was handled, libpng will ignore/discard it.
|
||||||
*
|
*
|
||||||
* See "INTERACTION WTIH USER CHUNK CALLBACKS" below for important notes about
|
* See "INTERACTION WITH USER CHUNK CALLBACKS" below for important notes about
|
||||||
* how this behavior will change in libpng 1.7
|
* how this behavior will change in libpng 1.7
|
||||||
*/
|
*/
|
||||||
PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr,
|
PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr,
|
||||||
|
@ -1746,7 +1746,7 @@ PNG_EXPORT(91, png_voidp, png_get_progressive_ptr,
|
||||||
|
|
||||||
/* Function to be called when data becomes available */
|
/* Function to be called when data becomes available */
|
||||||
PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr,
|
PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr,
|
||||||
png_inforp info_ptr, png_bytep buffer, png_size_t buffer_size));
|
png_inforp info_ptr, png_bytep buffer, size_t buffer_size));
|
||||||
|
|
||||||
/* A function which may be called *only* within png_process_data to stop the
|
/* A function which may be called *only* within png_process_data to stop the
|
||||||
* processing of any more data. The function returns the number of bytes
|
* processing of any more data. The function returns the number of bytes
|
||||||
|
@ -1755,7 +1755,7 @@ PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr,
|
||||||
* 'save' is set to true the routine will first save all the pending data and
|
* 'save' is set to true the routine will first save all the pending data and
|
||||||
* will always return 0.
|
* will always return 0.
|
||||||
*/
|
*/
|
||||||
PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structrp, int save));
|
PNG_EXPORT(219, size_t, png_process_data_pause, (png_structrp, int save));
|
||||||
|
|
||||||
/* A function which may be called *only* outside (after) a call to
|
/* A function which may be called *only* outside (after) a call to
|
||||||
* png_process_data. It returns the number of bytes of data to skip in the
|
* png_process_data. It returns the number of bytes of data to skip in the
|
||||||
|
@ -1900,7 +1900,7 @@ PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr,
|
||||||
png_const_inforp info_ptr, png_uint_32 flag));
|
png_const_inforp info_ptr, png_uint_32 flag));
|
||||||
|
|
||||||
/* Returns number of bytes needed to hold a transformed row. */
|
/* Returns number of bytes needed to hold a transformed row. */
|
||||||
PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structrp png_ptr,
|
PNG_EXPORT(111, size_t, png_get_rowbytes, (png_const_structrp png_ptr,
|
||||||
png_const_inforp info_ptr));
|
png_const_inforp info_ptr));
|
||||||
|
|
||||||
#ifdef PNG_INFO_IMAGE_SUPPORTED
|
#ifdef PNG_INFO_IMAGE_SUPPORTED
|
||||||
|
@ -2269,7 +2269,7 @@ PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr,
|
||||||
* to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks
|
* to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks
|
||||||
* it simply resets the behavior to the libpng default.
|
* it simply resets the behavior to the libpng default.
|
||||||
*
|
*
|
||||||
* INTERACTION WTIH USER CHUNK CALLBACKS:
|
* INTERACTION WITH USER CHUNK CALLBACKS:
|
||||||
* The per-chunk handling is always used when there is a png_user_chunk_ptr
|
* The per-chunk handling is always used when there is a png_user_chunk_ptr
|
||||||
* callback and the callback returns 0; the chunk is then always stored *unless*
|
* callback and the callback returns 0; the chunk is then always stored *unless*
|
||||||
* it is critical and the per-chunk setting is other than ALWAYS. Notice that
|
* it is critical and the per-chunk setting is other than ALWAYS. Notice that
|
||||||
|
@ -2688,7 +2688,7 @@ PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr,
|
||||||
* The simplified API hides the details of both libpng and the PNG file format
|
* The simplified API hides the details of both libpng and the PNG file format
|
||||||
* itself. It allows PNG files to be read into a very limited number of
|
* itself. It allows PNG files to be read into a very limited number of
|
||||||
* in-memory bitmap formats or to be written from the same formats. If these
|
* in-memory bitmap formats or to be written from the same formats. If these
|
||||||
* formats do not accomodate your needs then you can, and should, use the more
|
* formats do not accommodate your needs then you can, and should, use the more
|
||||||
* sophisticated APIs above - these support a wide variety of in-memory formats
|
* sophisticated APIs above - these support a wide variety of in-memory formats
|
||||||
* and a wide variety of sophisticated transformations to those formats as well
|
* and a wide variety of sophisticated transformations to those formats as well
|
||||||
* as a wide variety of APIs to manipulate ancillary information.
|
* as a wide variety of APIs to manipulate ancillary information.
|
||||||
|
@ -3050,7 +3050,7 @@ PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image,
|
||||||
#endif /* STDIO */
|
#endif /* STDIO */
|
||||||
|
|
||||||
PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image,
|
PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image,
|
||||||
png_const_voidp memory, png_size_t size));
|
png_const_voidp memory, size_t size));
|
||||||
/* The PNG header is read from the given memory buffer. */
|
/* The PNG header is read from the given memory buffer. */
|
||||||
|
|
||||||
PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image,
|
PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image,
|
||||||
|
@ -3163,7 +3163,7 @@ PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory,
|
||||||
* than or equal to the original value.
|
* than or equal to the original value.
|
||||||
*
|
*
|
||||||
* If the function returns false and *memory_bytes was not changed an error
|
* If the function returns false and *memory_bytes was not changed an error
|
||||||
* occured during write. If *memory_bytes was changed, or is not 0 if
|
* occurred during write. If *memory_bytes was changed, or is not 0 if
|
||||||
* 'memory' was NULL, the write would have succeeded but for the memory
|
* 'memory' was NULL, the write would have succeeded but for the memory
|
||||||
* buffer being too small. *memory_bytes contains the required number of
|
* buffer being too small. *memory_bytes contains the required number of
|
||||||
* bytes and will be bigger that the original value.
|
* bytes and will be bigger that the original value.
|
||||||
|
@ -3247,7 +3247,7 @@ PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory,
|
||||||
* option and 'onoff' is 0 (off) or non-0 (on). The value returned is given
|
* option and 'onoff' is 0 (off) or non-0 (on). The value returned is given
|
||||||
* by the PNG_OPTION_ defines below.
|
* by the PNG_OPTION_ defines below.
|
||||||
*
|
*
|
||||||
* HARDWARE: normally hardware capabilites, such as the Intel SSE instructions,
|
* HARDWARE: normally hardware capabilities, such as the Intel SSE instructions,
|
||||||
* are detected at run time, however sometimes it may be impossible
|
* are detected at run time, however sometimes it may be impossible
|
||||||
* to do this in user mode, in which case it is necessary to discover
|
* to do this in user mode, in which case it is necessary to discover
|
||||||
* the capabilities in an OS specific way. Such capabilities are
|
* the capabilities in an OS specific way. Such capabilities are
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
/* pngconf.h - machine configurable file for libpng
|
/* pngconf.h - machine configurable file for libpng
|
||||||
*
|
*
|
||||||
* libpng version 1.6.34, September 29, 2017
|
* libpng version 1.6.35, July 15, 2018
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
*
|
*
|
||||||
* These cases only differ if the operating system does not use the C
|
* These cases only differ if the operating system does not use the C
|
||||||
* calling convention, at present this just means the above cases
|
* calling convention, at present this just means the above cases
|
||||||
* (x86 DOS/Windows sytems) and, even then, this does not apply to
|
* (x86 DOS/Windows systems) and, even then, this does not apply to
|
||||||
* Cygwin running on those systems.
|
* Cygwin running on those systems.
|
||||||
*
|
*
|
||||||
* Note that the value must be defined in pnglibconf.h so that what
|
* Note that the value must be defined in pnglibconf.h so that what
|
||||||
|
@ -515,8 +515,10 @@
|
||||||
# error "libpng requires an unsigned 32-bit (or more) type"
|
# error "libpng requires an unsigned 32-bit (or more) type"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however,
|
/* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t.
|
||||||
* requires an ISOC90 compiler and relies on consistent behavior of sizeof.
|
* From 1.6.0 onwards, an ISO C90 compiler, as well as a standard-compliant
|
||||||
|
* behavior of sizeof and ptrdiff_t are required.
|
||||||
|
* The legacy typedefs are provided here for backwards compatibility.
|
||||||
*/
|
*/
|
||||||
typedef size_t png_size_t;
|
typedef size_t png_size_t;
|
||||||
typedef ptrdiff_t png_ptrdiff_t;
|
typedef ptrdiff_t png_ptrdiff_t;
|
||||||
|
@ -537,13 +539,12 @@ typedef ptrdiff_t png_ptrdiff_t;
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no
|
/* png_alloc_size_t is guaranteed to be no smaller than size_t, and no smaller
|
||||||
* smaller than png_uint_32. Casts from png_size_t or png_uint_32 to
|
* than png_uint_32. Casts from size_t or png_uint_32 to png_alloc_size_t are
|
||||||
* png_alloc_size_t are not necessary; in fact, it is recommended not to use
|
* not necessary; in fact, it is recommended not to use them at all, so that
|
||||||
* them at all so that the compiler can complain when something turns out to be
|
* the compiler can complain when something turns out to be problematic.
|
||||||
* problematic.
|
|
||||||
*
|
*
|
||||||
* Casts in the other direction (from png_alloc_size_t to png_size_t or
|
* Casts in the other direction (from png_alloc_size_t to size_t or
|
||||||
* png_uint_32) should be explicitly applied; however, we do not expect to
|
* png_uint_32) should be explicitly applied; however, we do not expect to
|
||||||
* encounter practical situations that require such conversions.
|
* encounter practical situations that require such conversions.
|
||||||
*
|
*
|
||||||
|
@ -553,7 +554,7 @@ typedef ptrdiff_t png_ptrdiff_t;
|
||||||
#ifdef PNG_SMALL_SIZE_T
|
#ifdef PNG_SMALL_SIZE_T
|
||||||
typedef png_uint_32 png_alloc_size_t;
|
typedef png_uint_32 png_alloc_size_t;
|
||||||
#else
|
#else
|
||||||
typedef png_size_t png_alloc_size_t;
|
typedef size_t png_alloc_size_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler
|
/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler
|
||||||
|
@ -589,8 +590,8 @@ typedef char * png_charp;
|
||||||
typedef const char * png_const_charp;
|
typedef const char * png_const_charp;
|
||||||
typedef png_fixed_point * png_fixed_point_p;
|
typedef png_fixed_point * png_fixed_point_p;
|
||||||
typedef const png_fixed_point * png_const_fixed_point_p;
|
typedef const png_fixed_point * png_const_fixed_point_p;
|
||||||
typedef png_size_t * png_size_tp;
|
typedef size_t * png_size_tp;
|
||||||
typedef const png_size_t * png_const_size_tp;
|
typedef const size_t * png_const_size_tp;
|
||||||
|
|
||||||
#ifdef PNG_STDIO_SUPPORTED
|
#ifdef PNG_STDIO_SUPPORTED
|
||||||
typedef FILE * png_FILE_p;
|
typedef FILE * png_FILE_p;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngget.c - retrieval of values from info struct
|
/* pngget.c - retrieval of values from info struct
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -26,7 +26,7 @@ png_get_valid(png_const_structrp png_ptr, png_const_inforp info_ptr,
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
png_size_t PNGAPI
|
size_t PNGAPI
|
||||||
png_get_rowbytes(png_const_structrp png_ptr, png_const_inforp info_ptr)
|
png_get_rowbytes(png_const_structrp png_ptr, png_const_inforp info_ptr)
|
||||||
{
|
{
|
||||||
if (png_ptr != NULL && info_ptr != NULL)
|
if (png_ptr != NULL && info_ptr != NULL)
|
||||||
|
@ -367,7 +367,7 @@ png_get_y_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr)
|
||||||
static png_fixed_point
|
static png_fixed_point
|
||||||
png_fixed_inches_from_microns(png_const_structrp png_ptr, png_int_32 microns)
|
png_fixed_inches_from_microns(png_const_structrp png_ptr, png_int_32 microns)
|
||||||
{
|
{
|
||||||
/* Convert from metres * 1,000,000 to inches * 100,000, meters to
|
/* Convert from meters * 1,000,000 to inches * 100,000, meters to
|
||||||
* inches is simply *(100/2.54), so we want *(10/2.54) == 500/127.
|
* inches is simply *(100/2.54), so we want *(10/2.54) == 500/127.
|
||||||
* Notice that this can overflow - a warning is output and 0 is
|
* Notice that this can overflow - a warning is output and 0 is
|
||||||
* returned.
|
* returned.
|
||||||
|
@ -741,8 +741,7 @@ png_get_iCCP(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
|
|
||||||
if (png_ptr != NULL && info_ptr != NULL &&
|
if (png_ptr != NULL && info_ptr != NULL &&
|
||||||
(info_ptr->valid & PNG_INFO_iCCP) != 0 &&
|
(info_ptr->valid & PNG_INFO_iCCP) != 0 &&
|
||||||
name != NULL && compression_type != NULL && profile != NULL &&
|
name != NULL && profile != NULL && proflen != NULL)
|
||||||
proflen != NULL)
|
|
||||||
{
|
{
|
||||||
*name = info_ptr->iccp_name;
|
*name = info_ptr->iccp_name;
|
||||||
*profile = info_ptr->iccp_profile;
|
*profile = info_ptr->iccp_profile;
|
||||||
|
@ -750,11 +749,13 @@ png_get_iCCP(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
/* This is somewhat irrelevant since the profile data returned has
|
/* This is somewhat irrelevant since the profile data returned has
|
||||||
* actually been uncompressed.
|
* actually been uncompressed.
|
||||||
*/
|
*/
|
||||||
*compression_type = PNG_COMPRESSION_TYPE_BASE;
|
if (compression_type != NULL)
|
||||||
|
*compression_type = PNG_COMPRESSION_TYPE_BASE;
|
||||||
return (PNG_INFO_iCCP);
|
return (PNG_INFO_iCCP);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1164,7 +1165,7 @@ png_get_user_chunk_ptr(png_const_structrp png_ptr)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
png_size_t PNGAPI
|
size_t PNGAPI
|
||||||
png_get_compression_buffer_size(png_const_structrp png_ptr)
|
png_get_compression_buffer_size(png_const_structrp png_ptr)
|
||||||
{
|
{
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pnginfo.h - header file for PNG reference library
|
/* pnginfo.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.1 [March 28, 2013]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -55,10 +55,10 @@
|
||||||
struct png_info_def
|
struct png_info_def
|
||||||
{
|
{
|
||||||
/* The following are necessary for every PNG file */
|
/* The following are necessary for every PNG file */
|
||||||
png_uint_32 width; /* width of image in pixels (from IHDR) */
|
png_uint_32 width; /* width of image in pixels (from IHDR) */
|
||||||
png_uint_32 height; /* height of image in pixels (from IHDR) */
|
png_uint_32 height; /* height of image in pixels (from IHDR) */
|
||||||
png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */
|
png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */
|
||||||
png_size_t rowbytes; /* bytes needed to hold an untransformed row */
|
size_t rowbytes; /* bytes needed to hold an untransformed row */
|
||||||
png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */
|
png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */
|
||||||
png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */
|
png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */
|
||||||
png_uint_16 num_trans; /* number of transparent palette color (tRNS) */
|
png_uint_16 num_trans; /* number of transparent palette color (tRNS) */
|
||||||
|
@ -247,7 +247,7 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
|
||||||
/* The sCAL chunk describes the actual physical dimensions of the
|
/* The sCAL chunk describes the actual physical dimensions of the
|
||||||
* subject matter of the graphic. The chunk contains a unit specification
|
* subject matter of the graphic. The chunk contains a unit specification
|
||||||
* a byte value, and two ASCII strings representing floating-point
|
* a byte value, and two ASCII strings representing floating-point
|
||||||
* values. The values are width and height corresponsing to one pixel
|
* values. The values are width and height corresponding to one pixel
|
||||||
* in the image. Data values are valid if (valid & PNG_INFO_sCAL) is
|
* in the image. Data values are valid if (valid & PNG_INFO_sCAL) is
|
||||||
* non-zero.
|
* non-zero.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngpread.c - read a png file in push mode
|
/* pngpread.c - read a png file in push mode
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -34,7 +34,7 @@ if (png_ptr->buffer_size < N) \
|
||||||
|
|
||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_process_data(png_structrp png_ptr, png_inforp info_ptr,
|
png_process_data(png_structrp png_ptr, png_inforp info_ptr,
|
||||||
png_bytep buffer, png_size_t buffer_size)
|
png_bytep buffer, size_t buffer_size)
|
||||||
{
|
{
|
||||||
if (png_ptr == NULL || info_ptr == NULL)
|
if (png_ptr == NULL || info_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -47,7 +47,7 @@ png_process_data(png_structrp png_ptr, png_inforp info_ptr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
png_size_t PNGAPI
|
size_t PNGAPI
|
||||||
png_process_data_pause(png_structrp png_ptr, int save)
|
png_process_data_pause(png_structrp png_ptr, int save)
|
||||||
{
|
{
|
||||||
if (png_ptr != NULL)
|
if (png_ptr != NULL)
|
||||||
|
@ -60,7 +60,7 @@ png_process_data_pause(png_structrp png_ptr, int save)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* This includes any pending saved bytes: */
|
/* This includes any pending saved bytes: */
|
||||||
png_size_t remaining = png_ptr->buffer_size;
|
size_t remaining = png_ptr->buffer_size;
|
||||||
png_ptr->buffer_size = 0;
|
png_ptr->buffer_size = 0;
|
||||||
|
|
||||||
/* So subtract the saved buffer size, unless all the data
|
/* So subtract the saved buffer size, unless all the data
|
||||||
|
@ -133,8 +133,8 @@ png_process_some_data(png_structrp png_ptr, png_inforp info_ptr)
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_push_read_sig(png_structrp png_ptr, png_inforp info_ptr)
|
png_push_read_sig(png_structrp png_ptr, png_inforp info_ptr)
|
||||||
{
|
{
|
||||||
png_size_t num_checked = png_ptr->sig_bytes, /* SAFE, does not exceed 8 */
|
size_t num_checked = png_ptr->sig_bytes; /* SAFE, does not exceed 8 */
|
||||||
num_to_check = 8 - num_checked;
|
size_t num_to_check = 8 - num_checked;
|
||||||
|
|
||||||
if (png_ptr->buffer_size < num_to_check)
|
if (png_ptr->buffer_size < num_to_check)
|
||||||
{
|
{
|
||||||
|
@ -518,7 +518,7 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
void PNGCBAPI
|
void PNGCBAPI
|
||||||
png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, size_t length)
|
||||||
{
|
{
|
||||||
png_bytep ptr;
|
png_bytep ptr;
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
||||||
ptr = buffer;
|
ptr = buffer;
|
||||||
if (png_ptr->save_buffer_size != 0)
|
if (png_ptr->save_buffer_size != 0)
|
||||||
{
|
{
|
||||||
png_size_t save_size;
|
size_t save_size;
|
||||||
|
|
||||||
if (length < png_ptr->save_buffer_size)
|
if (length < png_ptr->save_buffer_size)
|
||||||
save_size = length;
|
save_size = length;
|
||||||
|
@ -545,7 +545,7 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
||||||
}
|
}
|
||||||
if (length != 0 && png_ptr->current_buffer_size != 0)
|
if (length != 0 && png_ptr->current_buffer_size != 0)
|
||||||
{
|
{
|
||||||
png_size_t save_size;
|
size_t save_size;
|
||||||
|
|
||||||
if (length < png_ptr->current_buffer_size)
|
if (length < png_ptr->current_buffer_size)
|
||||||
save_size = length;
|
save_size = length;
|
||||||
|
@ -567,7 +567,7 @@ png_push_save_buffer(png_structrp png_ptr)
|
||||||
{
|
{
|
||||||
if (png_ptr->save_buffer_ptr != png_ptr->save_buffer)
|
if (png_ptr->save_buffer_ptr != png_ptr->save_buffer)
|
||||||
{
|
{
|
||||||
png_size_t i, istop;
|
size_t i, istop;
|
||||||
png_bytep sp;
|
png_bytep sp;
|
||||||
png_bytep dp;
|
png_bytep dp;
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ png_push_save_buffer(png_structrp png_ptr)
|
||||||
if (png_ptr->save_buffer_size + png_ptr->current_buffer_size >
|
if (png_ptr->save_buffer_size + png_ptr->current_buffer_size >
|
||||||
png_ptr->save_buffer_max)
|
png_ptr->save_buffer_max)
|
||||||
{
|
{
|
||||||
png_size_t new_max;
|
size_t new_max;
|
||||||
png_bytep old_buffer;
|
png_bytep old_buffer;
|
||||||
|
|
||||||
if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
|
if (png_ptr->save_buffer_size > PNG_SIZE_MAX -
|
||||||
|
@ -594,7 +594,7 @@ png_push_save_buffer(png_structrp png_ptr)
|
||||||
new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256;
|
new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256;
|
||||||
old_buffer = png_ptr->save_buffer;
|
old_buffer = png_ptr->save_buffer;
|
||||||
png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr,
|
png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr,
|
||||||
(png_size_t)new_max);
|
(size_t)new_max);
|
||||||
|
|
||||||
if (png_ptr->save_buffer == NULL)
|
if (png_ptr->save_buffer == NULL)
|
||||||
{
|
{
|
||||||
|
@ -622,7 +622,7 @@ png_push_save_buffer(png_structrp png_ptr)
|
||||||
|
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_push_restore_buffer(png_structrp png_ptr, png_bytep buffer,
|
png_push_restore_buffer(png_structrp png_ptr, png_bytep buffer,
|
||||||
png_size_t buffer_length)
|
size_t buffer_length)
|
||||||
{
|
{
|
||||||
png_ptr->current_buffer = buffer;
|
png_ptr->current_buffer = buffer;
|
||||||
png_ptr->current_buffer_size = buffer_length;
|
png_ptr->current_buffer_size = buffer_length;
|
||||||
|
@ -709,7 +709,7 @@ png_push_read_IDAT(png_structrp png_ptr)
|
||||||
|
|
||||||
if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0)
|
if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0)
|
||||||
{
|
{
|
||||||
png_size_t save_size = png_ptr->save_buffer_size;
|
size_t save_size = png_ptr->save_buffer_size;
|
||||||
png_uint_32 idat_size = png_ptr->idat_size;
|
png_uint_32 idat_size = png_ptr->idat_size;
|
||||||
|
|
||||||
/* We want the smaller of 'idat_size' and 'current_buffer_size', but they
|
/* We want the smaller of 'idat_size' and 'current_buffer_size', but they
|
||||||
|
@ -719,7 +719,7 @@ png_push_read_IDAT(png_structrp png_ptr)
|
||||||
* will break on either 16-bit or 64-bit platforms.
|
* will break on either 16-bit or 64-bit platforms.
|
||||||
*/
|
*/
|
||||||
if (idat_size < save_size)
|
if (idat_size < save_size)
|
||||||
save_size = (png_size_t)idat_size;
|
save_size = (size_t)idat_size;
|
||||||
|
|
||||||
else
|
else
|
||||||
idat_size = (png_uint_32)save_size;
|
idat_size = (png_uint_32)save_size;
|
||||||
|
@ -736,7 +736,7 @@ png_push_read_IDAT(png_structrp png_ptr)
|
||||||
|
|
||||||
if (png_ptr->idat_size != 0 && png_ptr->current_buffer_size != 0)
|
if (png_ptr->idat_size != 0 && png_ptr->current_buffer_size != 0)
|
||||||
{
|
{
|
||||||
png_size_t save_size = png_ptr->current_buffer_size;
|
size_t save_size = png_ptr->current_buffer_size;
|
||||||
png_uint_32 idat_size = png_ptr->idat_size;
|
png_uint_32 idat_size = png_ptr->idat_size;
|
||||||
|
|
||||||
/* We want the smaller of 'idat_size' and 'current_buffer_size', but they
|
/* We want the smaller of 'idat_size' and 'current_buffer_size', but they
|
||||||
|
@ -745,7 +745,7 @@ png_push_read_IDAT(png_structrp png_ptr)
|
||||||
* larger - this cannot overflow.
|
* larger - this cannot overflow.
|
||||||
*/
|
*/
|
||||||
if (idat_size < save_size)
|
if (idat_size < save_size)
|
||||||
save_size = (png_size_t)idat_size;
|
save_size = (size_t)idat_size;
|
||||||
|
|
||||||
else
|
else
|
||||||
idat_size = (png_uint_32)save_size;
|
idat_size = (png_uint_32)save_size;
|
||||||
|
@ -772,7 +772,7 @@ png_push_read_IDAT(png_structrp png_ptr)
|
||||||
|
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer,
|
png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer,
|
||||||
png_size_t buffer_length)
|
size_t buffer_length)
|
||||||
{
|
{
|
||||||
/* The caller checks for a non-zero buffer length. */
|
/* The caller checks for a non-zero buffer length. */
|
||||||
if (!(buffer_length > 0) || buffer == NULL)
|
if (!(buffer_length > 0) || buffer == NULL)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngpriv.h - private declarations for use inside libpng
|
/* pngpriv.h - private declarations for use inside libpng
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -210,7 +210,11 @@
|
||||||
defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
|
defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \
|
||||||
(defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
(defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
||||||
# define PNG_INTEL_SSE_OPT 1
|
# define PNG_INTEL_SSE_OPT 1
|
||||||
|
# else
|
||||||
|
# define PNG_INTEL_SSE_OPT 0
|
||||||
# endif
|
# endif
|
||||||
|
# else
|
||||||
|
# define PNG_INTEL_SSE_OPT 0
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -234,6 +238,8 @@
|
||||||
# if PNG_INTEL_SSE_IMPLEMENTATION > 0
|
# if PNG_INTEL_SSE_IMPLEMENTATION > 0
|
||||||
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2
|
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2
|
||||||
# endif
|
# endif
|
||||||
|
#else
|
||||||
|
# define PNG_INTEL_SSE_IMPLEMENTATION 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PNG_MIPS_MSA_OPT > 0
|
#if PNG_MIPS_MSA_OPT > 0
|
||||||
|
@ -732,8 +738,8 @@
|
||||||
/* Added to libpng-1.2.6 JB */
|
/* Added to libpng-1.2.6 JB */
|
||||||
#define PNG_ROWBYTES(pixel_bits, width) \
|
#define PNG_ROWBYTES(pixel_bits, width) \
|
||||||
((pixel_bits) >= 8 ? \
|
((pixel_bits) >= 8 ? \
|
||||||
((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \
|
((size_t)(width) * (((size_t)(pixel_bits)) >> 3)) : \
|
||||||
(( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) )
|
(( ((size_t)(width) * ((size_t)(pixel_bits))) + 7) >> 3) )
|
||||||
|
|
||||||
/* This returns the number of trailing bits in the last byte of a row, 0 if the
|
/* 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
|
* last byte is completely full of pixels. It is, in principle, (pixel_bits x
|
||||||
|
@ -931,7 +937,7 @@
|
||||||
* PNG files the -I directives must match.
|
* PNG files the -I directives must match.
|
||||||
*
|
*
|
||||||
* The most likely explanation is that you passed a -I in CFLAGS. This will
|
* The most likely explanation is that you passed a -I in CFLAGS. This will
|
||||||
* not work; all the preprocessor directories and in particular all the -I
|
* not work; all the preprocessor directives and in particular all the -I
|
||||||
* directives must be in CPPFLAGS.
|
* directives must be in CPPFLAGS.
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
|
@ -1060,15 +1066,15 @@ PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr,
|
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr,
|
||||||
png_bytep data, png_size_t length),PNG_EMPTY);
|
png_bytep data, size_t length),PNG_EMPTY);
|
||||||
|
|
||||||
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
|
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr,
|
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr,
|
||||||
png_bytep buffer, png_size_t length),PNG_EMPTY);
|
png_bytep buffer, size_t length),PNG_EMPTY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr,
|
PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr,
|
||||||
png_bytep data, png_size_t length),PNG_EMPTY);
|
png_bytep data, size_t length),PNG_EMPTY);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_FLUSH_SUPPORTED
|
#ifdef PNG_WRITE_FLUSH_SUPPORTED
|
||||||
# ifdef PNG_STDIO_SUPPORTED
|
# ifdef PNG_STDIO_SUPPORTED
|
||||||
|
@ -1082,7 +1088,7 @@ PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY);
|
||||||
|
|
||||||
/* Write the "data" buffer to whatever output you are using */
|
/* Write the "data" buffer to whatever output you are using */
|
||||||
PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr,
|
||||||
png_const_bytep data, png_size_t length),PNG_EMPTY);
|
png_const_bytep data, size_t length),PNG_EMPTY);
|
||||||
|
|
||||||
/* Read and check the PNG file signature */
|
/* Read and check the PNG file signature */
|
||||||
PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr,
|
||||||
|
@ -1094,7 +1100,7 @@ PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr),
|
||||||
|
|
||||||
/* Read data from whatever input you are using into the "data" buffer */
|
/* Read data from whatever input you are using into the "data" buffer */
|
||||||
PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data,
|
PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data,
|
||||||
png_size_t length),PNG_EMPTY);
|
size_t length),PNG_EMPTY);
|
||||||
|
|
||||||
/* Read bytes into buf, and update png_ptr->crc */
|
/* Read bytes into buf, and update png_ptr->crc */
|
||||||
PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf,
|
PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf,
|
||||||
|
@ -1112,7 +1118,7 @@ PNG_INTERNAL_FUNCTION(int,png_crc_error,(png_structrp png_ptr),PNG_EMPTY);
|
||||||
* since this is the maximum buffer size we can specify.
|
* since this is the maximum buffer size we can specify.
|
||||||
*/
|
*/
|
||||||
PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr,
|
||||||
png_const_bytep ptr, png_size_t length),PNG_EMPTY);
|
png_const_bytep ptr, size_t length),PNG_EMPTY);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_FLUSH_SUPPORTED
|
#ifdef PNG_WRITE_FLUSH_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY);
|
PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY);
|
||||||
|
@ -1195,7 +1201,7 @@ PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr,
|
||||||
/* Chunks that have keywords */
|
/* Chunks that have keywords */
|
||||||
#ifdef PNG_WRITE_tEXt_SUPPORTED
|
#ifdef PNG_WRITE_tEXt_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr,
|
||||||
png_const_charp key, png_const_charp text, png_size_t text_len),PNG_EMPTY);
|
png_const_charp key, png_const_charp text, size_t text_len),PNG_EMPTY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_WRITE_zTXt_SUPPORTED
|
#ifdef PNG_WRITE_zTXt_SUPPORTED
|
||||||
|
@ -1588,10 +1594,10 @@ PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr),
|
PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr),
|
||||||
PNG_EMPTY);
|
PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr,
|
||||||
png_bytep buffer, png_size_t buffer_length),PNG_EMPTY);
|
png_bytep buffer, size_t buffer_length),PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY);
|
PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr,
|
||||||
png_bytep buffer, png_size_t buffer_length),PNG_EMPTY);
|
png_bytep buffer, size_t buffer_length),PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr),
|
PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr),
|
||||||
PNG_EMPTY);
|
PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr,
|
||||||
|
@ -1904,13 +1910,13 @@ PNG_INTERNAL_FUNCTION(void,png_chunk_report,(png_const_structrp png_ptr,
|
||||||
|
|
||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr,
|
||||||
png_charp ascii, png_size_t size, double fp, unsigned int precision),
|
png_charp ascii, size_t size, double fp, unsigned int precision),
|
||||||
PNG_EMPTY);
|
PNG_EMPTY);
|
||||||
#endif /* FLOATING_POINT */
|
#endif /* FLOATING_POINT */
|
||||||
|
|
||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
|
#ifdef PNG_FIXED_POINT_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr,
|
||||||
png_charp ascii, png_size_t size, png_fixed_point fp),PNG_EMPTY);
|
png_charp ascii, size_t size, png_fixed_point fp),PNG_EMPTY);
|
||||||
#endif /* FIXED_POINT */
|
#endif /* FIXED_POINT */
|
||||||
#endif /* sCAL */
|
#endif /* sCAL */
|
||||||
|
|
||||||
|
@ -2003,7 +2009,7 @@ PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr,
|
||||||
* the problem character.) This has not been tested within libpng.
|
* the problem character.) This has not been tested within libpng.
|
||||||
*/
|
*/
|
||||||
PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string,
|
PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string,
|
||||||
png_size_t size, int *statep, png_size_tp whereami),PNG_EMPTY);
|
size_t size, int *statep, png_size_tp whereami),PNG_EMPTY);
|
||||||
|
|
||||||
/* This is the same but it checks a complete string and returns true
|
/* This is the same but it checks a complete string and returns true
|
||||||
* only if it just contains a floating point number. As of 1.5.4 this
|
* only if it just contains a floating point number. As of 1.5.4 this
|
||||||
|
@ -2012,7 +2018,7 @@ PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string,
|
||||||
* for negative or zero values using the sticky flag.
|
* for negative or zero values using the sticky flag.
|
||||||
*/
|
*/
|
||||||
PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string,
|
PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string,
|
||||||
png_size_t size),PNG_EMPTY);
|
size_t size),PNG_EMPTY);
|
||||||
#endif /* pCAL || sCAL */
|
#endif /* pCAL || sCAL */
|
||||||
|
|
||||||
#if defined(PNG_GAMMA_SUPPORTED) ||\
|
#if defined(PNG_GAMMA_SUPPORTED) ||\
|
||||||
|
@ -2087,7 +2093,7 @@ typedef struct png_control
|
||||||
png_voidp error_buf; /* Always a jmp_buf at present. */
|
png_voidp error_buf; /* Always a jmp_buf at present. */
|
||||||
|
|
||||||
png_const_bytep memory; /* Memory buffer. */
|
png_const_bytep memory; /* Memory buffer. */
|
||||||
png_size_t size; /* Size of the memory buffer. */
|
size_t size; /* Size of the memory buffer. */
|
||||||
|
|
||||||
unsigned int for_write :1; /* Otherwise it is a read structure */
|
unsigned int for_write :1; /* Otherwise it is a read structure */
|
||||||
unsigned int owned_file :1; /* We own the file in io_ptr */
|
unsigned int owned_file :1; /* We own the file in io_ptr */
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngread.c - read a PNG file
|
/* pngread.c - read a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.33 [September 28, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -1612,7 +1612,7 @@ png_image_begin_read_from_file(png_imagep image, const char *file_name)
|
||||||
#endif /* STDIO */
|
#endif /* STDIO */
|
||||||
|
|
||||||
static void PNGCBAPI
|
static void PNGCBAPI
|
||||||
png_image_memory_read(png_structp png_ptr, png_bytep out, png_size_t need)
|
png_image_memory_read(png_structp png_ptr, png_bytep out, size_t need)
|
||||||
{
|
{
|
||||||
if (png_ptr != NULL)
|
if (png_ptr != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1623,7 +1623,7 @@ png_image_memory_read(png_structp png_ptr, png_bytep out, png_size_t need)
|
||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
{
|
{
|
||||||
png_const_bytep memory = cp->memory;
|
png_const_bytep memory = cp->memory;
|
||||||
png_size_t size = cp->size;
|
size_t size = cp->size;
|
||||||
|
|
||||||
if (memory != NULL && size >= need)
|
if (memory != NULL && size >= need)
|
||||||
{
|
{
|
||||||
|
@ -1642,7 +1642,7 @@ png_image_memory_read(png_structp png_ptr, png_bytep out, png_size_t need)
|
||||||
}
|
}
|
||||||
|
|
||||||
int PNGAPI png_image_begin_read_from_memory(png_imagep image,
|
int PNGAPI png_image_begin_read_from_memory(png_imagep image,
|
||||||
png_const_voidp memory, png_size_t size)
|
png_const_voidp memory, size_t size)
|
||||||
{
|
{
|
||||||
if (image != NULL && image->version == PNG_IMAGE_VERSION)
|
if (image != NULL && image->version == PNG_IMAGE_VERSION)
|
||||||
{
|
{
|
||||||
|
@ -4230,7 +4230,7 @@ png_image_finish_read(png_imagep image, png_const_colorp background,
|
||||||
*
|
*
|
||||||
* NOTE: this will be changed in 1.7 because PNG_IMAGE_BUFFER_SIZE
|
* NOTE: this will be changed in 1.7 because PNG_IMAGE_BUFFER_SIZE
|
||||||
* will be changed to use png_alloc_size_t; bigger images can be
|
* will be changed to use png_alloc_size_t; bigger images can be
|
||||||
* accomodated on 64-bit systems.
|
* accommodated on 64-bit systems.
|
||||||
*/
|
*/
|
||||||
if (image->height <=
|
if (image->height <=
|
||||||
0xffffffffU/PNG_IMAGE_PIXEL_COMPONENT_SIZE(image->format)/check)
|
0xffffffffU/PNG_IMAGE_PIXEL_COMPONENT_SIZE(image->format)/check)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngrio.c - functions for data input
|
/* pngrio.c - functions for data input
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.24 [August 4, 2016]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
* to read more than 64K on a 16-bit machine.
|
* to read more than 64K on a 16-bit machine.
|
||||||
*/
|
*/
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_read_data(png_structrp png_ptr, png_bytep data, png_size_t length)
|
png_read_data(png_structrp png_ptr, png_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
png_debug1(4, "reading %d bytes", (int)length);
|
png_debug1(4, "reading %d bytes", (int)length);
|
||||||
|
|
||||||
|
@ -47,14 +47,14 @@ png_read_data(png_structrp png_ptr, png_bytep data, png_size_t length)
|
||||||
* than changing the library.
|
* than changing the library.
|
||||||
*/
|
*/
|
||||||
void PNGCBAPI
|
void PNGCBAPI
|
||||||
png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
png_default_read_data(png_structp png_ptr, png_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
png_size_t check;
|
size_t check;
|
||||||
|
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
|
/* fread() returns 0 on error, so it is OK to store this in a size_t
|
||||||
* instead of an int, which is what fread() actually returns.
|
* instead of an int, which is what fread() actually returns.
|
||||||
*/
|
*/
|
||||||
check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr));
|
check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr));
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngrutil.c - utilities to read a PNG file
|
/* pngrutil.c - utilities to read a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.33 [September 28, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -102,7 +102,7 @@ png_get_int_32)(png_const_bytep buf)
|
||||||
png_uint_16 (PNGAPI
|
png_uint_16 (PNGAPI
|
||||||
png_get_uint_16)(png_const_bytep buf)
|
png_get_uint_16)(png_const_bytep buf)
|
||||||
{
|
{
|
||||||
/* ANSI-C requires an int value to accomodate at least 16 bits so this
|
/* ANSI-C requires an int value to accommodate at least 16 bits so this
|
||||||
* works and allows the compiler not to worry about possible narrowing
|
* works and allows the compiler not to worry about possible narrowing
|
||||||
* on 32-bit systems. (Pre-ANSI systems did not make integers smaller
|
* on 32-bit systems. (Pre-ANSI systems did not make integers smaller
|
||||||
* than 16 bits either.)
|
* than 16 bits either.)
|
||||||
|
@ -120,7 +120,7 @@ png_get_uint_16)(png_const_bytep buf)
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_read_sig(png_structrp png_ptr, png_inforp info_ptr)
|
png_read_sig(png_structrp png_ptr, png_inforp info_ptr)
|
||||||
{
|
{
|
||||||
png_size_t num_checked, num_to_check;
|
size_t num_checked, num_to_check;
|
||||||
|
|
||||||
/* Exit if the user application does not expect a signature. */
|
/* Exit if the user application does not expect a signature. */
|
||||||
if (png_ptr->sig_bytes >= 8)
|
if (png_ptr->sig_bytes >= 8)
|
||||||
|
@ -1653,7 +1653,7 @@ png_handle_sPLT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
||||||
int entry_size, i;
|
int entry_size, i;
|
||||||
png_uint_32 skip = 0;
|
png_uint_32 skip = 0;
|
||||||
png_uint_32 dl;
|
png_uint_32 dl;
|
||||||
png_size_t max_dl;
|
size_t max_dl;
|
||||||
|
|
||||||
png_debug(1, "in png_handle_sPLT");
|
png_debug(1, "in png_handle_sPLT");
|
||||||
|
|
||||||
|
@ -2002,6 +2002,15 @@ png_handle_bKGD(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
||||||
|
|
||||||
else if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) /* GRAY */
|
else if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) /* GRAY */
|
||||||
{
|
{
|
||||||
|
if (png_ptr->bit_depth <= 8)
|
||||||
|
{
|
||||||
|
if (buf[0] != 0 || buf[1] >= (unsigned int)(1 << png_ptr->bit_depth))
|
||||||
|
{
|
||||||
|
png_chunk_benign_error(png_ptr, "invalid gray level");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
background.index = 0;
|
background.index = 0;
|
||||||
background.red =
|
background.red =
|
||||||
background.green =
|
background.green =
|
||||||
|
@ -2011,6 +2020,15 @@ png_handle_bKGD(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (png_ptr->bit_depth <= 8)
|
||||||
|
{
|
||||||
|
if (buf[0] != 0 || buf[2] != 0 || buf[4] != 0)
|
||||||
|
{
|
||||||
|
png_chunk_benign_error(png_ptr, "invalid color");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
background.index = 0;
|
background.index = 0;
|
||||||
background.red = png_get_uint_16(buf);
|
background.red = png_get_uint_16(buf);
|
||||||
background.green = png_get_uint_16(buf + 2);
|
background.green = png_get_uint_16(buf + 2);
|
||||||
|
@ -2364,7 +2382,7 @@ void /* PRIVATE */
|
||||||
png_handle_sCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
png_handle_sCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
||||||
{
|
{
|
||||||
png_bytep buffer;
|
png_bytep buffer;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
int state;
|
int state;
|
||||||
|
|
||||||
png_debug(1, "in png_handle_sCAL");
|
png_debug(1, "in png_handle_sCAL");
|
||||||
|
@ -2434,7 +2452,7 @@ png_handle_sCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
png_size_t heighti = i;
|
size_t heighti = i;
|
||||||
|
|
||||||
state = 0;
|
state = 0;
|
||||||
if (png_check_fp_number((png_const_charp)buffer, length,
|
if (png_check_fp_number((png_const_charp)buffer, length,
|
||||||
|
@ -3046,7 +3064,7 @@ png_cache_unknown_chunk(png_structrp png_ptr, png_uint_32 length)
|
||||||
{
|
{
|
||||||
PNG_CSTRING_FROM_CHUNK(png_ptr->unknown_chunk.name, png_ptr->chunk_name);
|
PNG_CSTRING_FROM_CHUNK(png_ptr->unknown_chunk.name, png_ptr->chunk_name);
|
||||||
/* The following is safe because of the PNG_SIZE_MAX init above */
|
/* The following is safe because of the PNG_SIZE_MAX init above */
|
||||||
png_ptr->unknown_chunk.size = (png_size_t)length/*SAFE*/;
|
png_ptr->unknown_chunk.size = (size_t)length/*SAFE*/;
|
||||||
/* 'mode' is a flag array, only the bottom four bits matter here */
|
/* 'mode' is a flag array, only the bottom four bits matter here */
|
||||||
png_ptr->unknown_chunk.location = (png_byte)png_ptr->mode/*SAFE*/;
|
png_ptr->unknown_chunk.location = (png_byte)png_ptr->mode/*SAFE*/;
|
||||||
|
|
||||||
|
@ -3332,10 +3350,13 @@ png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length)
|
||||||
{
|
{
|
||||||
png_alloc_size_t idat_limit = PNG_UINT_31_MAX;
|
png_alloc_size_t idat_limit = PNG_UINT_31_MAX;
|
||||||
size_t row_factor =
|
size_t row_factor =
|
||||||
(png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1)
|
(size_t)png_ptr->width
|
||||||
+ 1 + (png_ptr->interlaced? 6: 0));
|
* (size_t)png_ptr->channels
|
||||||
|
* (png_ptr->bit_depth > 8? 2: 1)
|
||||||
|
+ 1
|
||||||
|
+ (png_ptr->interlaced? 6: 0);
|
||||||
if (png_ptr->height > PNG_UINT_32_MAX/row_factor)
|
if (png_ptr->height > PNG_UINT_32_MAX/row_factor)
|
||||||
idat_limit=PNG_UINT_31_MAX;
|
idat_limit = PNG_UINT_31_MAX;
|
||||||
else
|
else
|
||||||
idat_limit = png_ptr->height * row_factor;
|
idat_limit = png_ptr->height * row_factor;
|
||||||
row_factor = row_factor > 32566? 32566 : row_factor;
|
row_factor = row_factor > 32566? 32566 : row_factor;
|
||||||
|
@ -3862,8 +3883,8 @@ png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3);
|
png_bytep sp = row + (size_t)((row_info->width - 1) >> 3);
|
||||||
png_bytep dp = row + (png_size_t)((final_width - 1) >> 3);
|
png_bytep dp = row + (size_t)((final_width - 1) >> 3);
|
||||||
unsigned int sshift, dshift;
|
unsigned int sshift, dshift;
|
||||||
unsigned int s_start, s_end;
|
unsigned int s_start, s_end;
|
||||||
int s_inc;
|
int s_inc;
|
||||||
|
@ -3989,8 +4010,8 @@ png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1);
|
png_bytep sp = row + (size_t)((row_info->width - 1) >> 1);
|
||||||
png_bytep dp = row + (png_size_t)((final_width - 1) >> 1);
|
png_bytep dp = row + (size_t)((final_width - 1) >> 1);
|
||||||
unsigned int sshift, dshift;
|
unsigned int sshift, dshift;
|
||||||
unsigned int s_start, s_end;
|
unsigned int s_start, s_end;
|
||||||
int s_inc;
|
int s_inc;
|
||||||
|
@ -4052,12 +4073,12 @@ png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
png_size_t pixel_bytes = (row_info->pixel_depth >> 3);
|
size_t pixel_bytes = (row_info->pixel_depth >> 3);
|
||||||
|
|
||||||
png_bytep sp = row + (png_size_t)(row_info->width - 1)
|
png_bytep sp = row + (size_t)(row_info->width - 1)
|
||||||
* pixel_bytes;
|
* pixel_bytes;
|
||||||
|
|
||||||
png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes;
|
png_bytep dp = row + (size_t)(final_width - 1) * pixel_bytes;
|
||||||
|
|
||||||
int jstop = (int)png_pass_inc[pass];
|
int jstop = (int)png_pass_inc[pass];
|
||||||
png_uint_32 i;
|
png_uint_32 i;
|
||||||
|
@ -4094,8 +4115,8 @@ static void
|
||||||
png_read_filter_row_sub(png_row_infop row_info, png_bytep row,
|
png_read_filter_row_sub(png_row_infop row_info, png_bytep row,
|
||||||
png_const_bytep prev_row)
|
png_const_bytep prev_row)
|
||||||
{
|
{
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t istop = row_info->rowbytes;
|
size_t istop = row_info->rowbytes;
|
||||||
unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
|
unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
|
||||||
png_bytep rp = row + bpp;
|
png_bytep rp = row + bpp;
|
||||||
|
|
||||||
|
@ -4112,8 +4133,8 @@ static void
|
||||||
png_read_filter_row_up(png_row_infop row_info, png_bytep row,
|
png_read_filter_row_up(png_row_infop row_info, png_bytep row,
|
||||||
png_const_bytep prev_row)
|
png_const_bytep prev_row)
|
||||||
{
|
{
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t istop = row_info->rowbytes;
|
size_t istop = row_info->rowbytes;
|
||||||
png_bytep rp = row;
|
png_bytep rp = row;
|
||||||
png_const_bytep pp = prev_row;
|
png_const_bytep pp = prev_row;
|
||||||
|
|
||||||
|
@ -4128,11 +4149,11 @@ static void
|
||||||
png_read_filter_row_avg(png_row_infop row_info, png_bytep row,
|
png_read_filter_row_avg(png_row_infop row_info, png_bytep row,
|
||||||
png_const_bytep prev_row)
|
png_const_bytep prev_row)
|
||||||
{
|
{
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_bytep rp = row;
|
png_bytep rp = row;
|
||||||
png_const_bytep pp = prev_row;
|
png_const_bytep pp = prev_row;
|
||||||
unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
|
unsigned int bpp = (row_info->pixel_depth + 7) >> 3;
|
||||||
png_size_t istop = row_info->rowbytes - bpp;
|
size_t istop = row_info->rowbytes - bpp;
|
||||||
|
|
||||||
for (i = 0; i < bpp; i++)
|
for (i = 0; i < bpp; i++)
|
||||||
{
|
{
|
||||||
|
@ -4604,7 +4625,7 @@ png_read_start_row(png_structrp png_ptr)
|
||||||
static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
|
static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
|
||||||
|
|
||||||
unsigned int max_pixel_depth;
|
unsigned int max_pixel_depth;
|
||||||
png_size_t row_bytes;
|
size_t row_bytes;
|
||||||
|
|
||||||
png_debug(1, "in png_read_start_row");
|
png_debug(1, "in png_read_start_row");
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngset.c - storage of image information into info struct
|
/* pngset.c - storage of image information into info struct
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -318,7 +318,7 @@ png_set_pCAL(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
|
png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
|
||||||
int nparams, png_const_charp units, png_charpp params)
|
int nparams, png_const_charp units, png_charpp params)
|
||||||
{
|
{
|
||||||
png_size_t length;
|
size_t length;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
png_debug1(1, "in %s storage function", "pCAL");
|
png_debug1(1, "in %s storage function", "pCAL");
|
||||||
|
@ -395,7 +395,7 @@ png_set_pCAL(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
memcpy(info_ptr->pcal_units, units, length);
|
memcpy(info_ptr->pcal_units, units, length);
|
||||||
|
|
||||||
info_ptr->pcal_params = png_voidcast(png_charpp, png_malloc_warn(png_ptr,
|
info_ptr->pcal_params = png_voidcast(png_charpp, png_malloc_warn(png_ptr,
|
||||||
(png_size_t)(((unsigned int)nparams + 1) * (sizeof (png_charp)))));
|
(size_t)(((unsigned int)nparams + 1) * (sizeof (png_charp)))));
|
||||||
|
|
||||||
if (info_ptr->pcal_params == NULL)
|
if (info_ptr->pcal_params == NULL)
|
||||||
{
|
{
|
||||||
|
@ -435,7 +435,7 @@ void PNGAPI
|
||||||
png_set_sCAL_s(png_const_structrp png_ptr, png_inforp info_ptr,
|
png_set_sCAL_s(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
int unit, png_const_charp swidth, png_const_charp sheight)
|
int unit, png_const_charp swidth, png_const_charp sheight)
|
||||||
{
|
{
|
||||||
png_size_t lengthw = 0, lengthh = 0;
|
size_t lengthw = 0, lengthh = 0;
|
||||||
|
|
||||||
png_debug1(1, "in %s storage function", "sCAL");
|
png_debug1(1, "in %s storage function", "sCAL");
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ png_set_iCCP(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
{
|
{
|
||||||
png_charp new_iccp_name;
|
png_charp new_iccp_name;
|
||||||
png_bytep new_iccp_profile;
|
png_bytep new_iccp_profile;
|
||||||
png_size_t length;
|
size_t length;
|
||||||
|
|
||||||
png_debug1(1, "in %s storage function", "iCCP");
|
png_debug1(1, "in %s storage function", "iCCP");
|
||||||
|
|
||||||
|
@ -1023,7 +1023,7 @@ png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr,
|
||||||
/* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
|
/* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
|
||||||
info_ptr->trans_alpha = png_voidcast(png_bytep,
|
info_ptr->trans_alpha = png_voidcast(png_bytep,
|
||||||
png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH));
|
png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH));
|
||||||
memcpy(info_ptr->trans_alpha, trans_alpha, (png_size_t)num_trans);
|
memcpy(info_ptr->trans_alpha, trans_alpha, (size_t)num_trans);
|
||||||
}
|
}
|
||||||
png_ptr->trans_alpha = info_ptr->trans_alpha;
|
png_ptr->trans_alpha = info_ptr->trans_alpha;
|
||||||
}
|
}
|
||||||
|
@ -1103,7 +1103,7 @@ png_set_sPLT(png_const_structrp png_ptr,
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
png_size_t length;
|
size_t length;
|
||||||
|
|
||||||
/* Skip invalid input entries */
|
/* Skip invalid input entries */
|
||||||
if (entries->name == NULL || entries->entries == NULL)
|
if (entries->name == NULL || entries->entries == NULL)
|
||||||
|
@ -1708,7 +1708,7 @@ png_set_rows(png_const_structrp png_ptr, png_inforp info_ptr,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_compression_buffer_size(png_structrp png_ptr, png_size_t size)
|
png_set_compression_buffer_size(png_structrp png_ptr, size_t size)
|
||||||
{
|
{
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngstruct.h - header file for PNG reference library
|
/* pngstruct.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
/* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib
|
/* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib
|
||||||
* can handle at once. This type need be no larger than 16 bits (so maximum of
|
* can handle at once. This type need be no larger than 16 bits (so maximum of
|
||||||
* 65535), this define allows us to discover how big it is, but limited by the
|
* 65535), this define allows us to discover how big it is, but limited by the
|
||||||
* maximuum for png_size_t. The value can be overriden in a library build
|
* maximum for size_t. The value can be overridden in a library build
|
||||||
* (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably
|
* (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably
|
||||||
* lower value (e.g. 255 works). A lower value may help memory usage (slightly)
|
* lower value (e.g. 255 works). A lower value may help memory usage (slightly)
|
||||||
* and may even improve performance on some systems (and degrade it on others.)
|
* and may even improve performance on some systems (and degrade it on others.)
|
||||||
|
@ -214,7 +214,7 @@ struct png_struct_def
|
||||||
png_uint_32 height; /* height of image in pixels */
|
png_uint_32 height; /* height of image in pixels */
|
||||||
png_uint_32 num_rows; /* number of rows in current pass */
|
png_uint_32 num_rows; /* number of rows in current pass */
|
||||||
png_uint_32 usr_width; /* width of row at start of write */
|
png_uint_32 usr_width; /* width of row at start of write */
|
||||||
png_size_t rowbytes; /* size of row in bytes */
|
size_t rowbytes; /* size of row in bytes */
|
||||||
png_uint_32 iwidth; /* width of current interlaced row in pixels */
|
png_uint_32 iwidth; /* width of current interlaced row in pixels */
|
||||||
png_uint_32 row_number; /* current row in interlace pass */
|
png_uint_32 row_number; /* current row in interlace pass */
|
||||||
png_uint_32 chunk_name; /* PNG_CHUNK() id of current chunk */
|
png_uint_32 chunk_name; /* PNG_CHUNK() id of current chunk */
|
||||||
|
@ -232,7 +232,7 @@ struct png_struct_def
|
||||||
png_bytep try_row; /* buffer to save trial row when filtering */
|
png_bytep try_row; /* buffer to save trial row when filtering */
|
||||||
png_bytep tst_row; /* buffer to save best trial row when filtering */
|
png_bytep tst_row; /* buffer to save best trial row when filtering */
|
||||||
#endif
|
#endif
|
||||||
png_size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */
|
size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */
|
||||||
|
|
||||||
png_uint_32 idat_size; /* current IDAT size for read */
|
png_uint_32 idat_size; /* current IDAT size for read */
|
||||||
png_uint_32 crc; /* current chunk CRC value */
|
png_uint_32 crc; /* current chunk CRC value */
|
||||||
|
@ -307,7 +307,7 @@ struct png_struct_def
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
|
#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
|
||||||
png_color_8 shift; /* shift for significant bit tranformation */
|
png_color_8 shift; /* shift for significant bit transformation */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
|
#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
|
||||||
|
@ -328,10 +328,10 @@ struct png_struct_def
|
||||||
png_bytep current_buffer; /* buffer for recently used data */
|
png_bytep current_buffer; /* buffer for recently used data */
|
||||||
png_uint_32 push_length; /* size of current input chunk */
|
png_uint_32 push_length; /* size of current input chunk */
|
||||||
png_uint_32 skip_length; /* bytes to skip in input data */
|
png_uint_32 skip_length; /* bytes to skip in input data */
|
||||||
png_size_t save_buffer_size; /* amount of data now in save_buffer */
|
size_t save_buffer_size; /* amount of data now in save_buffer */
|
||||||
png_size_t save_buffer_max; /* total size of save_buffer */
|
size_t save_buffer_max; /* total size of save_buffer */
|
||||||
png_size_t buffer_size; /* total amount of available input data */
|
size_t buffer_size; /* total amount of available input data */
|
||||||
png_size_t current_buffer_size; /* amount of data now in current_buffer */
|
size_t current_buffer_size; /* amount of data now in current_buffer */
|
||||||
int process_mode; /* what push library is currently doing */
|
int process_mode; /* what push library is currently doing */
|
||||||
int cur_palette; /* current push library palette index */
|
int cur_palette; /* current push library palette index */
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ struct png_struct_def
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* New member added in libpng-1.2.26 */
|
/* New member added in libpng-1.2.26 */
|
||||||
png_size_t old_big_row_buf_size;
|
size_t old_big_row_buf_size;
|
||||||
|
|
||||||
#ifdef PNG_READ_SUPPORTED
|
#ifdef PNG_READ_SUPPORTED
|
||||||
/* New member added in libpng-1.2.30 */
|
/* New member added in libpng-1.2.30 */
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
|
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.33 [September 28, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -269,8 +269,8 @@ png_do_invert(png_row_infop row_info, png_bytep row)
|
||||||
if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
|
if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
|
||||||
{
|
{
|
||||||
png_bytep rp = row;
|
png_bytep rp = row;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t istop = row_info->rowbytes;
|
size_t istop = row_info->rowbytes;
|
||||||
|
|
||||||
for (i = 0; i < istop; i++)
|
for (i = 0; i < istop; i++)
|
||||||
{
|
{
|
||||||
|
@ -283,8 +283,8 @@ png_do_invert(png_row_infop row_info, png_bytep row)
|
||||||
row_info->bit_depth == 8)
|
row_info->bit_depth == 8)
|
||||||
{
|
{
|
||||||
png_bytep rp = row;
|
png_bytep rp = row;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t istop = row_info->rowbytes;
|
size_t istop = row_info->rowbytes;
|
||||||
|
|
||||||
for (i = 0; i < istop; i += 2)
|
for (i = 0; i < istop; i += 2)
|
||||||
{
|
{
|
||||||
|
@ -298,8 +298,8 @@ png_do_invert(png_row_infop row_info, png_bytep row)
|
||||||
row_info->bit_depth == 16)
|
row_info->bit_depth == 16)
|
||||||
{
|
{
|
||||||
png_bytep rp = row;
|
png_bytep rp = row;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t istop = row_info->rowbytes;
|
size_t istop = row_info->rowbytes;
|
||||||
|
|
||||||
for (i = 0; i < istop; i += 4)
|
for (i = 0; i < istop; i += 4)
|
||||||
{
|
{
|
||||||
|
@ -609,7 +609,7 @@ png_do_strip_channel(png_row_infop row_info, png_bytep row, int at_start)
|
||||||
return; /* The filler channel has gone already */
|
return; /* The filler channel has gone already */
|
||||||
|
|
||||||
/* Fix the rowbytes value. */
|
/* Fix the rowbytes value. */
|
||||||
row_info->rowbytes = (png_size_t)(dp-row);
|
row_info->rowbytes = (size_t)(dp-row);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngwio.c - functions for data output
|
/* pngwio.c - functions for data output
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.24 [August 4, 2016]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_write_data(png_structrp png_ptr, png_const_bytep data, png_size_t length)
|
png_write_data(png_structrp png_ptr, png_const_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
/* NOTE: write_data_fn must not change the buffer! */
|
/* NOTE: write_data_fn must not change the buffer! */
|
||||||
if (png_ptr->write_data_fn != NULL )
|
if (png_ptr->write_data_fn != NULL )
|
||||||
|
@ -48,9 +48,9 @@ png_write_data(png_structrp png_ptr, png_const_bytep data, png_size_t length)
|
||||||
* than changing the library.
|
* than changing the library.
|
||||||
*/
|
*/
|
||||||
void PNGCBAPI
|
void PNGCBAPI
|
||||||
png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
png_default_write_data(png_structp png_ptr, png_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
png_size_t check;
|
size_t check;
|
||||||
|
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngwrite.c - general routines to write a PNG file
|
/* pngwrite.c - general routines to write a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -1645,7 +1645,7 @@ png_write_image_16bit(png_voidp argument)
|
||||||
* calculation can be done to 15 bits of accuracy; however, the output needs to
|
* calculation can be done to 15 bits of accuracy; however, the output needs to
|
||||||
* be scaled in the range 0..255*65535, so include that scaling here.
|
* be scaled in the range 0..255*65535, so include that scaling here.
|
||||||
*/
|
*/
|
||||||
# define UNP_RECIPROCAL(alpha) ((((0xffff*0xff)<<7)+(alpha>>1))/alpha)
|
# define UNP_RECIPROCAL(alpha) ((((0xffff*0xff)<<7)+((alpha)>>1))/(alpha))
|
||||||
|
|
||||||
static png_byte
|
static png_byte
|
||||||
png_unpremultiply(png_uint_32 component, png_uint_32 alpha,
|
png_unpremultiply(png_uint_32 component, png_uint_32 alpha,
|
||||||
|
@ -2171,8 +2171,7 @@ png_image_write_main(png_voidp argument)
|
||||||
|
|
||||||
|
|
||||||
static void (PNGCBAPI
|
static void (PNGCBAPI
|
||||||
image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data,
|
image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data, size_t size)
|
||||||
png_size_t size)
|
|
||||||
{
|
{
|
||||||
png_image_write_control *display = png_voidcast(png_image_write_control*,
|
png_image_write_control *display = png_voidcast(png_image_write_control*,
|
||||||
png_ptr->io_ptr/*backdoor: png_get_io_ptr(png_ptr)*/);
|
png_ptr->io_ptr/*backdoor: png_get_io_ptr(png_ptr)*/);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngwtran.c - transforms the data in a row for PNG writers
|
/* pngwtran.c - transforms the data in a row for PNG writers
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.26 [October 20, 2016]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -212,9 +212,9 @@ png_do_shift(png_row_infop row_info, png_bytep row,
|
||||||
if (row_info->bit_depth < 8)
|
if (row_info->bit_depth < 8)
|
||||||
{
|
{
|
||||||
png_bytep bp = row;
|
png_bytep bp = row;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
png_size_t row_bytes = row_info->rowbytes;
|
size_t row_bytes = row_info->rowbytes;
|
||||||
|
|
||||||
if (bit_depth->gray == 1 && row_info->bit_depth == 2)
|
if (bit_depth->gray == 1 && row_info->bit_depth == 2)
|
||||||
mask = 0x55;
|
mask = 0x55;
|
||||||
|
@ -514,7 +514,7 @@ png_do_write_transformations(png_structrp png_ptr, png_row_infop row_info)
|
||||||
(png_ptr, /* png_ptr */
|
(png_ptr, /* png_ptr */
|
||||||
row_info, /* row_info: */
|
row_info, /* row_info: */
|
||||||
/* png_uint_32 width; width of row */
|
/* png_uint_32 width; width of row */
|
||||||
/* png_size_t rowbytes; number of bytes in row */
|
/* size_t rowbytes; number of bytes in row */
|
||||||
/* png_byte color_type; color type of pixels */
|
/* png_byte color_type; color type of pixels */
|
||||||
/* png_byte bit_depth; bit depth of samples */
|
/* png_byte bit_depth; bit depth of samples */
|
||||||
/* png_byte channels; number of channels (1-4) */
|
/* png_byte channels; number of channels (1-4) */
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
/* pngwutil.c - utilities to write a PNG file
|
/* pngwutil.c - utilities to write a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.32 [August 24, 2017]
|
* Last changed in libpng 1.6.35 [July 15, 2018]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
|
@ -59,7 +59,7 @@ png_write_sig(png_structrp png_ptr)
|
||||||
|
|
||||||
/* Write the rest of the 8 byte signature */
|
/* Write the rest of the 8 byte signature */
|
||||||
png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
|
png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
|
||||||
(png_size_t)(8 - png_ptr->sig_bytes));
|
(size_t)(8 - png_ptr->sig_bytes));
|
||||||
|
|
||||||
if (png_ptr->sig_bytes < 3)
|
if (png_ptr->sig_bytes < 3)
|
||||||
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
||||||
|
@ -124,8 +124,7 @@ png_write_chunk_start(png_structrp png_ptr, png_const_bytep chunk_string,
|
||||||
* given to png_write_chunk_header().
|
* given to png_write_chunk_header().
|
||||||
*/
|
*/
|
||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_write_chunk_data(png_structrp png_ptr, png_const_bytep data,
|
png_write_chunk_data(png_structrp png_ptr, png_const_bytep data, size_t length)
|
||||||
png_size_t length)
|
|
||||||
{
|
{
|
||||||
/* Write the data, and run the CRC over it */
|
/* Write the data, and run the CRC over it */
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
|
@ -160,7 +159,7 @@ png_write_chunk_end(png_structrp png_ptr)
|
||||||
/* Write the crc in a single operation */
|
/* Write the crc in a single operation */
|
||||||
png_save_uint_32(buf, png_ptr->crc);
|
png_save_uint_32(buf, png_ptr->crc);
|
||||||
|
|
||||||
png_write_data(png_ptr, buf, (png_size_t)4);
|
png_write_data(png_ptr, buf, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write a PNG chunk all at once. The type is an array of ASCII characters
|
/* Write a PNG chunk all at once. The type is an array of ASCII characters
|
||||||
|
@ -174,7 +173,7 @@ png_write_chunk_end(png_structrp png_ptr)
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name,
|
png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name,
|
||||||
png_const_bytep data, png_size_t length)
|
png_const_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -191,7 +190,7 @@ png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name,
|
||||||
/* This is the API that calls the internal function above. */
|
/* This is the API that calls the internal function above. */
|
||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_write_chunk(png_structrp png_ptr, png_const_bytep chunk_string,
|
png_write_chunk(png_structrp png_ptr, png_const_bytep chunk_string,
|
||||||
png_const_bytep data, png_size_t length)
|
png_const_bytep data, size_t length)
|
||||||
{
|
{
|
||||||
png_write_complete_chunk(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), data,
|
png_write_complete_chunk(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), data,
|
||||||
length);
|
length);
|
||||||
|
@ -820,7 +819,7 @@ png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height,
|
||||||
buf[12] = (png_byte)interlace_type;
|
buf[12] = (png_byte)interlace_type;
|
||||||
|
|
||||||
/* Write the chunk */
|
/* Write the chunk */
|
||||||
png_write_complete_chunk(png_ptr, png_IHDR, buf, (png_size_t)13);
|
png_write_complete_chunk(png_ptr, png_IHDR, buf, 13);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_APNG_SUPPORTED
|
#ifdef PNG_WRITE_APNG_SUPPORTED
|
||||||
png_ptr->first_frame_width = width;
|
png_ptr->first_frame_width = width;
|
||||||
|
@ -894,7 +893,7 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette,
|
||||||
buf[0] = pal_ptr->red;
|
buf[0] = pal_ptr->red;
|
||||||
buf[1] = pal_ptr->green;
|
buf[1] = pal_ptr->green;
|
||||||
buf[2] = pal_ptr->blue;
|
buf[2] = pal_ptr->blue;
|
||||||
png_write_chunk_data(png_ptr, buf, (png_size_t)3);
|
png_write_chunk_data(png_ptr, buf, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -908,7 +907,7 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette,
|
||||||
buf[0] = pal_ptr[i].red;
|
buf[0] = pal_ptr[i].red;
|
||||||
buf[1] = pal_ptr[i].green;
|
buf[1] = pal_ptr[i].green;
|
||||||
buf[2] = pal_ptr[i].blue;
|
buf[2] = pal_ptr[i].blue;
|
||||||
png_write_chunk_data(png_ptr, buf, (png_size_t)3);
|
png_write_chunk_data(png_ptr, buf, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1100,7 +1099,7 @@ png_write_IEND(png_structrp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_write_IEND");
|
png_debug(1, "in png_write_IEND");
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_IEND, NULL, (png_size_t)0);
|
png_write_complete_chunk(png_ptr, png_IEND, NULL, 0);
|
||||||
png_ptr->mode |= PNG_HAVE_IEND;
|
png_ptr->mode |= PNG_HAVE_IEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1115,7 +1114,7 @@ png_write_gAMA_fixed(png_structrp png_ptr, png_fixed_point file_gamma)
|
||||||
|
|
||||||
/* file_gamma is saved in 1/100,000ths */
|
/* file_gamma is saved in 1/100,000ths */
|
||||||
png_save_uint_32(buf, (png_uint_32)file_gamma);
|
png_save_uint_32(buf, (png_uint_32)file_gamma);
|
||||||
png_write_complete_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
|
png_write_complete_chunk(png_ptr, png_gAMA, buf, 4);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1133,7 +1132,7 @@ png_write_sRGB(png_structrp png_ptr, int srgb_intent)
|
||||||
"Invalid sRGB rendering intent specified");
|
"Invalid sRGB rendering intent specified");
|
||||||
|
|
||||||
buf[0]=(png_byte)srgb_intent;
|
buf[0]=(png_byte)srgb_intent;
|
||||||
png_write_complete_chunk(png_ptr, png_sRGB, buf, (png_size_t)1);
|
png_write_complete_chunk(png_ptr, png_sRGB, buf, 1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1207,8 +1206,8 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette)
|
||||||
png_uint_32 name_len;
|
png_uint_32 name_len;
|
||||||
png_byte new_name[80];
|
png_byte new_name[80];
|
||||||
png_byte entrybuf[10];
|
png_byte entrybuf[10];
|
||||||
png_size_t entry_size = (spalette->depth == 8 ? 6 : 10);
|
size_t entry_size = (spalette->depth == 8 ? 6 : 10);
|
||||||
png_size_t palette_size = entry_size * (png_size_t)spalette->nentries;
|
size_t palette_size = entry_size * (size_t)spalette->nentries;
|
||||||
png_sPLT_entryp ep;
|
png_sPLT_entryp ep;
|
||||||
#ifndef PNG_POINTER_INDEXING_SUPPORTED
|
#ifndef PNG_POINTER_INDEXING_SUPPORTED
|
||||||
int i;
|
int i;
|
||||||
|
@ -1225,10 +1224,9 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette)
|
||||||
png_write_chunk_header(png_ptr, png_sPLT,
|
png_write_chunk_header(png_ptr, png_sPLT,
|
||||||
(png_uint_32)(name_len + 2 + palette_size));
|
(png_uint_32)(name_len + 2 + palette_size));
|
||||||
|
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_name,
|
png_write_chunk_data(png_ptr, (png_bytep)new_name, (size_t)(name_len + 1));
|
||||||
(png_size_t)(name_len + 1));
|
|
||||||
|
|
||||||
png_write_chunk_data(png_ptr, &spalette->depth, (png_size_t)1);
|
png_write_chunk_data(png_ptr, &spalette->depth, 1);
|
||||||
|
|
||||||
/* Loop through each palette entry, writing appropriately */
|
/* Loop through each palette entry, writing appropriately */
|
||||||
#ifdef PNG_POINTER_INDEXING_SUPPORTED
|
#ifdef PNG_POINTER_INDEXING_SUPPORTED
|
||||||
|
@ -1290,7 +1288,7 @@ void /* PRIVATE */
|
||||||
png_write_sBIT(png_structrp png_ptr, png_const_color_8p sbit, int color_type)
|
png_write_sBIT(png_structrp png_ptr, png_const_color_8p sbit, int color_type)
|
||||||
{
|
{
|
||||||
png_byte buf[4];
|
png_byte buf[4];
|
||||||
png_size_t size;
|
size_t size;
|
||||||
|
|
||||||
png_debug(1, "in png_write_sBIT");
|
png_debug(1, "in png_write_sBIT");
|
||||||
|
|
||||||
|
@ -1390,7 +1388,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
|
||||||
|
|
||||||
/* Write the chunk out as it is */
|
/* Write the chunk out as it is */
|
||||||
png_write_complete_chunk(png_ptr, png_tRNS, trans_alpha,
|
png_write_complete_chunk(png_ptr, png_tRNS, trans_alpha,
|
||||||
(png_size_t)num_trans);
|
(size_t)num_trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (color_type == PNG_COLOR_TYPE_GRAY)
|
else if (color_type == PNG_COLOR_TYPE_GRAY)
|
||||||
|
@ -1405,7 +1403,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
|
||||||
}
|
}
|
||||||
|
|
||||||
png_save_uint_16(buf, tran->gray);
|
png_save_uint_16(buf, tran->gray);
|
||||||
png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)2);
|
png_write_complete_chunk(png_ptr, png_tRNS, buf, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (color_type == PNG_COLOR_TYPE_RGB)
|
else if (color_type == PNG_COLOR_TYPE_RGB)
|
||||||
|
@ -1425,7 +1423,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)6);
|
png_write_complete_chunk(png_ptr, png_tRNS, buf, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -1458,7 +1456,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
buf[0] = back->index;
|
buf[0] = back->index;
|
||||||
png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)1);
|
png_write_complete_chunk(png_ptr, png_bKGD, buf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ((color_type & PNG_COLOR_MASK_COLOR) != 0)
|
else if ((color_type & PNG_COLOR_MASK_COLOR) != 0)
|
||||||
|
@ -1479,7 +1477,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)6);
|
png_write_complete_chunk(png_ptr, png_bKGD, buf, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -1493,7 +1491,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
png_save_uint_16(buf, back->gray);
|
png_save_uint_16(buf, back->gray);
|
||||||
png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)2);
|
png_write_complete_chunk(png_ptr, png_bKGD, buf, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1513,7 +1511,7 @@ png_write_eXIf(png_structrp png_ptr, png_bytep exif, int num_exif)
|
||||||
for (i = 0; i < num_exif; i++)
|
for (i = 0; i < num_exif; i++)
|
||||||
{
|
{
|
||||||
buf[0] = exif[i];
|
buf[0] = exif[i];
|
||||||
png_write_chunk_data(png_ptr, buf, (png_size_t)1);
|
png_write_chunk_data(png_ptr, buf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_chunk_end(png_ptr);
|
png_write_chunk_end(png_ptr);
|
||||||
|
@ -1544,7 +1542,7 @@ png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist)
|
||||||
for (i = 0; i < num_hist; i++)
|
for (i = 0; i < num_hist; i++)
|
||||||
{
|
{
|
||||||
png_save_uint_16(buf, hist[i]);
|
png_save_uint_16(buf, hist[i]);
|
||||||
png_write_chunk_data(png_ptr, buf, (png_size_t)2);
|
png_write_chunk_data(png_ptr, buf, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_chunk_end(png_ptr);
|
png_write_chunk_end(png_ptr);
|
||||||
|
@ -1555,7 +1553,7 @@ png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist)
|
||||||
/* Write a tEXt chunk */
|
/* Write a tEXt chunk */
|
||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_write_tEXt(png_structrp png_ptr, png_const_charp key, png_const_charp text,
|
png_write_tEXt(png_structrp png_ptr, png_const_charp key, png_const_charp text,
|
||||||
png_size_t text_len)
|
size_t text_len)
|
||||||
{
|
{
|
||||||
png_uint_32 key_len;
|
png_uint_32 key_len;
|
||||||
png_byte new_key[80];
|
png_byte new_key[80];
|
||||||
|
@ -1652,7 +1650,7 @@ png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key,
|
||||||
png_const_charp lang, png_const_charp lang_key, png_const_charp text)
|
png_const_charp lang, png_const_charp lang_key, png_const_charp text)
|
||||||
{
|
{
|
||||||
png_uint_32 key_len, prefix_len;
|
png_uint_32 key_len, prefix_len;
|
||||||
png_size_t lang_len, lang_key_len;
|
size_t lang_len, lang_key_len;
|
||||||
png_byte new_key[82];
|
png_byte new_key[82];
|
||||||
compression_state comp;
|
compression_state comp;
|
||||||
|
|
||||||
|
@ -1762,7 +1760,7 @@ png_write_oFFs(png_structrp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
|
||||||
png_save_int_32(buf + 4, y_offset);
|
png_save_int_32(buf + 4, y_offset);
|
||||||
buf[8] = (png_byte)unit_type;
|
buf[8] = (png_byte)unit_type;
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_oFFs, buf, (png_size_t)9);
|
png_write_complete_chunk(png_ptr, png_oFFs, buf, 9);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef PNG_WRITE_pCAL_SUPPORTED
|
#ifdef PNG_WRITE_pCAL_SUPPORTED
|
||||||
|
@ -1773,7 +1771,7 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
|
||||||
png_charpp params)
|
png_charpp params)
|
||||||
{
|
{
|
||||||
png_uint_32 purpose_len;
|
png_uint_32 purpose_len;
|
||||||
png_size_t units_len, total_len;
|
size_t units_len, total_len;
|
||||||
png_size_tp params_len;
|
png_size_tp params_len;
|
||||||
png_byte buf[10];
|
png_byte buf[10];
|
||||||
png_byte new_purpose[80];
|
png_byte new_purpose[80];
|
||||||
|
@ -1797,7 +1795,7 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
|
||||||
total_len = purpose_len + units_len + 10;
|
total_len = purpose_len + units_len + 10;
|
||||||
|
|
||||||
params_len = (png_size_tp)png_malloc(png_ptr,
|
params_len = (png_size_tp)png_malloc(png_ptr,
|
||||||
(png_alloc_size_t)((png_alloc_size_t)nparams * (sizeof (png_size_t))));
|
(png_alloc_size_t)((png_alloc_size_t)nparams * (sizeof (size_t))));
|
||||||
|
|
||||||
/* Find the length of each parameter, making sure we don't count the
|
/* Find the length of each parameter, making sure we don't count the
|
||||||
* null terminator for the last parameter.
|
* null terminator for the last parameter.
|
||||||
|
@ -1817,8 +1815,8 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
|
||||||
png_save_int_32(buf + 4, X1);
|
png_save_int_32(buf + 4, X1);
|
||||||
buf[8] = (png_byte)type;
|
buf[8] = (png_byte)type;
|
||||||
buf[9] = (png_byte)nparams;
|
buf[9] = (png_byte)nparams;
|
||||||
png_write_chunk_data(png_ptr, buf, (png_size_t)10);
|
png_write_chunk_data(png_ptr, buf, 10);
|
||||||
png_write_chunk_data(png_ptr, (png_const_bytep)units, (png_size_t)units_len);
|
png_write_chunk_data(png_ptr, (png_const_bytep)units, (size_t)units_len);
|
||||||
|
|
||||||
for (i = 0; i < nparams; i++)
|
for (i = 0; i < nparams; i++)
|
||||||
{
|
{
|
||||||
|
@ -1837,7 +1835,7 @@ png_write_sCAL_s(png_structrp png_ptr, int unit, png_const_charp width,
|
||||||
png_const_charp height)
|
png_const_charp height)
|
||||||
{
|
{
|
||||||
png_byte buf[64];
|
png_byte buf[64];
|
||||||
png_size_t wlen, hlen, total_len;
|
size_t wlen, hlen, total_len;
|
||||||
|
|
||||||
png_debug(1, "in png_write_sCAL_s");
|
png_debug(1, "in png_write_sCAL_s");
|
||||||
|
|
||||||
|
@ -1878,7 +1876,7 @@ png_write_pHYs(png_structrp png_ptr, png_uint_32 x_pixels_per_unit,
|
||||||
png_save_uint_32(buf + 4, y_pixels_per_unit);
|
png_save_uint_32(buf + 4, y_pixels_per_unit);
|
||||||
buf[8] = (png_byte)unit_type;
|
buf[8] = (png_byte)unit_type;
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_pHYs, buf, (png_size_t)9);
|
png_write_complete_chunk(png_ptr, png_pHYs, buf, 9);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1908,7 +1906,7 @@ png_write_tIME(png_structrp png_ptr, png_const_timep mod_time)
|
||||||
buf[5] = mod_time->minute;
|
buf[5] = mod_time->minute;
|
||||||
buf[6] = mod_time->second;
|
buf[6] = mod_time->second;
|
||||||
|
|
||||||
png_write_complete_chunk(png_ptr, png_tIME, buf, (png_size_t)7);
|
png_write_complete_chunk(png_ptr, png_tIME, buf, 7);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2174,8 +2172,8 @@ png_write_finish_row(png_structrp png_ptr)
|
||||||
{
|
{
|
||||||
if (png_ptr->prev_row != NULL)
|
if (png_ptr->prev_row != NULL)
|
||||||
memset(png_ptr->prev_row, 0,
|
memset(png_ptr->prev_row, 0,
|
||||||
(png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
|
PNG_ROWBYTES(png_ptr->usr_channels *
|
||||||
png_ptr->usr_bit_depth, png_ptr->width)) + 1);
|
png_ptr->usr_bit_depth, png_ptr->width) + 1);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2231,7 +2229,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
for (i = png_pass_start[pass]; i < row_width;
|
for (i = png_pass_start[pass]; i < row_width;
|
||||||
i += png_pass_inc[pass])
|
i += png_pass_inc[pass])
|
||||||
{
|
{
|
||||||
sp = row + (png_size_t)(i >> 3);
|
sp = row + (size_t)(i >> 3);
|
||||||
value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01;
|
value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01;
|
||||||
d |= (value << shift);
|
d |= (value << shift);
|
||||||
|
|
||||||
|
@ -2269,7 +2267,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
for (i = png_pass_start[pass]; i < row_width;
|
for (i = png_pass_start[pass]; i < row_width;
|
||||||
i += png_pass_inc[pass])
|
i += png_pass_inc[pass])
|
||||||
{
|
{
|
||||||
sp = row + (png_size_t)(i >> 2);
|
sp = row + (size_t)(i >> 2);
|
||||||
value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03;
|
value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03;
|
||||||
d |= (value << shift);
|
d |= (value << shift);
|
||||||
|
|
||||||
|
@ -2305,7 +2303,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
for (i = png_pass_start[pass]; i < row_width;
|
for (i = png_pass_start[pass]; i < row_width;
|
||||||
i += png_pass_inc[pass])
|
i += png_pass_inc[pass])
|
||||||
{
|
{
|
||||||
sp = row + (png_size_t)(i >> 1);
|
sp = row + (size_t)(i >> 1);
|
||||||
value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f;
|
value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f;
|
||||||
d |= (value << shift);
|
d |= (value << shift);
|
||||||
|
|
||||||
|
@ -2331,7 +2329,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
png_bytep dp;
|
png_bytep dp;
|
||||||
png_uint_32 i;
|
png_uint_32 i;
|
||||||
png_uint_32 row_width = row_info->width;
|
png_uint_32 row_width = row_info->width;
|
||||||
png_size_t pixel_bytes;
|
size_t pixel_bytes;
|
||||||
|
|
||||||
/* Start at the beginning */
|
/* Start at the beginning */
|
||||||
dp = row;
|
dp = row;
|
||||||
|
@ -2344,7 +2342,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
i += png_pass_inc[pass])
|
i += png_pass_inc[pass])
|
||||||
{
|
{
|
||||||
/* Find out where the original pixel is */
|
/* Find out where the original pixel is */
|
||||||
sp = row + (png_size_t)i * pixel_bytes;
|
sp = row + (size_t)i * pixel_bytes;
|
||||||
|
|
||||||
/* Move the pixel */
|
/* Move the pixel */
|
||||||
if (dp != sp)
|
if (dp != sp)
|
||||||
|
@ -2375,16 +2373,16 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
|
||||||
*/
|
*/
|
||||||
static void /* PRIVATE */
|
static void /* PRIVATE */
|
||||||
png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
|
png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
|
||||||
png_size_t row_bytes);
|
size_t row_bytes);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_FILTER_SUPPORTED
|
#ifdef PNG_WRITE_FILTER_SUPPORTED
|
||||||
static png_size_t /* PRIVATE */
|
static size_t /* PRIVATE */
|
||||||
png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes, const png_size_t lmins)
|
size_t row_bytes, size_t lmins)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, lp;
|
png_bytep rp, dp, lp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t sum = 0;
|
size_t sum = 0;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
|
||||||
|
@ -2419,10 +2417,10 @@ png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
|
|
||||||
static void /* PRIVATE */
|
static void /* PRIVATE */
|
||||||
png_setup_sub_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_sub_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes)
|
size_t row_bytes)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, lp;
|
png_bytep rp, dp, lp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
|
||||||
|
|
||||||
|
@ -2439,13 +2437,12 @@ png_setup_sub_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static png_size_t /* PRIVATE */
|
static size_t /* PRIVATE */
|
||||||
png_setup_up_row(png_structrp png_ptr, const png_size_t row_bytes,
|
png_setup_up_row(png_structrp png_ptr, size_t row_bytes, size_t lmins)
|
||||||
const png_size_t lmins)
|
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp;
|
png_bytep rp, dp, pp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t sum = 0;
|
size_t sum = 0;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
|
||||||
|
@ -2468,10 +2465,10 @@ png_setup_up_row(png_structrp png_ptr, const png_size_t row_bytes,
|
||||||
return (sum);
|
return (sum);
|
||||||
}
|
}
|
||||||
static void /* PRIVATE */
|
static void /* PRIVATE */
|
||||||
png_setup_up_row_only(png_structrp png_ptr, const png_size_t row_bytes)
|
png_setup_up_row_only(png_structrp png_ptr, size_t row_bytes)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp;
|
png_bytep rp, dp, pp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
|
||||||
|
|
||||||
|
@ -2483,13 +2480,13 @@ png_setup_up_row_only(png_structrp png_ptr, const png_size_t row_bytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static png_size_t /* PRIVATE */
|
static size_t /* PRIVATE */
|
||||||
png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes, const png_size_t lmins)
|
size_t row_bytes, size_t lmins)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp, lp;
|
png_bytep rp, dp, pp, lp;
|
||||||
png_uint_32 i;
|
png_uint_32 i;
|
||||||
png_size_t sum = 0;
|
size_t sum = 0;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG;
|
||||||
|
@ -2525,7 +2522,7 @@ png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
}
|
}
|
||||||
static void /* PRIVATE */
|
static void /* PRIVATE */
|
||||||
png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes)
|
size_t row_bytes)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp, lp;
|
png_bytep rp, dp, pp, lp;
|
||||||
png_uint_32 i;
|
png_uint_32 i;
|
||||||
|
@ -2545,13 +2542,13 @@ png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static png_size_t /* PRIVATE */
|
static size_t /* PRIVATE */
|
||||||
png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes, const png_size_t lmins)
|
size_t row_bytes, size_t lmins)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp, cp, lp;
|
png_bytep rp, dp, pp, cp, lp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
png_size_t sum = 0;
|
size_t sum = 0;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
|
||||||
|
@ -2608,10 +2605,10 @@ png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
}
|
}
|
||||||
static void /* PRIVATE */
|
static void /* PRIVATE */
|
||||||
png_setup_paeth_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
png_setup_paeth_row_only(png_structrp png_ptr, const png_uint_32 bpp,
|
||||||
const png_size_t row_bytes)
|
size_t row_bytes)
|
||||||
{
|
{
|
||||||
png_bytep rp, dp, pp, cp, lp;
|
png_bytep rp, dp, pp, cp, lp;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
|
|
||||||
png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
|
png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
|
||||||
|
|
||||||
|
@ -2660,8 +2657,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
png_bytep row_buf;
|
png_bytep row_buf;
|
||||||
png_bytep best_row;
|
png_bytep best_row;
|
||||||
png_uint_32 bpp;
|
png_uint_32 bpp;
|
||||||
png_size_t mins;
|
size_t mins;
|
||||||
png_size_t row_bytes = row_info->rowbytes;
|
size_t row_bytes = row_info->rowbytes;
|
||||||
|
|
||||||
png_debug(1, "in png_write_find_filter");
|
png_debug(1, "in png_write_find_filter");
|
||||||
|
|
||||||
|
@ -2716,8 +2713,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
* 'none' filter.
|
* 'none' filter.
|
||||||
*/
|
*/
|
||||||
png_bytep rp;
|
png_bytep rp;
|
||||||
png_size_t sum = 0;
|
size_t sum = 0;
|
||||||
png_size_t i;
|
size_t i;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -2745,8 +2742,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
|
|
||||||
else if ((filter_to_do & PNG_FILTER_SUB) != 0)
|
else if ((filter_to_do & PNG_FILTER_SUB) != 0)
|
||||||
{
|
{
|
||||||
png_size_t sum;
|
size_t sum;
|
||||||
png_size_t lmins = mins;
|
size_t lmins = mins;
|
||||||
|
|
||||||
sum = png_setup_sub_row(png_ptr, bpp, row_bytes, lmins);
|
sum = png_setup_sub_row(png_ptr, bpp, row_bytes, lmins);
|
||||||
|
|
||||||
|
@ -2771,8 +2768,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
|
|
||||||
else if ((filter_to_do & PNG_FILTER_UP) != 0)
|
else if ((filter_to_do & PNG_FILTER_UP) != 0)
|
||||||
{
|
{
|
||||||
png_size_t sum;
|
size_t sum;
|
||||||
png_size_t lmins = mins;
|
size_t lmins = mins;
|
||||||
|
|
||||||
sum = png_setup_up_row(png_ptr, row_bytes, lmins);
|
sum = png_setup_up_row(png_ptr, row_bytes, lmins);
|
||||||
|
|
||||||
|
@ -2797,8 +2794,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
|
|
||||||
else if ((filter_to_do & PNG_FILTER_AVG) != 0)
|
else if ((filter_to_do & PNG_FILTER_AVG) != 0)
|
||||||
{
|
{
|
||||||
png_size_t sum;
|
size_t sum;
|
||||||
png_size_t lmins = mins;
|
size_t lmins = mins;
|
||||||
|
|
||||||
sum= png_setup_avg_row(png_ptr, bpp, row_bytes, lmins);
|
sum= png_setup_avg_row(png_ptr, bpp, row_bytes, lmins);
|
||||||
|
|
||||||
|
@ -2823,8 +2820,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
|
|
||||||
else if ((filter_to_do & PNG_FILTER_PAETH) != 0)
|
else if ((filter_to_do & PNG_FILTER_PAETH) != 0)
|
||||||
{
|
{
|
||||||
png_size_t sum;
|
size_t sum;
|
||||||
png_size_t lmins = mins;
|
size_t lmins = mins;
|
||||||
|
|
||||||
sum = png_setup_paeth_row(png_ptr, bpp, row_bytes, lmins);
|
sum = png_setup_paeth_row(png_ptr, bpp, row_bytes, lmins);
|
||||||
|
|
||||||
|
@ -2849,7 +2846,7 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
|
||||||
/* Do the actual writing of a previously filtered row. */
|
/* Do the actual writing of a previously filtered row. */
|
||||||
static void
|
static void
|
||||||
png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
|
png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
|
||||||
png_size_t full_row_length/*includes filter byte*/)
|
size_t full_row_length/*includes filter byte*/)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_write_filtered_row");
|
png_debug(1, "in png_write_filtered_row");
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@
|
||||||
png_byte i;\
|
png_byte i;\
|
||||||
png_bytep rp = row + offset;\
|
png_bytep rp = row + offset;\
|
||||||
png_const_bytep pp = prev_row;\
|
png_const_bytep pp = prev_row;\
|
||||||
png_size_t unaligned_top = 16 - (((png_size_t)rp % 16));\
|
size_t unaligned_top = 16 - (((size_t)rp % 16));\
|
||||||
png_size_t istop;\
|
size_t istop;\
|
||||||
if(unaligned_top == 16)\
|
if(unaligned_top == 16)\
|
||||||
unaligned_top = 0;\
|
unaligned_top = 0;\
|
||||||
istop = row_info->rowbytes;\
|
istop = row_info->rowbytes;\
|
||||||
|
|
|
@ -46,7 +46,7 @@ _SUBDIR_CONFIG_ARGS="$ac_configure_args"
|
||||||
dnl Set the version number of the libs included with mozilla
|
dnl Set the version number of the libs included with mozilla
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
MOZJPEG=62
|
MOZJPEG=62
|
||||||
MOZPNG=10634
|
MOZPNG=10635
|
||||||
NSPR_VERSION=4
|
NSPR_VERSION=4
|
||||||
NSPR_MINVER=4.19
|
NSPR_MINVER=4.19
|
||||||
NSS_VERSION=3
|
NSS_VERSION=3
|
||||||
|
|
Загрузка…
Ссылка в новой задаче