mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	[libpng10] Imported from libpng-1.0.45.tar
This commit is contained in:
		
							parent
							
								
									4fa097d58b
								
							
						
					
					
						commit
						4049c1ac2a
					
				
							
								
								
									
										77
									
								
								ANNOUNCE
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								ANNOUNCE
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Libpng 1.0.44 - May 7, 2009
 | 
					Libpng 1.0.45 - June 4, 2009
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is a public release of libpng, intended for use in production codes.
 | 
					This is a public release of libpng, intended for use in production codes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -8,63 +8,60 @@ Files available for download:
 | 
				
			|||||||
Source files with LF line endings (for Unix/Linux) and with a
 | 
					Source files with LF line endings (for Unix/Linux) and with a
 | 
				
			||||||
"configure" script
 | 
					"configure" script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   libpng-1.0.44.tar.gz
 | 
					   libpng-1.0.45.tar.gz
 | 
				
			||||||
   libpng-1.0.44.tar.lzma
 | 
					   libpng-1.0.45.tar.lzma
 | 
				
			||||||
     (Get the lzma codec from <http://tukaani.org/lzma>).
 | 
					     (Get the lzma codec from <http://tukaani.org/lzma>).
 | 
				
			||||||
   libpng-1.0.44.tar.bz2
 | 
					   libpng-1.0.45.tar.bz2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Source files with LF line endings (for Unix/Linux) without the
 | 
					Source files with LF line endings (for Unix/Linux) without the
 | 
				
			||||||
"configure" script
 | 
					"configure" script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   libpng-1.0.44-no-config.tar.gz
 | 
					   libpng-1.0.45-no-config.tar.gz
 | 
				
			||||||
   libpng-1.0.44-no-config.tar.lzma
 | 
					   libpng-1.0.45-no-config.tar.lzma
 | 
				
			||||||
   libpng-1.0.44-no-config.tar.bz2
 | 
					   libpng-1.0.45-no-config.tar.bz2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Source files with CRLF line endings (for Windows), without the
 | 
					Source files with CRLF line endings (for Windows), without the
 | 
				
			||||||
"configure" script
 | 
					"configure" script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   lpng1044.zip
 | 
					   lpng1045.zip
 | 
				
			||||||
   lpng1044.7z
 | 
					   lpng1045.7z
 | 
				
			||||||
   lpng1044.tar.bz2
 | 
					   lpng1045.tar.bz2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Project files
 | 
					Project files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   libpng-1.0.44-project-netware.zip
 | 
					   libpng-1.0.45-project-netware.zip
 | 
				
			||||||
   libpng-1.0.44-project-wince.zip
 | 
					   libpng-1.0.45-project-wince.zip
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Other information:
 | 
					Other information:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   libpng-1.0.44-README.txt
 | 
					   libpng-1.0.45-README.txt
 | 
				
			||||||
   libpng-1.0.44-KNOWNBUGS.txt
 | 
					   libpng-1.0.45-KNOWNBUGS.txt
 | 
				
			||||||
   libpng-1.0.44-LICENSE.txt
 | 
					   libpng-1.0.45-LICENSE.txt
 | 
				
			||||||
   libpng-1.0.44-Y2K-compliance.txt
 | 
					   libpng-1.0.45-Y2K-compliance.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changes since the last public release (1.0.43):
 | 
					Changes since the last public release (1.0.44):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 1.0.44 [May 7, 2009]
 | 
					version 1.0.45 [June 4, 2009]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Revised comments in png_set_read_fn() and png_set_write_fn().
 | 
					  Fixed inconsistency in pngrutil.c, introduced in libpng-1.2.36.  The
 | 
				
			||||||
  Revised order of #ifdef's and indentation in png_debug definitions of png.h
 | 
					    memset() was using "png_ptr->rowbytes" instead of "row_bytes", which
 | 
				
			||||||
    bug introduced in libpng-1.2.34.
 | 
					    the corresponding png_malloc() uses (Joe Drew).
 | 
				
			||||||
  Use png_memset() after png_malloc() of big_row_buf when reading an
 | 
					  Clarified usage of sig_bit versus sig_bit_p in example.c (Vincent Torri)
 | 
				
			||||||
    interlaced file, to avoid a possible UMR.
 | 
					  Updated some of the makefiles in the scripts directory.
 | 
				
			||||||
  Undid recent revision of PNG_NO_STDIO version of png_write_flush().  Users
 | 
					  Fixed typo in libpng documentation (FILTER_AVE should be FILTER_AVG)
 | 
				
			||||||
    having trouble with fflush() can build with PNG_NO_WRITE_FLUSH defined.
 | 
					  Relocated misplaced #endif in pngwrite.c, sCAL chunk handler.
 | 
				
			||||||
  Revised libpng*.txt documentation about use of png_write_flush().
 | 
					  Conditionally compile png_read_finish_row() which is not used by
 | 
				
			||||||
  Removed fflush() from pngtest.c.
 | 
					    progressive readers.
 | 
				
			||||||
  Added "#define PNG_NO_WRITE_FLUSH" to contrib/pngminim/encoder/pngusr.h
 | 
					  Added contrib/pngminim/preader to demonstrate building minimal progressive
 | 
				
			||||||
  Relocated misplaced PNG_1_0_X define in png.h that caused the prototype
 | 
					    decoder, based on contrib/gregbook with embedded libpng and zlib.
 | 
				
			||||||
    for png_set_strip_error_numbers() to be omitted from PNG_NO_ASSEMBLER_CODE
 | 
					  In contrib/pngminim/*, renamed "makefile.std" to "makefile", since there
 | 
				
			||||||
    builds.  This bug was introduced in libpng-1.2.15beta4.
 | 
					    is only one makefile in those directories, and revised the README files
 | 
				
			||||||
  Added a section on differences between 1.0.x and 1.2.x to libpng.3/libpng.txt
 | 
					    accordingly.
 | 
				
			||||||
  Fixed potential memory leak of "new_name" in png_write_iCCP() (Ralph Giles)
 | 
					  Reformated sources in libpng style (3-space indentation, comment format)
 | 
				
			||||||
  Added "ifndef PNG_SKIP_SETJMP_CHECK" block in pngconf.h to allow
 | 
					  Added sections about the git repository and our coding style to the
 | 
				
			||||||
    application code writers to bypass the check for multiple inclusion
 | 
					    documentation (merged from libpng-1.4.0beta62)
 | 
				
			||||||
    of setjmp.h when they know that it is safe to ignore the situation.
 | 
					  Added a section about using png_get_io_ptr() in configure scripts to detect
 | 
				
			||||||
  Renamed "user_chunk_data" to "my_user_chunk_data" in pngtest.c to suppress
 | 
					    the presence of libpng.
 | 
				
			||||||
    "shadowed declaration" warning from gcc-4.3.3.
 | 
					 | 
				
			||||||
  Renamed "gamma" to "png_gamma" in pngset.c to avoid "shadowed declaration"
 | 
					 | 
				
			||||||
    warning about a global "gamma" variable in math.h on some platforms.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
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 
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										35
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								CHANGES
									
									
									
									
									
								
							@ -2357,6 +2357,41 @@ version 1.2.36rc01 [April 30, 2009]
 | 
				
			|||||||
version 1.0.44 and 1.2.36 [May 7, 2009]
 | 
					version 1.0.44 and 1.2.36 [May 7, 2009]
 | 
				
			||||||
  No changes.
 | 
					  No changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 1.2.37beta01 [May 14, 2009]
 | 
				
			||||||
 | 
					  Fixed inconsistency in pngrutil.c, introduced in libpng-1.2.36.  The
 | 
				
			||||||
 | 
					    memset() was using "png_ptr->rowbytes" instead of "row_bytes", which
 | 
				
			||||||
 | 
					    the corresponding png_malloc() uses (Joe Drew).
 | 
				
			||||||
 | 
					  Clarified usage of sig_bit versus sig_bit_p in example.c (Vincent Torri)
 | 
				
			||||||
 | 
					  Updated some of the makefiles in the scripts directory (merged with
 | 
				
			||||||
 | 
					    those in libpng-1.4.0beta57).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 1.2.37beta02 [May 19, 2009]
 | 
				
			||||||
 | 
					  Fixed typo in libpng documentation (FILTER_AVE should be FILTER_AVG)
 | 
				
			||||||
 | 
					  Relocated misplaced #endif in pngwrite.c, sCAL chunk handler.
 | 
				
			||||||
 | 
					  Conditionally compile png_read_finish_row() which is not used by
 | 
				
			||||||
 | 
					    progressive readers.
 | 
				
			||||||
 | 
					  Added contrib/pngminim/preader to demonstrate building minimal progressive
 | 
				
			||||||
 | 
					    decoder, based on contrib/gregbook with embedded libpng and zlib.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 1.2.37beta03 [May 20, 2009]
 | 
				
			||||||
 | 
					  In contrib/pngminim/*, renamed "makefile.std" to "makefile", since there
 | 
				
			||||||
 | 
					    is only one makefile in those directories, and revised the README files
 | 
				
			||||||
 | 
					    accordingly.
 | 
				
			||||||
 | 
					  Reformated sources in libpng style (3-space indentation, comment format)
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					version 1.2.37rc01 [May 27, 2009]
 | 
				
			||||||
 | 
					  No changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					versions 1.2.37 and 1.0.45 [June 4, 2009]
 | 
				
			||||||
 | 
					  Reformatted several remaining "else statement;" and "if () statment;" into
 | 
				
			||||||
 | 
					    two lines.
 | 
				
			||||||
 | 
					  Added "#define PNG_NO_WRITE_SWAP" to contrib/pngminim/encoder/pngusr.h
 | 
				
			||||||
 | 
					    and "define PNG_NO_READ_SWAP" to decoder/pngusr.h and preader/pngusr.h
 | 
				
			||||||
 | 
					  Added sections about the git repository and our coding style to the
 | 
				
			||||||
 | 
					    documentation (merged from libpng-1.4.0beta62)
 | 
				
			||||||
 | 
					  Added a section about using png_get_io_ptr() in configure scripts to detect
 | 
				
			||||||
 | 
					    the presence of libpng.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								INSTALL
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Installing libpng version 1.0.44 - May 7, 2009
 | 
					Installing libpng version 1.0.45 - June 4, 2009
 | 
				
			||||||
 | 
					
 | 
				
			||||||
On Unix/Linux and similar systems, you can simply type
 | 
					On Unix/Linux and similar systems, you can simply type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that
 | 
				
			|||||||
correspond to the version of zlib that's installed.
 | 
					correspond to the version of zlib that's installed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can rename the directories that you downloaded (they
 | 
					You can rename the directories that you downloaded (they
 | 
				
			||||||
might be called "libpng-1.0.44" or "lpng109" and "zlib-1.2.1"
 | 
					might be called "libpng-1.0.45" or "lpng109" and "zlib-1.2.1"
 | 
				
			||||||
or "zlib121") so that you have directories called "zlib" and "libpng".
 | 
					or "zlib121") so that you have directories called "zlib" and "libpng".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Your directory structure should look like this:
 | 
					Your directory structure should look like this:
 | 
				
			||||||
@ -101,9 +101,9 @@ include
 | 
				
			|||||||
 CMakeLists.txt    =>  "cmake" script
 | 
					 CMakeLists.txt    =>  "cmake" script
 | 
				
			||||||
 makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
 | 
					 makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
 | 
				
			||||||
 makefile.elf      =>  Linux/ELF makefile symbol versioning,
 | 
					 makefile.elf      =>  Linux/ELF makefile symbol versioning,
 | 
				
			||||||
                       gcc, creates libpng10.so.0.1.0.44)
 | 
					                       gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.linux    =>  Linux/ELF makefile
 | 
					 makefile.linux    =>  Linux/ELF makefile
 | 
				
			||||||
                       (gcc, creates libpng10.so.0.1.0.44)
 | 
					                       (gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
 | 
					 makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
 | 
				
			||||||
 makefile.knr      =>  Archaic UNIX Makefile that converts files with
 | 
					 makefile.knr      =>  Archaic UNIX Makefile that converts files with
 | 
				
			||||||
                       ansi2knr (Requires ansi2knr.c from
 | 
					                       ansi2knr (Requires ansi2knr.c from
 | 
				
			||||||
@ -125,14 +125,14 @@ include
 | 
				
			|||||||
 makefile.openbsd  =>  OpenBSD makefile
 | 
					 makefile.openbsd  =>  OpenBSD makefile
 | 
				
			||||||
 makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
 | 
					 makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
 | 
				
			||||||
 makefile.sggcc    =>  Silicon Graphics (gcc,
 | 
					 makefile.sggcc    =>  Silicon Graphics (gcc,
 | 
				
			||||||
                       creates libpng10.so.0.1.0.44)
 | 
					                       creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.sunos    =>  Sun makefile
 | 
					 makefile.sunos    =>  Sun makefile
 | 
				
			||||||
 makefile.solaris  =>  Solaris 2.X makefile (gcc,
 | 
					 makefile.solaris  =>  Solaris 2.X makefile (gcc,
 | 
				
			||||||
                       creates libpng10.so.0.1.0.44)
 | 
					                       creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.solaris-x86 =>  Solaris/intelMMX 2.X makefile (gcc,
 | 
					 makefile.solaris-x86 =>  Solaris/intelMMX 2.X makefile (gcc,
 | 
				
			||||||
                       creates libpng10.so.0.1.0.44)
 | 
					                       creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.so9      =>  Solaris 9 makefile (gcc,
 | 
					 makefile.so9      =>  Solaris 9 makefile (gcc,
 | 
				
			||||||
                       creates libpng10.so.0.1.0.44)
 | 
					                       creates libpng10.so.0.1.0.45)
 | 
				
			||||||
 makefile.32sunu   =>  Sun Ultra 32-bit makefile
 | 
					 makefile.32sunu   =>  Sun Ultra 32-bit makefile
 | 
				
			||||||
 makefile.64sunu   =>  Sun Ultra 64-bit makefile
 | 
					 makefile.64sunu   =>  Sun Ultra 64-bit makefile
 | 
				
			||||||
 makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
 | 
					 makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								KNOWNBUG
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								KNOWNBUG
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Known bugs in libpng version 1.0.44
 | 
					Known bugs in libpng version 1.0.45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. February 23, 2006: The custom makefiles don't build libpng with -lz.
 | 
					1. February 23, 2006: The custom makefiles don't build libpng with -lz.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								LICENSE
									
									
									
									
									
								
							@ -8,7 +8,7 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
 | 
				
			|||||||
If you modify libpng you may insert additional notices immediately following
 | 
					If you modify libpng you may insert additional notices immediately following
 | 
				
			||||||
this sentence.
 | 
					this sentence.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libpng versions 1.2.6, August 15, 2004, through 1.0.44, May 7, 2009, are
 | 
					libpng versions 1.2.6, August 15, 2004, through 1.0.45, June 4, 2009, are
 | 
				
			||||||
Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
 | 
					Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
 | 
				
			||||||
distributed according to the same disclaimer and license as libpng-1.2.5
 | 
					distributed according to the same disclaimer and license as libpng-1.2.5
 | 
				
			||||||
with the following individual added to the list of Contributing Authors
 | 
					with the following individual added to the list of Contributing Authors
 | 
				
			||||||
@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Glenn Randers-Pehrson
 | 
					Glenn Randers-Pehrson
 | 
				
			||||||
glennrp at users.sourceforge.net
 | 
					glennrp at users.sourceforge.net
 | 
				
			||||||
May 7, 2009
 | 
					June 4, 2009
 | 
				
			||||||
 | 
				
			|||||||
@ -86,7 +86,7 @@ EXTRA_DIST= \
 | 
				
			|||||||
	${srcdir}/contrib/pngsuite/* \
 | 
						${srcdir}/contrib/pngsuite/* \
 | 
				
			||||||
	${srcdir}/contrib/visupng/* \
 | 
						${srcdir}/contrib/visupng/* \
 | 
				
			||||||
	$(TESTS) \
 | 
						$(TESTS) \
 | 
				
			||||||
	example.c libpng-1.0.44.txt pngvcrd.c 
 | 
						example.c libpng-1.0.45.txt pngvcrd.c 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLEANFILES= pngout.png libpng10.pc libpng10-config libpng.vers \
 | 
					CLEANFILES= pngout.png libpng10.pc libpng10-config libpng.vers \
 | 
				
			||||||
libpng.sym
 | 
					libpng.sym
 | 
				
			||||||
 | 
				
			|||||||
@ -333,7 +333,7 @@ EXTRA_DIST = \
 | 
				
			|||||||
	${srcdir}/contrib/pngsuite/* \
 | 
						${srcdir}/contrib/pngsuite/* \
 | 
				
			||||||
	${srcdir}/contrib/visupng/* \
 | 
						${srcdir}/contrib/visupng/* \
 | 
				
			||||||
	$(TESTS) \
 | 
						$(TESTS) \
 | 
				
			||||||
	example.c libpng-1.0.44.txt pngvcrd.c 
 | 
						example.c libpng-1.0.45.txt pngvcrd.c 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLEANFILES = pngout.png libpng10.pc libpng10-config libpng.vers \
 | 
					CLEANFILES = pngout.png libpng10.pc libpng10-config libpng.vers \
 | 
				
			||||||
libpng.sym
 | 
					libpng.sym
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README
									
									
									
									
									
								
							@ -1,4 +1,4 @@
 | 
				
			|||||||
README for libpng version 1.0.44 - May 7, 2009 (shared library 10.0)
 | 
					README for libpng version 1.0.45 - June 4, 2009 (shared library 10.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.
 | 
				
			||||||
@ -194,11 +194,11 @@ Files in this distribution:
 | 
				
			|||||||
       descrip.mms      =>  VMS makefile for MMS or MMK
 | 
					       descrip.mms      =>  VMS makefile for MMS or MMK
 | 
				
			||||||
       makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
 | 
					       makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
 | 
				
			||||||
       makefile.elf     =>  Linux/ELF makefile symbol versioning,
 | 
					       makefile.elf     =>  Linux/ELF makefile symbol versioning,
 | 
				
			||||||
                            gcc, creates libpng10.so.0.1.0.44)
 | 
					                            gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
       makefile.linux   =>  Linux/ELF makefile
 | 
					       makefile.linux   =>  Linux/ELF makefile
 | 
				
			||||||
                            (gcc, creates libpng10.so.0.1.0.44)
 | 
					                            (gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
       makefile.gcmmx   =>  Linux/ELF makefile
 | 
					       makefile.gcmmx   =>  Linux/ELF makefile
 | 
				
			||||||
                            (gcc, creates libpng10.so.0.1.0.44,
 | 
					                            (gcc, creates libpng10.so.0.1.0.45,
 | 
				
			||||||
                            uses assembler code tuned for Intel MMX platform)
 | 
					                            uses assembler code tuned for Intel MMX platform)
 | 
				
			||||||
       makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
 | 
					       makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
 | 
				
			||||||
       makefile.knr     =>  Archaic UNIX Makefile that converts files with
 | 
					       makefile.knr     =>  Archaic UNIX Makefile that converts files with
 | 
				
			||||||
@ -220,12 +220,12 @@ Files in this distribution:
 | 
				
			|||||||
       makefile.openbsd =>  OpenBSD makefile
 | 
					       makefile.openbsd =>  OpenBSD makefile
 | 
				
			||||||
       makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
 | 
					       makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
 | 
				
			||||||
       makefile.sggcc   =>  Silicon Graphics
 | 
					       makefile.sggcc   =>  Silicon Graphics
 | 
				
			||||||
                            (gcc, creates libpng10.so.0.1.0.44)
 | 
					                            (gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
       makefile.sunos   =>  Sun makefile
 | 
					       makefile.sunos   =>  Sun makefile
 | 
				
			||||||
       makefile.solaris =>  Solaris 2.X makefile
 | 
					       makefile.solaris =>  Solaris 2.X makefile
 | 
				
			||||||
                            (gcc, creates libpng10.so.0.1.0.44)
 | 
					                            (gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
       makefile.so9     =>  Solaris 9 makefile
 | 
					       makefile.so9     =>  Solaris 9 makefile
 | 
				
			||||||
                            (gcc, creates libpng10.so.0.1.0.44)
 | 
					                            (gcc, creates libpng10.so.0.1.0.45)
 | 
				
			||||||
       makefile.32sunu  =>  Sun Ultra 32-bit makefile
 | 
					       makefile.32sunu  =>  Sun Ultra 32-bit makefile
 | 
				
			||||||
       makefile.64sunu  =>  Sun Ultra 64-bit makefile
 | 
					       makefile.64sunu  =>  Sun Ultra 64-bit makefile
 | 
				
			||||||
       makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
 | 
					       makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								Y2KINFO
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Y2KINFO
									
									
									
									
									
								
							@ -1,13 +1,13 @@
 | 
				
			|||||||
   Y2K compliance in libpng:
 | 
					   Y2K compliance in libpng:
 | 
				
			||||||
   =========================
 | 
					   =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      May 7, 2009
 | 
					      June 4, 2009
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      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.0.44 are Y2K compliant.  It is my belief that earlier
 | 
					      upward through 1.0.45 are Y2K compliant.  It is my belief that earlier
 | 
				
			||||||
      versions were also Y2K compliant.
 | 
					      versions were also Y2K compliant.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Libpng only has three year fields.  One is a 2-byte unsigned integer
 | 
					      Libpng only has three year fields.  One is a 2-byte unsigned integer
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
#! /bin/sh
 | 
					#! /bin/sh
 | 
				
			||||||
# Guess values for system-dependent variables and create Makefiles.
 | 
					# Guess values for system-dependent variables and create Makefiles.
 | 
				
			||||||
# Generated by GNU Autoconf 2.62 for libpng 1.0.44.
 | 
					# Generated by GNU Autoconf 2.62 for libpng 1.0.45.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
 | 
					# Report bugs to <png-mng-implement@lists.sourceforge.net>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 | 
				
			|||||||
# Identity of this package.
 | 
					# Identity of this package.
 | 
				
			||||||
PACKAGE_NAME='libpng'
 | 
					PACKAGE_NAME='libpng'
 | 
				
			||||||
PACKAGE_TARNAME='libpng'
 | 
					PACKAGE_TARNAME='libpng'
 | 
				
			||||||
PACKAGE_VERSION='1.0.44'
 | 
					PACKAGE_VERSION='1.0.45'
 | 
				
			||||||
PACKAGE_STRING='libpng 1.0.44'
 | 
					PACKAGE_STRING='libpng 1.0.45'
 | 
				
			||||||
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
 | 
					PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ac_unique_file="pngget.c"
 | 
					ac_unique_file="pngget.c"
 | 
				
			||||||
@ -1484,7 +1484,7 @@ if test "$ac_init_help" = "long"; then
 | 
				
			|||||||
  # Omit some internal or obsolete options to make the list less imposing.
 | 
					  # Omit some internal or obsolete options to make the list less imposing.
 | 
				
			||||||
  # This message is too long to be a string in the A/UX 3.1 sh.
 | 
					  # This message is too long to be a string in the A/UX 3.1 sh.
 | 
				
			||||||
  cat <<_ACEOF
 | 
					  cat <<_ACEOF
 | 
				
			||||||
\`configure' configures libpng 1.0.44 to adapt to many kinds of systems.
 | 
					\`configure' configures libpng 1.0.45 to adapt to many kinds of systems.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
 | 
					Usage: $0 [OPTION]... [VAR=VALUE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1554,7 +1554,7 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
if test -n "$ac_init_help"; then
 | 
					if test -n "$ac_init_help"; then
 | 
				
			||||||
  case $ac_init_help in
 | 
					  case $ac_init_help in
 | 
				
			||||||
     short | recursive ) echo "Configuration of libpng 1.0.44:";;
 | 
					     short | recursive ) echo "Configuration of libpng 1.0.45:";;
 | 
				
			||||||
   esac
 | 
					   esac
 | 
				
			||||||
  cat <<\_ACEOF
 | 
					  cat <<\_ACEOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1661,7 +1661,7 @@ fi
 | 
				
			|||||||
test -n "$ac_init_help" && exit $ac_status
 | 
					test -n "$ac_init_help" && exit $ac_status
 | 
				
			||||||
if $ac_init_version; then
 | 
					if $ac_init_version; then
 | 
				
			||||||
  cat <<\_ACEOF
 | 
					  cat <<\_ACEOF
 | 
				
			||||||
libpng configure 1.0.44
 | 
					libpng configure 1.0.45
 | 
				
			||||||
generated by GNU Autoconf 2.62
 | 
					generated by GNU Autoconf 2.62
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 | 
					Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 | 
				
			||||||
@ -1675,7 +1675,7 @@ cat >config.log <<_ACEOF
 | 
				
			|||||||
This file contains any messages produced by compilers while
 | 
					This file contains any messages produced by compilers while
 | 
				
			||||||
running configure, to aid debugging if configure makes a mistake.
 | 
					running configure, to aid debugging if configure makes a mistake.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
It was created by libpng $as_me 1.0.44, which was
 | 
					It was created by libpng $as_me 1.0.45, which was
 | 
				
			||||||
generated by GNU Autoconf 2.62.  Invocation command line was
 | 
					generated by GNU Autoconf 2.62.  Invocation command line was
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $ $0 $@
 | 
					  $ $0 $@
 | 
				
			||||||
@ -2389,7 +2389,7 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Define the identity of the package.
 | 
					# Define the identity of the package.
 | 
				
			||||||
 PACKAGE='libpng'
 | 
					 PACKAGE='libpng'
 | 
				
			||||||
 VERSION='1.0.44'
 | 
					 VERSION='1.0.45'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cat >>confdefs.h <<_ACEOF
 | 
					cat >>confdefs.h <<_ACEOF
 | 
				
			||||||
@ -2558,10 +2558,10 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PNGLIB_VERSION=1.0.44
 | 
					PNGLIB_VERSION=1.0.45
 | 
				
			||||||
PNGLIB_MAJOR=1
 | 
					PNGLIB_MAJOR=1
 | 
				
			||||||
PNGLIB_MINOR=0
 | 
					PNGLIB_MINOR=0
 | 
				
			||||||
PNGLIB_RELEASE=44
 | 
					PNGLIB_RELEASE=45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -13125,7 +13125,7 @@ exec 6>&1
 | 
				
			|||||||
# report actual input values of CONFIG_FILES etc. instead of their
 | 
					# report actual input values of CONFIG_FILES etc. instead of their
 | 
				
			||||||
# values after options handling.
 | 
					# values after options handling.
 | 
				
			||||||
ac_log="
 | 
					ac_log="
 | 
				
			||||||
This file was extended by libpng $as_me 1.0.44, which was
 | 
					This file was extended by libpng $as_me 1.0.45, which was
 | 
				
			||||||
generated by GNU Autoconf 2.62.  Invocation command line was
 | 
					generated by GNU Autoconf 2.62.  Invocation command line was
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  CONFIG_FILES    = $CONFIG_FILES
 | 
					  CONFIG_FILES    = $CONFIG_FILES
 | 
				
			||||||
@ -13178,7 +13178,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 | 
				
			|||||||
_ACEOF
 | 
					_ACEOF
 | 
				
			||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 | 
					cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 | 
				
			||||||
ac_cs_version="\\
 | 
					ac_cs_version="\\
 | 
				
			||||||
libpng config.status 1.0.44
 | 
					libpng config.status 1.0.45
 | 
				
			||||||
configured by $0, generated by GNU Autoconf 2.62,
 | 
					configured by $0, generated by GNU Autoconf 2.62,
 | 
				
			||||||
  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 | 
					  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -18,15 +18,15 @@ AC_PREREQ(2.59)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
dnl Version number stuff here:
 | 
					dnl Version number stuff here:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_INIT([libpng], [1.0.44], [png-mng-implement@lists.sourceforge.net])
 | 
					AC_INIT([libpng], [1.0.45], [png-mng-implement@lists.sourceforge.net])
 | 
				
			||||||
AM_INIT_AUTOMAKE
 | 
					AM_INIT_AUTOMAKE
 | 
				
			||||||
dnl stop configure from automagically running automake
 | 
					dnl stop configure from automagically running automake
 | 
				
			||||||
AM_MAINTAINER_MODE
 | 
					AM_MAINTAINER_MODE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PNGLIB_VERSION=1.0.44
 | 
					PNGLIB_VERSION=1.0.45
 | 
				
			||||||
PNGLIB_MAJOR=1
 | 
					PNGLIB_MAJOR=1
 | 
				
			||||||
PNGLIB_MINOR=0
 | 
					PNGLIB_MINOR=0
 | 
				
			||||||
PNGLIB_RELEASE=44
 | 
					PNGLIB_RELEASE=45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dnl End of version number stuff
 | 
					dnl End of version number stuff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										269
									
								
								example.c
									
									
									
									
									
								
							
							
						
						
									
										269
									
								
								example.c
									
									
									
									
									
								
							@ -2,7 +2,7 @@
 | 
				
			|||||||
#if 0 /* in case someone actually tries to compile this */
 | 
					#if 0 /* in case someone actually tries to compile this */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* example.c - an example of using libpng
 | 
					/* example.c - an example of using libpng
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * This file has been placed in the public domain by the authors.
 | 
					 * This file has been placed in the public domain by the authors.
 | 
				
			||||||
 * Maintained 1998-2009 Glenn Randers-Pehrson
 | 
					 * Maintained 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * Maintained 1996, 1997 Andreas Dilger)
 | 
					 * Maintained 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -91,14 +91,15 @@ void read_png(char *file_name)  /* We need to open the file */
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   if ((fp = fopen(file_name, "rb")) == NULL)
 | 
					   if ((fp = fopen(file_name, "rb")) == NULL)
 | 
				
			||||||
      return (ERROR);
 | 
					      return (ERROR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else no_open_file /* prototype 2 */
 | 
					#else no_open_file /* prototype 2 */
 | 
				
			||||||
void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
					void read_png(FILE *fp, unsigned int sig_read)  /* File is already open */
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_structp png_ptr;
 | 
					   png_structp png_ptr;
 | 
				
			||||||
   png_infop info_ptr;
 | 
					   png_infop info_ptr;
 | 
				
			||||||
   png_uint_32 width, height;
 | 
					   png_uint_32 width, height;
 | 
				
			||||||
   int bit_depth, color_type, interlace_type;
 | 
					   int bit_depth, color_type, interlace_type;
 | 
				
			||||||
#endif no_open_file /* only use one prototype! */
 | 
					#endif no_open_file /* Only use one prototype! */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Create and initialize the png_struct with the desired error handler
 | 
					   /* Create and initialize the png_struct with the desired error handler
 | 
				
			||||||
    * functions.  If you want to use the default stderr and longjump method,
 | 
					    * functions.  If you want to use the default stderr and longjump method,
 | 
				
			||||||
@ -164,6 +165,7 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
    * pixels) into the info structure with this call:
 | 
					    * pixels) into the info structure with this call:
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   png_read_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
 | 
					   png_read_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   /* OK, you're doing it the hard way, with the lower-level functions */
 | 
					   /* OK, you're doing it the hard way, with the lower-level functions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -175,13 +177,13 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
   png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
 | 
					   png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
 | 
				
			||||||
       &interlace_type, int_p_NULL, int_p_NULL);
 | 
					       &interlace_type, int_p_NULL, int_p_NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Set up the data transformations you want.  Note that these are all
 | 
					   /* Set up the data transformations you want.  Note that these are all
 | 
				
			||||||
 * optional.  Only call them if you want/need them.  Many of the
 | 
					    * optional.  Only call them if you want/need them.  Many of the
 | 
				
			||||||
 * transformations only work on specific types of images, and many
 | 
					    * transformations only work on specific types of images, and many
 | 
				
			||||||
 * are mutually exclusive.
 | 
					    * are mutually exclusive.
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* tell libpng to strip 16 bit/color files down to 8 bits/color */
 | 
					   /* Tell libpng to strip 16 bit/color files down to 8 bits/color */
 | 
				
			||||||
   png_set_strip_16(png_ptr);
 | 
					   png_set_strip_16(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Strip alpha bytes from the input data without combining with the
 | 
					   /* Strip alpha bytes from the input data without combining with the
 | 
				
			||||||
@ -228,10 +230,11 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
      png_set_background(png_ptr, &my_background,
 | 
					      png_set_background(png_ptr, &my_background,
 | 
				
			||||||
                         PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
 | 
					                         PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Some suggestions as to how to get a screen gamma value */
 | 
					   /* Some suggestions as to how to get a screen gamma value
 | 
				
			||||||
 | 
					    *
 | 
				
			||||||
   /* Note that screen gamma is the display_exponent, which includes
 | 
					    * Note that screen gamma is the display_exponent, which includes
 | 
				
			||||||
    * the CRT_exponent and any correction for viewing conditions */
 | 
					    * the CRT_exponent and any correction for viewing conditions
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   if (/* We have a user-defined screen gamma value */)
 | 
					   if (/* We have a user-defined screen gamma value */)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      screen_gamma = user-defined screen_gamma;
 | 
					      screen_gamma = user-defined screen_gamma;
 | 
				
			||||||
@ -244,7 +247,7 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
   /* If we don't have another value */
 | 
					   /* If we don't have another value */
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      screen_gamma = 2.2;  /* A good guess for a PC monitors in a dimly
 | 
					      screen_gamma = 2.2;  /* A good guess for a PC monitor in a dimly
 | 
				
			||||||
                              lit room */
 | 
					                              lit room */
 | 
				
			||||||
      screen_gamma = 1.7 or 1.0;  /* A good guess for Mac systems */
 | 
					      screen_gamma = 1.7 or 1.0;  /* A good guess for Mac systems */
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
@ -277,7 +280,7 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
      png_colorp palette;
 | 
					      png_colorp palette;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* This reduces the image to the application supplied palette */
 | 
					      /* This reduces the image to the application supplied palette */
 | 
				
			||||||
      if (/* we have our own palette */)
 | 
					      if (/* We have our own palette */)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* An array of colors to which the image should be dithered */
 | 
					         /* An array of colors to which the image should be dithered */
 | 
				
			||||||
         png_color std_color_cube[MAX_SCREEN_COLORS];
 | 
					         png_color std_color_cube[MAX_SCREEN_COLORS];
 | 
				
			||||||
@ -297,7 +300,7 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* invert monochrome files to have 0 as white and 1 as black */
 | 
					   /* Invert monochrome files to have 0 as white and 1 as black */
 | 
				
			||||||
   png_set_invert_mono(png_ptr);
 | 
					   png_set_invert_mono(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* If you want to shift the pixel values from the range [0,255] or
 | 
					   /* If you want to shift the pixel values from the range [0,255] or
 | 
				
			||||||
@ -306,20 +309,20 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
 | 
					   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_color_8p sig_bit;
 | 
					      png_color_8p sig_bit_p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_get_sBIT(png_ptr, info_ptr, &sig_bit);
 | 
					      png_get_sBIT(png_ptr, info_ptr, &sig_bit_p);
 | 
				
			||||||
      png_set_shift(png_ptr, sig_bit);
 | 
					      png_set_shift(png_ptr, sig_bit_p);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* flip the RGB pixels to BGR (or RGBA to BGRA) */
 | 
					   /* Flip the RGB pixels to BGR (or RGBA to BGRA) */
 | 
				
			||||||
   if (color_type & PNG_COLOR_MASK_COLOR)
 | 
					   if (color_type & PNG_COLOR_MASK_COLOR)
 | 
				
			||||||
      png_set_bgr(png_ptr);
 | 
					      png_set_bgr(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */
 | 
					   /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */
 | 
				
			||||||
   png_set_swap_alpha(png_ptr);
 | 
					   png_set_swap_alpha(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap bytes of 16 bit files to least significant byte first */
 | 
					   /* Swap bytes of 16 bit files to least significant byte first */
 | 
				
			||||||
   png_set_swap(png_ptr);
 | 
					   png_set_swap(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Add filler (or alpha) byte (before/after each RGB triplet) */
 | 
					   /* Add filler (or alpha) byte (before/after each RGB triplet) */
 | 
				
			||||||
@ -374,32 +377,31 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 | 
				
			|||||||
#else no_sparkle /* Read the image using the "rectangle" effect */
 | 
					#else no_sparkle /* Read the image using the "rectangle" effect */
 | 
				
			||||||
         png_read_rows(png_ptr, png_bytepp_NULL, &row_pointers[y],
 | 
					         png_read_rows(png_ptr, png_bytepp_NULL, &row_pointers[y],
 | 
				
			||||||
            number_of_rows);
 | 
					            number_of_rows);
 | 
				
			||||||
#endif no_sparkle /* use only one of these two methods */
 | 
					#endif no_sparkle /* Use only one of these two methods */
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* if you want to display the image after every pass, do
 | 
					      /* If you want to display the image after every pass, do so here */
 | 
				
			||||||
         so here */
 | 
					#endif no_single /* Use only one of these two methods */
 | 
				
			||||||
#endif no_single /* use only one of these two methods */
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif no_entire /* use only one of these two methods */
 | 
					#endif no_entire /* Use only one of these two methods */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
 | 
					   /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */
 | 
				
			||||||
   png_read_end(png_ptr, info_ptr);
 | 
					   png_read_end(png_ptr, info_ptr);
 | 
				
			||||||
#endif hilevel
 | 
					#endif hilevel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* At this point you have read the entire image */
 | 
					   /* At this point you have read the entire image */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* clean up after the read, and free any memory allocated - REQUIRED */
 | 
					   /* Clean up after the read, and free any memory allocated - REQUIRED */
 | 
				
			||||||
   png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
 | 
					   png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* close the file */
 | 
					   /* Close the file */
 | 
				
			||||||
   fclose(fp);
 | 
					   fclose(fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* that's it */
 | 
					   /* That's it */
 | 
				
			||||||
   return (OK);
 | 
					   return (OK);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* progressively read a file */
 | 
					/* Progressively read a file */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
 | 
					initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
 | 
				
			||||||
@ -464,7 +466,7 @@ process_data(png_structp *png_ptr, png_infop *info_ptr,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   /* This one's new also.  Simply give it chunks of data as
 | 
					   /* This one's new also.  Simply give it chunks of data as
 | 
				
			||||||
    * they arrive from the data stream (in order, of course).
 | 
					    * they arrive from the data stream (in order, of course).
 | 
				
			||||||
    * On Segmented machines, don't give it any more than 64K.
 | 
					    * On segmented machines, don't give it any more than 64K.
 | 
				
			||||||
    * The library seems to run fine with sizes of 4K, although
 | 
					    * The library seems to run fine with sizes of 4K, although
 | 
				
			||||||
    * you can give it much less if necessary (I assume you can
 | 
					    * you can give it much less if necessary (I assume you can
 | 
				
			||||||
    * give it chunks of 1 byte, but I haven't tried with less
 | 
					    * give it chunks of 1 byte, but I haven't tried with less
 | 
				
			||||||
@ -478,34 +480,35 @@ process_data(png_structp *png_ptr, png_infop *info_ptr,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
info_callback(png_structp png_ptr, png_infop info)
 | 
					info_callback(png_structp png_ptr, png_infop info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
/* do any setup here, including setting any of the transformations
 | 
					   /* Do any setup here, including setting any of the transformations
 | 
				
			||||||
 * mentioned in the Reading PNG files section.  For now, you _must_
 | 
					    * mentioned in the Reading PNG files section.  For now, you _must_
 | 
				
			||||||
 * call either png_start_read_image() or png_read_update_info()
 | 
					    * call either png_start_read_image() or png_read_update_info()
 | 
				
			||||||
 * after all the transformations are set (even if you don't set
 | 
					    * after all the transformations are set (even if you don't set
 | 
				
			||||||
 * any).  You may start getting rows before png_process_data()
 | 
					    * any).  You may start getting rows before png_process_data()
 | 
				
			||||||
 * returns, so this is your last chance to prepare for that.
 | 
					    * returns, so this is your last chance to prepare for that.
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
row_callback(png_structp png_ptr, png_bytep new_row,
 | 
					row_callback(png_structp png_ptr, png_bytep new_row,
 | 
				
			||||||
   png_uint_32 row_num, int pass)
 | 
					   png_uint_32 row_num, int pass)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
/*
 | 
					   /*
 | 
				
			||||||
 * This function is called for every row in the image.  If the
 | 
					    * This function is called for every row in the image.  If the
 | 
				
			||||||
 * image is interlaced, and you turned on the interlace handler,
 | 
					    * image is interlaced, and you turned on the interlace handler,
 | 
				
			||||||
 * this function will be called for every row in every pass.
 | 
					    * this function will be called for every row in every pass.
 | 
				
			||||||
 *
 | 
					    *
 | 
				
			||||||
 * In this function you will receive a pointer to new row data from
 | 
					    * In this function you will receive a pointer to new row data from
 | 
				
			||||||
 * libpng called new_row that is to replace a corresponding row (of
 | 
					    * libpng called new_row that is to replace a corresponding row (of
 | 
				
			||||||
 * the same data format) in a buffer allocated by your application.
 | 
					    * the same data format) in a buffer allocated by your application.
 | 
				
			||||||
 *
 | 
					    *
 | 
				
			||||||
 * The new row data pointer new_row may be NULL, indicating there is
 | 
					    * The new row data pointer "new_row" may be NULL, indicating there is
 | 
				
			||||||
 * no new data to be replaced (in cases of interlace loading).
 | 
					    * no new data to be replaced (in cases of interlace loading).
 | 
				
			||||||
 *
 | 
					    *
 | 
				
			||||||
 * If new_row is not NULL then you need to call
 | 
					    * If new_row is not NULL then you need to call
 | 
				
			||||||
 * png_progressive_combine_row() to replace the corresponding row as
 | 
					    * png_progressive_combine_row() to replace the corresponding row as
 | 
				
			||||||
 * shown below:
 | 
					    * shown below:
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Check if row_num is in bounds. */
 | 
					   /* Check if row_num is in bounds. */
 | 
				
			||||||
   if ((row_num >= 0) && (row_num < height))
 | 
					   if ((row_num >= 0) && (row_num < height))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -520,44 +523,44 @@ row_callback(png_structp png_ptr, png_bytep new_row,
 | 
				
			|||||||
     if ((old_row != NULL) && (new_row != NULL))
 | 
					     if ((old_row != NULL) && (new_row != NULL))
 | 
				
			||||||
     png_progressive_combine_row(png_ptr, old_row, new_row);
 | 
					     png_progressive_combine_row(png_ptr, old_row, new_row);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
/*
 | 
					   /*
 | 
				
			||||||
 * The rows and passes are called in order, so you don't really
 | 
					    * The rows and passes are called in order, so you don't really
 | 
				
			||||||
 * need the row_num and pass, but I'm supplying them because it
 | 
					    * need the row_num and pass, but I'm supplying them because it
 | 
				
			||||||
 * may make your life easier.
 | 
					    * may make your life easier.
 | 
				
			||||||
 *
 | 
					    *
 | 
				
			||||||
 * For the non-NULL rows of interlaced images, you must call
 | 
					    * For the non-NULL rows of interlaced images, you must call
 | 
				
			||||||
 * png_progressive_combine_row() passing in the new row and the
 | 
					    * png_progressive_combine_row() passing in the new row and the
 | 
				
			||||||
 * old row, as demonstrated above.  You can call this function for
 | 
					    * old row, as demonstrated above.  You can call this function for
 | 
				
			||||||
 * NULL rows (it will just return) and for non-interlaced images
 | 
					    * NULL rows (it will just return) and for non-interlaced images
 | 
				
			||||||
 * (it just does the png_memcpy for you) if it will make the code
 | 
					    * (it just does the png_memcpy for you) if it will make the code
 | 
				
			||||||
 * easier.  Thus, you can just do this for all cases:
 | 
					    * easier.  Thus, you can just do this for all cases:
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_progressive_combine_row(png_ptr, old_row, new_row);
 | 
					   png_progressive_combine_row(png_ptr, old_row, new_row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* where old_row is what was displayed for previous rows.  Note
 | 
					   /* where old_row is what was displayed for previous rows.  Note
 | 
				
			||||||
 * that the first pass (pass == 0 really) will completely cover
 | 
					    * that the first pass (pass == 0 really) will completely cover
 | 
				
			||||||
 * the old row, so the rows do not have to be initialized.  After
 | 
					    * the old row, so the rows do not have to be initialized.  After
 | 
				
			||||||
 * the first pass (and only for interlaced images), you will have
 | 
					    * the first pass (and only for interlaced images), you will have
 | 
				
			||||||
 * to pass the current row as new_row, and the function will combine
 | 
					    * to pass the current row as new_row, and the function will combine
 | 
				
			||||||
 * the old row and the new row.
 | 
					    * the old row and the new row.
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
end_callback(png_structp png_ptr, png_infop info)
 | 
					end_callback(png_structp png_ptr, png_infop info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
/* this function is called when the whole image has been read,
 | 
					   /* This function is called when the whole image has been read,
 | 
				
			||||||
 * including any chunks after the image (up to and including
 | 
					    * including any chunks after the image (up to and including
 | 
				
			||||||
 * the IEND).  You will usually have the same info chunk as you
 | 
					    * the IEND).  You will usually have the same info chunk as you
 | 
				
			||||||
 * had in the header, although some data may have been added
 | 
					    * had in the header, although some data may have been added
 | 
				
			||||||
 * to the comments and time fields.
 | 
					    * to the comments and time fields.
 | 
				
			||||||
 *
 | 
					    *
 | 
				
			||||||
 * Most people won't do much here, perhaps setting a flag that
 | 
					    * Most people won't do much here, perhaps setting a flag that
 | 
				
			||||||
 * marks the image as finished.
 | 
					    * marks the image as finished.
 | 
				
			||||||
 */
 | 
					    */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* write a png file */
 | 
					/* Write a png file */
 | 
				
			||||||
void write_png(char *file_name /* , ... other image information ... */)
 | 
					void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   FILE *fp;
 | 
					   FILE *fp;
 | 
				
			||||||
@ -565,7 +568,7 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
   png_infop info_ptr;
 | 
					   png_infop info_ptr;
 | 
				
			||||||
   png_colorp palette;
 | 
					   png_colorp palette;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* open the file */
 | 
					   /* Open the file */
 | 
				
			||||||
   fp = fopen(file_name, "wb");
 | 
					   fp = fopen(file_name, "wb");
 | 
				
			||||||
   if (fp == NULL)
 | 
					   if (fp == NULL)
 | 
				
			||||||
      return (ERROR);
 | 
					      return (ERROR);
 | 
				
			||||||
@ -606,23 +609,27 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* One of the following I/O initialization functions is REQUIRED */
 | 
					   /* One of the following I/O initialization functions is REQUIRED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef streams /* I/O initialization method 1 */
 | 
					#ifdef streams /* I/O initialization method 1 */
 | 
				
			||||||
   /* set up the output control if you are using standard C streams */
 | 
					   /* Set up the output control if you are using standard C streams */
 | 
				
			||||||
   png_init_io(png_ptr, fp);
 | 
					   png_init_io(png_ptr, fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else no_streams /* I/O initialization method 2 */
 | 
					#else no_streams /* I/O initialization method 2 */
 | 
				
			||||||
   /* If you are using replacement write functions, instead of calling
 | 
					   /* If you are using replacement write functions, instead of calling
 | 
				
			||||||
    * png_init_io() here you would call */
 | 
					    * png_init_io() here you would call
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   png_set_write_fn(png_ptr, (void *)user_io_ptr, user_write_fn,
 | 
					   png_set_write_fn(png_ptr, (void *)user_io_ptr, user_write_fn,
 | 
				
			||||||
      user_IO_flush_function);
 | 
					      user_IO_flush_function);
 | 
				
			||||||
   /* where user_io_ptr is a structure you want available to the callbacks */
 | 
					   /* where user_io_ptr is a structure you want available to the callbacks */
 | 
				
			||||||
#endif no_streams /* only use one initialization method */
 | 
					#endif no_streams /* Only use one initialization method */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef hilevel
 | 
					#ifdef hilevel
 | 
				
			||||||
   /* This is the easy way.  Use it if you already have all the
 | 
					   /* This is the easy way.  Use it if you already have all the
 | 
				
			||||||
    * image info living info in the structure.  You could "|" many
 | 
					    * image info living in the structure.  You could "|" many
 | 
				
			||||||
    * PNG_TRANSFORM flags into the png_transforms integer here.
 | 
					    * PNG_TRANSFORM flags into the png_transforms integer here.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   png_write_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
 | 
					   png_write_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   /* This is the hard way */
 | 
					   /* This is the hard way */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -637,25 +644,27 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
   png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???,
 | 
					   png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???,
 | 
				
			||||||
      PNG_INTERLACE_????, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
 | 
					      PNG_INTERLACE_????, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set the palette if there is one.  REQUIRED for indexed-color images */
 | 
					   /* Set the palette if there is one.  REQUIRED for indexed-color images */
 | 
				
			||||||
   palette = (png_colorp)png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH
 | 
					   palette = (png_colorp)png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH
 | 
				
			||||||
             * png_sizeof(png_color));
 | 
					             * png_sizeof(png_color));
 | 
				
			||||||
   /* ... set palette colors ... */
 | 
					   /* ... Set palette colors ... */
 | 
				
			||||||
   png_set_PLTE(png_ptr, info_ptr, palette, PNG_MAX_PALETTE_LENGTH);
 | 
					   png_set_PLTE(png_ptr, info_ptr, palette, PNG_MAX_PALETTE_LENGTH);
 | 
				
			||||||
   /* You must not free palette here, because png_set_PLTE only makes a link to
 | 
					   /* You must not free palette here, because png_set_PLTE only makes a link to
 | 
				
			||||||
      the palette that you malloced.  Wait until you are about to destroy
 | 
					    * the palette that you malloced.  Wait until you are about to destroy
 | 
				
			||||||
      the png structure. */
 | 
					    * the png structure.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* optional significant bit chunk */
 | 
					   /* Optional significant bit (sBIT) chunk */
 | 
				
			||||||
   /* if we are dealing with a grayscale image then */
 | 
					   png_color_8 sig_bit;
 | 
				
			||||||
 | 
					   /* If we are dealing with a grayscale image then */
 | 
				
			||||||
   sig_bit.gray = true_bit_depth;
 | 
					   sig_bit.gray = true_bit_depth;
 | 
				
			||||||
   /* otherwise, if we are dealing with a color image then */
 | 
					   /* Otherwise, if we are dealing with a color image then */
 | 
				
			||||||
   sig_bit.red = true_red_bit_depth;
 | 
					   sig_bit.red = true_red_bit_depth;
 | 
				
			||||||
   sig_bit.green = true_green_bit_depth;
 | 
					   sig_bit.green = true_green_bit_depth;
 | 
				
			||||||
   sig_bit.blue = true_blue_bit_depth;
 | 
					   sig_bit.blue = true_blue_bit_depth;
 | 
				
			||||||
   /* if the image has an alpha channel then */
 | 
					   /* If the image has an alpha channel then */
 | 
				
			||||||
   sig_bit.alpha = true_alpha_bit_depth;
 | 
					   sig_bit.alpha = true_alpha_bit_depth;
 | 
				
			||||||
   png_set_sBIT(png_ptr, info_ptr, sig_bit);
 | 
					   png_set_sBIT(png_ptr, info_ptr, &sig_bit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Optional gamma chunk is strongly suggested if you have any guess
 | 
					   /* Optional gamma chunk is strongly suggested if you have any guess
 | 
				
			||||||
@ -680,9 +689,12 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
   png_set_text(png_ptr, info_ptr, text_ptr, 3);
 | 
					   png_set_text(png_ptr, info_ptr, text_ptr, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* other optional chunks like cHRM, bKGD, tRNS, tIME, oFFs, pHYs, */
 | 
					   /* Other optional chunks like cHRM, bKGD, tRNS, tIME, oFFs, pHYs */
 | 
				
			||||||
   /* note that if sRGB is present the gAMA and cHRM chunks must be ignored
 | 
					
 | 
				
			||||||
    * on read and must be written in accordance with the sRGB profile */
 | 
					   /* Note that if sRGB is present the gAMA and cHRM chunks must be ignored
 | 
				
			||||||
 | 
					    * on read and, if your application chooses to write them, they must
 | 
				
			||||||
 | 
					    * be written in accordance with the sRGB profile
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Write the file header information.  REQUIRED */
 | 
					   /* Write the file header information.  REQUIRED */
 | 
				
			||||||
   png_write_info(png_ptr, info_ptr);
 | 
					   png_write_info(png_ptr, info_ptr);
 | 
				
			||||||
@ -704,11 +716,11 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
    * at the end.
 | 
					    * at the end.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set up the transformations you want.  Note that these are
 | 
					   /* Set up the transformations you want.  Note that these are
 | 
				
			||||||
    * all optional.  Only call them if you want them.
 | 
					    * all optional.  Only call them if you want them.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* invert monochrome pixels */
 | 
					   /* Invert monochrome pixels */
 | 
				
			||||||
   png_set_invert_mono(png_ptr);
 | 
					   png_set_invert_mono(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Shift the pixels up to a legal bit depth and fill in
 | 
					   /* Shift the pixels up to a legal bit depth and fill in
 | 
				
			||||||
@ -716,10 +728,10 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
   png_set_shift(png_ptr, &sig_bit);
 | 
					   png_set_shift(png_ptr, &sig_bit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* pack pixels into bytes */
 | 
					   /* Pack pixels into bytes */
 | 
				
			||||||
   png_set_packing(png_ptr);
 | 
					   png_set_packing(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap location of alpha bytes from ARGB to RGBA */
 | 
					   /* Swap location of alpha bytes from ARGB to RGBA */
 | 
				
			||||||
   png_set_swap_alpha(png_ptr);
 | 
					   png_set_swap_alpha(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Get rid of filler (OR ALPHA) bytes, pack XRGB/RGBX/ARGB/RGBA into
 | 
					   /* Get rid of filler (OR ALPHA) bytes, pack XRGB/RGBX/ARGB/RGBA into
 | 
				
			||||||
@ -727,16 +739,16 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
   png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
 | 
					   png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* flip BGR pixels to RGB */
 | 
					   /* Flip BGR pixels to RGB */
 | 
				
			||||||
   png_set_bgr(png_ptr);
 | 
					   png_set_bgr(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap bytes of 16-bit files to most significant byte first */
 | 
					   /* Swap bytes of 16-bit files to most significant byte first */
 | 
				
			||||||
   png_set_swap(png_ptr);
 | 
					   png_set_swap(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap bits of 1, 2, 4 bit packed pixel formats */
 | 
					   /* Swap bits of 1, 2, 4 bit packed pixel formats */
 | 
				
			||||||
   png_set_packswap(png_ptr);
 | 
					   png_set_packswap(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* turn on interlace handling if you are not using png_write_image() */
 | 
					   /* Turn on interlace handling if you are not using png_write_image() */
 | 
				
			||||||
   if (interlacing)
 | 
					   if (interlacing)
 | 
				
			||||||
      number_passes = png_set_interlace_handling(png_ptr);
 | 
					      number_passes = png_set_interlace_handling(png_ptr);
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
@ -757,12 +769,14 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
     row_pointers[k] = image + k*width*bytes_per_pixel;
 | 
					     row_pointers[k] = image + k*width*bytes_per_pixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* One of the following output methods is REQUIRED */
 | 
					   /* One of the following output methods is REQUIRED */
 | 
				
			||||||
#ifdef entire /* write out the entire image data in one call */
 | 
					
 | 
				
			||||||
 | 
					#ifdef entire /* Write out the entire image data in one call */
 | 
				
			||||||
   png_write_image(png_ptr, row_pointers);
 | 
					   png_write_image(png_ptr, row_pointers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* the other way to write the image - deal with interlacing */
 | 
					   /* The other way to write the image - deal with interlacing */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else no_entire /* Write out the image data by one or more scanlines */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else no_entire /* write out the image data by one or more scanlines */
 | 
					 | 
				
			||||||
   /* The number of passes is either 1 for non-interlaced images,
 | 
					   /* The number of passes is either 1 for non-interlaced images,
 | 
				
			||||||
    * or 7 for interlaced images.
 | 
					    * or 7 for interlaced images.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
@ -775,10 +789,10 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
      for (y = 0; y < height; y++)
 | 
					      for (y = 0; y < height; y++)
 | 
				
			||||||
         png_write_rows(png_ptr, &row_pointers[y], 1);
 | 
					         png_write_rows(png_ptr, &row_pointers[y], 1);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif no_entire /* use only one output method */
 | 
					#endif no_entire /* Use only one output method */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* You can write optional chunks like tEXt, zTXt, and tIME at the end
 | 
					   /* You can write optional chunks like tEXt, zTXt, and tIME at the end
 | 
				
			||||||
    * as well.  Shouldn't be necessary in 1.1.0 and up as all the public
 | 
					    * as well.  Shouldn't be necessary in 1.2.0 and up as all the public
 | 
				
			||||||
    * chunks are supported and you can use png_set_unknown_chunks() to
 | 
					    * chunks are supported and you can use png_set_unknown_chunks() to
 | 
				
			||||||
    * register unknown chunks into the info structure to be written out.
 | 
					    * register unknown chunks into the info structure to be written out.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
@ -788,26 +802,33 @@ void write_png(char *file_name /* , ... other image information ... */)
 | 
				
			|||||||
#endif hilevel
 | 
					#endif hilevel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* If you png_malloced a palette, free it here (don't free info_ptr->palette,
 | 
					   /* If you png_malloced a palette, free it here (don't free info_ptr->palette,
 | 
				
			||||||
      as recommended in versions 1.0.5m and earlier of this example; if
 | 
					    * as recommended in versions 1.0.5m and earlier of this example; if
 | 
				
			||||||
      libpng mallocs info_ptr->palette, libpng will free it).  If you
 | 
					    * libpng mallocs info_ptr->palette, libpng will free it).  If you
 | 
				
			||||||
      allocated it with malloc() instead of png_malloc(), use free() instead
 | 
					    * allocated it with malloc() instead of png_malloc(), use free() instead
 | 
				
			||||||
      of png_free(). */
 | 
					    * of png_free().
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   png_free(png_ptr, palette);
 | 
					   png_free(png_ptr, palette);
 | 
				
			||||||
   palette = NULL;
 | 
					   palette = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Similarly, if you png_malloced any data that you passed in with
 | 
					   /* Similarly, if you png_malloced any data that you passed in with
 | 
				
			||||||
      png_set_something(), such as a hist or trans array, free it here,
 | 
					    * png_set_something(), such as a hist or trans array, free it here,
 | 
				
			||||||
      when you can be sure that libpng is through with it. */
 | 
					    * when you can be sure that libpng is through with it.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   png_free(png_ptr, trans);
 | 
					   png_free(png_ptr, trans);
 | 
				
			||||||
   trans = NULL;
 | 
					   trans = NULL;
 | 
				
			||||||
 | 
					   /* Whenever you use png_free() it is a good idea to set the pointer to
 | 
				
			||||||
 | 
					    * NULL in case your application inadvertently tries to png_free() it
 | 
				
			||||||
 | 
					    * again.  When png_free() sees a NULL it returns without action, thus
 | 
				
			||||||
 | 
					    * avoiding the double-free security problem.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* clean up after the write, and free any memory allocated */
 | 
					   /* Clean up after the write, and free any memory allocated */
 | 
				
			||||||
   png_destroy_write_struct(&png_ptr, &info_ptr);
 | 
					   png_destroy_write_struct(&png_ptr, &info_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* close the file */
 | 
					   /* Close the file */
 | 
				
			||||||
   fclose(fp);
 | 
					   fclose(fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* that's it */
 | 
					   /* That's it */
 | 
				
			||||||
   return (OK);
 | 
					   return (OK);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
libpng.txt - A description on how to use and modify libpng
 | 
					libpng.txt - A description on how to use and modify libpng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 libpng version 1.0.44 - May 7, 2009
 | 
					 libpng version 1.0.45 - June 4, 2009
 | 
				
			||||||
 Updated and distributed by Glenn Randers-Pehrson
 | 
					 Updated and distributed by Glenn Randers-Pehrson
 | 
				
			||||||
 <glennrp at users.sourceforge.net>
 | 
					 <glennrp at users.sourceforge.net>
 | 
				
			||||||
 Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
@ -9,7 +9,7 @@ libpng.txt - A description on how to use and modify libpng
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 Based on:
 | 
					 Based on:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 libpng versions 0.97, January 1998, through 1.0.44 - May 7, 2009
 | 
					 libpng versions 0.97, January 1998, through 1.0.45 - June 4, 2009
 | 
				
			||||||
 Updated and distributed by Glenn Randers-Pehrson
 | 
					 Updated and distributed by Glenn Randers-Pehrson
 | 
				
			||||||
 Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1667,7 +1667,7 @@ types.
 | 
				
			|||||||
       PNG_FILTER_NONE  | PNG_FILTER_VALUE_NONE |
 | 
					       PNG_FILTER_NONE  | PNG_FILTER_VALUE_NONE |
 | 
				
			||||||
       PNG_FILTER_SUB   | PNG_FILTER_VALUE_SUB  |
 | 
					       PNG_FILTER_SUB   | PNG_FILTER_VALUE_SUB  |
 | 
				
			||||||
       PNG_FILTER_UP    | PNG_FILTER_VALUE_UP   |
 | 
					       PNG_FILTER_UP    | PNG_FILTER_VALUE_UP   |
 | 
				
			||||||
       PNG_FILTER_AVE   | PNG_FILTER_VALUE_AVE  |
 | 
					       PNG_FILTER_AVG   | PNG_FILTER_VALUE_AVG  |
 | 
				
			||||||
       PNG_FILTER_PAETH | PNG_FILTER_VALUE_PAETH|
 | 
					       PNG_FILTER_PAETH | PNG_FILTER_VALUE_PAETH|
 | 
				
			||||||
       PNG_ALL_FILTERS);
 | 
					       PNG_ALL_FILTERS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2631,7 +2631,7 @@ currently does not allocate the filter buffers until png_write_row()
 | 
				
			|||||||
is called for the first time.)
 | 
					is called for the first time.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    filters = PNG_FILTER_NONE | PNG_FILTER_SUB
 | 
					    filters = PNG_FILTER_NONE | PNG_FILTER_SUB
 | 
				
			||||||
              PNG_FILTER_UP | PNG_FILTER_AVE |
 | 
					              PNG_FILTER_UP | PNG_FILTER_AVG |
 | 
				
			||||||
              PNG_FILTER_PAETH | PNG_ALL_FILTERS;
 | 
					              PNG_FILTER_PAETH | PNG_ALL_FILTERS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE,
 | 
					    png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE,
 | 
				
			||||||
@ -2829,15 +2829,128 @@ application:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
VIII.  (Omitted).
 | 
					VIII.  (Omitted).
 | 
				
			||||||
IX.  (Omitted)
 | 
					IX.  (Omitted)
 | 
				
			||||||
X. Y2K Compliance in libpng
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
May 7, 2009
 | 
					X. Detecting libpng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The png_get_io_ptr() function has been present since libpng-0.88, has never
 | 
				
			||||||
 | 
					changed, and is unaffected by conditional compilation macros.  It is the
 | 
				
			||||||
 | 
					best choice for use in configure scripts for detecting the presence of any
 | 
				
			||||||
 | 
					libpng version since 0.88.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					XI. Source code repository
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since about February 2009, version 1.2.34, libpng has been under "git" source
 | 
				
			||||||
 | 
					control.  The git repository was built from old libpng-x.y.z.tar.gz files
 | 
				
			||||||
 | 
					going back to version 0.70.  You can access the git repository (read only)
 | 
				
			||||||
 | 
					at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git://libpng.git.sourceforge.net/gitroot/libpng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					or you can browse it via "gitweb" at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://libpng.git.sourceforge.net/git/gitweb.cgi?p=libpng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Patches can be sent to glennrp at users.sourceforge.net or to
 | 
				
			||||||
 | 
					png-mng-implement at lists.sourceforge.net or you can upload them to
 | 
				
			||||||
 | 
					the libpng bug tracker at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://libpng.sourceforge.net
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					XII. Coding style
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Our coding style is similar to the "Allman" style, with curly
 | 
				
			||||||
 | 
					braces on separate lines:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (condition)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					       action;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    else if (another condition)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					       another action;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The braces can be omitted from simple one-line actions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (condition)
 | 
				
			||||||
 | 
					       return (0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We use 3-space indentation, except for continued statements which
 | 
				
			||||||
 | 
					are usually indented the same as the first line of the statement
 | 
				
			||||||
 | 
					plus four more spaces.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Comments appear with the leading "/*" at the same indentation as
 | 
				
			||||||
 | 
					the statement that follows the comment:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Single-line comment */
 | 
				
			||||||
 | 
					    statement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Multiple-line
 | 
				
			||||||
 | 
					     * comment
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    statement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Very short comments can be placed at the end of the statement
 | 
				
			||||||
 | 
					to which they pertain:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    statement;    /* comment */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We don't use C++ style ("//") comments. We have, however,
 | 
				
			||||||
 | 
					used them in the past in some now-abandoned MMX assembler
 | 
				
			||||||
 | 
					code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Functions and their curly brackets are not indented, and
 | 
				
			||||||
 | 
					exported functions are marked with PNGAPI:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* This is a public function that is visible to
 | 
				
			||||||
 | 
					  * application programers. It does thus-and-so.
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					 void PNGAPI
 | 
				
			||||||
 | 
					 png_exported_function(png_ptr, png_info, foo)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					    body;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The prototypes for all exported functions appear in png.h.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We mark all non-exported functions with "/* PRIVATE */"":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void /* PRIVATE */
 | 
				
			||||||
 | 
					 png_non_exported_function(png_ptr, png_info, foo)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					    body;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The prototypes for non-exported functions can appear in
 | 
				
			||||||
 | 
					pngpriv.h or in the file where the function is located.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The names of all exported functions and variables begin
 | 
				
			||||||
 | 
					with  "png_", and all publicly visible C preprocessor
 | 
				
			||||||
 | 
					macros begin with "PNG_".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We put a space after each comma and after each semicolon
 | 
				
			||||||
 | 
					in "for" statments, and we put spaces before and after each
 | 
				
			||||||
 | 
					C binary operator and after "for" or "while".  We don't
 | 
				
			||||||
 | 
					put a space between a typecast and the expression being
 | 
				
			||||||
 | 
					cast, nor do we put one between a function name and the
 | 
				
			||||||
 | 
					left parenthesis that follows it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (i = 2; i > 0; --i)
 | 
				
			||||||
 | 
					       x[i] = a(x) + (int)b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other rules can be inferred by inspecting the libpng
 | 
				
			||||||
 | 
					source.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					XIII. Y2K Compliance in libpng
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					June 4, 2009
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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.0.44 are Y2K compliant.  It is my belief that earlier
 | 
					upward through 1.0.45 are Y2K compliant.  It is my belief that earlier
 | 
				
			||||||
versions were also Y2K compliant.
 | 
					versions were also Y2K compliant.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Libpng only has three year fields.  One is a 2-byte unsigned integer that
 | 
					Libpng only has three year fields.  One is a 2-byte unsigned integer that
 | 
				
			||||||
							
								
								
									
										518
									
								
								libpngpf.3
									
									
									
									
									
								
							
							
						
						
									
										518
									
								
								libpngpf.3
									
									
									
									
									
								
							@ -1,268 +1,782 @@
 | 
				
			|||||||
.TH LIBPNGPF 3 "May 7, 2009"
 | 
					.TH LIBPNGPF 3 "June 4, 2009"
 | 
				
			||||||
.SH NAME
 | 
					.SH NAME
 | 
				
			||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.44
 | 
					libpng \- Portable Network Graphics (PNG) Reference Library 1.0.45
 | 
				
			||||||
(private functions)
 | 
					(private functions)
 | 
				
			||||||
.SH SYNOPSIS
 | 
					.SH SYNOPSIS
 | 
				
			||||||
\fB#include <png.h>\fP
 | 
					\fB#include <png.h>\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_build_gamma_table (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_build_gamma_table (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_build_grayscale_palette (int \fP\fIbit_depth\fP\fB, png_colorp \fIpalette\fP\fB);\fP
 | 
					\fBvoid png_build_grayscale_palette (int \fP\fIbit_depth\fP\fB, png_colorp \fIpalette\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_calculate_crc (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIptr\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_calculate_crc (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIptr\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_check_chunk_name (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIchunk_name\fP\fB);\fP
 | 
					\fBvoid png_check_chunk_name (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIchunk_name\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBpng_size_t png_check_keyword (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charpp \fInew_key\fP\fB);\fP
 | 
					\fBpng_size_t png_check_keyword (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charpp \fInew_key\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_combine_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fImask\fP\fB);\fP
 | 
					\fBvoid png_combine_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fImask\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_correct_palette (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fInum_palette\fP\fB);\fP
 | 
					\fBvoid png_correct_palette (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fInum_palette\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBint png_crc_error (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBint png_crc_error (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBint png_crc_finish (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIskip\fP\fB);\fP
 | 
					\fBint png_crc_finish (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIskip\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_crc_read (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuf\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_crc_read (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuf\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBpng_voidp png_create_struct (int \fItype\fP\fB);\fP
 | 
					\fBpng_voidp png_create_struct (int \fItype\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBpng_voidp png_create_struct_2 (int \fP\fItype\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
 | 
					\fBpng_voidp png_create_struct_2 (int \fP\fItype\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_decompress_chunk (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcomp_type\fP\fB, png_charp \fP\fIchunkdata\fP\fB, png_size_t \fP\fIchunklength\fP\fB, png_size_t \fP\fIprefix_length\fP\fB, png_size_t \fI*data_length\fP\fB);\fP
 | 
					\fBvoid png_decompress_chunk (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcomp_type\fP\fB, png_charp \fP\fIchunkdata\fP\fB, png_size_t \fP\fIchunklength\fP\fB, png_size_t \fP\fIprefix_length\fP\fB, png_size_t \fI*data_length\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_destroy_struct (png_voidp \fIstruct_ptr\fP\fB);\fP
 | 
					\fBvoid png_destroy_struct (png_voidp \fIstruct_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_destroy_struct_2 (png_voidp \fP\fIstruct_ptr\fP\fB, png_free_ptr \fP\fIfree_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
 | 
					\fBvoid png_destroy_struct_2 (png_voidp \fP\fIstruct_ptr\fP\fB, png_free_ptr \fP\fIfree_fn\fP\fB, png_voidp \fImem_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_background (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fP\fItrans_values\fP\fB, png_color_16p \fP\fIbackground\fP\fB, png_color_16p \fP\fIbackground_1\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_bytep \fP\fIgamma_from_1\fP\fB, png_bytep \fP\fIgamma_to_1\fP\fB, png_uint_16pp \fP\fIgamma_16\fP\fB, png_uint_16pp \fP\fIgamma_16_from_1\fP\fB, png_uint_16pp \fP\fIgamma_16_to_1\fP\fB, int \fIgamma_shift\fP\fB);\fP
 | 
					\fBvoid png_do_background (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fP\fItrans_values\fP\fB, png_color_16p \fP\fIbackground\fP\fB, png_color_16p \fP\fIbackground_1\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_bytep \fP\fIgamma_from_1\fP\fB, png_bytep \fP\fIgamma_to_1\fP\fB, png_uint_16pp \fP\fIgamma_16\fP\fB, png_uint_16pp \fP\fIgamma_16_from_1\fP\fB, png_uint_16pp \fP\fIgamma_16_to_1\fP\fB, int \fIgamma_shift\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_bgr (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_bgr (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_chop (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_chop (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_dither (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIpalette_lookup\fP\fB, png_bytep \fIdither_lookup\fP\fB);\fP
 | 
					\fBvoid png_do_dither (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIpalette_lookup\fP\fB, png_bytep \fIdither_lookup\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_expand (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fItrans_value\fP\fB);\fP
 | 
					\fBvoid png_do_expand (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_16p \fItrans_value\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_expand_palette (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_bytep \fP\fItrans\fP\fB, int \fInum_trans\fP\fB);\fP
 | 
					\fBvoid png_do_expand_palette (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_bytep \fP\fItrans\fP\fB, int \fInum_trans\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_gamma (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_uint_16pp \fP\fIgamma_16_table\fP\fB, int \fIgamma_shift\fP\fB);\fP
 | 
					\fBvoid png_do_gamma (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIgamma_table\fP\fB, png_uint_16pp \fP\fIgamma_16_table\fP\fB, int \fIgamma_shift\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_gray_to_rgb (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_gray_to_rgb (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_invert (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_invert (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_pack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIbit_depth\fP\fB);\fP
 | 
					\fBvoid png_do_pack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIbit_depth\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_packswap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_packswap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_read_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
 | 
					\fBvoid png_do_read_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_read_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fP\fIpass\fP\fB, png_uint_32 \fItransformations\fP\fB);\fP
 | 
					\fBvoid png_do_read_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fP\fIpass\fP\fB, png_uint_32 \fItransformations\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_read_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_read_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_read_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_read_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_do_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBint png_do_rgb_to_gray (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBint png_do_rgb_to_gray (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_shift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIbit_depth\fP\fB);\fP
 | 
					\fBvoid png_do_shift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIbit_depth\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_strip_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
 | 
					\fBvoid png_do_strip_filler (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_uint_32 \fIflags\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_swap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_swap (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_unpack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_unpack (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_unshift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIsig_bits\fP\fB);\fP
 | 
					\fBvoid png_do_unshift (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_color_8p \fIsig_bits\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_write_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fIpass\fP\fB);\fP
 | 
					\fBvoid png_do_write_interlace (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, int \fIpass\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_write_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_write_invert_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_write_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_do_write_swap_alpha (png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_do_write_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_do_write_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid *png_far_to_near (png_structp png_ptr,png_voidp \fP\fIptr\fP\fB, int \fIcheck\fP\fB);\fP
 | 
					\fBvoid *png_far_to_near (png_structp png_ptr,png_voidp \fP\fIptr\fP\fB, int \fIcheck\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_flush (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_flush (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_IEND (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_IEND (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_iTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_iTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_info_destroy (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_info_destroy (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_init_mmx_flags (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_init_mmx_flags (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_init_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_init_read_transformations (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_process_IDAT_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
 | 
					\fBvoid png_process_IDAT_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_process_some_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_process_some_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_check_crc (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_check_crc (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_crc_finish (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_crc_finish (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_crc_skip (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_push_crc_skip (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_fill_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_push_fill_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_push_handle_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_push_handle_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
					\fBvoid png_push_handle_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_have_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_have_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_have_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_have_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_have_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
					\fBvoid png_push_have_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIrow\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_process_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_process_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_chunk (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_chunk (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_IDAT (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_IDAT (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_sig (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_sig (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_read_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_read_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_restore_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
 | 
					\fBvoid png_push_restore_buffer (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_push_save_buffer (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_push_save_buffer (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBpng_uint_32 png_read_chunk_header (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBpng_uint_32 png_read_chunk_header (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_read_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_filter_row (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIprev_row\fP\fB, int \fIfilter\fP\fB);\fP
 | 
					\fBvoid png_read_filter_row (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fP\fIrow_info\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fP\fIprev_row\fP\fB, int \fIfilter\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_read_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_push_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_read_push_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_start_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_read_start_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_read_transform_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
					\fBvoid png_read_transform_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_reset_crc (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_reset_crc (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBint png_set_text_2 (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fItext_ptr\fP\fB, int \fInum_text\fP\fB);\fP
 | 
					\fBint png_set_text_2 (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fItext_ptr\fP\fB, int \fInum_text\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_cHRM (png_structp \fP\fIpng_ptr\fP\fB, double \fP\fIwhite_x\fP\fB, double \fP\fIwhite_y\fP\fB, double \fP\fIred_x\fP\fB, double \fP\fIred_y\fP\fB, double \fP\fIgreen_x\fP\fB, double \fP\fIgreen_y\fP\fB, double \fP\fIblue_x\fP\fB, double \fIblue_y\fP\fB);\fP
 | 
					\fBvoid png_write_cHRM (png_structp \fP\fIpng_ptr\fP\fB, double \fP\fIwhite_x\fP\fB, double \fP\fIwhite_y\fP\fB, double \fP\fIred_x\fP\fB, double \fP\fIred_y\fP\fB, double \fP\fIgreen_x\fP\fB, double \fP\fIgreen_y\fP\fB, double \fP\fIblue_x\fP\fB, double \fIblue_y\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwhite_x\fP\fB, png_uint_32 \fP\fIwhite_y\fP\fB, png_uint_32 \fP\fIred_x\fP\fB, png_uint_32 \fP\fIred_y\fP\fB, png_uint_32 \fP\fIgreen_x\fP\fB, png_uint_32 \fP\fIgreen_y\fP\fB, png_uint_32 \fP\fIblue_x\fP\fB, png_uint_32 \fIblue_y\fP\fB);\fP
 | 
					\fBvoid png_write_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwhite_x\fP\fB, png_uint_32 \fP\fIwhite_y\fP\fB, png_uint_32 \fP\fIred_x\fP\fB, png_uint_32 \fP\fIred_y\fP\fB, png_uint_32 \fP\fIgreen_x\fP\fB, png_uint_32 \fP\fIgreen_y\fP\fB, png_uint_32 \fP\fIblue_x\fP\fB, png_uint_32 \fIblue_y\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_write_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_filtered_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIfiltered_row\fP\fB);\fP
 | 
					\fBvoid png_write_filtered_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIfiltered_row\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_find_filter (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fIrow_info\fP\fB);\fP
 | 
					\fBvoid png_write_find_filter (png_structp \fP\fIpng_ptr\fP\fB, png_row_infop \fIrow_info\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_write_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_gAMA (png_structp \fP\fIpng_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
 | 
					\fBvoid png_write_gAMA (png_structp \fP\fIpng_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIint_file_gamma\fP\fB);\fP
 | 
					\fBvoid png_write_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIint_file_gamma\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_uint_16p \fP\fIhist\fP\fB, int \fInum_hist\fP\fB);\fP
 | 
					\fBvoid png_write_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_uint_16p \fP\fIhist\fP\fB, int \fInum_hist\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIname\fP\fB, int \fP\fIcompression_type\fP\fB, png_charp \fP\fIprofile\fP\fB, int \fIproflen\fP\fB);\fP
 | 
					\fBvoid png_write_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIname\fP\fB, int \fP\fIcompression_type\fP\fB, png_charp \fP\fIprofile\fP\fB, int \fIproflen\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_IDAT (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
					\fBvoid png_write_IDAT (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_IEND (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_write_IEND (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwidth\fP\fB, png_uint_32 \fP\fIheight\fP\fB, int \fP\fIbit_depth\fP\fB, int \fP\fIcolor_type\fP\fB, int \fP\fIcompression_type\fP\fB, int \fP\fIfilter_type\fP\fB, int \fIinterlace_type\fP\fB);\fP
 | 
					\fBvoid png_write_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIwidth\fP\fB, png_uint_32 \fP\fIheight\fP\fB, int \fP\fIbit_depth\fP\fB, int \fP\fIcolor_type\fP\fB, int \fP\fIcompression_type\fP\fB, int \fP\fIfilter_type\fP\fB, int \fIinterlace_type\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_iTXt (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcompression\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fIlang\fP\fB, png_charp \fP\fItranslated_key\fP\fB, png_charp \fItext\fP\fB);\fP
 | 
					\fBvoid png_write_iTXt (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcompression\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fIlang\fP\fB, png_charp \fP\fItranslated_key\fP\fB, png_charp \fItext\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_offset\fP\fB, png_uint_32 \fP\fIy_offset\fP\fB, int \fIunit_type\fP\fB);\fP
 | 
					\fBvoid png_write_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_offset\fP\fB, png_uint_32 \fP\fIy_offset\fP\fB, int \fIunit_type\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIpurpose\fP\fB, png_int_32 \fP\fIX0\fP\fB, png_int_32 \fP\fIX1\fP\fB, int \fP\fItype\fP\fB, int \fP\fInparams\fP\fB, png_charp \fP\fIunits\fP\fB, png_charpp \fIparams\fP\fB);\fP
 | 
					\fBvoid png_write_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIpurpose\fP\fB, png_int_32 \fP\fIX0\fP\fB, png_int_32 \fP\fIX1\fP\fB, int \fP\fItype\fP\fB, int \fP\fInparams\fP\fB, png_charp \fP\fIunits\fP\fB, png_charpp \fIparams\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_pixels_per_unit\fP\fB, png_uint_32 \fP\fIy_pixels_per_unit\fP\fB, int \fIunit_type\fP\fB);\fP
 | 
					\fBvoid png_write_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIx_pixels_per_unit\fP\fB, png_uint_32 \fP\fIy_pixels_per_unit\fP\fB, int \fIunit_type\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_uint_32 \fInum_pal\fP\fB);\fP
 | 
					\fBvoid png_write_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, png_uint_32 \fInum_pal\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_color_8p \fP\fIsbit\fP\fB, int \fIcolor_type\fP\fB);\fP
 | 
					\fBvoid png_write_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_color_8p \fP\fIsbit\fP\fB, int \fIcolor_type\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
 | 
					\fBvoid png_write_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sCAL_s (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, png_charp \fP\fIwidth\fP\fB, png_charp \fIheight\fP\fB);\fP
 | 
					\fBvoid png_write_sCAL_s (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, png_charp \fP\fIwidth\fP\fB, png_charp \fIheight\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sig (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_write_sig (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sRGB (png_structp \fP\fIpng_ptr\fP\fB, int \fIintent\fP\fB);\fP
 | 
					\fBvoid png_write_sRGB (png_structp \fP\fIpng_ptr\fP\fB, int \fIintent\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_spalette_p \fIpalette\fP\fB);\fP
 | 
					\fBvoid png_write_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_spalette_p \fIpalette\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_start_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
					\fBvoid png_write_start_row (png_structp \fIpng_ptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fItext_len\fP\fB);\fP
 | 
					\fBvoid png_write_tEXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fItext_len\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_timep \fImod_time\fP\fB);\fP
 | 
					\fBvoid png_write_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_timep \fImod_time\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fItrans\fP\fB, png_color_16p \fP\fIvalues\fP\fB, int \fP\fInumber\fP\fB, int \fIcolor_type\fP\fB);\fP
 | 
					\fBvoid png_write_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fItrans\fP\fB, png_color_16p \fP\fIvalues\fP\fB, int \fP\fInumber\fP\fB, int \fIcolor_type\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_write_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fP\fItext_len\fP\fB, int \fIcompression\fP\fB);\fP
 | 
					\fBvoid png_write_zTXt (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fItext\fP\fB, png_size_t \fP\fItext_len\fP\fB, int \fIcompression\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoidpf png_zalloc (voidpf \fP\fIpng_ptr\fP\fB, uInt \fP\fIitems\fP\fB, uInt \fIsize\fP\fB);\fP
 | 
					\fBvoidpf png_zalloc (voidpf \fP\fIpng_ptr\fP\fB, uInt \fP\fIitems\fP\fB, uInt \fIsize\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fBvoid png_zfree (voidpf \fP\fIpng_ptr\fP\fB, voidpf \fIptr\fP\fB);\fP
 | 
					\fBvoid png_zfree (voidpf \fP\fIpng_ptr\fP\fB, voidpf \fIptr\fP\fB);\fP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\fI\fB
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\fI\fB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.SH DESCRIPTION
 | 
					.SH DESCRIPTION
 | 
				
			||||||
The functions listed above are used privately by libpng
 | 
					The functions listed above are used privately by libpng
 | 
				
			||||||
and are not recommended for use by applications.  They are
 | 
					and are not recommended for use by applications.  They are
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								png.5
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								png.5
									
									
									
									
									
								
							@ -1,4 +1,4 @@
 | 
				
			|||||||
.TH PNG 5 "May 7, 2009"
 | 
					.TH PNG 5 "June 4, 2009"
 | 
				
			||||||
.SH NAME
 | 
					.SH NAME
 | 
				
			||||||
png \- Portable Network Graphics (PNG) format
 | 
					png \- Portable Network Graphics (PNG) format
 | 
				
			||||||
.SH DESCRIPTION
 | 
					.SH DESCRIPTION
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										460
									
								
								png.c
									
									
									
									
									
								
							
							
						
						
									
										460
									
								
								png.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* png.c - location for general purpose libpng functions
 | 
					/* png.c - location for general purpose libpng functions
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.34 [December 18, 2008]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
#include "png.h"
 | 
					#include "png.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 version_1_0_44 Your_png_h_is_not_version_1_0_44;
 | 
					typedef version_1_0_45 Your_png_h_is_not_version_1_0_45;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Version information for C files.  This had better match the version
 | 
					/* Version information for C files.  This had better match the version
 | 
				
			||||||
 * string defined in png.h.  */
 | 
					 * string defined in png.h.  */
 | 
				
			||||||
@ -53,18 +53,18 @@ PNG_tRNS;
 | 
				
			|||||||
PNG_zTXt;
 | 
					PNG_zTXt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_READ_SUPPORTED
 | 
					#ifdef PNG_READ_SUPPORTED
 | 
				
			||||||
/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* start of interlace block */
 | 
					/* Start of interlace block */
 | 
				
			||||||
PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
 | 
					PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* offset to next interlace block */
 | 
					/* Offset to next interlace block */
 | 
				
			||||||
PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
 | 
					PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* start of interlace block in the y direction */
 | 
					/* Start of interlace block in the y direction */
 | 
				
			||||||
PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
 | 
					PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* offset to next interlace block in the y direction */
 | 
					/* Offset to next interlace block in the y direction */
 | 
				
			||||||
PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
 | 
					PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Height of interlace block.  This is not currently used - if you need
 | 
					/* Height of interlace block.  This is not currently used - if you need
 | 
				
			||||||
@ -92,7 +92,8 @@ PNG_CONST int FARDATA png_pass_dsp_mask[]
 | 
				
			|||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_sig_bytes(png_structp png_ptr, int num_bytes)
 | 
					png_set_sig_bytes(png_structp png_ptr, int num_bytes)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_debug(1, "in png_set_sig_bytes");
 | 
					   png_debug(1, "in png_set_sig_bytes");
 | 
				
			||||||
   if (num_bytes > 8)
 | 
					   if (num_bytes > 8)
 | 
				
			||||||
      png_error(png_ptr, "Too many bytes for PNG signature.");
 | 
					      png_error(png_ptr, "Too many bytes for PNG signature.");
 | 
				
			||||||
@ -153,7 +154,8 @@ png_zalloc(voidpf png_ptr, uInt items, uInt size)
 | 
				
			|||||||
   png_uint_32 save_flags=p->flags;
 | 
					   png_uint_32 save_flags=p->flags;
 | 
				
			||||||
   png_uint_32 num_bytes;
 | 
					   png_uint_32 num_bytes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
   if (items > PNG_UINT_32_MAX/size)
 | 
					   if (items > PNG_UINT_32_MAX/size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_warning (p, "Potential overflow in png_zalloc()");
 | 
					     png_warning (p, "Potential overflow in png_zalloc()");
 | 
				
			||||||
@ -183,7 +185,7 @@ png_zalloc(voidpf png_ptr, uInt items, uInt size)
 | 
				
			|||||||
   return ((voidpf)ptr);
 | 
					   return ((voidpf)ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* function to free memory for zlib */
 | 
					/* Function to free memory for zlib */
 | 
				
			||||||
#ifdef PNG_1_0_X
 | 
					#ifdef PNG_1_0_X
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@ -241,7 +243,8 @@ png_create_info_struct(png_structp png_ptr)
 | 
				
			|||||||
   png_infop info_ptr;
 | 
					   png_infop info_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_create_info_struct");
 | 
					   png_debug(1, "in png_create_info_struct");
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
#ifdef PNG_USER_MEM_SUPPORTED
 | 
					#ifdef PNG_USER_MEM_SUPPORTED
 | 
				
			||||||
   info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
 | 
					   info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
 | 
				
			||||||
      png_ptr->malloc_fn, png_ptr->mem_ptr);
 | 
					      png_ptr->malloc_fn, png_ptr->mem_ptr);
 | 
				
			||||||
@ -263,7 +266,8 @@ void PNGAPI
 | 
				
			|||||||
png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
 | 
					png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_infop info_ptr = NULL;
 | 
					   png_infop info_ptr = NULL;
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_destroy_info_struct");
 | 
					   png_debug(1, "in png_destroy_info_struct");
 | 
				
			||||||
   if (info_ptr_ptr != NULL)
 | 
					   if (info_ptr_ptr != NULL)
 | 
				
			||||||
@ -302,18 +306,19 @@ png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   png_infop info_ptr = *ptr_ptr;
 | 
					   png_infop info_ptr = *ptr_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (info_ptr == NULL) return;
 | 
					   if (info_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_info_init_3");
 | 
					   png_debug(1, "in png_info_init_3");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_sizeof(png_info) > png_info_struct_size)
 | 
					   if (png_sizeof(png_info) > png_info_struct_size)
 | 
				
			||||||
     {
 | 
					   {
 | 
				
			||||||
       png_destroy_struct(info_ptr);
 | 
					      png_destroy_struct(info_ptr);
 | 
				
			||||||
       info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
 | 
					      info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
 | 
				
			||||||
       *ptr_ptr = info_ptr;
 | 
					      *ptr_ptr = info_ptr;
 | 
				
			||||||
     }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set everything to 0 */
 | 
					   /* Set everything to 0 */
 | 
				
			||||||
   png_memset(info_ptr, 0, png_sizeof(png_info));
 | 
					   png_memset(info_ptr, 0, png_sizeof(png_info));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -344,245 +349,245 @@ png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask,
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_TEXT_SUPPORTED)
 | 
					#if defined(PNG_TEXT_SUPPORTED)
 | 
				
			||||||
/* free text item num or (if num == -1) all text items */
 | 
					   /* Free text item num or (if num == -1) all text items */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_TEXT)
 | 
					   if (mask & PNG_FREE_TEXT)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   if (num != -1)
 | 
					 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     if (info_ptr->text && info_ptr->text[num].key)
 | 
					      if (num != -1)
 | 
				
			||||||
     {
 | 
					      {
 | 
				
			||||||
         png_free(png_ptr, info_ptr->text[num].key);
 | 
					         if (info_ptr->text && info_ptr->text[num].key)
 | 
				
			||||||
         info_ptr->text[num].key = NULL;
 | 
					         {
 | 
				
			||||||
     }
 | 
					            png_free(png_ptr, info_ptr->text[num].key);
 | 
				
			||||||
 | 
					            info_ptr->text[num].key = NULL;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         int i;
 | 
				
			||||||
 | 
					         for (i = 0; i < info_ptr->num_text; i++)
 | 
				
			||||||
 | 
					             png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
 | 
				
			||||||
 | 
					         png_free(png_ptr, info_ptr->text);
 | 
				
			||||||
 | 
					         info_ptr->text = NULL;
 | 
				
			||||||
 | 
					         info_ptr->num_text=0;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
       int i;
 | 
					 | 
				
			||||||
       for (i = 0; i < info_ptr->num_text; i++)
 | 
					 | 
				
			||||||
           png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
 | 
					 | 
				
			||||||
       png_free(png_ptr, info_ptr->text);
 | 
					 | 
				
			||||||
       info_ptr->text = NULL;
 | 
					 | 
				
			||||||
       info_ptr->num_text=0;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_tRNS_SUPPORTED)
 | 
					#if defined(PNG_tRNS_SUPPORTED)
 | 
				
			||||||
/* free any tRNS entry */
 | 
					   /* Free any tRNS entry */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_TRNS) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_TRNS) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
 | 
					   if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    png_free(png_ptr, info_ptr->trans);
 | 
					      png_free(png_ptr, info_ptr->trans);
 | 
				
			||||||
    info_ptr->trans = NULL;
 | 
					      info_ptr->trans = NULL;
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_tRNS;
 | 
					      info_ptr->valid &= ~PNG_INFO_tRNS;
 | 
				
			||||||
#ifndef PNG_FREE_ME_SUPPORTED
 | 
					#ifndef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
 | 
					      png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_sCAL_SUPPORTED)
 | 
					#if defined(PNG_sCAL_SUPPORTED)
 | 
				
			||||||
/* free any sCAL entry */
 | 
					   /* Free any sCAL entry */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_SCAL)
 | 
					   if (mask & PNG_FREE_SCAL)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
 | 
					#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
 | 
				
			||||||
    png_free(png_ptr, info_ptr->scal_s_width);
 | 
					      png_free(png_ptr, info_ptr->scal_s_width);
 | 
				
			||||||
    png_free(png_ptr, info_ptr->scal_s_height);
 | 
					      png_free(png_ptr, info_ptr->scal_s_height);
 | 
				
			||||||
    info_ptr->scal_s_width = NULL;
 | 
					      info_ptr->scal_s_width = NULL;
 | 
				
			||||||
    info_ptr->scal_s_height = NULL;
 | 
					      info_ptr->scal_s_height = NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_sCAL;
 | 
					      info_ptr->valid &= ~PNG_INFO_sCAL;
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_pCAL_SUPPORTED)
 | 
					#if defined(PNG_pCAL_SUPPORTED)
 | 
				
			||||||
/* free any pCAL entry */
 | 
					   /* Free any pCAL entry */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_PCAL)
 | 
					   if (mask & PNG_FREE_PCAL)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    png_free(png_ptr, info_ptr->pcal_purpose);
 | 
					      png_free(png_ptr, info_ptr->pcal_purpose);
 | 
				
			||||||
    png_free(png_ptr, info_ptr->pcal_units);
 | 
					      png_free(png_ptr, info_ptr->pcal_units);
 | 
				
			||||||
    info_ptr->pcal_purpose = NULL;
 | 
					      info_ptr->pcal_purpose = NULL;
 | 
				
			||||||
    info_ptr->pcal_units = NULL;
 | 
					      info_ptr->pcal_units = NULL;
 | 
				
			||||||
    if (info_ptr->pcal_params != NULL)
 | 
					      if (info_ptr->pcal_params != NULL)
 | 
				
			||||||
    {
 | 
					         {
 | 
				
			||||||
        int i;
 | 
					            int i;
 | 
				
			||||||
        for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
 | 
					            for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
 | 
				
			||||||
        {
 | 
					            {
 | 
				
			||||||
          png_free(png_ptr, info_ptr->pcal_params[i]);
 | 
					               png_free(png_ptr, info_ptr->pcal_params[i]);
 | 
				
			||||||
          info_ptr->pcal_params[i]=NULL;
 | 
					               info_ptr->pcal_params[i]=NULL;
 | 
				
			||||||
        }
 | 
					            }
 | 
				
			||||||
        png_free(png_ptr, info_ptr->pcal_params);
 | 
					            png_free(png_ptr, info_ptr->pcal_params);
 | 
				
			||||||
        info_ptr->pcal_params = NULL;
 | 
					            info_ptr->pcal_params = NULL;
 | 
				
			||||||
    }
 | 
					         }
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_pCAL;
 | 
					      info_ptr->valid &= ~PNG_INFO_pCAL;
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_iCCP_SUPPORTED)
 | 
					#if defined(PNG_iCCP_SUPPORTED)
 | 
				
			||||||
/* free any iCCP entry */
 | 
					   /* Free any iCCP entry */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_ICCP)
 | 
					   if (mask & PNG_FREE_ICCP)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    png_free(png_ptr, info_ptr->iccp_name);
 | 
					      png_free(png_ptr, info_ptr->iccp_name);
 | 
				
			||||||
    png_free(png_ptr, info_ptr->iccp_profile);
 | 
					      png_free(png_ptr, info_ptr->iccp_profile);
 | 
				
			||||||
    info_ptr->iccp_name = NULL;
 | 
					      info_ptr->iccp_name = NULL;
 | 
				
			||||||
    info_ptr->iccp_profile = NULL;
 | 
					      info_ptr->iccp_profile = NULL;
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_iCCP;
 | 
					      info_ptr->valid &= ~PNG_INFO_iCCP;
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_sPLT_SUPPORTED)
 | 
					#if defined(PNG_sPLT_SUPPORTED)
 | 
				
			||||||
/* free a given sPLT entry, or (if num == -1) all sPLT entries */
 | 
					   /* Free a given sPLT entry, or (if num == -1) all sPLT entries */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_SPLT)
 | 
					   if (mask & PNG_FREE_SPLT)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   if (num != -1)
 | 
					 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (info_ptr->splt_palettes)
 | 
					      if (num != -1)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
          png_free(png_ptr, info_ptr->splt_palettes[num].name);
 | 
					         if (info_ptr->splt_palettes)
 | 
				
			||||||
          png_free(png_ptr, info_ptr->splt_palettes[num].entries);
 | 
					         {
 | 
				
			||||||
          info_ptr->splt_palettes[num].name = NULL;
 | 
					            png_free(png_ptr, info_ptr->splt_palettes[num].name);
 | 
				
			||||||
          info_ptr->splt_palettes[num].entries = NULL;
 | 
					            png_free(png_ptr, info_ptr->splt_palettes[num].entries);
 | 
				
			||||||
 | 
					            info_ptr->splt_palettes[num].name = NULL;
 | 
				
			||||||
 | 
					            info_ptr->splt_palettes[num].entries = NULL;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         if (info_ptr->splt_palettes_num)
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					            int i;
 | 
				
			||||||
 | 
					            for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
 | 
				
			||||||
 | 
					               png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            png_free(png_ptr, info_ptr->splt_palettes);
 | 
				
			||||||
 | 
					            info_ptr->splt_palettes = NULL;
 | 
				
			||||||
 | 
					            info_ptr->splt_palettes_num = 0;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         info_ptr->valid &= ~PNG_INFO_sPLT;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
       if (info_ptr->splt_palettes_num)
 | 
					 | 
				
			||||||
       {
 | 
					 | 
				
			||||||
         int i;
 | 
					 | 
				
			||||||
         for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
 | 
					 | 
				
			||||||
            png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
         png_free(png_ptr, info_ptr->splt_palettes);
 | 
					 | 
				
			||||||
         info_ptr->splt_palettes = NULL;
 | 
					 | 
				
			||||||
         info_ptr->splt_palettes_num = 0;
 | 
					 | 
				
			||||||
       }
 | 
					 | 
				
			||||||
       info_ptr->valid &= ~PNG_INFO_sPLT;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
  if (png_ptr->unknown_chunk.data)
 | 
					   if (png_ptr->unknown_chunk.data)
 | 
				
			||||||
  {
 | 
					   {
 | 
				
			||||||
    png_free(png_ptr, png_ptr->unknown_chunk.data);
 | 
					      png_free(png_ptr, png_ptr->unknown_chunk.data);
 | 
				
			||||||
    png_ptr->unknown_chunk.data = NULL;
 | 
					      png_ptr->unknown_chunk.data = NULL;
 | 
				
			||||||
  }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_UNKN)
 | 
					   if (mask & PNG_FREE_UNKN)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   if (num != -1)
 | 
					 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       if (info_ptr->unknown_chunks)
 | 
					      if (num != -1)
 | 
				
			||||||
       {
 | 
					      {
 | 
				
			||||||
          png_free(png_ptr, info_ptr->unknown_chunks[num].data);
 | 
					          if (info_ptr->unknown_chunks)
 | 
				
			||||||
          info_ptr->unknown_chunks[num].data = NULL;
 | 
					          {
 | 
				
			||||||
       }
 | 
					             png_free(png_ptr, info_ptr->unknown_chunks[num].data);
 | 
				
			||||||
   }
 | 
					             info_ptr->unknown_chunks[num].data = NULL;
 | 
				
			||||||
   else
 | 
					          }
 | 
				
			||||||
   {
 | 
					      }
 | 
				
			||||||
       int i;
 | 
					      else
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       if (info_ptr->unknown_chunks_num)
 | 
					         if (info_ptr->unknown_chunks_num)
 | 
				
			||||||
       {
 | 
					         {
 | 
				
			||||||
         for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
 | 
					            for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
 | 
				
			||||||
            png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
 | 
					               png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         png_free(png_ptr, info_ptr->unknown_chunks);
 | 
					            png_free(png_ptr, info_ptr->unknown_chunks);
 | 
				
			||||||
         info_ptr->unknown_chunks = NULL;
 | 
					            info_ptr->unknown_chunks = NULL;
 | 
				
			||||||
         info_ptr->unknown_chunks_num = 0;
 | 
					            info_ptr->unknown_chunks_num = 0;
 | 
				
			||||||
       }
 | 
					         }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_hIST_SUPPORTED)
 | 
					#if defined(PNG_hIST_SUPPORTED)
 | 
				
			||||||
/* free any hIST entry */
 | 
					   /* Free any hIST entry */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_HIST)  & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_HIST)  & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
 | 
					   if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    png_free(png_ptr, info_ptr->hist);
 | 
					      png_free(png_ptr, info_ptr->hist);
 | 
				
			||||||
    info_ptr->hist = NULL;
 | 
					      info_ptr->hist = NULL;
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_hIST;
 | 
					      info_ptr->valid &= ~PNG_INFO_hIST;
 | 
				
			||||||
#ifndef PNG_FREE_ME_SUPPORTED
 | 
					#ifndef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
 | 
					      png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* free any PLTE entry that was internally allocated */
 | 
					   /* Free any PLTE entry that was internally allocated */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_PLTE) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_PLTE) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
 | 
					   if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    png_zfree(png_ptr, info_ptr->palette);
 | 
					      png_zfree(png_ptr, info_ptr->palette);
 | 
				
			||||||
    info_ptr->palette = NULL;
 | 
					      info_ptr->palette = NULL;
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_PLTE;
 | 
					      info_ptr->valid &= ~PNG_INFO_PLTE;
 | 
				
			||||||
#ifndef PNG_FREE_ME_SUPPORTED
 | 
					#ifndef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
 | 
					      png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    info_ptr->num_palette = 0;
 | 
					      info_ptr->num_palette = 0;
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_INFO_IMAGE_SUPPORTED)
 | 
					#if defined(PNG_INFO_IMAGE_SUPPORTED)
 | 
				
			||||||
/* free any image bits attached to the info structure */
 | 
					   /* Free any image bits attached to the info structure */
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
 | 
					   if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
if (mask & PNG_FREE_ROWS)
 | 
					   if (mask & PNG_FREE_ROWS)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					   {
 | 
				
			||||||
    if (info_ptr->row_pointers)
 | 
					      if (info_ptr->row_pointers)
 | 
				
			||||||
    {
 | 
					      {
 | 
				
			||||||
       int row;
 | 
					         int row;
 | 
				
			||||||
       for (row = 0; row < (int)info_ptr->height; row++)
 | 
					         for (row = 0; row < (int)info_ptr->height; row++)
 | 
				
			||||||
       {
 | 
					         {
 | 
				
			||||||
          png_free(png_ptr, info_ptr->row_pointers[row]);
 | 
					            png_free(png_ptr, info_ptr->row_pointers[row]);
 | 
				
			||||||
          info_ptr->row_pointers[row]=NULL;
 | 
					            info_ptr->row_pointers[row]=NULL;
 | 
				
			||||||
       }
 | 
					         }
 | 
				
			||||||
       png_free(png_ptr, info_ptr->row_pointers);
 | 
					         png_free(png_ptr, info_ptr->row_pointers);
 | 
				
			||||||
       info_ptr->row_pointers=NULL;
 | 
					         info_ptr->row_pointers=NULL;
 | 
				
			||||||
    }
 | 
					      }
 | 
				
			||||||
    info_ptr->valid &= ~PNG_INFO_IDAT;
 | 
					      info_ptr->valid &= ~PNG_INFO_IDAT;
 | 
				
			||||||
}
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
   if (num == -1)
 | 
					   if (num == -1)
 | 
				
			||||||
     info_ptr->free_me &= ~mask;
 | 
					      info_ptr->free_me &= ~mask;
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
     info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
 | 
					      info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -600,9 +605,9 @@ png_info_destroy(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->num_chunk_list)
 | 
					   if (png_ptr->num_chunk_list)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       png_free(png_ptr, png_ptr->chunk_list);
 | 
					      png_free(png_ptr, png_ptr->chunk_list);
 | 
				
			||||||
       png_ptr->chunk_list=NULL;
 | 
					      png_ptr->chunk_list=NULL;
 | 
				
			||||||
       png_ptr->num_chunk_list = 0;
 | 
					      png_ptr->num_chunk_list = 0;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -617,7 +622,8 @@ png_info_destroy(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
png_voidp PNGAPI
 | 
					png_voidp PNGAPI
 | 
				
			||||||
png_get_io_ptr(png_structp png_ptr)
 | 
					png_get_io_ptr(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
   return (png_ptr->io_ptr);
 | 
					   return (png_ptr->io_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -633,7 +639,8 @@ void PNGAPI
 | 
				
			|||||||
png_init_io(png_structp png_ptr, png_FILE_p fp)
 | 
					png_init_io(png_structp png_ptr, png_FILE_p fp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_init_io");
 | 
					   png_debug(1, "in png_init_io");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->io_ptr = (png_voidp)fp;
 | 
					   png_ptr->io_ptr = (png_voidp)fp;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -649,7 +656,8 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
 | 
				
			|||||||
        {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
 | 
					        {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
 | 
				
			||||||
         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 | 
					         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
   if (png_ptr->time_buffer == NULL)
 | 
					   if (png_ptr->time_buffer == NULL)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
 | 
					      png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
 | 
				
			||||||
@ -693,9 +701,9 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
 | 
				
			|||||||
png_charp PNGAPI
 | 
					png_charp PNGAPI
 | 
				
			||||||
png_get_copyright(png_structp png_ptr)
 | 
					png_get_copyright(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
 | 
					   png_ptr = png_ptr;  /* Silence compiler warning about unused png_ptr */
 | 
				
			||||||
   return ((png_charp) "\n libpng version 1.0.44 - May 7, 2009\n\
 | 
					   return ((png_charp) "\n libpng version 1.0.45 - June 4, 2009\n\
 | 
				
			||||||
   Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\
 | 
					   Copyright (c) 1998-2009 Glenn Randers-Pehrson\n\
 | 
				
			||||||
   Copyright (c) 1996-1997 Andreas Dilger\n\
 | 
					   Copyright (c) 1996-1997 Andreas Dilger\n\
 | 
				
			||||||
   Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
 | 
					   Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -712,7 +720,7 @@ png_charp PNGAPI
 | 
				
			|||||||
png_get_libpng_ver(png_structp png_ptr)
 | 
					png_get_libpng_ver(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* Version of *.c files used when building libpng */
 | 
					   /* Version of *.c files used when building libpng */
 | 
				
			||||||
   png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
 | 
					   png_ptr = png_ptr;  /* Silence compiler warning about unused png_ptr */
 | 
				
			||||||
   return ((png_charp) PNG_LIBPNG_VER_STRING);
 | 
					   return ((png_charp) PNG_LIBPNG_VER_STRING);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -720,7 +728,7 @@ png_charp PNGAPI
 | 
				
			|||||||
png_get_header_ver(png_structp png_ptr)
 | 
					png_get_header_ver(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* Version of *.h files used when building libpng */
 | 
					   /* Version of *.h files used when building libpng */
 | 
				
			||||||
   png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
 | 
					   png_ptr = png_ptr;  /* Silence compiler warning about unused png_ptr */
 | 
				
			||||||
   return ((png_charp) PNG_LIBPNG_VER_STRING);
 | 
					   return ((png_charp) PNG_LIBPNG_VER_STRING);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -728,7 +736,7 @@ png_charp PNGAPI
 | 
				
			|||||||
png_get_header_version(png_structp png_ptr)
 | 
					png_get_header_version(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* Returns longer string containing both version and date */
 | 
					   /* Returns longer string containing both version and date */
 | 
				
			||||||
   png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
 | 
					   png_ptr = png_ptr;  /* Silence compiler warning about unused png_ptr */
 | 
				
			||||||
   return ((png_charp) PNG_HEADER_VERSION_STRING
 | 
					   return ((png_charp) PNG_HEADER_VERSION_STRING
 | 
				
			||||||
#ifndef PNG_READ_SUPPORTED
 | 
					#ifndef PNG_READ_SUPPORTED
 | 
				
			||||||
   "     (NO READ SUPPORT)"
 | 
					   "     (NO READ SUPPORT)"
 | 
				
			||||||
@ -741,7 +749,7 @@ png_get_header_version(png_structp png_ptr)
 | 
				
			|||||||
int PNGAPI
 | 
					int PNGAPI
 | 
				
			||||||
png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
 | 
					png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* check chunk_name and return "keep" value if it's on the list, else 0 */
 | 
					   /* Check chunk_name and return "keep" value if it's on the list, else 0 */
 | 
				
			||||||
   int i;
 | 
					   int i;
 | 
				
			||||||
   png_bytep p;
 | 
					   png_bytep p;
 | 
				
			||||||
   if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
 | 
					   if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
 | 
				
			||||||
@ -758,7 +766,8 @@ png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
 | 
				
			|||||||
int PNGAPI
 | 
					int PNGAPI
 | 
				
			||||||
png_reset_zstream(png_structp png_ptr)
 | 
					png_reset_zstream(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return Z_STREAM_ERROR;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return Z_STREAM_ERROR;
 | 
				
			||||||
   return (inflateReset(&png_ptr->zstream));
 | 
					   return (inflateReset(&png_ptr->zstream));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
 | 
					#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
 | 
				
			||||||
@ -774,11 +783,11 @@ png_access_version_number(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
 | 
					#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
 | 
				
			||||||
#if !defined(PNG_1_0_X)
 | 
					#if !defined(PNG_1_0_X)
 | 
				
			||||||
/* this function was added to libpng 1.2.0 */
 | 
					/* This function was added to libpng 1.2.0 */
 | 
				
			||||||
int PNGAPI
 | 
					int PNGAPI
 | 
				
			||||||
png_mmx_support(void)
 | 
					png_mmx_support(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* obsolete, to be removed from libpng-1.4.0 */
 | 
					   /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    return -1;
 | 
					    return -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_1_0_X */
 | 
					#endif /* PNG_1_0_X */
 | 
				
			||||||
@ -791,9 +800,9 @@ png_mmx_support(void)
 | 
				
			|||||||
png_size_t PNGAPI
 | 
					png_size_t PNGAPI
 | 
				
			||||||
png_convert_size(size_t size)
 | 
					png_convert_size(size_t size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (size > (png_size_t)-1)
 | 
					   if (size > (png_size_t)-1)
 | 
				
			||||||
     PNG_ABORT();  /* We haven't got access to png_ptr, so no png_error() */
 | 
					      PNG_ABORT();  /* We haven't got access to png_ptr, so no png_error() */
 | 
				
			||||||
  return ((png_size_t)size);
 | 
					   return ((png_size_t)size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_SIZE_T */
 | 
					#endif /* PNG_SIZE_T */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -802,43 +811,44 @@ png_convert_size(size_t size)
 | 
				
			|||||||
#if !defined(PNG_NO_CHECK_cHRM)
 | 
					#if !defined(PNG_NO_CHECK_cHRM)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 Multiply two 32-bit numbers, V1 and V2, using 32-bit
 | 
					 *    Multiply two 32-bit numbers, V1 and V2, using 32-bit
 | 
				
			||||||
 arithmetic, to produce a 64 bit result in the HI/LO words.
 | 
					 *    arithmetic, to produce a 64 bit result in the HI/LO words.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
          A B
 | 
					 *                  A B
 | 
				
			||||||
        x C D
 | 
					 *                x C D
 | 
				
			||||||
       ------
 | 
					 *               ------
 | 
				
			||||||
      AD || BD
 | 
					 *              AD || BD
 | 
				
			||||||
AC || CB || 0
 | 
					 *        AC || CB || 0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 where A and B are the high and low 16-bit words of V1,
 | 
					 *    where A and B are the high and low 16-bit words of V1,
 | 
				
			||||||
 C and D are the 16-bit words of V2, AD is the product of
 | 
					 *    C and D are the 16-bit words of V2, AD is the product of
 | 
				
			||||||
 A and D, and X || Y is (X << 16) + Y.
 | 
					 *    A and D, and X || Y is (X << 16) + Y.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void png_64bit_product (long v1, long v2, unsigned long *hi_product,
 | 
					void png_64bit_product (long v1, long v2, unsigned long *hi_product,
 | 
				
			||||||
   unsigned long *lo_product)
 | 
					   unsigned long *lo_product)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 int a, b, c, d;
 | 
					   int a, b, c, d;
 | 
				
			||||||
 long lo, hi, x, y;
 | 
					   long lo, hi, x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 a = (v1 >> 16) & 0xffff;
 | 
					   a = (v1 >> 16) & 0xffff;
 | 
				
			||||||
 b = v1 & 0xffff;
 | 
					   b = v1 & 0xffff;
 | 
				
			||||||
 c = (v2 >> 16) & 0xffff;
 | 
					   c = (v2 >> 16) & 0xffff;
 | 
				
			||||||
 d = v2 & 0xffff;
 | 
					   d = v2 & 0xffff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 lo = b * d;                   /* BD */
 | 
					   lo = b * d;                   /* BD */
 | 
				
			||||||
 x = a * d + c * b;            /* AD + CB */
 | 
					   x = a * d + c * b;            /* AD + CB */
 | 
				
			||||||
 y = ((lo >> 16) & 0xffff) + x;
 | 
					   y = ((lo >> 16) & 0xffff) + x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 lo = (lo & 0xffff) | ((y & 0xffff) << 16);
 | 
					   lo = (lo & 0xffff) | ((y & 0xffff) << 16);
 | 
				
			||||||
 hi = (y >> 16) & 0xffff;
 | 
					   hi = (y >> 16) & 0xffff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 hi += a * c;                  /* AC */
 | 
					   hi += a * c;                  /* AC */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 *hi_product = (unsigned long)hi;
 | 
					   *hi_product = (unsigned long)hi;
 | 
				
			||||||
 *lo_product = (unsigned long)lo;
 | 
					   *lo_product = (unsigned long)lo;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int /* private */
 | 
					int /* private */
 | 
				
			||||||
png_check_cHRM_fixed(png_structp png_ptr,
 | 
					png_check_cHRM_fixed(png_structp png_ptr,
 | 
				
			||||||
   png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
 | 
					   png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								png.h
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								png.h
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
/* png.h - header file for PNG reference library
 | 
					/* png.h - header file for PNG reference library
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * libpng version 1.0.44 - May 7, 2009
 | 
					 * libpng version 1.0.45 - June 4, 2009
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
@ -8,7 +8,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.89c, June 1996, through 0.96, May 1997: Andreas Dilger
 | 
					 *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
 | 
				
			||||||
 *  libpng versions 0.97, January 1998, through 1.0.44 - May 7, 2009: Glenn
 | 
					 *  libpng versions 0.97, January 1998, through 1.0.45 - June 4, 2009: Glenn
 | 
				
			||||||
 *  See also "Contributing Authors", below.
 | 
					 *  See also "Contributing Authors", below.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Note about libpng version numbers:
 | 
					 * Note about libpng version numbers:
 | 
				
			||||||
@ -226,6 +226,9 @@
 | 
				
			|||||||
 *    1.2.36rc01              13    10236  12.so.0.36[.0]
 | 
					 *    1.2.36rc01              13    10236  12.so.0.36[.0]
 | 
				
			||||||
 *    1.0.44                  10    10044  10.so.0.44[.0]
 | 
					 *    1.0.44                  10    10044  10.so.0.44[.0]
 | 
				
			||||||
 *    1.2.36                  13    10236  12.so.0.36[.0]
 | 
					 *    1.2.36                  13    10236  12.so.0.36[.0]
 | 
				
			||||||
 | 
					 *    1.2.37beta01-03         13    10237  12.so.0.37[.0]
 | 
				
			||||||
 | 
					 *    1.2.37rc01              13    10237  12.so.0.37[.0]
 | 
				
			||||||
 | 
					 *    1.2.37                  13    10237  12.so.0.37[.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
 | 
				
			||||||
@ -255,7 +258,7 @@
 | 
				
			|||||||
 * If you modify libpng you may insert additional notices immediately following
 | 
					 * If you modify libpng you may insert additional notices immediately following
 | 
				
			||||||
 * this sentence.
 | 
					 * this sentence.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * libpng versions 1.2.6, August 15, 2004, through 1.0.44, May 7, 2009, are
 | 
					 * libpng versions 1.2.6, August 15, 2004, through 1.0.45, June 4, 2009, are
 | 
				
			||||||
 * Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
 | 
					 * Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
 | 
				
			||||||
 * distributed according to the same disclaimer and license as libpng-1.2.5
 | 
					 * distributed according to the same disclaimer and license as libpng-1.2.5
 | 
				
			||||||
 * with the following individual added to the list of Contributing Authors:
 | 
					 * with the following individual added to the list of Contributing Authors:
 | 
				
			||||||
@ -367,13 +370,13 @@
 | 
				
			|||||||
 * Y2K compliance in libpng:
 | 
					 * Y2K compliance in libpng:
 | 
				
			||||||
 * =========================
 | 
					 * =========================
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *    May 7, 2009
 | 
					 *    June 4, 2009
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *    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.0.44 are Y2K compliant.  It is my belief that earlier
 | 
					 *    upward through 1.0.45 are Y2K compliant.  It is my belief that earlier
 | 
				
			||||||
 *    versions were also Y2K compliant.
 | 
					 *    versions were also Y2K compliant.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *    Libpng only has three year fields.  One is a 2-byte unsigned integer
 | 
					 *    Libpng only has three year fields.  One is a 2-byte unsigned integer
 | 
				
			||||||
@ -429,9 +432,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.0.44"
 | 
					#define PNG_LIBPNG_VER_STRING "1.0.45"
 | 
				
			||||||
#define PNG_HEADER_VERSION_STRING \
 | 
					#define PNG_HEADER_VERSION_STRING \
 | 
				
			||||||
   " libpng version 1.0.44 - May 7, 2009\n"
 | 
					   " libpng version 1.0.45 - June 4, 2009\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PNG_LIBPNG_VER_SONUM   0
 | 
					#define PNG_LIBPNG_VER_SONUM   0
 | 
				
			||||||
#define PNG_LIBPNG_VER_DLLNUM  10
 | 
					#define PNG_LIBPNG_VER_DLLNUM  10
 | 
				
			||||||
@ -439,7 +442,7 @@
 | 
				
			|||||||
/* 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   0
 | 
					#define PNG_LIBPNG_VER_MINOR   0
 | 
				
			||||||
#define PNG_LIBPNG_VER_RELEASE 44
 | 
					#define PNG_LIBPNG_VER_RELEASE 45
 | 
				
			||||||
/* 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: */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -467,7 +470,7 @@
 | 
				
			|||||||
 * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
 | 
					 * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
 | 
				
			||||||
 * 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 10044 /* 1.0.44 */
 | 
					#define PNG_LIBPNG_VER 10045 /* 1.0.45 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef PNG_VERSION_INFO_ONLY
 | 
					#ifndef PNG_VERSION_INFO_ONLY
 | 
				
			||||||
/* include the compression library's header */
 | 
					/* include the compression library's header */
 | 
				
			||||||
@ -1491,7 +1494,7 @@ struct png_struct_def
 | 
				
			|||||||
/* 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 png_structp version_1_0_44;
 | 
					typedef png_structp version_1_0_45;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef png_struct FAR * FAR * png_structpp;
 | 
					typedef png_struct FAR * FAR * png_structpp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngconf.h - machine configurable file for libpng
 | 
					/* pngconf.h - machine configurable file for libpng
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * libpng version 1.0.44 - May 7, 2009
 | 
					 * libpng version 1.0.45 - June 4, 2009
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								pngerror.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								pngerror.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngerror.c - stub functions for i/o and memory allocation
 | 
					/* pngerror.c - stub functions for i/o and memory allocation
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -234,9 +234,11 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
 | 
				
			|||||||
       fprintf(stderr, "\n");
 | 
					       fprintf(stderr, "\n");
 | 
				
			||||||
     }
 | 
					     }
 | 
				
			||||||
     else
 | 
					     else
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
       fprintf(stderr, "libpng error: %s, offset=%d",
 | 
					       fprintf(stderr, "libpng error: %s, offset=%d",
 | 
				
			||||||
          error_message, offset);
 | 
					          error_message, offset);
 | 
				
			||||||
       fprintf(stderr, "\n");
 | 
					       fprintf(stderr, "\n");
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -263,7 +265,7 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
 | 
				
			|||||||
   PNG_ABORT();
 | 
					   PNG_ABORT();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef PNG_NO_CONSOLE_IO
 | 
					#ifdef PNG_NO_CONSOLE_IO
 | 
				
			||||||
   error_message = error_message; /* make compiler happy */
 | 
					   error_message = error_message; /* Make compiler happy */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -309,9 +311,9 @@ png_default_warning(png_structp png_ptr, png_const_charp warning_message)
 | 
				
			|||||||
       fprintf(stderr, "\n");
 | 
					       fprintf(stderr, "\n");
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   warning_message = warning_message; /* make compiler happy */
 | 
					   warning_message = warning_message; /* Make compiler happy */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   png_ptr = png_ptr; /* make compiler happy */
 | 
					   png_ptr = png_ptr; /* Make compiler happy */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_NO_WARNINGS */
 | 
					#endif /* PNG_NO_WARNINGS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										129
									
								
								pngget.c
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								pngget.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngget.c - retrieval of values from info struct
 | 
					/* pngget.c - retrieval of values from info struct
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.30 [August 15, 2008]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -17,6 +17,7 @@ png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
      return(info_ptr->valid & flag);
 | 
					      return(info_ptr->valid & flag);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
      return(0);
 | 
					      return(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -26,6 +27,7 @@ png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
      return(info_ptr->rowbytes);
 | 
					      return(info_ptr->rowbytes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
      return(0);
 | 
					      return(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -36,20 +38,20 @@ png_get_rows(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
      return(info_ptr->row_pointers);
 | 
					      return(info_ptr->row_pointers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
      return(0);
 | 
					      return(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_EASY_ACCESS_SUPPORTED
 | 
					#ifdef PNG_EASY_ACCESS_SUPPORTED
 | 
				
			||||||
/* easy access to info, added in libpng-0.99 */
 | 
					/* Easy access to info, added in libpng-0.99 */
 | 
				
			||||||
png_uint_32 PNGAPI
 | 
					png_uint_32 PNGAPI
 | 
				
			||||||
png_get_image_width(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_image_width(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->width;
 | 
					      return info_ptr->width;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -57,9 +59,8 @@ png_uint_32 PNGAPI
 | 
				
			|||||||
png_get_image_height(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_image_height(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->height;
 | 
					      return info_ptr->height;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -67,9 +68,8 @@ png_byte PNGAPI
 | 
				
			|||||||
png_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->bit_depth;
 | 
					      return info_ptr->bit_depth;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -77,9 +77,8 @@ png_byte PNGAPI
 | 
				
			|||||||
png_get_color_type(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_color_type(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->color_type;
 | 
					      return info_ptr->color_type;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -87,9 +86,8 @@ png_byte PNGAPI
 | 
				
			|||||||
png_get_filter_type(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_filter_type(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->filter_type;
 | 
					      return info_ptr->filter_type;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -97,9 +95,8 @@ png_byte PNGAPI
 | 
				
			|||||||
png_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->interlace_type;
 | 
					      return info_ptr->interlace_type;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -107,9 +104,8 @@ png_byte PNGAPI
 | 
				
			|||||||
png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      return info_ptr->compression_type;
 | 
					      return info_ptr->compression_type;
 | 
				
			||||||
   }
 | 
					
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -121,9 +117,12 @@ png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
					   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
 | 
					      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->x_pixels_per_unit);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->x_pixels_per_unit);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -139,9 +138,12 @@ png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
					   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
 | 
					      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->y_pixels_per_unit);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->y_pixels_per_unit);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -157,10 +159,13 @@ png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
					   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
 | 
					      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
 | 
				
			||||||
         info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
 | 
					         info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->x_pixels_per_unit);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->x_pixels_per_unit);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -174,6 +179,7 @@ png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   {
 | 
					   {
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
#if defined(PNG_pHYs_SUPPORTED)
 | 
					#if defined(PNG_pHYs_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
					   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
 | 
				
			||||||
@ -184,7 +190,7 @@ png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
            /(float)info_ptr->x_pixels_per_unit));
 | 
					            /(float)info_ptr->x_pixels_per_unit));
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0.0);
 | 
					      return (0.0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   return ((float)0.0);
 | 
					   return ((float)0.0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -195,15 +201,19 @@ png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
#if defined(PNG_oFFs_SUPPORTED)
 | 
					#if defined(PNG_oFFs_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
					   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
 | 
					      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->x_offset);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->x_offset);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					      return (0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -212,13 +222,17 @@ png_int_32 PNGAPI
 | 
				
			|||||||
png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_oFFs_SUPPORTED)
 | 
					#if defined(PNG_oFFs_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
					   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
 | 
					      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->y_offset);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->y_offset);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -230,13 +244,17 @@ png_int_32 PNGAPI
 | 
				
			|||||||
png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_oFFs_SUPPORTED)
 | 
					#if defined(PNG_oFFs_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
					   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
 | 
					      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->x_offset);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->x_offset);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -248,13 +266,17 @@ png_int_32 PNGAPI
 | 
				
			|||||||
png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 | 
					png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_oFFs_SUPPORTED)
 | 
					#if defined(PNG_oFFs_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
					   if (info_ptr->valid & PNG_INFO_oFFs)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
 | 
					      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
 | 
					      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
 | 
				
			||||||
          return (0);
 | 
					          return (0);
 | 
				
			||||||
      else return (info_ptr->y_offset);
 | 
					
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					          return (info_ptr->y_offset);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -495,8 +517,9 @@ png_get_iCCP(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      png_debug1(1, "in %s retrieval function", "iCCP");
 | 
					      png_debug1(1, "in %s retrieval function", "iCCP");
 | 
				
			||||||
      *name = info_ptr->iccp_name;
 | 
					      *name = info_ptr->iccp_name;
 | 
				
			||||||
      *profile = info_ptr->iccp_profile;
 | 
					      *profile = info_ptr->iccp_profile;
 | 
				
			||||||
      /* compression_type is a dummy so the API won't have to change
 | 
					      /* Compression_type is a dummy so the API won't have to change
 | 
				
			||||||
         if we introduce multiple compression types later. */
 | 
					       * if we introduce multiple compression types later.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      *proflen = (int)info_ptr->iccp_proflen;
 | 
					      *proflen = (int)info_ptr->iccp_proflen;
 | 
				
			||||||
      *compression_type = (int)info_ptr->iccp_compression;
 | 
					      *compression_type = (int)info_ptr->iccp_compression;
 | 
				
			||||||
      return (PNG_INFO_iCCP);
 | 
					      return (PNG_INFO_iCCP);
 | 
				
			||||||
@ -549,22 +572,29 @@ png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      *height = info_ptr->height;
 | 
					      *height = info_ptr->height;
 | 
				
			||||||
      *bit_depth = info_ptr->bit_depth;
 | 
					      *bit_depth = info_ptr->bit_depth;
 | 
				
			||||||
      if (info_ptr->bit_depth < 1 || info_ptr->bit_depth > 16)
 | 
					      if (info_ptr->bit_depth < 1 || info_ptr->bit_depth > 16)
 | 
				
			||||||
        png_error(png_ptr, "Invalid bit depth");
 | 
					         png_error(png_ptr, "Invalid bit depth");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      *color_type = info_ptr->color_type;
 | 
					      *color_type = info_ptr->color_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->color_type > 6)
 | 
					      if (info_ptr->color_type > 6)
 | 
				
			||||||
        png_error(png_ptr, "Invalid color type");
 | 
					         png_error(png_ptr, "Invalid color type");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (compression_type != NULL)
 | 
					      if (compression_type != NULL)
 | 
				
			||||||
         *compression_type = info_ptr->compression_type;
 | 
					         *compression_type = info_ptr->compression_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (filter_type != NULL)
 | 
					      if (filter_type != NULL)
 | 
				
			||||||
         *filter_type = info_ptr->filter_type;
 | 
					         *filter_type = info_ptr->filter_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (interlace_type != NULL)
 | 
					      if (interlace_type != NULL)
 | 
				
			||||||
         *interlace_type = info_ptr->interlace_type;
 | 
					         *interlace_type = info_ptr->interlace_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* check for potential overflow of rowbytes */
 | 
					      /* Check for potential overflow of rowbytes */
 | 
				
			||||||
      if (*width == 0 || *width > PNG_UINT_31_MAX)
 | 
					      if (*width == 0 || *width > PNG_UINT_31_MAX)
 | 
				
			||||||
        png_error(png_ptr, "Invalid image width");
 | 
					        png_error(png_ptr, "Invalid image width");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (*height == 0 || *height > PNG_UINT_31_MAX)
 | 
					      if (*height == 0 || *height > PNG_UINT_31_MAX)
 | 
				
			||||||
        png_error(png_ptr, "Invalid image height");
 | 
					        png_error(png_ptr, "Invalid image height");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (info_ptr->width > (PNG_UINT_32_MAX
 | 
					      if (info_ptr->width > (PNG_UINT_32_MAX
 | 
				
			||||||
                 >> 3)      /* 8-byte RGBA pixels */
 | 
					                 >> 3)      /* 8-byte RGBA pixels */
 | 
				
			||||||
                 - 64       /* bigrowbuf hack */
 | 
					                 - 64       /* bigrowbuf hack */
 | 
				
			||||||
@ -575,6 +605,7 @@ png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
         png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
            "Width too large for libpng to process image data.");
 | 
					            "Width too large for libpng to process image data.");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return (1);
 | 
					      return (1);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
@ -605,8 +636,8 @@ png_get_pCAL(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   png_charp *units, png_charpp *params)
 | 
					   png_charp *units, png_charpp *params)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
 | 
					   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
 | 
				
			||||||
      && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
 | 
					       && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
 | 
				
			||||||
      nparams != NULL && units != NULL && params != NULL)
 | 
					       nparams != NULL && units != NULL && params != NULL)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "pCAL");
 | 
					      png_debug1(1, "in %s retrieval function", "pCAL");
 | 
				
			||||||
      *purpose = info_ptr->pcal_purpose;
 | 
					      *purpose = info_ptr->pcal_purpose;
 | 
				
			||||||
@ -629,7 +660,7 @@ png_get_sCAL(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
             int *unit, double *width, double *height)
 | 
					             int *unit, double *width, double *height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (png_ptr != NULL && info_ptr != NULL &&
 | 
					    if (png_ptr != NULL && info_ptr != NULL &&
 | 
				
			||||||
       (info_ptr->valid & PNG_INFO_sCAL))
 | 
					        (info_ptr->valid & PNG_INFO_sCAL))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        *unit = info_ptr->scal_unit;
 | 
					        *unit = info_ptr->scal_unit;
 | 
				
			||||||
        *width = info_ptr->scal_pixel_width;
 | 
					        *width = info_ptr->scal_pixel_width;
 | 
				
			||||||
@ -645,7 +676,7 @@ png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
             int *unit, png_charpp width, png_charpp height)
 | 
					             int *unit, png_charpp width, png_charpp height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (png_ptr != NULL && info_ptr != NULL &&
 | 
					    if (png_ptr != NULL && info_ptr != NULL &&
 | 
				
			||||||
       (info_ptr->valid & PNG_INFO_sCAL))
 | 
					        (info_ptr->valid & PNG_INFO_sCAL))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        *unit = info_ptr->scal_unit;
 | 
					        *unit = info_ptr->scal_unit;
 | 
				
			||||||
        *width = info_ptr->scal_s_width;
 | 
					        *width = info_ptr->scal_s_width;
 | 
				
			||||||
@ -669,16 +700,19 @@ png_get_pHYs(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      (info_ptr->valid & PNG_INFO_pHYs))
 | 
					      (info_ptr->valid & PNG_INFO_pHYs))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug1(1, "in %s retrieval function", "pHYs");
 | 
					      png_debug1(1, "in %s retrieval function", "pHYs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (res_x != NULL)
 | 
					      if (res_x != NULL)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         *res_x = info_ptr->x_pixels_per_unit;
 | 
					         *res_x = info_ptr->x_pixels_per_unit;
 | 
				
			||||||
         retval |= PNG_INFO_pHYs;
 | 
					         retval |= PNG_INFO_pHYs;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (res_y != NULL)
 | 
					      if (res_y != NULL)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         *res_y = info_ptr->y_pixels_per_unit;
 | 
					         *res_y = info_ptr->y_pixels_per_unit;
 | 
				
			||||||
         retval |= PNG_INFO_pHYs;
 | 
					         retval |= PNG_INFO_pHYs;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (unit_type != NULL)
 | 
					      if (unit_type != NULL)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         *unit_type = (int)info_ptr->phys_unit_type;
 | 
					         *unit_type = (int)info_ptr->phys_unit_type;
 | 
				
			||||||
@ -730,10 +764,13 @@ png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
 | 
				
			|||||||
      png_debug1(1, "in %s retrieval function",
 | 
					      png_debug1(1, "in %s retrieval function",
 | 
				
			||||||
         (png_ptr->chunk_name[0] == '\0' ? "text"
 | 
					         (png_ptr->chunk_name[0] == '\0' ? "text"
 | 
				
			||||||
             : (png_const_charp)png_ptr->chunk_name));
 | 
					             : (png_const_charp)png_ptr->chunk_name));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (text_ptr != NULL)
 | 
					      if (text_ptr != NULL)
 | 
				
			||||||
         *text_ptr = info_ptr->text;
 | 
					         *text_ptr = info_ptr->text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (num_text != NULL)
 | 
					      if (num_text != NULL)
 | 
				
			||||||
         *num_text = info_ptr->num_text;
 | 
					         *num_text = info_ptr->num_text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return ((png_uint_32)info_ptr->num_text);
 | 
					      return ((png_uint_32)info_ptr->num_text);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   if (num_text != NULL)
 | 
					   if (num_text != NULL)
 | 
				
			||||||
@ -773,6 +810,7 @@ png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
             *trans = info_ptr->trans;
 | 
					             *trans = info_ptr->trans;
 | 
				
			||||||
             retval |= PNG_INFO_tRNS;
 | 
					             retval |= PNG_INFO_tRNS;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (trans_values != NULL)
 | 
					          if (trans_values != NULL)
 | 
				
			||||||
             *trans_values = &(info_ptr->trans_values);
 | 
					             *trans_values = &(info_ptr->trans_values);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -783,6 +821,7 @@ png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
             *trans_values = &(info_ptr->trans_values);
 | 
					             *trans_values = &(info_ptr->trans_values);
 | 
				
			||||||
             retval |= PNG_INFO_tRNS;
 | 
					             retval |= PNG_INFO_tRNS;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (trans != NULL)
 | 
					          if (trans != NULL)
 | 
				
			||||||
             *trans = NULL;
 | 
					             *trans = NULL;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -836,47 +875,47 @@ png_get_compression_buffer_size(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
 | 
					#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
 | 
				
			||||||
#ifndef PNG_1_0_X
 | 
					#ifndef PNG_1_0_X
 | 
				
			||||||
/* this function was added to libpng 1.2.0 and should exist by default */
 | 
					/* This function was added to libpng 1.2.0 and should exist by default */
 | 
				
			||||||
png_uint_32 PNGAPI
 | 
					png_uint_32 PNGAPI
 | 
				
			||||||
png_get_asm_flags (png_structp png_ptr)
 | 
					png_get_asm_flags (png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* obsolete, to be removed from libpng-1.4.0 */
 | 
					    /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    return (png_ptr? 0L: 0L);
 | 
					    return (png_ptr? 0L: 0L);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* this function was added to libpng 1.2.0 and should exist by default */
 | 
					/* This function was added to libpng 1.2.0 and should exist by default */
 | 
				
			||||||
png_uint_32 PNGAPI
 | 
					png_uint_32 PNGAPI
 | 
				
			||||||
png_get_asm_flagmask (int flag_select)
 | 
					png_get_asm_flagmask (int flag_select)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* obsolete, to be removed from libpng-1.4.0 */
 | 
					    /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    flag_select=flag_select;
 | 
					    flag_select=flag_select;
 | 
				
			||||||
    return 0L;
 | 
					    return 0L;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* GRR:  could add this:   && defined(PNG_MMX_CODE_SUPPORTED) */
 | 
					    /* GRR:  could add this:   && defined(PNG_MMX_CODE_SUPPORTED) */
 | 
				
			||||||
/* this function was added to libpng 1.2.0 */
 | 
					/* This function was added to libpng 1.2.0 */
 | 
				
			||||||
png_uint_32 PNGAPI
 | 
					png_uint_32 PNGAPI
 | 
				
			||||||
png_get_mmx_flagmask (int flag_select, int *compilerID)
 | 
					png_get_mmx_flagmask (int flag_select, int *compilerID)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* obsolete, to be removed from libpng-1.4.0 */
 | 
					    /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    flag_select=flag_select;
 | 
					    flag_select=flag_select;
 | 
				
			||||||
    *compilerID = -1;   /* unknown (i.e., no asm/MMX code compiled) */
 | 
					    *compilerID = -1;   /* unknown (i.e., no asm/MMX code compiled) */
 | 
				
			||||||
    return 0L;
 | 
					    return 0L;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* this function was added to libpng 1.2.0 */
 | 
					/* This function was added to libpng 1.2.0 */
 | 
				
			||||||
png_byte PNGAPI
 | 
					png_byte PNGAPI
 | 
				
			||||||
png_get_mmx_bitdepth_threshold (png_structp png_ptr)
 | 
					png_get_mmx_bitdepth_threshold (png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* obsolete, to be removed from libpng-1.4.0 */
 | 
					    /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    return (png_ptr? 0: 0);
 | 
					    return (png_ptr? 0: 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* this function was added to libpng 1.2.0 */
 | 
					/* This function was added to libpng 1.2.0 */
 | 
				
			||||||
png_uint_32 PNGAPI
 | 
					png_uint_32 PNGAPI
 | 
				
			||||||
png_get_mmx_rowbytes_threshold (png_structp png_ptr)
 | 
					png_get_mmx_rowbytes_threshold (png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* obsolete, to be removed from libpng-1.4.0 */
 | 
					    /* Obsolete, to be removed from libpng-1.4.0 */
 | 
				
			||||||
    return (png_ptr? 0L: 0L);
 | 
					    return (png_ptr? 0L: 0L);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* ?PNG_1_0_X */
 | 
					#endif /* ?PNG_1_0_X */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										87
									
								
								pngmem.c
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								pngmem.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngmem.c - stub functions for memory allocation
 | 
					/* pngmem.c - stub functions for memory allocation
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.30 [August 15, 2008]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@ -20,7 +20,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Borland DOS special memory handler */
 | 
					/* Borland DOS special memory handler */
 | 
				
			||||||
#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
 | 
					#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
 | 
				
			||||||
/* if you change this, be sure to change the one in png.h also */
 | 
					/* If you change this, be sure to change the one in png.h also */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Allocate memory for a png_struct.  The malloc and memset can be replaced
 | 
					/* Allocate memory for a png_struct.  The malloc and memset can be replaced
 | 
				
			||||||
   by a single call to calloc() if this is thought to improve performance. */
 | 
					   by a single call to calloc() if this is thought to improve performance. */
 | 
				
			||||||
@ -40,11 +40,11 @@ png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
 | 
				
			|||||||
   png_voidp struct_ptr;
 | 
					   png_voidp struct_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (type == PNG_STRUCT_INFO)
 | 
					   if (type == PNG_STRUCT_INFO)
 | 
				
			||||||
     size = png_sizeof(png_info);
 | 
					      size = png_sizeof(png_info);
 | 
				
			||||||
   else if (type == PNG_STRUCT_PNG)
 | 
					   else if (type == PNG_STRUCT_PNG)
 | 
				
			||||||
     size = png_sizeof(png_struct);
 | 
					      size = png_sizeof(png_struct);
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
     return (png_get_copyright(NULL));
 | 
					      return (png_get_copyright(NULL));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_USER_MEM_SUPPORTED
 | 
					#ifdef PNG_USER_MEM_SUPPORTED
 | 
				
			||||||
   if (malloc_fn != NULL)
 | 
					   if (malloc_fn != NULL)
 | 
				
			||||||
@ -56,7 +56,7 @@ png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
#endif /* PNG_USER_MEM_SUPPORTED */
 | 
					#endif /* PNG_USER_MEM_SUPPORTED */
 | 
				
			||||||
      struct_ptr = (png_voidp)farmalloc(size);
 | 
					   struct_ptr = (png_voidp)farmalloc(size);
 | 
				
			||||||
   if (struct_ptr != NULL)
 | 
					   if (struct_ptr != NULL)
 | 
				
			||||||
      png_memset(struct_ptr, 0, size);
 | 
					      png_memset(struct_ptr, 0, size);
 | 
				
			||||||
   return (struct_ptr);
 | 
					   return (struct_ptr);
 | 
				
			||||||
@ -122,9 +122,9 @@ png_malloc(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_USER_MEM_SUPPORTED
 | 
					#ifdef PNG_USER_MEM_SUPPORTED
 | 
				
			||||||
   if (png_ptr->malloc_fn != NULL)
 | 
					   if (png_ptr->malloc_fn != NULL)
 | 
				
			||||||
       ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
 | 
					      ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
       ret = (png_malloc_default(png_ptr, size));
 | 
					      ret = (png_malloc_default(png_ptr, size));
 | 
				
			||||||
   if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
 | 
					   if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
 | 
				
			||||||
       png_error(png_ptr, "Out of memory!");
 | 
					       png_error(png_ptr, "Out of memory!");
 | 
				
			||||||
   return (ret);
 | 
					   return (ret);
 | 
				
			||||||
@ -149,12 +149,12 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (size != (size_t)size)
 | 
					   if (size != (size_t)size)
 | 
				
			||||||
     ret = NULL;
 | 
					      ret = NULL;
 | 
				
			||||||
   else if (size == (png_uint_32)65536L)
 | 
					   else if (size == (png_uint_32)65536L)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (png_ptr->offset_table == NULL)
 | 
					      if (png_ptr->offset_table == NULL)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* try to see if we need to do any of this fancy stuff */
 | 
					         /* Try to see if we need to do any of this fancy stuff */
 | 
				
			||||||
         ret = farmalloc(size);
 | 
					         ret = farmalloc(size);
 | 
				
			||||||
         if (ret == NULL || ((png_size_t)ret & 0xffff))
 | 
					         if (ret == NULL || ((png_size_t)ret & 0xffff))
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
@ -269,10 +269,10 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
   return (ret);
 | 
					   return (ret);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* free a pointer allocated by png_malloc().  In the default
 | 
					/* Free a pointer allocated by png_malloc().  In the default
 | 
				
			||||||
   configuration, png_ptr is not used, but is passed in case it
 | 
					 * configuration, png_ptr is not used, but is passed in case it
 | 
				
			||||||
   is needed.  If ptr is NULL, return without taking any action. */
 | 
					 * is needed.  If ptr is NULL, return without taking any action.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_free(png_structp png_ptr, png_voidp ptr)
 | 
					png_free(png_structp png_ptr, png_voidp ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -285,7 +285,8 @@ png_free(png_structp png_ptr, png_voidp ptr)
 | 
				
			|||||||
      (*(png_ptr->free_fn))(png_ptr, ptr);
 | 
					      (*(png_ptr->free_fn))(png_ptr, ptr);
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else png_free_default(png_ptr, ptr);
 | 
					   else
 | 
				
			||||||
 | 
					      png_free_default(png_ptr, ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
@ -293,7 +294,8 @@ png_free_default(png_structp png_ptr, png_voidp ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
#endif /* PNG_USER_MEM_SUPPORTED */
 | 
					#endif /* PNG_USER_MEM_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL || ptr == NULL) return;
 | 
					   if (png_ptr == NULL || ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr->offset_table != NULL)
 | 
					   if (png_ptr->offset_table != NULL)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -420,10 +422,11 @@ png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Allocate memory.  For reasonable files, size should never exceed
 | 
					/* Allocate memory.  For reasonable files, size should never exceed
 | 
				
			||||||
   64K.  However, zlib may allocate more then 64K if you don't tell
 | 
					 * 64K.  However, zlib may allocate more then 64K if you don't tell
 | 
				
			||||||
   it not to.  See zconf.h and png.h for more information.  zlib does
 | 
					 * it not to.  See zconf.h and png.h for more information.  zlib does
 | 
				
			||||||
   need to allocate exactly 64K, so whatever you call here must
 | 
					 * need to allocate exactly 64K, so whatever you call here must
 | 
				
			||||||
   have the ability to do that. */
 | 
					 * have the ability to do that.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png_voidp PNGAPI
 | 
					png_voidp PNGAPI
 | 
				
			||||||
@ -436,9 +439,9 @@ png_malloc(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
      return (NULL);
 | 
					      return (NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr->malloc_fn != NULL)
 | 
					   if (png_ptr->malloc_fn != NULL)
 | 
				
			||||||
       ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
 | 
					      ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
       ret = (png_malloc_default(png_ptr, size));
 | 
					      ret = (png_malloc_default(png_ptr, size));
 | 
				
			||||||
   if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
 | 
					   if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
 | 
				
			||||||
       png_error(png_ptr, "Out of Memory!");
 | 
					       png_error(png_ptr, "Out of Memory!");
 | 
				
			||||||
   return (ret);
 | 
					   return (ret);
 | 
				
			||||||
@ -465,23 +468,23 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 /* Check for overflow */
 | 
					   /* Check for overflow */
 | 
				
			||||||
#if defined(__TURBOC__) && !defined(__FLAT__)
 | 
					#if defined(__TURBOC__) && !defined(__FLAT__)
 | 
				
			||||||
 if (size != (unsigned long)size)
 | 
					   if (size != (unsigned long)size)
 | 
				
			||||||
   ret = NULL;
 | 
					      ret = NULL;
 | 
				
			||||||
 else
 | 
					   else
 | 
				
			||||||
   ret = farmalloc(size);
 | 
					      ret = farmalloc(size);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
# if defined(_MSC_VER) && defined(MAXSEG_64K)
 | 
					# if defined(_MSC_VER) && defined(MAXSEG_64K)
 | 
				
			||||||
 if (size != (unsigned long)size)
 | 
					   if (size != (unsigned long)size)
 | 
				
			||||||
   ret = NULL;
 | 
					      ret = NULL;
 | 
				
			||||||
 else
 | 
					   else
 | 
				
			||||||
   ret = halloc(size, 1);
 | 
					      ret = halloc(size, 1);
 | 
				
			||||||
# else
 | 
					# else
 | 
				
			||||||
 if (size != (size_t)size)
 | 
					   if (size != (size_t)size)
 | 
				
			||||||
   ret = NULL;
 | 
					      ret = NULL;
 | 
				
			||||||
 else
 | 
					   else
 | 
				
			||||||
   ret = malloc((size_t)size);
 | 
					      ret = malloc((size_t)size);
 | 
				
			||||||
# endif
 | 
					# endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -494,7 +497,8 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Free a pointer allocated by png_malloc().  If ptr is NULL, return
 | 
					/* Free a pointer allocated by png_malloc().  If ptr is NULL, return
 | 
				
			||||||
   without taking any action. */
 | 
					 * without taking any action.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_free(png_structp png_ptr, png_voidp ptr)
 | 
					png_free(png_structp png_ptr, png_voidp ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -507,7 +511,8 @@ png_free(png_structp png_ptr, png_voidp ptr)
 | 
				
			|||||||
      (*(png_ptr->free_fn))(png_ptr, ptr);
 | 
					      (*(png_ptr->free_fn))(png_ptr, ptr);
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else png_free_default(png_ptr, ptr);
 | 
					   else
 | 
				
			||||||
 | 
					      png_free_default(png_ptr, ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_free_default(png_structp png_ptr, png_voidp ptr)
 | 
					png_free_default(png_structp png_ptr, png_voidp ptr)
 | 
				
			||||||
@ -543,7 +548,8 @@ png_malloc_warn(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   png_voidp ptr;
 | 
					   png_voidp ptr;
 | 
				
			||||||
   png_uint_32 save_flags;
 | 
					   png_uint_32 save_flags;
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   save_flags = png_ptr->flags;
 | 
					   save_flags = png_ptr->flags;
 | 
				
			||||||
   png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
 | 
					   png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
 | 
				
			||||||
@ -603,7 +609,8 @@ png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
 | 
				
			|||||||
png_voidp PNGAPI
 | 
					png_voidp PNGAPI
 | 
				
			||||||
png_get_mem_ptr(png_structp png_ptr)
 | 
					png_get_mem_ptr(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
   return ((png_voidp)png_ptr->mem_ptr);
 | 
					   return ((png_voidp)png_ptr->mem_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_USER_MEM_SUPPORTED */
 | 
					#endif /* PNG_USER_MEM_SUPPORTED */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										218
									
								
								pngpread.c
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								pngpread.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngpread.c - read a png file in push mode
 | 
					/* pngpread.c - read a png file in push mode
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.32 [September 18, 2008]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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 @@
 | 
				
			|||||||
#include "png.h"
 | 
					#include "png.h"
 | 
				
			||||||
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
 | 
					#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* push model modes */
 | 
					/* Push model modes */
 | 
				
			||||||
#define PNG_READ_SIG_MODE   0
 | 
					#define PNG_READ_SIG_MODE   0
 | 
				
			||||||
#define PNG_READ_CHUNK_MODE 1
 | 
					#define PNG_READ_CHUNK_MODE 1
 | 
				
			||||||
#define PNG_READ_IDAT_MODE  2
 | 
					#define PNG_READ_IDAT_MODE  2
 | 
				
			||||||
@ -27,7 +27,9 @@ void PNGAPI
 | 
				
			|||||||
png_process_data(png_structp png_ptr, png_infop info_ptr,
 | 
					png_process_data(png_structp png_ptr, png_infop info_ptr,
 | 
				
			||||||
   png_bytep buffer, png_size_t buffer_size)
 | 
					   png_bytep buffer, png_size_t buffer_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL || info_ptr == NULL) return;
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_push_restore_buffer(png_ptr, buffer, buffer_size);
 | 
					   png_push_restore_buffer(png_ptr, buffer, buffer_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   while (png_ptr->buffer_size)
 | 
					   while (png_ptr->buffer_size)
 | 
				
			||||||
@ -42,7 +44,9 @@ png_process_data(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 | 
					png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   switch (png_ptr->process_mode)
 | 
					   switch (png_ptr->process_mode)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      case PNG_READ_SIG_MODE:
 | 
					      case PNG_READ_SIG_MODE:
 | 
				
			||||||
@ -50,22 +54,26 @@ png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_read_sig(png_ptr, info_ptr);
 | 
					         png_push_read_sig(png_ptr, info_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case PNG_READ_CHUNK_MODE:
 | 
					      case PNG_READ_CHUNK_MODE:
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_push_read_chunk(png_ptr, info_ptr);
 | 
					         png_push_read_chunk(png_ptr, info_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case PNG_READ_IDAT_MODE:
 | 
					      case PNG_READ_IDAT_MODE:
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_push_read_IDAT(png_ptr);
 | 
					         png_push_read_IDAT(png_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
					#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
				
			||||||
      case PNG_READ_tEXt_MODE:
 | 
					      case PNG_READ_tEXt_MODE:
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_push_read_tEXt(png_ptr, info_ptr);
 | 
					         png_push_read_tEXt(png_ptr, info_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
				
			||||||
      case PNG_READ_zTXt_MODE:
 | 
					      case PNG_READ_zTXt_MODE:
 | 
				
			||||||
@ -73,6 +81,7 @@ png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_read_zTXt(png_ptr, info_ptr);
 | 
					         png_push_read_zTXt(png_ptr, info_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
				
			||||||
      case PNG_READ_iTXt_MODE:
 | 
					      case PNG_READ_iTXt_MODE:
 | 
				
			||||||
@ -80,12 +89,14 @@ png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_read_iTXt(png_ptr, info_ptr);
 | 
					         png_push_read_iTXt(png_ptr, info_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      case PNG_SKIP_MODE:
 | 
					      case PNG_SKIP_MODE:
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_push_crc_finish(png_ptr);
 | 
					         png_push_crc_finish(png_ptr);
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_ptr->buffer_size = 0;
 | 
					         png_ptr->buffer_size = 0;
 | 
				
			||||||
@ -224,13 +235,16 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   {
 | 
					   {
 | 
				
			||||||
      if (png_ptr->push_length != 13)
 | 
					      if (png_ptr->push_length != 13)
 | 
				
			||||||
         png_error(png_ptr, "Invalid IHDR length");
 | 
					         png_error(png_ptr, "Invalid IHDR length");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
 | 
					      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
 | 
					      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
 | 
				
			||||||
@ -238,11 +252,13 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_ptr->process_mode = PNG_READ_DONE_MODE;
 | 
					      png_ptr->process_mode = PNG_READ_DONE_MODE;
 | 
				
			||||||
      png_push_have_end(png_ptr, info_ptr);
 | 
					      png_push_have_end(png_ptr, info_ptr);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
 | 
					#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
 | 
				
			||||||
   else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
 | 
					   else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -251,20 +267,26 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
					      if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
				
			||||||
         png_ptr->mode |= PNG_HAVE_IDAT;
 | 
					         png_ptr->mode |= PNG_HAVE_IDAT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
 | 
					      if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
 | 
				
			||||||
         png_ptr->mode |= PNG_HAVE_PLTE;
 | 
					         png_ptr->mode |= PNG_HAVE_PLTE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
					      else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
					         if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
				
			||||||
            png_error(png_ptr, "Missing IHDR before IDAT");
 | 
					            png_error(png_ptr, "Missing IHDR before IDAT");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
 | 
					         else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
 | 
				
			||||||
                  !(png_ptr->mode & PNG_HAVE_PLTE))
 | 
					                  !(png_ptr->mode & PNG_HAVE_PLTE))
 | 
				
			||||||
            png_error(png_ptr, "Missing PLTE before IDAT");
 | 
					            png_error(png_ptr, "Missing PLTE before IDAT");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -275,23 +297,26 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* If we reach an IDAT chunk, this means we have read all of the
 | 
					      /* If we reach an IDAT chunk, this means we have read all of the
 | 
				
			||||||
       * header chunks, and we can start reading the image (or if this
 | 
					       * header chunks, and we can start reading the image (or if this
 | 
				
			||||||
       * is called after the image has been read - we have an error).
 | 
					       * is called after the image has been read - we have an error).
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
     if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
					
 | 
				
			||||||
       png_error(png_ptr, "Missing IHDR before IDAT");
 | 
					      if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
				
			||||||
     else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
 | 
					         png_error(png_ptr, "Missing IHDR before IDAT");
 | 
				
			||||||
         !(png_ptr->mode & PNG_HAVE_PLTE))
 | 
					
 | 
				
			||||||
       png_error(png_ptr, "Missing PLTE before IDAT");
 | 
					      else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
 | 
				
			||||||
 | 
					          !(png_ptr->mode & PNG_HAVE_PLTE))
 | 
				
			||||||
 | 
					         png_error(png_ptr, "Missing PLTE before IDAT");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_ptr->mode & PNG_HAVE_IDAT)
 | 
					      if (png_ptr->mode & PNG_HAVE_IDAT)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
 | 
					         if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
 | 
				
			||||||
           if (png_ptr->push_length == 0)
 | 
					            if (png_ptr->push_length == 0)
 | 
				
			||||||
              return;
 | 
					               return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         if (png_ptr->mode & PNG_AFTER_IDAT)
 | 
					         if (png_ptr->mode & PNG_AFTER_IDAT)
 | 
				
			||||||
            png_error(png_ptr, "Too many IDAT's found");
 | 
					            png_error(png_ptr, "Too many IDAT's found");
 | 
				
			||||||
@ -305,6 +330,7 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      png_ptr->zstream.next_out = png_ptr->row_buf;
 | 
					      png_ptr->zstream.next_out = png_ptr->row_buf;
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_gAMA_SUPPORTED)
 | 
					#if defined(PNG_READ_gAMA_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -313,8 +339,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_sBIT_SUPPORTED)
 | 
					#if defined(PNG_READ_sBIT_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
 | 
				
			||||||
@ -324,8 +352,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_cHRM_SUPPORTED)
 | 
					#if defined(PNG_READ_cHRM_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
 | 
				
			||||||
@ -335,8 +365,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_sRGB_SUPPORTED)
 | 
					#if defined(PNG_READ_sRGB_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
 | 
				
			||||||
@ -346,8 +378,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_iCCP_SUPPORTED)
 | 
					#if defined(PNG_READ_iCCP_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
 | 
				
			||||||
@ -357,8 +391,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_sPLT_SUPPORTED)
 | 
					#if defined(PNG_READ_sPLT_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
 | 
				
			||||||
@ -368,8 +404,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_tRNS_SUPPORTED)
 | 
					#if defined(PNG_READ_tRNS_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
 | 
				
			||||||
@ -379,8 +417,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_bKGD_SUPPORTED)
 | 
					#if defined(PNG_READ_bKGD_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
 | 
				
			||||||
@ -390,8 +430,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_hIST_SUPPORTED)
 | 
					#if defined(PNG_READ_hIST_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
 | 
				
			||||||
@ -401,8 +443,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_pHYs_SUPPORTED)
 | 
					#if defined(PNG_READ_pHYs_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
 | 
				
			||||||
@ -412,8 +456,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_oFFs_SUPPORTED)
 | 
					#if defined(PNG_READ_oFFs_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
 | 
				
			||||||
@ -423,9 +469,11 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_pCAL_SUPPORTED)
 | 
					#if defined(PNG_READ_pCAL_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -434,8 +482,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_sCAL_SUPPORTED)
 | 
					#if defined(PNG_READ_sCAL_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
 | 
				
			||||||
@ -445,8 +495,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_tIME_SUPPORTED)
 | 
					#if defined(PNG_READ_tIME_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
 | 
				
			||||||
@ -456,8 +508,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
					#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
 | 
				
			||||||
@ -467,8 +521,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
 | 
				
			||||||
@ -478,8 +534,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
				
			||||||
   else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
 | 
					   else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
 | 
				
			||||||
@ -489,8 +547,10 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         png_push_save_buffer(png_ptr);
 | 
					         png_push_save_buffer(png_ptr);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_push_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
					      png_push_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -565,7 +625,9 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   png_bytep ptr;
 | 
					   png_bytep ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   ptr = buffer;
 | 
					   ptr = buffer;
 | 
				
			||||||
   if (png_ptr->save_buffer_size)
 | 
					   if (png_ptr->save_buffer_size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -589,6 +651,7 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (length < png_ptr->current_buffer_size)
 | 
					      if (length < png_ptr->current_buffer_size)
 | 
				
			||||||
         save_size = length;
 | 
					         save_size = length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         save_size = png_ptr->current_buffer_size;
 | 
					         save_size = png_ptr->current_buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -629,6 +692,7 @@ png_push_save_buffer(png_structp png_ptr)
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
        png_error(png_ptr, "Potential overflow of save_buffer");
 | 
					        png_error(png_ptr, "Potential overflow of save_buffer");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      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(png_ptr,
 | 
					      png_ptr->save_buffer = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
@ -697,7 +761,8 @@ png_push_read_IDAT(png_structp png_ptr)
 | 
				
			|||||||
      if (png_ptr->idat_size < (png_uint_32)png_ptr->save_buffer_size)
 | 
					      if (png_ptr->idat_size < (png_uint_32)png_ptr->save_buffer_size)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         save_size = (png_size_t)png_ptr->idat_size;
 | 
					         save_size = (png_size_t)png_ptr->idat_size;
 | 
				
			||||||
         /* check for overflow */
 | 
					
 | 
				
			||||||
 | 
					         /* Check for overflow */
 | 
				
			||||||
         if ((png_uint_32)save_size != png_ptr->idat_size)
 | 
					         if ((png_uint_32)save_size != png_ptr->idat_size)
 | 
				
			||||||
            png_error(png_ptr, "save_size overflowed in pngpread");
 | 
					            png_error(png_ptr, "save_size overflowed in pngpread");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -705,8 +770,10 @@ png_push_read_IDAT(png_structp png_ptr)
 | 
				
			|||||||
         save_size = png_ptr->save_buffer_size;
 | 
					         save_size = png_ptr->save_buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
 | 
					      png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
 | 
					      if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
 | 
				
			||||||
         png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size);
 | 
					         png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_ptr->idat_size -= save_size;
 | 
					      png_ptr->idat_size -= save_size;
 | 
				
			||||||
      png_ptr->buffer_size -= save_size;
 | 
					      png_ptr->buffer_size -= save_size;
 | 
				
			||||||
      png_ptr->save_buffer_size -= save_size;
 | 
					      png_ptr->save_buffer_size -= save_size;
 | 
				
			||||||
@ -719,7 +786,8 @@ png_push_read_IDAT(png_structp png_ptr)
 | 
				
			|||||||
      if (png_ptr->idat_size < (png_uint_32)png_ptr->current_buffer_size)
 | 
					      if (png_ptr->idat_size < (png_uint_32)png_ptr->current_buffer_size)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         save_size = (png_size_t)png_ptr->idat_size;
 | 
					         save_size = (png_size_t)png_ptr->idat_size;
 | 
				
			||||||
         /* check for overflow */
 | 
					
 | 
				
			||||||
 | 
					         /* Check for overflow */
 | 
				
			||||||
         if ((png_uint_32)save_size != png_ptr->idat_size)
 | 
					         if ((png_uint_32)save_size != png_ptr->idat_size)
 | 
				
			||||||
            png_error(png_ptr, "save_size overflowed in pngpread");
 | 
					            png_error(png_ptr, "save_size overflowed in pngpread");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -769,6 +837,7 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
 | 
				
			|||||||
         {
 | 
					         {
 | 
				
			||||||
            if (png_ptr->zstream.avail_in)
 | 
					            if (png_ptr->zstream.avail_in)
 | 
				
			||||||
               png_error(png_ptr, "Extra compressed data");
 | 
					               png_error(png_ptr, "Extra compressed data");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!(png_ptr->zstream.avail_out))
 | 
					            if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_process_row(png_ptr);
 | 
					               png_push_process_row(png_ptr);
 | 
				
			||||||
@ -780,6 +849,7 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
 | 
				
			|||||||
         }
 | 
					         }
 | 
				
			||||||
         else if (ret == Z_BUF_ERROR)
 | 
					         else if (ret == Z_BUF_ERROR)
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
            png_error(png_ptr, "Decompression Error");
 | 
					            png_error(png_ptr, "Decompression Error");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -801,6 +871,7 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
 | 
				
			|||||||
         png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes;
 | 
					         png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes;
 | 
				
			||||||
         png_ptr->zstream.next_out = png_ptr->row_buf;
 | 
					         png_ptr->zstream.next_out = png_ptr->row_buf;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
@ -829,7 +900,7 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
      png_do_read_transformations(png_ptr);
 | 
					      png_do_read_transformations(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* blow up interlaced rows to full size */
 | 
					   /* Blow up interlaced rows to full size */
 | 
				
			||||||
   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
					   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (png_ptr->pass < 6)
 | 
					      if (png_ptr->pass < 6)
 | 
				
			||||||
@ -847,9 +918,10 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
            for (i = 0; i < 8 && png_ptr->pass == 0; i++)
 | 
					            for (i = 0; i < 8 && png_ptr->pass == 0; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr); /* updates png_ptr->pass */
 | 
					               png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 2) /* pass 1 might be empty */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 2) /* Pass 1 might be empty */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
					               for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
				
			||||||
               {
 | 
					               {
 | 
				
			||||||
@ -857,6 +929,7 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
                  png_read_push_finish_row(png_ptr);
 | 
					                  png_read_push_finish_row(png_ptr);
 | 
				
			||||||
               }
 | 
					               }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (png_ptr->pass == 4 && png_ptr->height <= 4)
 | 
					            if (png_ptr->pass == 4 && png_ptr->height <= 4)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
					               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
				
			||||||
@ -865,13 +938,16 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
                  png_read_push_finish_row(png_ptr);
 | 
					                  png_read_push_finish_row(png_ptr);
 | 
				
			||||||
               }
 | 
					               }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (png_ptr->pass == 6 && png_ptr->height <= 4)
 | 
					            if (png_ptr->pass == 6 && png_ptr->height <= 4)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					                png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
                png_read_push_finish_row(png_ptr);
 | 
					                png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case 1:
 | 
					         case 1:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
@ -880,7 +956,8 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 2) /* skip top 4 generated rows */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 2) /* Skip top 4 generated rows */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
					               for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
				
			||||||
               {
 | 
					               {
 | 
				
			||||||
@ -888,22 +965,27 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
                  png_read_push_finish_row(png_ptr);
 | 
					                  png_read_push_finish_row(png_ptr);
 | 
				
			||||||
               }
 | 
					               }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case 2:
 | 
					         case 2:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
					            for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
					            for (i = 0; i < 4 && png_ptr->pass == 2; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 4) /* pass 3 might be empty */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 4) /* Pass 3 might be empty */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
					               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
				
			||||||
               {
 | 
					               {
 | 
				
			||||||
@ -911,17 +993,21 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
                  png_read_push_finish_row(png_ptr);
 | 
					                  png_read_push_finish_row(png_ptr);
 | 
				
			||||||
               }
 | 
					               }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case 3:
 | 
					         case 3:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 4 && png_ptr->pass == 3; i++)
 | 
					            for (i = 0; i < 4 && png_ptr->pass == 3; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 4) /* skip top two generated rows */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 4) /* Skip top two generated rows */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
					               for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
				
			||||||
               {
 | 
					               {
 | 
				
			||||||
@ -929,49 +1015,61 @@ png_push_process_row(png_structp png_ptr)
 | 
				
			|||||||
                  png_read_push_finish_row(png_ptr);
 | 
					                  png_read_push_finish_row(png_ptr);
 | 
				
			||||||
               }
 | 
					               }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case 4:
 | 
					         case 4:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
					            for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
					            for (i = 0; i < 2 && png_ptr->pass == 4; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 6) /* pass 5 might be empty */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 6) /* Pass 5 might be empty */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case 5:
 | 
					         case 5:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (i = 0; i < 2 && png_ptr->pass == 5; i++)
 | 
					            for (i = 0; i < 2 && png_ptr->pass == 5; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					               png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (png_ptr->pass == 6) /* skip top generated row */
 | 
					
 | 
				
			||||||
 | 
					            if (png_ptr->pass == 6) /* Skip top generated row */
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					               png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
               png_read_push_finish_row(png_ptr);
 | 
					               png_read_push_finish_row(png_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
         case 6:
 | 
					         case 6:
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
					            png_push_have_row(png_ptr, png_ptr->row_buf + 1);
 | 
				
			||||||
            png_read_push_finish_row(png_ptr);
 | 
					            png_read_push_finish_row(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (png_ptr->pass != 6)
 | 
					            if (png_ptr->pass != 6)
 | 
				
			||||||
               break;
 | 
					               break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            png_push_have_row(png_ptr, png_bytep_NULL);
 | 
					            png_push_have_row(png_ptr, png_bytep_NULL);
 | 
				
			||||||
            png_read_push_finish_row(png_ptr);
 | 
					            png_read_push_finish_row(png_ptr);
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
@ -989,18 +1087,18 @@ void /* PRIVATE */
 | 
				
			|||||||
png_read_push_finish_row(png_structp png_ptr)
 | 
					png_read_push_finish_row(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block in the y direction */
 | 
					   /* Start of interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
 | 
					   PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block in the y direction */
 | 
					   /* Offset to next interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
 | 
					   PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Height of interlace block.  This is not currently used - if you need
 | 
					   /* Height of interlace block.  This is not currently used - if you need
 | 
				
			||||||
@ -1013,6 +1111,7 @@ png_read_push_finish_row(png_structp png_ptr)
 | 
				
			|||||||
   if (png_ptr->row_number < png_ptr->num_rows)
 | 
					   if (png_ptr->row_number < png_ptr->num_rows)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->interlaced)
 | 
					   if (png_ptr->interlaced)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_ptr->row_number = 0;
 | 
					      png_ptr->row_number = 0;
 | 
				
			||||||
@ -1028,6 +1127,7 @@ png_read_push_finish_row(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
         if (png_ptr->pass > 7)
 | 
					         if (png_ptr->pass > 7)
 | 
				
			||||||
            png_ptr->pass--;
 | 
					            png_ptr->pass--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         if (png_ptr->pass >= 7)
 | 
					         if (png_ptr->pass >= 7)
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1049,6 +1149,7 @@ png_read_push_finish_row(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0);
 | 
					      } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					#endif /* PNG_READ_INTERLACING_SUPPORTED */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
					#if defined(PNG_READ_tEXt_SUPPORTED)
 | 
				
			||||||
@ -1059,7 +1160,7 @@ png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
					   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_error(png_ptr, "Out of place tEXt");
 | 
					         png_error(png_ptr, "Out of place tEXt");
 | 
				
			||||||
         info_ptr = info_ptr; /* to quiet some compiler warnings */
 | 
					         info_ptr = info_ptr; /* To quiet some compiler warnings */
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_MAX_MALLOC_64K
 | 
					#ifdef PNG_MAX_MALLOC_64K
 | 
				
			||||||
@ -1091,8 +1192,10 @@ png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (png_ptr->buffer_size < png_ptr->current_text_left)
 | 
					      if (png_ptr->buffer_size < png_ptr->current_text_left)
 | 
				
			||||||
         text_size = png_ptr->buffer_size;
 | 
					         text_size = png_ptr->buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         text_size = png_ptr->current_text_left;
 | 
					         text_size = png_ptr->current_text_left;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
					      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
				
			||||||
      png_ptr->current_text_left -= text_size;
 | 
					      png_ptr->current_text_left -= text_size;
 | 
				
			||||||
      png_ptr->current_text_ptr += text_size;
 | 
					      png_ptr->current_text_ptr += text_size;
 | 
				
			||||||
@ -1120,7 +1223,7 @@ png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      key = png_ptr->current_text;
 | 
					      key = png_ptr->current_text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for (text = key; *text; text++)
 | 
					      for (text = key; *text; text++)
 | 
				
			||||||
         /* empty loop */ ;
 | 
					         /* Empty loop */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (text < key + png_ptr->current_text_size)
 | 
					      if (text < key + png_ptr->current_text_size)
 | 
				
			||||||
         text++;
 | 
					         text++;
 | 
				
			||||||
@ -1155,7 +1258,7 @@ png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
					   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_error(png_ptr, "Out of place zTXt");
 | 
					         png_error(png_ptr, "Out of place zTXt");
 | 
				
			||||||
         info_ptr = info_ptr; /* to quiet some compiler warnings */
 | 
					         info_ptr = info_ptr; /* To quiet some compiler warnings */
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_MAX_MALLOC_64K
 | 
					#ifdef PNG_MAX_MALLOC_64K
 | 
				
			||||||
@ -1189,8 +1292,10 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left)
 | 
					      if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left)
 | 
				
			||||||
         text_size = png_ptr->buffer_size;
 | 
					         text_size = png_ptr->buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         text_size = png_ptr->current_text_left;
 | 
					         text_size = png_ptr->current_text_left;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
					      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
				
			||||||
      png_ptr->current_text_left -= text_size;
 | 
					      png_ptr->current_text_left -= text_size;
 | 
				
			||||||
      png_ptr->current_text_ptr += text_size;
 | 
					      png_ptr->current_text_ptr += text_size;
 | 
				
			||||||
@ -1214,7 +1319,7 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      key = png_ptr->current_text;
 | 
					      key = png_ptr->current_text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for (text = key; *text; text++)
 | 
					      for (text = key; *text; text++)
 | 
				
			||||||
         /* empty loop */ ;
 | 
					         /* Empty loop */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* zTXt can't have zero text */
 | 
					      /* zTXt can't have zero text */
 | 
				
			||||||
      if (text >= key + png_ptr->current_text_size)
 | 
					      if (text >= key + png_ptr->current_text_size)
 | 
				
			||||||
@ -1226,7 +1331,7 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      text++;
 | 
					      text++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (*text != PNG_TEXT_COMPRESSION_zTXt) /* check compression byte */
 | 
					      if (*text != PNG_TEXT_COMPRESSION_zTXt) /* Check compression byte */
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_ptr->current_text = NULL;
 | 
					         png_ptr->current_text = NULL;
 | 
				
			||||||
         png_free(png_ptr, key);
 | 
					         png_free(png_ptr, key);
 | 
				
			||||||
@ -1265,11 +1370,15 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
               text = (png_charp)png_malloc(png_ptr,
 | 
					               text = (png_charp)png_malloc(png_ptr,
 | 
				
			||||||
                     (png_uint_32)(png_ptr->zbuf_size
 | 
					                     (png_uint_32)(png_ptr->zbuf_size
 | 
				
			||||||
                     - png_ptr->zstream.avail_out + key_size + 1));
 | 
					                     - png_ptr->zstream.avail_out + key_size + 1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               png_memcpy(text + key_size, png_ptr->zbuf,
 | 
					               png_memcpy(text + key_size, png_ptr->zbuf,
 | 
				
			||||||
                  png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
					                  png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               png_memcpy(text, key, key_size);
 | 
					               png_memcpy(text, key, key_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               text_size = key_size + png_ptr->zbuf_size -
 | 
					               text_size = key_size + png_ptr->zbuf_size -
 | 
				
			||||||
                  png_ptr->zstream.avail_out;
 | 
					                  png_ptr->zstream.avail_out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               *(text + text_size) = '\0';
 | 
					               *(text + text_size) = '\0';
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
@ -1280,10 +1389,13 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
               text = (png_charp)png_malloc(png_ptr, text_size +
 | 
					               text = (png_charp)png_malloc(png_ptr, text_size +
 | 
				
			||||||
                  (png_uint_32)(png_ptr->zbuf_size 
 | 
					                  (png_uint_32)(png_ptr->zbuf_size 
 | 
				
			||||||
                  - png_ptr->zstream.avail_out + 1));
 | 
					                  - png_ptr->zstream.avail_out + 1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               png_memcpy(text, tmp, text_size);
 | 
					               png_memcpy(text, tmp, text_size);
 | 
				
			||||||
               png_free(png_ptr, tmp);
 | 
					               png_free(png_ptr, tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               png_memcpy(text + text_size, png_ptr->zbuf,
 | 
					               png_memcpy(text + text_size, png_ptr->zbuf,
 | 
				
			||||||
                  png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
					                  png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out;
 | 
					               text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out;
 | 
				
			||||||
               *(text + text_size) = '\0';
 | 
					               *(text + text_size) = '\0';
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -1347,7 +1459,7 @@ png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
					   if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_error(png_ptr, "Out of place iTXt");
 | 
					         png_error(png_ptr, "Out of place iTXt");
 | 
				
			||||||
         info_ptr = info_ptr; /* to quiet some compiler warnings */
 | 
					         info_ptr = info_ptr; /* To quiet some compiler warnings */
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_MAX_MALLOC_64K
 | 
					#ifdef PNG_MAX_MALLOC_64K
 | 
				
			||||||
@ -1380,8 +1492,10 @@ png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (png_ptr->buffer_size < png_ptr->current_text_left)
 | 
					      if (png_ptr->buffer_size < png_ptr->current_text_left)
 | 
				
			||||||
         text_size = png_ptr->buffer_size;
 | 
					         text_size = png_ptr->buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         text_size = png_ptr->current_text_left;
 | 
					         text_size = png_ptr->current_text_left;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
					      png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size);
 | 
				
			||||||
      png_ptr->current_text_left -= text_size;
 | 
					      png_ptr->current_text_left -= text_size;
 | 
				
			||||||
      png_ptr->current_text_ptr += text_size;
 | 
					      png_ptr->current_text_ptr += text_size;
 | 
				
			||||||
@ -1412,23 +1526,25 @@ png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      key = png_ptr->current_text;
 | 
					      key = png_ptr->current_text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for (lang = key; *lang; lang++)
 | 
					      for (lang = key; *lang; lang++)
 | 
				
			||||||
         /* empty loop */ ;
 | 
					         /* Empty loop */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (lang < key + png_ptr->current_text_size - 3)
 | 
					      if (lang < key + png_ptr->current_text_size - 3)
 | 
				
			||||||
         lang++;
 | 
					         lang++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      comp_flag = *lang++;
 | 
					      comp_flag = *lang++;
 | 
				
			||||||
      lang++;     /* skip comp_type, always zero */
 | 
					      lang++;     /* Skip comp_type, always zero */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for (lang_key = lang; *lang_key; lang_key++)
 | 
					      for (lang_key = lang; *lang_key; lang_key++)
 | 
				
			||||||
         /* empty loop */ ;
 | 
					         /* Empty loop */ ;
 | 
				
			||||||
      lang_key++;        /* skip NUL separator */
 | 
					
 | 
				
			||||||
 | 
					      lang_key++;        /* Skip NUL separator */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      text=lang_key;
 | 
					      text=lang_key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (lang_key < key + png_ptr->current_text_size - 1)
 | 
					      if (lang_key < key + png_ptr->current_text_size - 1)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        for (; *text; text++)
 | 
					        for (; *text; text++)
 | 
				
			||||||
           /* empty loop */ ;
 | 
					           /* Empty loop */ ;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (text < key + png_ptr->current_text_size)
 | 
					      if (text < key + png_ptr->current_text_size)
 | 
				
			||||||
@ -1436,6 +1552,7 @@ png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      text_ptr = (png_textp)png_malloc(png_ptr,
 | 
					      text_ptr = (png_textp)png_malloc(png_ptr,
 | 
				
			||||||
         (png_uint_32)png_sizeof(png_text));
 | 
					         (png_uint_32)png_sizeof(png_text));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      text_ptr->compression = comp_flag + 2;
 | 
					      text_ptr->compression = comp_flag + 2;
 | 
				
			||||||
      text_ptr->key = key;
 | 
					      text_ptr->key = key;
 | 
				
			||||||
      text_ptr->lang = lang;
 | 
					      text_ptr->lang = lang;
 | 
				
			||||||
@ -1477,7 +1594,7 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
         png_chunk_error(png_ptr, "unknown critical chunk");
 | 
					         png_chunk_error(png_ptr, "unknown critical chunk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      info_ptr = info_ptr; /* to quiet some compiler warnings */
 | 
					      info_ptr = info_ptr; /* To quiet some compiler warnings */
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
@ -1498,23 +1615,28 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
        = '\0';
 | 
					        = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_ptr->unknown_chunk.size = (png_size_t)length;
 | 
					      png_ptr->unknown_chunk.size = (png_size_t)length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (length == 0)
 | 
					      if (length == 0)
 | 
				
			||||||
         png_ptr->unknown_chunk.data = NULL;
 | 
					         png_ptr->unknown_chunk.data = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr,
 | 
					         png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
       (png_uint_32)length);
 | 
					       (png_uint_32)length);
 | 
				
			||||||
         png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
 | 
					         png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
				
			||||||
      if (png_ptr->read_user_chunk_fn != NULL)
 | 
					      if (png_ptr->read_user_chunk_fn != NULL)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* callback to user unknown chunk handler */
 | 
					         /* Callback to user unknown chunk handler */
 | 
				
			||||||
         int ret;
 | 
					         int ret;
 | 
				
			||||||
         ret = (*(png_ptr->read_user_chunk_fn))
 | 
					         ret = (*(png_ptr->read_user_chunk_fn))
 | 
				
			||||||
           (png_ptr, &png_ptr->unknown_chunk);
 | 
					           (png_ptr, &png_ptr->unknown_chunk);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         if (ret < 0)
 | 
					         if (ret < 0)
 | 
				
			||||||
            png_chunk_error(png_ptr, "error in user chunk");
 | 
					            png_chunk_error(png_ptr, "error in user chunk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         if (ret == 0)
 | 
					         if (ret == 0)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            if (!(png_ptr->chunk_name[0] & 0x20))
 | 
					            if (!(png_ptr->chunk_name[0] & 0x20))
 | 
				
			||||||
@ -1525,12 +1647,14 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
 | 
				
			|||||||
               &png_ptr->unknown_chunk, 1);
 | 
					               &png_ptr->unknown_chunk, 1);
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
 | 
					        png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
 | 
				
			||||||
      png_free(png_ptr, png_ptr->unknown_chunk.data);
 | 
					      png_free(png_ptr, png_ptr->unknown_chunk.data);
 | 
				
			||||||
      png_ptr->unknown_chunk.data = NULL;
 | 
					      png_ptr->unknown_chunk.data = NULL;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      skip=length;
 | 
					      skip=length;
 | 
				
			||||||
@ -1567,7 +1691,9 @@ png_progressive_combine_row (png_structp png_ptr,
 | 
				
			|||||||
   PNG_CONST int FARDATA png_pass_dsp_mask[7] =
 | 
					   PNG_CONST int FARDATA png_pass_dsp_mask[7] =
 | 
				
			||||||
      {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
 | 
					      {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (new_row != NULL)    /* new_row must == png_ptr->row_buf here. */
 | 
					   if (new_row != NULL)    /* new_row must == png_ptr->row_buf here. */
 | 
				
			||||||
      png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
 | 
					      png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1577,7 +1703,9 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
 | 
				
			|||||||
   png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
 | 
					   png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
 | 
				
			||||||
   png_progressive_end_ptr end_fn)
 | 
					   png_progressive_end_ptr end_fn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->info_fn = info_fn;
 | 
					   png_ptr->info_fn = info_fn;
 | 
				
			||||||
   png_ptr->row_fn = row_fn;
 | 
					   png_ptr->row_fn = row_fn;
 | 
				
			||||||
   png_ptr->end_fn = end_fn;
 | 
					   png_ptr->end_fn = end_fn;
 | 
				
			||||||
@ -1588,7 +1716,9 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
 | 
				
			|||||||
png_voidp PNGAPI
 | 
					png_voidp PNGAPI
 | 
				
			||||||
png_get_progressive_ptr(png_structp png_ptr)
 | 
					png_get_progressive_ptr(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return png_ptr->io_ptr;
 | 
					   return png_ptr->io_ptr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
 | 
					#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										105
									
								
								pngread.c
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								pngread.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngread.c - read a PNG file
 | 
					/* pngread.c - read a PNG file
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.35 [February 14, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -57,7 +57,7 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
 | 
				
			|||||||
   if (png_ptr == NULL)
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
      return (NULL);
 | 
					      return (NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* added at libpng-1.2.6 */
 | 
					   /* Added at libpng-1.2.6 */
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
					   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
				
			||||||
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
					   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
				
			||||||
@ -137,7 +137,7 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
 | 
				
			|||||||
     }
 | 
					     }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize zbuf - compression buffer */
 | 
					   /* Initialize zbuf - compression buffer */
 | 
				
			||||||
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
					   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
				
			||||||
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
					   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
     (png_uint_32)png_ptr->zbuf_size);
 | 
					     (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -192,7 +192,8 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
   png_size_t png_struct_size, png_size_t png_info_size)
 | 
					   png_size_t png_struct_size, png_size_t png_info_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* We only come here via pre-1.0.12-compiled applications */
 | 
					   /* We only come here via pre-1.0.12-compiled applications */
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
 | 
					#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
 | 
				
			||||||
   if (png_sizeof(png_struct) > png_struct_size ||
 | 
					   if (png_sizeof(png_struct) > png_struct_size ||
 | 
				
			||||||
      png_sizeof(png_info) > png_info_size)
 | 
					      png_sizeof(png_info) > png_info_size)
 | 
				
			||||||
@ -246,7 +247,8 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   png_structp png_ptr=*ptr_ptr;
 | 
					   png_structp png_ptr=*ptr_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -266,7 +268,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
   png_debug(1, "in png_read_init_3");
 | 
					   png_debug(1, "in png_read_init_3");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   /* save jump buffer and error functions */
 | 
					   /* Save jump buffer and error functions */
 | 
				
			||||||
   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
					   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -277,21 +279,21 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
      png_ptr = *ptr_ptr;
 | 
					      png_ptr = *ptr_ptr;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* reset all variables to 0 */
 | 
					   /* Reset all variables to 0 */
 | 
				
			||||||
   png_memset(png_ptr, 0, png_sizeof(png_struct));
 | 
					   png_memset(png_ptr, 0, png_sizeof(png_struct));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   /* restore jump buffer */
 | 
					   /* Restore jump buffer */
 | 
				
			||||||
   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
 | 
					   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* added at libpng-1.2.6 */
 | 
					   /* Added at libpng-1.2.6 */
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
					   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
				
			||||||
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
					   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize zbuf - compression buffer */
 | 
					   /* Initialize zbuf - compression buffer */
 | 
				
			||||||
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
					   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
				
			||||||
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
					   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
     (png_uint_32)png_ptr->zbuf_size);
 | 
					     (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -326,7 +328,8 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_read_info(png_structp png_ptr, png_infop info_ptr)
 | 
					png_read_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL || info_ptr == NULL) return;
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_debug(1, "in png_read_info");
 | 
					   png_debug(1, "in png_read_info");
 | 
				
			||||||
   /* If we haven't checked all of the PNG signature bytes, do so now. */
 | 
					   /* If we haven't checked all of the PNG signature bytes, do so now. */
 | 
				
			||||||
   if (png_ptr->sig_bytes < 8)
 | 
					   if (png_ptr->sig_bytes < 8)
 | 
				
			||||||
@ -529,12 +532,13 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
 | 
					#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* optional call to update the users info_ptr structure */
 | 
					/* Optional call to update the users info_ptr structure */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_read_update_info(png_structp png_ptr, png_infop info_ptr)
 | 
					png_read_update_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_read_update_info");
 | 
					   png_debug(1, "in png_read_update_info");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
					   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
				
			||||||
      png_read_start_row(png_ptr);
 | 
					      png_read_start_row(png_ptr);
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
@ -553,7 +557,8 @@ void PNGAPI
 | 
				
			|||||||
png_start_read_image(png_structp png_ptr)
 | 
					png_start_read_image(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_start_read_image");
 | 
					   png_debug(1, "in png_start_read_image");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
					   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
				
			||||||
      png_read_start_row(png_ptr);
 | 
					      png_read_start_row(png_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -570,14 +575,15 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
 | 
				
			|||||||
   PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
 | 
					   PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   int ret;
 | 
					   int ret;
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_debug2(1, "in png_read_row (row %lu, pass %d)",
 | 
					   png_debug2(1, "in png_read_row (row %lu, pass %d)",
 | 
				
			||||||
      png_ptr->row_number, png_ptr->pass);
 | 
					      png_ptr->row_number, png_ptr->pass);
 | 
				
			||||||
   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
					   if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
 | 
				
			||||||
      png_read_start_row(png_ptr);
 | 
					      png_read_start_row(png_ptr);
 | 
				
			||||||
   if (png_ptr->row_number == 0 && png_ptr->pass == 0)
 | 
					   if (png_ptr->row_number == 0 && png_ptr->pass == 0)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
   /* check for transforms that have been set but were defined out */
 | 
					   /* Check for transforms that have been set but were defined out */
 | 
				
			||||||
#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_INVERT_MONO)
 | 
					   if (png_ptr->transformations & PNG_INVERT_MONO)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined.");
 | 
					      png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined.");
 | 
				
			||||||
@ -609,7 +615,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* if interlaced and we do not need a new row, combine row and return */
 | 
					   /* If interlaced and we do not need a new row, combine row and return */
 | 
				
			||||||
   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
					   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      switch (png_ptr->pass)
 | 
					      switch (png_ptr->pass)
 | 
				
			||||||
@ -756,15 +762,15 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
 | 
				
			|||||||
      png_do_read_transformations(png_ptr);
 | 
					      png_do_read_transformations(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_READ_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* blow up interlaced rows to full size */
 | 
					   /* Blow up interlaced rows to full size */
 | 
				
			||||||
   if (png_ptr->interlaced &&
 | 
					   if (png_ptr->interlaced &&
 | 
				
			||||||
      (png_ptr->transformations & PNG_INTERLACE))
 | 
					      (png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (png_ptr->pass < 6)
 | 
					      if (png_ptr->pass < 6)
 | 
				
			||||||
/*       old interface (pre-1.0.9):
 | 
					         /* Old interface (pre-1.0.9):
 | 
				
			||||||
         png_do_read_interlace(&(png_ptr->row_info),
 | 
					          * png_do_read_interlace(&(png_ptr->row_info),
 | 
				
			||||||
            png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
 | 
					          *    png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
 | 
				
			||||||
 */
 | 
					          */
 | 
				
			||||||
         png_do_read_interlace(png_ptr);
 | 
					         png_do_read_interlace(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (dsp_row != NULL)
 | 
					      if (dsp_row != NULL)
 | 
				
			||||||
@ -823,7 +829,8 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
 | 
				
			|||||||
   png_bytepp dp;
 | 
					   png_bytepp dp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_read_rows");
 | 
					   png_debug(1, "in png_read_rows");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   rp = row;
 | 
					   rp = row;
 | 
				
			||||||
   dp = display_row;
 | 
					   dp = display_row;
 | 
				
			||||||
   if (rp != NULL && dp != NULL)
 | 
					   if (rp != NULL && dp != NULL)
 | 
				
			||||||
@ -872,7 +879,8 @@ png_read_image(png_structp png_ptr, png_bytepp image)
 | 
				
			|||||||
   png_bytepp rp;
 | 
					   png_bytepp rp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_read_image");
 | 
					   png_debug(1, "in png_read_image");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
				
			||||||
   pass = png_set_interlace_handling(png_ptr);
 | 
					   pass = png_set_interlace_handling(png_ptr);
 | 
				
			||||||
@ -908,7 +916,8 @@ void PNGAPI
 | 
				
			|||||||
png_read_end(png_structp png_ptr, png_infop info_ptr)
 | 
					png_read_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_read_end");
 | 
					   png_debug(1, "in png_read_end");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
 | 
					   png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
@ -1075,7 +1084,7 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
 | 
					#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* free all memory used by the read */
 | 
					/* Free all memory used by the read */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
 | 
					png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
 | 
				
			||||||
   png_infopp end_info_ptr_ptr)
 | 
					   png_infopp end_info_ptr_ptr)
 | 
				
			||||||
@ -1147,7 +1156,7 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* free all memory used by the read (old method) */
 | 
					/* Free all memory used by the read (old method) */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr)
 | 
					png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1296,7 +1305,8 @@ png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr
 | 
				
			|||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
 | 
					png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->read_row_fn = read_row_fn;
 | 
					   png_ptr->read_row_fn = read_row_fn;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1310,9 +1320,10 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   int row;
 | 
					   int row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
 | 
				
			||||||
   /* invert the alpha channel from opacity to transparency
 | 
					   /* Invert the alpha channel from opacity to transparency
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
 | 
					   if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
 | 
				
			||||||
       png_set_invert_alpha(png_ptr);
 | 
					       png_set_invert_alpha(png_ptr);
 | 
				
			||||||
@ -1328,10 +1339,10 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   /* -------------- image transformations start here ------------------- */
 | 
					   /* -------------- image transformations start here ------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_16_TO_8_SUPPORTED)
 | 
					#if defined(PNG_READ_16_TO_8_SUPPORTED)
 | 
				
			||||||
   /* tell libpng to strip 16 bit/color files down to 8 bits per color
 | 
					   /* Tell libpng to strip 16 bit/color files down to 8 bits per color.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_STRIP_16)
 | 
					   if (transforms & PNG_TRANSFORM_STRIP_16)
 | 
				
			||||||
       png_set_strip_16(png_ptr);
 | 
					      png_set_strip_16(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
 | 
				
			||||||
@ -1339,7 +1350,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    * the background (not recommended).
 | 
					    * the background (not recommended).
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_STRIP_ALPHA)
 | 
					   if (transforms & PNG_TRANSFORM_STRIP_ALPHA)
 | 
				
			||||||
       png_set_strip_alpha(png_ptr);
 | 
					      png_set_strip_alpha(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
 | 
					#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
 | 
				
			||||||
@ -1347,7 +1358,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    * byte into separate bytes (useful for paletted and grayscale images).
 | 
					    * byte into separate bytes (useful for paletted and grayscale images).
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_PACKING)
 | 
					   if (transforms & PNG_TRANSFORM_PACKING)
 | 
				
			||||||
       png_set_packing(png_ptr);
 | 
					      png_set_packing(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
					#if defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
				
			||||||
@ -1355,7 +1366,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    * (not useful if you are using png_set_packing).
 | 
					    * (not useful if you are using png_set_packing).
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_PACKSWAP)
 | 
					   if (transforms & PNG_TRANSFORM_PACKSWAP)
 | 
				
			||||||
       png_set_packswap(png_ptr);
 | 
					      png_set_packswap(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_EXPAND_SUPPORTED)
 | 
					#if defined(PNG_READ_EXPAND_SUPPORTED)
 | 
				
			||||||
@ -1365,9 +1376,9 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    * channels so the data will be available as RGBA quartets.
 | 
					    * channels so the data will be available as RGBA quartets.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_EXPAND)
 | 
					   if (transforms & PNG_TRANSFORM_EXPAND)
 | 
				
			||||||
       if ((png_ptr->bit_depth < 8) ||
 | 
					      if ((png_ptr->bit_depth < 8) ||
 | 
				
			||||||
           (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
 | 
					          (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
 | 
				
			||||||
           (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
 | 
					          (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
 | 
				
			||||||
         png_set_expand(png_ptr);
 | 
					         png_set_expand(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1375,10 +1386,10 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_INVERT_SUPPORTED)
 | 
					#if defined(PNG_READ_INVERT_SUPPORTED)
 | 
				
			||||||
   /* invert monochrome files to have 0 as white and 1 as black
 | 
					   /* Invert monochrome files to have 0 as white and 1 as black
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_INVERT_MONO)
 | 
					   if (transforms & PNG_TRANSFORM_INVERT_MONO)
 | 
				
			||||||
       png_set_invert_mono(png_ptr);
 | 
					      png_set_invert_mono(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SHIFT_SUPPORTED)
 | 
					#if defined(PNG_READ_SHIFT_SUPPORTED)
 | 
				
			||||||
@ -1397,24 +1408,24 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_BGR_SUPPORTED)
 | 
					#if defined(PNG_READ_BGR_SUPPORTED)
 | 
				
			||||||
   /* flip the RGB pixels to BGR (or RGBA to BGRA)
 | 
					   /* Flip the RGB pixels to BGR (or RGBA to BGRA)
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_BGR)
 | 
					   if (transforms & PNG_TRANSFORM_BGR)
 | 
				
			||||||
       png_set_bgr(png_ptr);
 | 
					      png_set_bgr(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
 | 
				
			||||||
   /* swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR)
 | 
					   /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR)
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
 | 
					   if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
 | 
				
			||||||
       png_set_swap_alpha(png_ptr);
 | 
					       png_set_swap_alpha(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SWAP_SUPPORTED)
 | 
					#if defined(PNG_READ_SWAP_SUPPORTED)
 | 
				
			||||||
   /* swap bytes of 16 bit files to least significant byte first
 | 
					   /* Swap bytes of 16 bit files to least significant byte first
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
 | 
					   if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
 | 
				
			||||||
       png_set_swap(png_ptr);
 | 
					      png_set_swap(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* We don't handle adding filler bytes */
 | 
					   /* We don't handle adding filler bytes */
 | 
				
			||||||
@ -1447,10 +1458,10 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   png_read_image(png_ptr, info_ptr->row_pointers);
 | 
					   png_read_image(png_ptr, info_ptr->row_pointers);
 | 
				
			||||||
   info_ptr->valid |= PNG_INFO_IDAT;
 | 
					   info_ptr->valid |= PNG_INFO_IDAT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
 | 
					   /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */
 | 
				
			||||||
   png_read_end(png_ptr, info_ptr);
 | 
					   png_read_end(png_ptr, info_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   transforms = transforms; /* quiet compiler warnings */
 | 
					   transforms = transforms; /* Quiet compiler warnings */
 | 
				
			||||||
   params = params;
 | 
					   params = params;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								pngrio.c
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								pngrio.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngrio.c - functions for data input
 | 
					/* pngrio.c - functions for data input
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -20,10 +20,11 @@
 | 
				
			|||||||
#if defined(PNG_READ_SUPPORTED)
 | 
					#if defined(PNG_READ_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Read the data from whatever input you are using.  The default routine
 | 
					/* Read the data from whatever input you are using.  The default routine
 | 
				
			||||||
   reads from a file pointer.  Note that this routine sometimes gets called
 | 
					 * reads from a file pointer.  Note that this routine sometimes gets called
 | 
				
			||||||
   with very small lengths, so you should implement some kind of simple
 | 
					 * with very small lengths, so you should implement some kind of simple
 | 
				
			||||||
   buffering if you are using unbuffered reads.  This should never be asked
 | 
					 * buffering if you are using unbuffered reads.  This should never be asked
 | 
				
			||||||
   to read more then 64K on a 16 bit machine. */
 | 
					 * to read more then 64K on a 16 bit machine.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
					png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -36,16 +37,18 @@ png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_NO_STDIO)
 | 
					#if !defined(PNG_NO_STDIO)
 | 
				
			||||||
/* This is the function that does the actual reading of data.  If you are
 | 
					/* This is the function that does the actual reading of data.  If you are
 | 
				
			||||||
   not reading from a standard C stream, you should create a replacement
 | 
					 * not reading from a standard C stream, you should create a replacement
 | 
				
			||||||
   read_data function and use it at run time with png_set_read_fn(), rather
 | 
					 * read_data function and use it at run time with png_set_read_fn(), rather
 | 
				
			||||||
   than changing the library. */
 | 
					 * than changing the library.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
#ifndef USE_FAR_KEYWORD
 | 
					#ifndef USE_FAR_KEYWORD
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
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, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_size_t check;
 | 
					   png_size_t check;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      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 png_size_t
 | 
				
			||||||
    * instead of an int, which is what fread() actually returns.
 | 
					    * instead of an int, which is what fread() actually returns.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
@ -61,7 +64,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      png_error(png_ptr, "Read Error");
 | 
					      png_error(png_ptr, "Read Error");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
/* this is the model-independent version. Since the standard I/O library
 | 
					/* This is the model-independent version. Since the standard I/O library
 | 
				
			||||||
   can't handle far buffers in the medium and small models, we have to copy
 | 
					   can't handle far buffers in the medium and small models, we have to copy
 | 
				
			||||||
   the data.
 | 
					   the data.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
@ -76,7 +79,8 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
   png_byte *n_data;
 | 
					   png_byte *n_data;
 | 
				
			||||||
   png_FILE_p io_ptr;
 | 
					   png_FILE_p io_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   /* Check if data really is near. If so, use usual code. */
 | 
					   /* Check if data really is near. If so, use usual code. */
 | 
				
			||||||
   n_data = (png_byte *)CVT_PTR_NOCHECK(data);
 | 
					   n_data = (png_byte *)CVT_PTR_NOCHECK(data);
 | 
				
			||||||
   io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
 | 
					   io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
 | 
				
			||||||
@ -121,25 +125,27 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This function allows the application to supply a new input function
 | 
					/* This function allows the application to supply a new input function
 | 
				
			||||||
   for libpng if standard C streams aren't being used.
 | 
					 * for libpng if standard C streams aren't being used.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
   This function takes as its arguments:
 | 
					 * This function takes as its arguments:
 | 
				
			||||||
   png_ptr      - pointer to a png input data structure
 | 
					 * png_ptr      - pointer to a png input data structure
 | 
				
			||||||
   io_ptr       - pointer to user supplied structure containing info about
 | 
					 * io_ptr       - pointer to user supplied structure containing info about
 | 
				
			||||||
                  the input functions.  May be NULL.
 | 
					 *                the input functions.  May be NULL.
 | 
				
			||||||
   read_data_fn - pointer to a new input function that takes as its
 | 
					 * read_data_fn - pointer to a new input function that takes as its
 | 
				
			||||||
                  arguments a pointer to a png_struct, a pointer to
 | 
					 *                arguments a pointer to a png_struct, a pointer to
 | 
				
			||||||
                  a location where input data can be stored, and a 32-bit
 | 
					 *                a location where input data can be stored, and a 32-bit
 | 
				
			||||||
                  unsigned int that is the number of bytes to be read.
 | 
					 *                unsigned int that is the number of bytes to be read.
 | 
				
			||||||
                  To exit and output any fatal error messages the new write
 | 
					 *                To exit and output any fatal error messages the new write
 | 
				
			||||||
                  function should call png_error(png_ptr, "Error msg").
 | 
					 *                function should call png_error(png_ptr, "Error msg").
 | 
				
			||||||
                  May be NULL, in which case libpng's default function will
 | 
					 *                May be NULL, in which case libpng's default function will
 | 
				
			||||||
                  be used. */
 | 
					 *                be used.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
 | 
					png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
 | 
				
			||||||
   png_rw_ptr read_data_fn)
 | 
					   png_rw_ptr read_data_fn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->io_ptr = io_ptr;
 | 
					   png_ptr->io_ptr = io_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_NO_STDIO)
 | 
					#if !defined(PNG_NO_STDIO)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										384
									
								
								pngrtran.c
									
									
									
									
									
								
							
							
						
						
									
										384
									
								
								pngrtran.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										191
									
								
								pngrutil.c
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								pngrutil.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngrutil.c - utilities to read a PNG file
 | 
					/* pngrutil.c - utilities to read a PNG file
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -21,7 +21,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
#  if defined(WIN32_WCE_OLD)
 | 
					#  if defined(WIN32_WCE_OLD)
 | 
				
			||||||
/* strtod() function is not supported on WindowsCE */
 | 
					/* The strtod() function is not supported on WindowsCE */
 | 
				
			||||||
__inline double png_strtod(png_structp png_ptr, PNG_CONST char *nptr, char **endptr)
 | 
					__inline double png_strtod(png_structp png_ptr, PNG_CONST char *nptr, char **endptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   double result = 0;
 | 
					   double result = 0;
 | 
				
			||||||
@ -76,7 +76,8 @@ png_get_uint_32(png_bytep buf)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Grab a signed 32-bit integer from a buffer in big-endian format.  The
 | 
					/* Grab a signed 32-bit integer from a buffer in big-endian format.  The
 | 
				
			||||||
 * data is stored in the PNG file in two's complement format, and it is
 | 
					 * data is stored in the PNG file in two's complement format, and it is
 | 
				
			||||||
 * assumed that the machine format for signed integers is the same. */
 | 
					 * assumed that the machine format for signed integers is the same.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
png_int_32 PNGAPI
 | 
					png_int_32 PNGAPI
 | 
				
			||||||
png_get_int_32(png_bytep buf)
 | 
					png_get_int_32(png_bytep buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -108,21 +109,21 @@ png_read_chunk_header(png_structp png_ptr)
 | 
				
			|||||||
   png_byte buf[8];
 | 
					   png_byte buf[8];
 | 
				
			||||||
   png_uint_32 length;
 | 
					   png_uint_32 length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* read the length and the chunk name */
 | 
					   /* Read the length and the chunk name */
 | 
				
			||||||
   png_read_data(png_ptr, buf, 8);
 | 
					   png_read_data(png_ptr, buf, 8);
 | 
				
			||||||
   length = png_get_uint_31(png_ptr, buf);
 | 
					   length = png_get_uint_31(png_ptr, buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* put the chunk name into png_ptr->chunk_name */
 | 
					   /* Put the chunk name into png_ptr->chunk_name */
 | 
				
			||||||
   png_memcpy(png_ptr->chunk_name, buf + 4, 4);
 | 
					   png_memcpy(png_ptr->chunk_name, buf + 4, 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug2(0, "Reading %s chunk, length = %lu",
 | 
					   png_debug2(0, "Reading %s chunk, length = %lu",
 | 
				
			||||||
      png_ptr->chunk_name, length);
 | 
					      png_ptr->chunk_name, length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* reset the crc and run it over the chunk name */
 | 
					   /* Reset the crc and run it over the chunk name */
 | 
				
			||||||
   png_reset_crc(png_ptr);
 | 
					   png_reset_crc(png_ptr);
 | 
				
			||||||
   png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
 | 
					   png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check to see if chunk name is valid */
 | 
					   /* Check to see if chunk name is valid */
 | 
				
			||||||
   png_check_chunk_name(png_ptr, png_ptr->chunk_name);
 | 
					   png_check_chunk_name(png_ptr, png_ptr->chunk_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return length;
 | 
					   return length;
 | 
				
			||||||
@ -132,15 +133,17 @@ png_read_chunk_header(png_structp png_ptr)
 | 
				
			|||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
 | 
					png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_read_data(png_ptr, buf, length);
 | 
					   png_read_data(png_ptr, buf, length);
 | 
				
			||||||
   png_calculate_crc(png_ptr, buf, length);
 | 
					   png_calculate_crc(png_ptr, buf, length);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Optionally skip data and then check the CRC.  Depending on whether we
 | 
					/* Optionally skip data and then check the CRC.  Depending on whether we
 | 
				
			||||||
   are reading a ancillary or critical chunk, and how the program has set
 | 
					 * are reading a ancillary or critical chunk, and how the program has set
 | 
				
			||||||
   things up, we may calculate the CRC on the data and print a message.
 | 
					 * things up, we may calculate the CRC on the data and print a message.
 | 
				
			||||||
   Returns '1' if there was a CRC error, '0' otherwise. */
 | 
					 * Returns '1' if there was a CRC error, '0' otherwise.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
int /* PRIVATE */
 | 
					int /* PRIVATE */
 | 
				
			||||||
png_crc_finish(png_structp png_ptr, png_uint_32 skip)
 | 
					png_crc_finish(png_structp png_ptr, png_uint_32 skip)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -159,7 +162,7 @@ png_crc_finish(png_structp png_ptr, png_uint_32 skip)
 | 
				
			|||||||
   if (png_crc_error(png_ptr))
 | 
					   if (png_crc_error(png_ptr))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (((png_ptr->chunk_name[0] & 0x20) &&                /* Ancillary */
 | 
					      if (((png_ptr->chunk_name[0] & 0x20) &&                /* Ancillary */
 | 
				
			||||||
           !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
 | 
					          !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
 | 
				
			||||||
          (!(png_ptr->chunk_name[0] & 0x20) &&             /* Critical  */
 | 
					          (!(png_ptr->chunk_name[0] & 0x20) &&             /* Critical  */
 | 
				
			||||||
          (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
 | 
					          (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -176,7 +179,8 @@ png_crc_finish(png_structp png_ptr, png_uint_32 skip)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Compare the CRC stored in the PNG file with that calculated by libpng from
 | 
					/* Compare the CRC stored in the PNG file with that calculated by libpng from
 | 
				
			||||||
   the data it has read thus far. */
 | 
					 * the data it has read thus far.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
int /* PRIVATE */
 | 
					int /* PRIVATE */
 | 
				
			||||||
png_crc_error(png_structp png_ptr)
 | 
					png_crc_error(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -331,14 +335,17 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
 | 
				
			|||||||
            png_snprintf(umsg, 52,
 | 
					            png_snprintf(umsg, 52,
 | 
				
			||||||
                "Buffer error in compressed datastream in %s chunk",
 | 
					                "Buffer error in compressed datastream in %s chunk",
 | 
				
			||||||
                png_ptr->chunk_name);
 | 
					                png_ptr->chunk_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         else if (ret == Z_DATA_ERROR)
 | 
					         else if (ret == Z_DATA_ERROR)
 | 
				
			||||||
            png_snprintf(umsg, 52,
 | 
					            png_snprintf(umsg, 52,
 | 
				
			||||||
                "Data error in compressed datastream in %s chunk",
 | 
					                "Data error in compressed datastream in %s chunk",
 | 
				
			||||||
                png_ptr->chunk_name);
 | 
					                png_ptr->chunk_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
            png_snprintf(umsg, 52,
 | 
					            png_snprintf(umsg, 52,
 | 
				
			||||||
                "Incomplete compressed datastream in %s chunk",
 | 
					                "Incomplete compressed datastream in %s chunk",
 | 
				
			||||||
                png_ptr->chunk_name);
 | 
					                png_ptr->chunk_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         png_warning(png_ptr, umsg);
 | 
					         png_warning(png_ptr, umsg);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
         png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
@ -383,7 +390,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* read and check the IDHR chunk */
 | 
					/* Read and check the IDHR chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -397,7 +404,7 @@ png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   if (png_ptr->mode & PNG_HAVE_IHDR)
 | 
					   if (png_ptr->mode & PNG_HAVE_IHDR)
 | 
				
			||||||
      png_error(png_ptr, "Out of place IHDR");
 | 
					      png_error(png_ptr, "Out of place IHDR");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check the length */
 | 
					   /* Check the length */
 | 
				
			||||||
   if (length != 13)
 | 
					   if (length != 13)
 | 
				
			||||||
      png_error(png_ptr, "Invalid IHDR chunk");
 | 
					      png_error(png_ptr, "Invalid IHDR chunk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -414,7 +421,7 @@ png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   filter_type = buf[11];
 | 
					   filter_type = buf[11];
 | 
				
			||||||
   interlace_type = buf[12];
 | 
					   interlace_type = buf[12];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set internal variables */
 | 
					   /* Set internal variables */
 | 
				
			||||||
   png_ptr->width = width;
 | 
					   png_ptr->width = width;
 | 
				
			||||||
   png_ptr->height = height;
 | 
					   png_ptr->height = height;
 | 
				
			||||||
   png_ptr->bit_depth = (png_byte)bit_depth;
 | 
					   png_ptr->bit_depth = (png_byte)bit_depth;
 | 
				
			||||||
@ -425,25 +432,28 @@ png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
   png_ptr->compression_type = (png_byte)compression_type;
 | 
					   png_ptr->compression_type = (png_byte)compression_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* find number of channels */
 | 
					   /* Find number of channels */
 | 
				
			||||||
   switch (png_ptr->color_type)
 | 
					   switch (png_ptr->color_type)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      case PNG_COLOR_TYPE_GRAY:
 | 
					      case PNG_COLOR_TYPE_GRAY:
 | 
				
			||||||
      case PNG_COLOR_TYPE_PALETTE:
 | 
					      case PNG_COLOR_TYPE_PALETTE:
 | 
				
			||||||
         png_ptr->channels = 1;
 | 
					         png_ptr->channels = 1;
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case PNG_COLOR_TYPE_RGB:
 | 
					      case PNG_COLOR_TYPE_RGB:
 | 
				
			||||||
         png_ptr->channels = 3;
 | 
					         png_ptr->channels = 3;
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case PNG_COLOR_TYPE_GRAY_ALPHA:
 | 
					      case PNG_COLOR_TYPE_GRAY_ALPHA:
 | 
				
			||||||
         png_ptr->channels = 2;
 | 
					         png_ptr->channels = 2;
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      case PNG_COLOR_TYPE_RGB_ALPHA:
 | 
					      case PNG_COLOR_TYPE_RGB_ALPHA:
 | 
				
			||||||
         png_ptr->channels = 4;
 | 
					         png_ptr->channels = 4;
 | 
				
			||||||
         break;
 | 
					         break;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set up other useful info */
 | 
					   /* Set up other useful info */
 | 
				
			||||||
   png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth *
 | 
					   png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth *
 | 
				
			||||||
   png_ptr->channels);
 | 
					   png_ptr->channels);
 | 
				
			||||||
   png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width);
 | 
					   png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width);
 | 
				
			||||||
@ -454,7 +464,7 @@ png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      color_type, interlace_type, compression_type, filter_type);
 | 
					      color_type, interlace_type, compression_type, filter_type);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* read and check the palette */
 | 
					/* Read and check the palette */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -468,12 +478,14 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
					   if (!(png_ptr->mode & PNG_HAVE_IHDR))
 | 
				
			||||||
      png_error(png_ptr, "Missing IHDR before PLTE");
 | 
					      png_error(png_ptr, "Missing IHDR before PLTE");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else if (png_ptr->mode & PNG_HAVE_IDAT)
 | 
					   else if (png_ptr->mode & PNG_HAVE_IDAT)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_warning(png_ptr, "Invalid PLTE after IDAT");
 | 
					      png_warning(png_ptr, "Invalid PLTE after IDAT");
 | 
				
			||||||
      png_crc_finish(png_ptr, length);
 | 
					      png_crc_finish(png_ptr, length);
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else if (png_ptr->mode & PNG_HAVE_PLTE)
 | 
					   else if (png_ptr->mode & PNG_HAVE_PLTE)
 | 
				
			||||||
      png_error(png_ptr, "Duplicate PLTE chunk");
 | 
					      png_error(png_ptr, "Duplicate PLTE chunk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -502,6 +514,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
         png_crc_finish(png_ptr, length);
 | 
					         png_crc_finish(png_ptr, length);
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_error(png_ptr, "Invalid palette chunk");
 | 
					         png_error(png_ptr, "Invalid palette chunk");
 | 
				
			||||||
@ -526,7 +539,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      png_byte buf[3];
 | 
					      png_byte buf[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_crc_read(png_ptr, buf, 3);
 | 
					      png_crc_read(png_ptr, buf, 3);
 | 
				
			||||||
      /* don't depend upon png_color being any order */
 | 
					      /* Don't depend upon png_color being any order */
 | 
				
			||||||
      palette[i].red = buf[0];
 | 
					      palette[i].red = buf[0];
 | 
				
			||||||
      palette[i].green = buf[1];
 | 
					      palette[i].green = buf[1];
 | 
				
			||||||
      palette[i].blue = buf[2];
 | 
					      palette[i].blue = buf[2];
 | 
				
			||||||
@ -534,9 +547,10 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* If we actually NEED the PLTE chunk (ie for a paletted image), we do
 | 
					   /* If we actually NEED the PLTE chunk (ie for a paletted image), we do
 | 
				
			||||||
      whatever the normal CRC configuration tells us.  However, if we
 | 
					    * whatever the normal CRC configuration tells us.  However, if we
 | 
				
			||||||
      have an RGB image, the PLTE can be considered ancillary, so
 | 
					    * have an RGB image, the PLTE can be considered ancillary, so
 | 
				
			||||||
      we will act as though it is. */
 | 
					    * we will act as though it is.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
#if !defined(PNG_READ_OPT_PLTE_SUPPORTED)
 | 
					#if !defined(PNG_READ_OPT_PLTE_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
					   if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -611,7 +625,7 @@ png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
   png_crc_finish(png_ptr, length);
 | 
					   png_crc_finish(png_ptr, length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   info_ptr = info_ptr; /* quiet compiler warnings about unused info_ptr */
 | 
					   info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_gAMA_SUPPORTED)
 | 
					#if defined(PNG_READ_gAMA_SUPPORTED)
 | 
				
			||||||
@ -661,7 +675,7 @@ png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   igamma = (png_fixed_point)png_get_uint_32(buf);
 | 
					   igamma = (png_fixed_point)png_get_uint_32(buf);
 | 
				
			||||||
   /* check for zero gamma */
 | 
					   /* Check for zero gamma */
 | 
				
			||||||
   if (igamma == 0)
 | 
					   if (igamma == 0)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
@ -925,7 +939,7 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   intent = buf[0];
 | 
					   intent = buf[0];
 | 
				
			||||||
   /* check for bad intent */
 | 
					   /* Check for bad intent */
 | 
				
			||||||
   if (intent >= PNG_sRGB_INTENT_LAST)
 | 
					   if (intent >= PNG_sRGB_INTENT_LAST)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_warning(png_ptr, "Unknown sRGB intent");
 | 
					      png_warning(png_ptr, "Unknown sRGB intent");
 | 
				
			||||||
@ -1040,12 +1054,13 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   png_ptr->chunkdata[slength] = 0x00;
 | 
					   png_ptr->chunkdata[slength] = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (profile = png_ptr->chunkdata; *profile; profile++)
 | 
					   for (profile = png_ptr->chunkdata; *profile; profile++)
 | 
				
			||||||
      /* empty loop to find end of name */ ;
 | 
					      /* Empty loop to find end of name */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   ++profile;
 | 
					   ++profile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* there should be at least one zero (the compression type byte)
 | 
					   /* There should be at least one zero (the compression type byte)
 | 
				
			||||||
      following the separator, and we should be on it  */
 | 
					    * following the separator, and we should be on it
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   if ( profile >= png_ptr->chunkdata + slength - 1)
 | 
					   if ( profile >= png_ptr->chunkdata + slength - 1)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_free(png_ptr, png_ptr->chunkdata);
 | 
					      png_free(png_ptr, png_ptr->chunkdata);
 | 
				
			||||||
@ -1054,7 +1069,7 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* compression_type should always be zero */
 | 
					   /* Compression_type should always be zero */
 | 
				
			||||||
   compression_type = *profile++;
 | 
					   compression_type = *profile++;
 | 
				
			||||||
   if (compression_type)
 | 
					   if (compression_type)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -1152,10 +1167,10 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   png_ptr->chunkdata[slength] = 0x00;
 | 
					   png_ptr->chunkdata[slength] = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start; entry_start++)
 | 
					   for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start; entry_start++)
 | 
				
			||||||
      /* empty loop to find end of name */ ;
 | 
					      /* Empty loop to find end of name */ ;
 | 
				
			||||||
   ++entry_start;
 | 
					   ++entry_start;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* a sample depth should follow the separator, and we should be on it  */
 | 
					   /* A sample depth should follow the separator, and we should be on it  */
 | 
				
			||||||
   if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2)
 | 
					   if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_free(png_ptr, png_ptr->chunkdata);
 | 
					      png_free(png_ptr, png_ptr->chunkdata);
 | 
				
			||||||
@ -1168,7 +1183,7 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   entry_size = (new_palette.depth == 8 ? 6 : 10);
 | 
					   entry_size = (new_palette.depth == 8 ? 6 : 10);
 | 
				
			||||||
   data_length = (slength - (entry_start - (png_bytep)png_ptr->chunkdata));
 | 
					   data_length = (slength - (entry_start - (png_bytep)png_ptr->chunkdata));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* integrity-check the data length */
 | 
					   /* Integrity-check the data length */
 | 
				
			||||||
   if (data_length % entry_size)
 | 
					   if (data_length % entry_size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_free(png_ptr, png_ptr->chunkdata);
 | 
					      png_free(png_ptr, png_ptr->chunkdata);
 | 
				
			||||||
@ -1236,7 +1251,7 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* discard all chunk data except the name and stash that */
 | 
					   /* Discard all chunk data except the name and stash that */
 | 
				
			||||||
   new_palette.name = png_ptr->chunkdata;
 | 
					   new_palette.name = png_ptr->chunkdata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_set_sPLT(png_ptr, info_ptr, &new_palette, 1);
 | 
					   png_set_sPLT(png_ptr, info_ptr, &new_palette, 1);
 | 
				
			||||||
@ -1572,7 +1587,7 @@ png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_pCAL_SUPPORTED)
 | 
					#if defined(PNG_READ_pCAL_SUPPORTED)
 | 
				
			||||||
/* read the pCAL chunk (described in the PNG Extensions document) */
 | 
					/* Read the pCAL chunk (described in the PNG Extensions document) */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1619,11 +1634,11 @@ png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->chunkdata[slength] = 0x00; /* null terminate the last string */
 | 
					   png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(3, "Finding end of pCAL purpose string");
 | 
					   png_debug(3, "Finding end of pCAL purpose string");
 | 
				
			||||||
   for (buf = png_ptr->chunkdata; *buf; buf++)
 | 
					   for (buf = png_ptr->chunkdata; *buf; buf++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   endptr = png_ptr->chunkdata + slength;
 | 
					   endptr = png_ptr->chunkdata + slength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1706,7 +1721,7 @@ png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_sCAL_SUPPORTED)
 | 
					#if defined(PNG_READ_sCAL_SUPPORTED)
 | 
				
			||||||
/* read the sCAL chunk */
 | 
					/* Read the sCAL chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1756,9 +1771,9 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->chunkdata[slength] = 0x00; /* null terminate the last string */
 | 
					   png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   ep = png_ptr->chunkdata + 1;        /* skip unit byte */
 | 
					   ep = png_ptr->chunkdata + 1;        /* Skip unit byte */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
   width = png_strtod(png_ptr, ep, &vp);
 | 
					   width = png_strtod(png_ptr, ep, &vp);
 | 
				
			||||||
@ -1780,7 +1795,7 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (ep = png_ptr->chunkdata; *ep; ep++)
 | 
					   for (ep = png_ptr->chunkdata; *ep; ep++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
   ep++;
 | 
					   ep++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr->chunkdata + slength < ep)
 | 
					   if (png_ptr->chunkdata + slength < ep)
 | 
				
			||||||
@ -1944,7 +1959,7 @@ png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   key[slength] = 0x00;
 | 
					   key[slength] = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (text = key; *text; text++)
 | 
					   for (text = key; *text; text++)
 | 
				
			||||||
      /* empty loop to find end of key */ ;
 | 
					      /* Empty loop to find end of key */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (text != key + slength)
 | 
					   if (text != key + slength)
 | 
				
			||||||
      text++;
 | 
					      text++;
 | 
				
			||||||
@ -1979,7 +1994,7 @@ png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_zTXt_SUPPORTED)
 | 
				
			||||||
/* note: this does not correctly handle chunks that are > 64K under DOS */
 | 
					/* Note: this does not correctly handle chunks that are > 64K under DOS */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -2028,7 +2043,7 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   png_ptr->chunkdata[slength] = 0x00;
 | 
					   png_ptr->chunkdata[slength] = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (text = png_ptr->chunkdata; *text; text++)
 | 
					   for (text = png_ptr->chunkdata; *text; text++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* zTXt must have some text after the chunkdataword */
 | 
					   /* zTXt must have some text after the chunkdataword */
 | 
				
			||||||
   if (text >= png_ptr->chunkdata + slength - 2)
 | 
					   if (text >= png_ptr->chunkdata + slength - 2)
 | 
				
			||||||
@ -2046,7 +2061,7 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
          png_warning(png_ptr, "Unknown compression type in zTXt chunk");
 | 
					          png_warning(png_ptr, "Unknown compression type in zTXt chunk");
 | 
				
			||||||
          comp_type = PNG_TEXT_COMPRESSION_zTXt;
 | 
					          comp_type = PNG_TEXT_COMPRESSION_zTXt;
 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
       text++;        /* skip the compression_method byte */
 | 
					       text++;        /* Skip the compression_method byte */
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   prefix_len = text - png_ptr->chunkdata;
 | 
					   prefix_len = text - png_ptr->chunkdata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2083,7 +2098,7 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
					#if defined(PNG_READ_iTXt_SUPPORTED)
 | 
				
			||||||
/* note: this does not correctly handle chunks that are > 64K under DOS */
 | 
					/* Note: this does not correctly handle chunks that are > 64K under DOS */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
					png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -2133,12 +2148,13 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   png_ptr->chunkdata[slength] = 0x00;
 | 
					   png_ptr->chunkdata[slength] = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (lang = png_ptr->chunkdata; *lang; lang++)
 | 
					   for (lang = png_ptr->chunkdata; *lang; lang++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
   lang++;        /* skip NUL separator */
 | 
					   lang++;        /* Skip NUL separator */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* iTXt must have a language tag (possibly empty), two compression bytes,
 | 
					   /* iTXt must have a language tag (possibly empty), two compression bytes,
 | 
				
			||||||
      translated keyword (possibly empty), and possibly some text after the
 | 
					    * translated keyword (possibly empty), and possibly some text after the
 | 
				
			||||||
      keyword */
 | 
					    * keyword
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (lang >= png_ptr->chunkdata + slength - 3)
 | 
					   if (lang >= png_ptr->chunkdata + slength - 3)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -2154,8 +2170,8 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (lang_key = lang; *lang_key; lang_key++)
 | 
					   for (lang_key = lang; *lang_key; lang_key++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
   lang_key++;        /* skip NUL separator */
 | 
					   lang_key++;        /* Skip NUL separator */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (lang_key >= png_ptr->chunkdata + slength)
 | 
					   if (lang_key >= png_ptr->chunkdata + slength)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -2166,8 +2182,8 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (text = lang_key; *text; text++)
 | 
					   for (text = lang_key; *text; text++)
 | 
				
			||||||
      /* empty loop */ ;
 | 
					      /* Empty loop */ ;
 | 
				
			||||||
   text++;        /* skip NUL separator */
 | 
					   text++;        /* Skip NUL separator */
 | 
				
			||||||
   if (text >= png_ptr->chunkdata + slength)
 | 
					   if (text >= png_ptr->chunkdata + slength)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_warning(png_ptr, "Malformed iTXt chunk");
 | 
					      png_warning(png_ptr, "Malformed iTXt chunk");
 | 
				
			||||||
@ -2229,7 +2245,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
      PNG_CONST PNG_IDAT;
 | 
					      PNG_CONST PNG_IDAT;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))  /* not an IDAT */
 | 
					      if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))  /* Not an IDAT */
 | 
				
			||||||
         png_ptr->mode |= PNG_AFTER_IDAT;
 | 
					         png_ptr->mode |= PNG_AFTER_IDAT;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2273,7 +2289,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
				
			||||||
       if (png_ptr->read_user_chunk_fn != NULL)
 | 
					       if (png_ptr->read_user_chunk_fn != NULL)
 | 
				
			||||||
       {
 | 
					       {
 | 
				
			||||||
          /* callback to user unknown chunk handler */
 | 
					          /* Callback to user unknown chunk handler */
 | 
				
			||||||
          int ret;
 | 
					          int ret;
 | 
				
			||||||
          ret = (*(png_ptr->read_user_chunk_fn))
 | 
					          ret = (*(png_ptr->read_user_chunk_fn))
 | 
				
			||||||
            (png_ptr, &png_ptr->unknown_chunk);
 | 
					            (png_ptr, &png_ptr->unknown_chunk);
 | 
				
			||||||
@ -2302,7 +2318,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 | 
				
			|||||||
   png_crc_finish(png_ptr, skip);
 | 
					   png_crc_finish(png_ptr, skip);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
					#if !defined(PNG_READ_USER_CHUNKS_SUPPORTED)
 | 
				
			||||||
   info_ptr = info_ptr; /* quiet compiler warnings about unused info_ptr */
 | 
					   info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2550,8 +2566,8 @@ png_do_read_interlace(png_structp png_ptr)
 | 
				
			|||||||
   int pass = png_ptr->pass;
 | 
					   int pass = png_ptr->pass;
 | 
				
			||||||
   png_uint_32 transformations = png_ptr->transformations;
 | 
					   png_uint_32 transformations = png_ptr->transformations;
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2759,7 +2775,7 @@ png_do_read_interlace(png_structp png_ptr)
 | 
				
			|||||||
      row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width);
 | 
					      row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#if !defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
					#if !defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
				
			||||||
   transformations = transformations; /* silence compiler warning */
 | 
					   transformations = transformations; /* Silence compiler warning */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_READ_INTERLACING_SUPPORTED */
 | 
					#endif /* PNG_READ_INTERLACING_SUPPORTED */
 | 
				
			||||||
@ -2843,7 +2859,7 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
 | 
				
			|||||||
            rp++;
 | 
					            rp++;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         for (i = 0; i < istop; i++)   /* use leftover rp,pp */
 | 
					         for (i = 0; i < istop; i++)   /* Use leftover rp,pp */
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int a, b, c, pa, pb, pc, p;
 | 
					            int a, b, c, pa, pb, pc, p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2887,23 +2903,24 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_read_finish_row(png_structp png_ptr)
 | 
					png_read_finish_row(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block in the y direction */
 | 
					   /* Start of interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
					   PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block in the y direction */
 | 
					   /* Offset to next interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
					   PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
#endif /* PNG_READ_INTERLACING_SUPPORTED */
 | 
					#endif /* PNG_READ_INTERLACING_SUPPORTED */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -3018,24 +3035,25 @@ png_read_finish_row(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   png_ptr->mode |= PNG_AFTER_IDAT;
 | 
					   png_ptr->mode |= PNG_AFTER_IDAT;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_read_start_row(png_structp png_ptr)
 | 
					png_read_start_row(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_READ_INTERLACING_SUPPORTED
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block in the y direction */
 | 
					   /* Start of interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
					   PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block in the y direction */
 | 
					   /* Offset to next interlace block in the y direction */
 | 
				
			||||||
   PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
					   PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -3172,11 +3190,13 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
				
			|||||||
     }
 | 
					     }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* align the width on the next larger 8 pixels.  Mainly used
 | 
					   /* Align the width on the next larger 8 pixels.  Mainly used
 | 
				
			||||||
      for interlacing */
 | 
					    * for interlacing
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
 | 
					   row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
 | 
				
			||||||
   /* calculate the maximum bytes needed, adding a byte and a pixel
 | 
					   /* Calculate the maximum bytes needed, adding a byte and a pixel
 | 
				
			||||||
      for safety's sake */
 | 
					    * for safety's sake
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
 | 
					   row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
 | 
				
			||||||
      1 + ((max_pixel_depth + 7) >> 3);
 | 
					      1 + ((max_pixel_depth + 7) >> 3);
 | 
				
			||||||
#ifdef PNG_MAX_MALLOC_64K
 | 
					#ifdef PNG_MAX_MALLOC_64K
 | 
				
			||||||
@ -3187,29 +3207,30 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
				
			|||||||
   if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
 | 
					   if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_free(png_ptr, png_ptr->big_row_buf);
 | 
					     png_free(png_ptr, png_ptr->big_row_buf);
 | 
				
			||||||
      png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64);
 | 
					     png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64);
 | 
				
			||||||
     if (png_ptr->interlaced)
 | 
					     if (png_ptr->interlaced)
 | 
				
			||||||
       png_memset(png_ptr->big_row_buf, 0, png_ptr->rowbytes + 64);
 | 
					       png_memset(png_ptr->big_row_buf, 0, row_bytes + 64);
 | 
				
			||||||
     png_ptr->row_buf = png_ptr->big_row_buf + 32;
 | 
					     png_ptr->row_buf = png_ptr->big_row_buf + 32;
 | 
				
			||||||
     png_ptr->old_big_row_buf_size = row_bytes + 64;
 | 
					     png_ptr->old_big_row_buf_size = row_bytes + 64;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_MAX_MALLOC_64K
 | 
					#ifdef PNG_MAX_MALLOC_64K
 | 
				
			||||||
   if ((png_uint_32)png_ptr->rowbytes + 1 > (png_uint_32)65536L)
 | 
					   if ((png_uint_32)row_bytes + 1 > (png_uint_32)65536L)
 | 
				
			||||||
      png_error(png_ptr, "This image requires a row greater than 64KB");
 | 
					      png_error(png_ptr, "This image requires a row greater than 64KB");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   if ((png_uint_32)png_ptr->rowbytes > (png_uint_32)(PNG_SIZE_MAX - 1))
 | 
					   if ((png_uint_32)row_bytes > (png_uint_32)(PNG_SIZE_MAX - 1))
 | 
				
			||||||
      png_error(png_ptr, "Row has too many bytes to allocate in memory.");
 | 
					      png_error(png_ptr, "Row has too many bytes to allocate in memory.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr->rowbytes+1 > png_ptr->old_prev_row_size)
 | 
					   if (row_bytes + 1 > png_ptr->old_prev_row_size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_free(png_ptr, png_ptr->prev_row);
 | 
					      png_free(png_ptr, png_ptr->prev_row);
 | 
				
			||||||
     png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
 | 
					      png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
 | 
				
			||||||
        png_ptr->rowbytes + 1));
 | 
					        row_bytes + 1));
 | 
				
			||||||
     png_ptr->old_prev_row_size = png_ptr->rowbytes+1;
 | 
					      png_memset_check(png_ptr, png_ptr->prev_row, 0, row_bytes + 1);
 | 
				
			||||||
 | 
					      png_ptr->old_prev_row_size = row_bytes + 1;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
 | 
					   png_ptr->rowbytes = row_bytes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug1(3, "width = %lu,", png_ptr->width);
 | 
					   png_debug1(3, "width = %lu,", png_ptr->width);
 | 
				
			||||||
   png_debug1(3, "height = %lu,", png_ptr->height);
 | 
					   png_debug1(3, "height = %lu,", png_ptr->height);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										452
									
								
								pngset.c
									
									
									
									
									
								
							
							
						
						
									
										452
									
								
								pngset.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngset.c - storage of image information into info struct
 | 
					/* pngset.c - storage of image information into info struct
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -79,25 +79,25 @@ png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y))
 | 
					      white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     info_ptr->int_x_white = white_x;
 | 
					      info_ptr->int_x_white = white_x;
 | 
				
			||||||
     info_ptr->int_y_white = white_y;
 | 
					      info_ptr->int_y_white = white_y;
 | 
				
			||||||
     info_ptr->int_x_red   = red_x;
 | 
					      info_ptr->int_x_red   = red_x;
 | 
				
			||||||
     info_ptr->int_y_red   = red_y;
 | 
					      info_ptr->int_y_red   = red_y;
 | 
				
			||||||
     info_ptr->int_x_green = green_x;
 | 
					      info_ptr->int_x_green = green_x;
 | 
				
			||||||
     info_ptr->int_y_green = green_y;
 | 
					      info_ptr->int_y_green = green_y;
 | 
				
			||||||
     info_ptr->int_x_blue  = blue_x;
 | 
					      info_ptr->int_x_blue  = blue_x;
 | 
				
			||||||
     info_ptr->int_y_blue  = blue_y;
 | 
					      info_ptr->int_y_blue  = blue_y;
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef  PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
     info_ptr->x_white = (float)(white_x/100000.);
 | 
					      info_ptr->x_white = (float)(white_x/100000.);
 | 
				
			||||||
     info_ptr->y_white = (float)(white_y/100000.);
 | 
					      info_ptr->y_white = (float)(white_y/100000.);
 | 
				
			||||||
     info_ptr->x_red   = (float)(  red_x/100000.);
 | 
					      info_ptr->x_red   = (float)(  red_x/100000.);
 | 
				
			||||||
     info_ptr->y_red   = (float)(  red_y/100000.);
 | 
					      info_ptr->y_red   = (float)(  red_y/100000.);
 | 
				
			||||||
     info_ptr->x_green = (float)(green_x/100000.);
 | 
					      info_ptr->x_green = (float)(green_x/100000.);
 | 
				
			||||||
     info_ptr->y_green = (float)(green_y/100000.);
 | 
					      info_ptr->y_green = (float)(green_y/100000.);
 | 
				
			||||||
     info_ptr->x_blue  = (float)( blue_x/100000.);
 | 
					      info_ptr->x_blue  = (float)( blue_x/100000.);
 | 
				
			||||||
     info_ptr->y_blue  = (float)( blue_y/100000.);
 | 
					      info_ptr->y_blue  = (float)( blue_y/100000.);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
     info_ptr->valid |= PNG_INFO_cHRM;
 | 
					      info_ptr->valid |= PNG_INFO_cHRM;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_FIXED_POINT_SUPPORTED */
 | 
					#endif /* PNG_FIXED_POINT_SUPPORTED */
 | 
				
			||||||
@ -140,20 +140,20 @@ png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
 | 
				
			|||||||
   if (png_ptr == NULL || info_ptr == NULL)
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (int_gamma > (png_fixed_point) PNG_UINT_31_MAX)
 | 
					   if (int_gamma > (png_fixed_point)PNG_UINT_31_MAX)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_warning(png_ptr, "Limiting gamma to 21474.83");
 | 
					      png_warning(png_ptr, "Limiting gamma to 21474.83");
 | 
				
			||||||
     png_gamma=PNG_UINT_31_MAX;
 | 
					      png_gamma=PNG_UINT_31_MAX;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     if (int_gamma < 0)
 | 
					      if (int_gamma < 0)
 | 
				
			||||||
     {
 | 
					      {
 | 
				
			||||||
       png_warning(png_ptr, "Setting negative gamma to zero");
 | 
					         png_warning(png_ptr, "Setting negative gamma to zero");
 | 
				
			||||||
       png_gamma = 0;
 | 
					         png_gamma = 0;
 | 
				
			||||||
     }
 | 
					      }
 | 
				
			||||||
     else
 | 
					      else
 | 
				
			||||||
       png_gamma = int_gamma;
 | 
					         png_gamma = int_gamma;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
   info_ptr->gamma = (float)(png_gamma/100000.);
 | 
					   info_ptr->gamma = (float)(png_gamma/100000.);
 | 
				
			||||||
@ -179,26 +179,27 @@ png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
 | 
				
			|||||||
   if (info_ptr->num_palette == 0 || info_ptr->num_palette
 | 
					   if (info_ptr->num_palette == 0 || info_ptr->num_palette
 | 
				
			||||||
       > PNG_MAX_PALETTE_LENGTH)
 | 
					       > PNG_MAX_PALETTE_LENGTH)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       png_warning(png_ptr,
 | 
					      png_warning(png_ptr,
 | 
				
			||||||
          "Invalid palette size, hIST allocation skipped.");
 | 
					         "Invalid palette size, hIST allocation skipped.");
 | 
				
			||||||
       return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
   png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
 | 
					   png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in version
 | 
					   /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in
 | 
				
			||||||
      1.2.1 */
 | 
					    * version 1.2.1
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
 | 
					   png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
 | 
				
			||||||
      (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16)));
 | 
					      (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16)));
 | 
				
			||||||
   if (png_ptr->hist == NULL)
 | 
					   if (png_ptr->hist == NULL)
 | 
				
			||||||
     {
 | 
					   {
 | 
				
			||||||
       png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
 | 
					      png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
 | 
				
			||||||
       return;
 | 
					      return;
 | 
				
			||||||
     }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   for (i = 0; i < info_ptr->num_palette; i++)
 | 
					   for (i = 0; i < info_ptr->num_palette; i++)
 | 
				
			||||||
       png_ptr->hist[i] = hist[i];
 | 
					      png_ptr->hist[i] = hist[i];
 | 
				
			||||||
   info_ptr->hist = png_ptr->hist;
 | 
					   info_ptr->hist = png_ptr->hist;
 | 
				
			||||||
   info_ptr->valid |= PNG_INFO_hIST;
 | 
					   info_ptr->valid |= PNG_INFO_hIST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -220,7 +221,7 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   if (png_ptr == NULL || info_ptr == NULL)
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check for width and height valid values */
 | 
					   /* Check for width and height valid values */
 | 
				
			||||||
   if (width == 0 || height == 0)
 | 
					   if (width == 0 || height == 0)
 | 
				
			||||||
      png_error(png_ptr, "Image width or height is zero in IHDR");
 | 
					      png_error(png_ptr, "Image width or height is zero in IHDR");
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
@ -240,13 +241,13 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
                 - 8)       /* extra max_pixel_depth pad */
 | 
					                 - 8)       /* extra max_pixel_depth pad */
 | 
				
			||||||
      png_warning(png_ptr, "Width is too large for libpng to process pixels");
 | 
					      png_warning(png_ptr, "Width is too large for libpng to process pixels");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check other values */
 | 
					   /* Check other values */
 | 
				
			||||||
   if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 &&
 | 
					   if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 &&
 | 
				
			||||||
      bit_depth != 8 && bit_depth != 16)
 | 
					      bit_depth != 8 && bit_depth != 16)
 | 
				
			||||||
      png_error(png_ptr, "Invalid bit depth in IHDR");
 | 
					      png_error(png_ptr, "Invalid bit depth in IHDR");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (color_type < 0 || color_type == 1 ||
 | 
					   if (color_type < 0 || color_type == 1 ||
 | 
				
			||||||
      color_type == 5 || color_type > 6)
 | 
					       color_type == 5 || color_type > 6)
 | 
				
			||||||
      png_error(png_ptr, "Invalid color type in IHDR");
 | 
					      png_error(png_ptr, "Invalid color type in IHDR");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) ||
 | 
					   if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) ||
 | 
				
			||||||
@ -276,9 +277,9 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   if (filter_type != PNG_FILTER_TYPE_BASE)
 | 
					   if (filter_type != PNG_FILTER_TYPE_BASE)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
 | 
					     if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
 | 
				
			||||||
        (filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
 | 
					         (filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
 | 
				
			||||||
        ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
 | 
					         ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
 | 
				
			||||||
        (color_type == PNG_COLOR_TYPE_RGB ||
 | 
					         (color_type == PNG_COLOR_TYPE_RGB ||
 | 
				
			||||||
         color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
 | 
					         color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
 | 
				
			||||||
        png_error(png_ptr, "Unknown filter method in IHDR");
 | 
					        png_error(png_ptr, "Unknown filter method in IHDR");
 | 
				
			||||||
     if (png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
 | 
					     if (png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
 | 
				
			||||||
@ -306,7 +307,7 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      info_ptr->channels++;
 | 
					      info_ptr->channels++;
 | 
				
			||||||
   info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
 | 
					   info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check for potential overflow */
 | 
					   /* Check for potential overflow */
 | 
				
			||||||
   if (width > (PNG_UINT_32_MAX
 | 
					   if (width > (PNG_UINT_32_MAX
 | 
				
			||||||
                 >> 3)      /* 8-byte RGBA pixels */
 | 
					                 >> 3)      /* 8-byte RGBA pixels */
 | 
				
			||||||
                 - 64       /* bigrowbuf hack */
 | 
					                 - 64       /* bigrowbuf hack */
 | 
				
			||||||
@ -496,15 +497,15 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
 | 
					   if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
 | 
				
			||||||
     {
 | 
					   {
 | 
				
			||||||
       if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
					      if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
				
			||||||
         png_error(png_ptr, "Invalid palette length");
 | 
					         png_error(png_ptr, "Invalid palette length");
 | 
				
			||||||
       else
 | 
					      else
 | 
				
			||||||
       {
 | 
					      {
 | 
				
			||||||
         png_warning(png_ptr, "Invalid palette length");
 | 
					         png_warning(png_ptr, "Invalid palette length");
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
       }
 | 
					      }
 | 
				
			||||||
     }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /*
 | 
					   /*
 | 
				
			||||||
    * It may not actually be necessary to set png_ptr->palette here;
 | 
					    * It may not actually be necessary to set png_ptr->palette here;
 | 
				
			||||||
@ -516,8 +517,9 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
 | 
					   /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
 | 
				
			||||||
      of num_palette entries,
 | 
					    * of num_palette entries, in case of an invalid PNG file that has
 | 
				
			||||||
      in case of an invalid PNG file that has too-large sample values. */
 | 
					    * too-large sample values.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   png_ptr->palette = (png_colorp)png_malloc(png_ptr,
 | 
					   png_ptr->palette = (png_colorp)png_malloc(png_ptr,
 | 
				
			||||||
      PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
 | 
					      PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
 | 
				
			||||||
   png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
 | 
					   png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
 | 
				
			||||||
@ -620,18 +622,18 @@ png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_NO_CHECK_cHRM)
 | 
					#if !defined(PNG_NO_CHECK_cHRM)
 | 
				
			||||||
   if (png_check_cHRM_fixed(png_ptr,
 | 
					   if (png_check_cHRM_fixed(png_ptr,
 | 
				
			||||||
      int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
 | 
					       int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
 | 
				
			||||||
      int_green_y, int_blue_x, int_blue_y))
 | 
					       int_green_y, int_blue_x, int_blue_y))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
 | 
					#ifdef PNG_FIXED_POINT_SUPPORTED
 | 
				
			||||||
     png_set_cHRM_fixed(png_ptr, info_ptr,
 | 
					      png_set_cHRM_fixed(png_ptr, info_ptr,
 | 
				
			||||||
        int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
 | 
					          int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
 | 
				
			||||||
        int_green_y, int_blue_x, int_blue_y);
 | 
					          int_green_y, int_blue_x, int_blue_y);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
      png_set_cHRM(png_ptr, info_ptr,
 | 
					      png_set_cHRM(png_ptr, info_ptr,
 | 
				
			||||||
         white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
 | 
					          white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif /* cHRM */
 | 
					#endif /* cHRM */
 | 
				
			||||||
@ -689,17 +691,17 @@ png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
#if defined(PNG_TEXT_SUPPORTED)
 | 
					#if defined(PNG_TEXT_SUPPORTED)
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
					png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			||||||
   int num_text)
 | 
					             int num_text)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   int ret;
 | 
					   int ret;
 | 
				
			||||||
   ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
 | 
					   ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
 | 
				
			||||||
   if (ret)
 | 
					   if (ret)
 | 
				
			||||||
     png_error(png_ptr, "Insufficient memory to store text");
 | 
					      png_error(png_ptr, "Insufficient memory to store text");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int /* PRIVATE */
 | 
					int /* PRIVATE */
 | 
				
			||||||
png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
					png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			||||||
   int num_text)
 | 
					               int num_text)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   int i;
 | 
					   int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -725,10 +727,10 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			|||||||
         info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
 | 
					         info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
 | 
				
			||||||
            (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
 | 
					            (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
 | 
				
			||||||
         if (info_ptr->text == NULL)
 | 
					         if (info_ptr->text == NULL)
 | 
				
			||||||
           {
 | 
					         {
 | 
				
			||||||
             png_free(png_ptr, old_text);
 | 
					            png_free(png_ptr, old_text);
 | 
				
			||||||
             return(1);
 | 
					            return(1);
 | 
				
			||||||
           }
 | 
					         }
 | 
				
			||||||
         png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max *
 | 
					         png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max *
 | 
				
			||||||
            png_sizeof(png_text)));
 | 
					            png_sizeof(png_text)));
 | 
				
			||||||
         png_free(png_ptr, old_text);
 | 
					         png_free(png_ptr, old_text);
 | 
				
			||||||
@ -740,7 +742,7 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			|||||||
         info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
 | 
					         info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
 | 
				
			||||||
            (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
 | 
					            (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
 | 
				
			||||||
         if (info_ptr->text == NULL)
 | 
					         if (info_ptr->text == NULL)
 | 
				
			||||||
           return(1);
 | 
					            return(1);
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
         info_ptr->free_me |= PNG_FREE_TEXT;
 | 
					         info_ptr->free_me |= PNG_FREE_TEXT;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -761,26 +763,26 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (text_ptr[i].compression <= 0)
 | 
					      if (text_ptr[i].compression <= 0)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        lang_len = 0;
 | 
					         lang_len = 0;
 | 
				
			||||||
        lang_key_len = 0;
 | 
					         lang_key_len = 0;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
#ifdef PNG_iTXt_SUPPORTED
 | 
					#ifdef PNG_iTXt_SUPPORTED
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        /* set iTXt data */
 | 
					         /* Set iTXt data */
 | 
				
			||||||
        if (text_ptr[i].lang != NULL)
 | 
					         if (text_ptr[i].lang != NULL)
 | 
				
			||||||
          lang_len = png_strlen(text_ptr[i].lang);
 | 
					            lang_len = png_strlen(text_ptr[i].lang);
 | 
				
			||||||
        else
 | 
					         else
 | 
				
			||||||
          lang_len = 0;
 | 
					            lang_len = 0;
 | 
				
			||||||
        if (text_ptr[i].lang_key != NULL)
 | 
					         if (text_ptr[i].lang_key != NULL)
 | 
				
			||||||
          lang_key_len = png_strlen(text_ptr[i].lang_key);
 | 
					            lang_key_len = png_strlen(text_ptr[i].lang_key);
 | 
				
			||||||
        else
 | 
					         else
 | 
				
			||||||
          lang_key_len = 0;
 | 
					            lang_key_len = 0;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        png_warning(png_ptr, "iTXt chunk not supported.");
 | 
					         png_warning(png_ptr, "iTXt chunk not supported.");
 | 
				
			||||||
        continue;
 | 
					         continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -804,14 +806,13 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
 | 
				
			|||||||
         (png_uint_32)
 | 
					         (png_uint_32)
 | 
				
			||||||
         (key_len + text_length + lang_len + lang_key_len + 4));
 | 
					         (key_len + text_length + lang_len + lang_key_len + 4));
 | 
				
			||||||
      if (textp->key == NULL)
 | 
					      if (textp->key == NULL)
 | 
				
			||||||
        return(1);
 | 
					         return(1);
 | 
				
			||||||
      png_debug2(2, "Allocated %lu bytes at %x in png_set_text",
 | 
					      png_debug2(2, "Allocated %lu bytes at %x in png_set_text",
 | 
				
			||||||
         (png_uint_32)
 | 
					                 (png_uint_32)
 | 
				
			||||||
         (key_len + lang_len + lang_key_len + text_length + 4),
 | 
					                 (key_len + lang_len + lang_key_len + text_length + 4),
 | 
				
			||||||
         (int)textp->key);
 | 
					                 (int)textp->key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_memcpy(textp->key, text_ptr[i].key,
 | 
					      png_memcpy(textp->key, text_ptr[i].key,(png_size_t)(key_len));
 | 
				
			||||||
         (png_size_t)(key_len));
 | 
					 | 
				
			||||||
      *(textp->key + key_len) = '\0';
 | 
					      *(textp->key + key_len) = '\0';
 | 
				
			||||||
#ifdef PNG_iTXt_SUPPORTED
 | 
					#ifdef PNG_iTXt_SUPPORTED
 | 
				
			||||||
      if (text_ptr[i].compression > 0)
 | 
					      if (text_ptr[i].compression > 0)
 | 
				
			||||||
@ -898,7 +899,7 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
       png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
 | 
					       png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
           (png_uint_32)PNG_MAX_PALETTE_LENGTH);
 | 
					           (png_uint_32)PNG_MAX_PALETTE_LENGTH);
 | 
				
			||||||
       if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
 | 
					       if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
 | 
				
			||||||
         png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
 | 
					          png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (trans_values != NULL)
 | 
					   if (trans_values != NULL)
 | 
				
			||||||
@ -910,12 +911,12 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
          ((int)trans_values->red > sample_max ||
 | 
					          ((int)trans_values->red > sample_max ||
 | 
				
			||||||
          (int)trans_values->green > sample_max ||
 | 
					          (int)trans_values->green > sample_max ||
 | 
				
			||||||
          (int)trans_values->blue > sample_max)))
 | 
					          (int)trans_values->blue > sample_max)))
 | 
				
			||||||
        png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
           "tRNS chunk has out-of-range samples for bit_depth");
 | 
					            "tRNS chunk has out-of-range samples for bit_depth");
 | 
				
			||||||
      png_memcpy(&(info_ptr->trans_values), trans_values,
 | 
					      png_memcpy(&(info_ptr->trans_values), trans_values,
 | 
				
			||||||
         png_sizeof(png_color_16));
 | 
					         png_sizeof(png_color_16));
 | 
				
			||||||
      if (num_trans == 0)
 | 
					      if (num_trans == 0)
 | 
				
			||||||
        num_trans = 1;
 | 
					         num_trans = 1;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   info_ptr->num_trans = (png_uint_16)num_trans;
 | 
					   info_ptr->num_trans = (png_uint_16)num_trans;
 | 
				
			||||||
@ -943,62 +944,62 @@ png_set_sPLT(png_structp png_ptr,
 | 
				
			|||||||
 *                   added.
 | 
					 *                   added.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    png_sPLT_tp np;
 | 
					   png_sPLT_tp np;
 | 
				
			||||||
    int i;
 | 
					   int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (png_ptr == NULL || info_ptr == NULL)
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
       return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    np = (png_sPLT_tp)png_malloc_warn(png_ptr,
 | 
					 | 
				
			||||||
        (info_ptr->splt_palettes_num + nentries) *
 | 
					 | 
				
			||||||
        (png_uint_32)png_sizeof(png_sPLT_t));
 | 
					 | 
				
			||||||
    if (np == NULL)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      png_warning(png_ptr, "No memory for sPLT palettes.");
 | 
					 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    png_memcpy(np, info_ptr->splt_palettes,
 | 
					   np = (png_sPLT_tp)png_malloc_warn(png_ptr,
 | 
				
			||||||
           info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
 | 
					       (info_ptr->splt_palettes_num + nentries) *
 | 
				
			||||||
    png_free(png_ptr, info_ptr->splt_palettes);
 | 
					        (png_uint_32)png_sizeof(png_sPLT_t));
 | 
				
			||||||
    info_ptr->splt_palettes=NULL;
 | 
					   if (np == NULL)
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					      png_warning(png_ptr, "No memory for sPLT palettes.");
 | 
				
			||||||
 | 
					     return;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < nentries; i++)
 | 
					   png_memcpy(np, info_ptr->splt_palettes,
 | 
				
			||||||
    {
 | 
					          info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
 | 
				
			||||||
        png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
 | 
					   png_free(png_ptr, info_ptr->splt_palettes);
 | 
				
			||||||
        png_sPLT_tp from = entries + i;
 | 
					   info_ptr->splt_palettes=NULL;
 | 
				
			||||||
        png_uint_32 length;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        length = png_strlen(from->name) + 1;
 | 
					   for (i = 0; i < nentries; i++)
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					      png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
 | 
				
			||||||
 | 
					      png_sPLT_tp from = entries + i;
 | 
				
			||||||
 | 
					      png_uint_32 length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      length = png_strlen(from->name) + 1;
 | 
				
			||||||
        to->name = (png_charp)png_malloc_warn(png_ptr, length);
 | 
					        to->name = (png_charp)png_malloc_warn(png_ptr, length);
 | 
				
			||||||
        if (to->name == NULL)
 | 
					      if (to->name == NULL)
 | 
				
			||||||
        {
 | 
					      {
 | 
				
			||||||
           png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
             "Out of memory while processing sPLT chunk");
 | 
					           "Out of memory while processing sPLT chunk");
 | 
				
			||||||
           continue;
 | 
					         continue;
 | 
				
			||||||
        }
 | 
					      }
 | 
				
			||||||
        png_memcpy(to->name, from->name, length);
 | 
					      png_memcpy(to->name, from->name, length);
 | 
				
			||||||
        to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
 | 
					      to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
 | 
				
			||||||
            (png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry)));
 | 
					            (png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry)));
 | 
				
			||||||
        if (to->entries == NULL)
 | 
					      if (to->entries == NULL)
 | 
				
			||||||
        {
 | 
					      {
 | 
				
			||||||
           png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
             "Out of memory while processing sPLT chunk");
 | 
					           "Out of memory while processing sPLT chunk");
 | 
				
			||||||
           png_free(png_ptr, to->name);
 | 
					         png_free(png_ptr, to->name);
 | 
				
			||||||
           to->name = NULL;
 | 
					         to->name = NULL;
 | 
				
			||||||
           continue;
 | 
					         continue;
 | 
				
			||||||
        }
 | 
					      }
 | 
				
			||||||
        png_memcpy(to->entries, from->entries,
 | 
					      png_memcpy(to->entries, from->entries,
 | 
				
			||||||
            from->nentries * png_sizeof(png_sPLT_entry));
 | 
					          from->nentries * png_sizeof(png_sPLT_entry));
 | 
				
			||||||
        to->nentries = from->nentries;
 | 
					      to->nentries = from->nentries;
 | 
				
			||||||
        to->depth = from->depth;
 | 
					      to->depth = from->depth;
 | 
				
			||||||
    }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    info_ptr->splt_palettes = np;
 | 
					   info_ptr->splt_palettes = np;
 | 
				
			||||||
    info_ptr->splt_palettes_num += nentries;
 | 
					   info_ptr->splt_palettes_num += nentries;
 | 
				
			||||||
    info_ptr->valid |= PNG_INFO_sPLT;
 | 
					   info_ptr->valid |= PNG_INFO_sPLT;
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    info_ptr->free_me |= PNG_FREE_SPLT;
 | 
					   info_ptr->free_me |= PNG_FREE_SPLT;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_sPLT_SUPPORTED */
 | 
					#endif /* PNG_sPLT_SUPPORTED */
 | 
				
			||||||
@ -1008,61 +1009,61 @@ void PNGAPI
 | 
				
			|||||||
png_set_unknown_chunks(png_structp png_ptr,
 | 
					png_set_unknown_chunks(png_structp png_ptr,
 | 
				
			||||||
   png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)
 | 
					   png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    png_unknown_chunkp np;
 | 
					   png_unknown_chunkp np;
 | 
				
			||||||
    int i;
 | 
					   int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0)
 | 
					   if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0)
 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
 | 
					 | 
				
			||||||
        (png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) *
 | 
					 | 
				
			||||||
        png_sizeof(png_unknown_chunk)));
 | 
					 | 
				
			||||||
    if (np == NULL)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
       png_warning(png_ptr,
 | 
					 | 
				
			||||||
          "Out of memory while processing unknown chunk.");
 | 
					 | 
				
			||||||
       return;
 | 
					       return;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    png_memcpy(np, info_ptr->unknown_chunks,
 | 
					   np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
 | 
				
			||||||
           info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk));
 | 
					       (png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) *
 | 
				
			||||||
    png_free(png_ptr, info_ptr->unknown_chunks);
 | 
					       png_sizeof(png_unknown_chunk)));
 | 
				
			||||||
    info_ptr->unknown_chunks=NULL;
 | 
					   if (np == NULL)
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					      png_warning(png_ptr,
 | 
				
			||||||
 | 
					         "Out of memory while processing unknown chunk.");
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < num_unknowns; i++)
 | 
					   png_memcpy(np, info_ptr->unknown_chunks,
 | 
				
			||||||
    {
 | 
					          info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk));
 | 
				
			||||||
       png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
 | 
					   png_free(png_ptr, info_ptr->unknown_chunks);
 | 
				
			||||||
       png_unknown_chunkp from = unknowns + i;
 | 
					   info_ptr->unknown_chunks=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       png_memcpy((png_charp)to->name, 
 | 
					   for (i = 0; i < num_unknowns; i++)
 | 
				
			||||||
                  (png_charp)from->name, 
 | 
					   {
 | 
				
			||||||
                  png_sizeof(from->name));
 | 
					      png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
 | 
				
			||||||
       to->name[png_sizeof(to->name)-1] = '\0';
 | 
					      png_unknown_chunkp from = unknowns + i;
 | 
				
			||||||
       to->size = from->size;
 | 
					 | 
				
			||||||
       /* note our location in the read or write sequence */
 | 
					 | 
				
			||||||
       to->location = (png_byte)(png_ptr->mode & 0xff);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
       if (from->size == 0)
 | 
					      png_memcpy((png_charp)to->name, 
 | 
				
			||||||
          to->data=NULL;
 | 
					                 (png_charp)from->name, 
 | 
				
			||||||
       else
 | 
					                 png_sizeof(from->name));
 | 
				
			||||||
       {
 | 
					      to->name[png_sizeof(to->name)-1] = '\0';
 | 
				
			||||||
          to->data = (png_bytep)png_malloc_warn(png_ptr,
 | 
					      to->size = from->size;
 | 
				
			||||||
            (png_uint_32)from->size);
 | 
					      /* Note our location in the read or write sequence */
 | 
				
			||||||
          if (to->data == NULL)
 | 
					      to->location = (png_byte)(png_ptr->mode & 0xff);
 | 
				
			||||||
          {
 | 
					 | 
				
			||||||
             png_warning(png_ptr,
 | 
					 | 
				
			||||||
              "Out of memory while processing unknown chunk.");
 | 
					 | 
				
			||||||
             to->size = 0;
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          else
 | 
					 | 
				
			||||||
             png_memcpy(to->data, from->data, from->size);
 | 
					 | 
				
			||||||
       }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    info_ptr->unknown_chunks = np;
 | 
					      if (from->size == 0)
 | 
				
			||||||
    info_ptr->unknown_chunks_num += num_unknowns;
 | 
					         to->data=NULL;
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         to->data = (png_bytep)png_malloc_warn(png_ptr,
 | 
				
			||||||
 | 
					           (png_uint_32)from->size);
 | 
				
			||||||
 | 
					         if (to->data == NULL)
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					            png_warning(png_ptr,
 | 
				
			||||||
 | 
					             "Out of memory while processing unknown chunk.");
 | 
				
			||||||
 | 
					            to->size = 0;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         else
 | 
				
			||||||
 | 
					            png_memcpy(to->data, from->data, from->size);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   info_ptr->unknown_chunks = np;
 | 
				
			||||||
 | 
					   info_ptr->unknown_chunks_num += num_unknowns;
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    info_ptr->free_me |= PNG_FREE_UNKN;
 | 
					   info_ptr->free_me |= PNG_FREE_UNKN;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
@ -1111,44 +1112,44 @@ void PNGAPI
 | 
				
			|||||||
png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
 | 
					png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
 | 
				
			||||||
   chunk_list, int num_chunks)
 | 
					   chunk_list, int num_chunks)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    png_bytep new_list, p;
 | 
					   png_bytep new_list, p;
 | 
				
			||||||
    int i, old_num_chunks;
 | 
					   int i, old_num_chunks;
 | 
				
			||||||
    if (png_ptr == NULL)
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
       return;
 | 
					      return;
 | 
				
			||||||
    if (num_chunks == 0)
 | 
					   if (num_chunks == 0)
 | 
				
			||||||
    {
 | 
					   {
 | 
				
			||||||
      if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
 | 
					      if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
 | 
				
			||||||
        png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
 | 
					         png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
 | 
					         png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (keep == PNG_HANDLE_CHUNK_ALWAYS)
 | 
					      if (keep == PNG_HANDLE_CHUNK_ALWAYS)
 | 
				
			||||||
        png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
 | 
					         png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
 | 
					         png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					   }
 | 
				
			||||||
    if (chunk_list == NULL)
 | 
					   if (chunk_list == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    old_num_chunks = png_ptr->num_chunk_list;
 | 
					   old_num_chunks = png_ptr->num_chunk_list;
 | 
				
			||||||
    new_list=(png_bytep)png_malloc(png_ptr,
 | 
					   new_list=(png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
       (png_uint_32)
 | 
					      (png_uint_32)
 | 
				
			||||||
       (5*(num_chunks + old_num_chunks)));
 | 
					      (5*(num_chunks + old_num_chunks)));
 | 
				
			||||||
    if (png_ptr->chunk_list != NULL)
 | 
					   if (png_ptr->chunk_list != NULL)
 | 
				
			||||||
    {
 | 
					   {
 | 
				
			||||||
       png_memcpy(new_list, png_ptr->chunk_list,
 | 
					      png_memcpy(new_list, png_ptr->chunk_list,
 | 
				
			||||||
          (png_size_t)(5*old_num_chunks));
 | 
					         (png_size_t)(5*old_num_chunks));
 | 
				
			||||||
       png_free(png_ptr, png_ptr->chunk_list);
 | 
					      png_free(png_ptr, png_ptr->chunk_list);
 | 
				
			||||||
       png_ptr->chunk_list=NULL;
 | 
					      png_ptr->chunk_list=NULL;
 | 
				
			||||||
    }
 | 
					   }
 | 
				
			||||||
    png_memcpy(new_list + 5*old_num_chunks, chunk_list,
 | 
					   png_memcpy(new_list + 5*old_num_chunks, chunk_list,
 | 
				
			||||||
       (png_size_t)(5*num_chunks));
 | 
					      (png_size_t)(5*num_chunks));
 | 
				
			||||||
    for (p = new_list + 5*old_num_chunks + 4, i = 0; i<num_chunks; i++, p += 5)
 | 
					   for (p = new_list + 5*old_num_chunks + 4, i = 0; i<num_chunks; i++, p += 5)
 | 
				
			||||||
       *p=(png_byte)keep;
 | 
					      *p=(png_byte)keep;
 | 
				
			||||||
    png_ptr->num_chunk_list = old_num_chunks + num_chunks;
 | 
					   png_ptr->num_chunk_list = old_num_chunks + num_chunks;
 | 
				
			||||||
    png_ptr->chunk_list = new_list;
 | 
					   png_ptr->chunk_list = new_list;
 | 
				
			||||||
#ifdef PNG_FREE_ME_SUPPORTED
 | 
					#ifdef PNG_FREE_ME_SUPPORTED
 | 
				
			||||||
    png_ptr->free_me |= PNG_FREE_LIST;
 | 
					   png_ptr->free_me |= PNG_FREE_LIST;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1208,7 +1209,7 @@ png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifndef PNG_1_0_X
 | 
					#ifndef PNG_1_0_X
 | 
				
			||||||
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
 | 
					#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
 | 
				
			||||||
/* function was added to libpng 1.2.0 and should always exist by default */
 | 
					/* Function was added to libpng 1.2.0 and should always exist by default */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
 | 
					png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1218,7 +1219,7 @@ png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
 | 
				
			|||||||
    asm_flags = asm_flags; /* Quiet the compiler */
 | 
					    asm_flags = asm_flags; /* Quiet the compiler */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* this function was added to libpng 1.2.0 */
 | 
					/* This function was added to libpng 1.2.0 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_mmx_thresholds (png_structp png_ptr,
 | 
					png_set_mmx_thresholds (png_structp png_ptr,
 | 
				
			||||||
                        png_byte mmx_bitdepth_threshold,
 | 
					                        png_byte mmx_bitdepth_threshold,
 | 
				
			||||||
@ -1234,18 +1235,19 @@ png_set_mmx_thresholds (png_structp png_ptr,
 | 
				
			|||||||
#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
 | 
					#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
/* this function was added to libpng 1.2.6 */
 | 
					/* This function was added to libpng 1.2.6 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
 | 
					png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
 | 
				
			||||||
    png_uint_32 user_height_max)
 | 
					    png_uint_32 user_height_max)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* Images with dimensions larger than these limits will be
 | 
					   /* Images with dimensions larger than these limits will be
 | 
				
			||||||
     * rejected by png_set_IHDR().  To accept any PNG datastream
 | 
					    * rejected by png_set_IHDR().  To accept any PNG datastream
 | 
				
			||||||
     * regardless of dimensions, set both limits to 0x7ffffffL.
 | 
					    * regardless of dimensions, set both limits to 0x7ffffffL.
 | 
				
			||||||
     */
 | 
					    */
 | 
				
			||||||
    if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
    png_ptr->user_width_max = user_width_max;
 | 
					      return;
 | 
				
			||||||
    png_ptr->user_height_max = user_height_max;
 | 
					   png_ptr->user_width_max = user_width_max;
 | 
				
			||||||
 | 
					   png_ptr->user_height_max = user_height_max;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
 | 
					#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										345
									
								
								pngtest.c
									
									
									
									
									
								
							
							
						
						
									
										345
									
								
								pngtest.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngtest.c - a simple test program to test libpng
 | 
					/* pngtest.c - a simple test program to test libpng
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -65,7 +65,7 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !PNG_DEBUG
 | 
					#if !PNG_DEBUG
 | 
				
			||||||
#  define SINGLE_ROWBUF_ALLOC  /* makes buffer overruns easier to nail */
 | 
					#  define SINGLE_ROWBUF_ALLOC  /* Makes buffer overruns easier to nail */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Turn on CPU timing
 | 
					/* Turn on CPU timing
 | 
				
			||||||
@ -95,9 +95,9 @@ int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname));
 | 
				
			|||||||
#include <mem.h>
 | 
					#include <mem.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* defined so I can write to a file on gui/windowing platforms */
 | 
					/* Defined so I can write to a file on gui/windowing platforms */
 | 
				
			||||||
/*  #define STDERR stderr  */
 | 
					/*  #define STDERR stderr  */
 | 
				
			||||||
#define STDERR stdout   /* for DOS */
 | 
					#define STDERR stdout   /* For DOS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* In case a system header (e.g., on AIX) defined jmpbuf */
 | 
					/* In case a system header (e.g., on AIX) defined jmpbuf */
 | 
				
			||||||
#ifdef jmpbuf
 | 
					#ifdef jmpbuf
 | 
				
			||||||
@ -109,7 +109,7 @@ int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname));
 | 
				
			|||||||
#  define png_jmpbuf(png_ptr) png_ptr->jmpbuf
 | 
					#  define png_jmpbuf(png_ptr) png_ptr->jmpbuf
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* example of using row callbacks to make a simple progress meter */
 | 
					/* Example of using row callbacks to make a simple progress meter */
 | 
				
			||||||
static int status_pass = 1;
 | 
					static int status_pass = 1;
 | 
				
			||||||
static int status_dots_requested = 0;
 | 
					static int status_dots_requested = 0;
 | 
				
			||||||
static int status_dots = 1;
 | 
					static int status_dots = 1;
 | 
				
			||||||
@ -125,20 +125,21 @@ PNGAPI
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
 | 
					read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (png_ptr == NULL || row_number > PNG_UINT_31_MAX) return;
 | 
					   if (png_ptr == NULL || row_number > PNG_UINT_31_MAX)
 | 
				
			||||||
    if (status_pass != pass)
 | 
					      return;
 | 
				
			||||||
    {
 | 
					   if (status_pass != pass)
 | 
				
			||||||
       fprintf(stdout, "\n Pass %d: ", pass);
 | 
					   {
 | 
				
			||||||
       status_pass = pass;
 | 
					      fprintf(stdout, "\n Pass %d: ", pass);
 | 
				
			||||||
       status_dots = 31;
 | 
					      status_pass = pass;
 | 
				
			||||||
    }
 | 
					      status_dots = 31;
 | 
				
			||||||
    status_dots--;
 | 
					   }
 | 
				
			||||||
    if (status_dots == 0)
 | 
					   status_dots--;
 | 
				
			||||||
    {
 | 
					   if (status_dots == 0)
 | 
				
			||||||
       fprintf(stdout, "\n         ");
 | 
					   {
 | 
				
			||||||
       status_dots=30;
 | 
					      fprintf(stdout, "\n         ");
 | 
				
			||||||
    }
 | 
					      status_dots=30;
 | 
				
			||||||
    fprintf(stdout, "r");
 | 
					   }
 | 
				
			||||||
 | 
					   fprintf(stdout, "r");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
@ -152,15 +153,17 @@ PNGAPI
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
 | 
					write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7) return;
 | 
					   if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7)
 | 
				
			||||||
    fprintf(stdout, "w");
 | 
					      return;
 | 
				
			||||||
 | 
					   fprintf(stdout, "w");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
 | 
					#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
 | 
				
			||||||
/* Example of using user transform callback (we don't transform anything,
 | 
					/* Example of using user transform callback (we don't transform anything,
 | 
				
			||||||
   but merely examine the row filters.  We set this to 256 rather than
 | 
					 * but merely examine the row filters.  We set this to 256 rather than
 | 
				
			||||||
   5 in case illegal filter values are present.) */
 | 
					 * 5 in case illegal filter values are present.)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
static png_uint_32 filters_used[256];
 | 
					static png_uint_32 filters_used[256];
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
#ifdef PNG_1_0_X
 | 
					#ifdef PNG_1_0_X
 | 
				
			||||||
@ -173,14 +176,15 @@ PNGAPI
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
					count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (png_ptr != NULL && row_info != NULL)
 | 
					   if (png_ptr != NULL && row_info != NULL)
 | 
				
			||||||
      ++filters_used[*(data - 1)];
 | 
					      ++filters_used[*(data - 1)];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
					#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
				
			||||||
/* example of using user transform callback (we don't transform anything,
 | 
					/* Example of using user transform callback (we don't transform anything,
 | 
				
			||||||
   but merely count the zero samples) */
 | 
					 * but merely count the zero samples)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static png_uint_32 zero_samples;
 | 
					static png_uint_32 zero_samples;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -198,7 +202,7 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
   png_bytep dp = data;
 | 
					   png_bytep dp = data;
 | 
				
			||||||
   if (png_ptr == NULL)return;
 | 
					   if (png_ptr == NULL)return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* contents of row_info:
 | 
					   /* Contents of row_info:
 | 
				
			||||||
    *  png_uint_32 width      width of row
 | 
					    *  png_uint_32 width      width of row
 | 
				
			||||||
    *  png_uint_32 rowbytes   number of bytes in row
 | 
					    *  png_uint_32 rowbytes   number of bytes in row
 | 
				
			||||||
    *  png_byte color_type    color type of pixels
 | 
					    *  png_byte color_type    color type of pixels
 | 
				
			||||||
@ -207,8 +211,7 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
    *  png_byte pixel_depth   bits per pixel (depth*channels)
 | 
					    *  png_byte pixel_depth   bits per pixel (depth*channels)
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Counts the number of zero samples (or zero pixels if color_type is 3 */
 | 
				
			||||||
    /* counts the number of zero samples (or zero pixels if color_type is 3 */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (row_info->color_type == 0 || row_info->color_type == 3)
 | 
					    if (row_info->color_type == 0 || row_info->color_type == 3)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -218,7 +221,8 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
       {
 | 
					       {
 | 
				
			||||||
          if (row_info->bit_depth == 1)
 | 
					          if (row_info->bit_depth == 1)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             if (((*dp << pos++ ) & 0x80) == 0) zero_samples++;
 | 
					             if (((*dp << pos++ ) & 0x80) == 0)
 | 
				
			||||||
 | 
					                zero_samples++;
 | 
				
			||||||
             if (pos == 8)
 | 
					             if (pos == 8)
 | 
				
			||||||
             {
 | 
					             {
 | 
				
			||||||
                pos = 0;
 | 
					                pos = 0;
 | 
				
			||||||
@ -227,7 +231,8 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
          if (row_info->bit_depth == 2)
 | 
					          if (row_info->bit_depth == 2)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             if (((*dp << (pos+=2)) & 0xc0) == 0) zero_samples++;
 | 
					             if (((*dp << (pos+=2)) & 0xc0) == 0)
 | 
				
			||||||
 | 
					                zero_samples++;
 | 
				
			||||||
             if (pos == 8)
 | 
					             if (pos == 8)
 | 
				
			||||||
             {
 | 
					             {
 | 
				
			||||||
                pos = 0;
 | 
					                pos = 0;
 | 
				
			||||||
@ -236,7 +241,8 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
          if (row_info->bit_depth == 4)
 | 
					          if (row_info->bit_depth == 4)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             if (((*dp << (pos+=4)) & 0xf0) == 0) zero_samples++;
 | 
					             if (((*dp << (pos+=4)) & 0xf0) == 0)
 | 
				
			||||||
 | 
					                zero_samples++;
 | 
				
			||||||
             if (pos == 8)
 | 
					             if (pos == 8)
 | 
				
			||||||
             {
 | 
					             {
 | 
				
			||||||
                pos = 0;
 | 
					                pos = 0;
 | 
				
			||||||
@ -244,15 +250,17 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
             }
 | 
					             }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          if (row_info->bit_depth == 8)
 | 
					          if (row_info->bit_depth == 8)
 | 
				
			||||||
             if (*dp++ == 0) zero_samples++;
 | 
					             if (*dp++ == 0)
 | 
				
			||||||
 | 
					                zero_samples++;
 | 
				
			||||||
          if (row_info->bit_depth == 16)
 | 
					          if (row_info->bit_depth == 16)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             if ((*dp | *(dp+1)) == 0) zero_samples++;
 | 
					             if ((*dp | *(dp+1)) == 0)
 | 
				
			||||||
 | 
					                zero_samples++;
 | 
				
			||||||
             dp+=2;
 | 
					             dp+=2;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else /* other color types */
 | 
					    else /* Other color types */
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
       png_uint_32 n, nstop;
 | 
					       png_uint_32 n, nstop;
 | 
				
			||||||
       int channel;
 | 
					       int channel;
 | 
				
			||||||
@ -264,17 +272,20 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
 | 
				
			|||||||
          for (channel = 0; channel < color_channels; channel++)
 | 
					          for (channel = 0; channel < color_channels; channel++)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             if (row_info->bit_depth == 8)
 | 
					             if (row_info->bit_depth == 8)
 | 
				
			||||||
                if (*dp++ == 0) zero_samples++;
 | 
					                if (*dp++ == 0)
 | 
				
			||||||
 | 
					                   zero_samples++;
 | 
				
			||||||
             if (row_info->bit_depth == 16)
 | 
					             if (row_info->bit_depth == 16)
 | 
				
			||||||
             {
 | 
					             {
 | 
				
			||||||
                if ((*dp | *(dp+1)) == 0) zero_samples++;
 | 
					                if ((*dp | *(dp+1)) == 0)
 | 
				
			||||||
 | 
					                   zero_samples++;
 | 
				
			||||||
                dp+=2;
 | 
					                dp+=2;
 | 
				
			||||||
             }
 | 
					             }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          if (row_info->color_type > 3)
 | 
					          if (row_info->color_type > 3)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
             dp++;
 | 
					             dp++;
 | 
				
			||||||
             if (row_info->bit_depth == 16)dp++;
 | 
					             if (row_info->bit_depth == 16)
 | 
				
			||||||
 | 
					                dp++;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -285,12 +296,13 @@ static int wrote_question = 0;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_NO_STDIO)
 | 
					#if defined(PNG_NO_STDIO)
 | 
				
			||||||
/* START of code to validate stdio-free compilation */
 | 
					/* START of code to validate stdio-free compilation */
 | 
				
			||||||
/* These copies of the default read/write functions come from pngrio.c and */
 | 
					/* These copies of the default read/write functions come from pngrio.c and
 | 
				
			||||||
/* pngwio.c.  They allow "don't include stdio" testing of the library. */
 | 
					 * pngwio.c.  They allow "don't include stdio" testing of the library.
 | 
				
			||||||
/* This is the function that does the actual reading of data.  If you are
 | 
					 * This is the function that does the actual reading of data.  If you are
 | 
				
			||||||
   not reading from a standard C stream, you should create a replacement
 | 
					 * not reading from a standard C stream, you should create a replacement
 | 
				
			||||||
   read_data function and use it at run time with png_set_read_fn(), rather
 | 
					 * read_data function and use it at run time with png_set_read_fn(), rather
 | 
				
			||||||
   than changing the library. */
 | 
					 * than changing the library.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef USE_FAR_KEYWORD
 | 
					#ifndef USE_FAR_KEYWORD
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -309,7 +321,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
/* this is the model-independent version. Since the standard I/O library
 | 
					/* This is the model-independent version. Since the standard I/O library
 | 
				
			||||||
   can't handle far buffers in the medium and small models, we have to copy
 | 
					   can't handle far buffers in the medium and small models, we have to copy
 | 
				
			||||||
   the data.
 | 
					   the data.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
@ -341,7 +353,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
         read = MIN(NEAR_BUF_SIZE, remaining);
 | 
					         read = MIN(NEAR_BUF_SIZE, remaining);
 | 
				
			||||||
         READFILE(io_ptr, buf, 1, err);
 | 
					         READFILE(io_ptr, buf, 1, err);
 | 
				
			||||||
         png_memcpy(data, buf, read); /* copy far buffer to near buffer */
 | 
					         png_memcpy(data, buf, read); /* Copy far buffer to near buffer */
 | 
				
			||||||
         if (err != read)
 | 
					         if (err != read)
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
@ -352,9 +364,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      while (remaining != 0);
 | 
					      while (remaining != 0);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   if (check != length)
 | 
					   if (check != length)
 | 
				
			||||||
   {
 | 
					 | 
				
			||||||
      png_error(png_ptr, "read Error");
 | 
					      png_error(png_ptr, "read Error");
 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* USE_FAR_KEYWORD */
 | 
					#endif /* USE_FAR_KEYWORD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -363,14 +373,15 @@ static void
 | 
				
			|||||||
pngtest_flush(png_structp png_ptr)
 | 
					pngtest_flush(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   /* Do nothing; fflush() is said to be just a waste of energy. */
 | 
					   /* Do nothing; fflush() is said to be just a waste of energy. */
 | 
				
			||||||
   png_ptr = png_ptr;  /* stifle compiler warning */
 | 
					   png_ptr = png_ptr;  /* Stifle compiler warning */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is the function that does the actual writing of data.  If you are
 | 
					/* This is the function that does the actual writing of data.  If you are
 | 
				
			||||||
   not writing to a standard C stream, you should create a replacement
 | 
					 * not writing to a standard C stream, you should create a replacement
 | 
				
			||||||
   write_data function and use it at run time with png_set_write_fn(), rather
 | 
					 * write_data function and use it at run time with png_set_write_fn(), rather
 | 
				
			||||||
   than changing the library. */
 | 
					 * than changing the library.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
#ifndef USE_FAR_KEYWORD
 | 
					#ifndef USE_FAR_KEYWORD
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
					pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			||||||
@ -384,7 +395,7 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
/* this is the model-independent version. Since the standard I/O library
 | 
					/* This is the model-independent version. Since the standard I/O library
 | 
				
			||||||
   can't handle far buffers in the medium and small models, we have to copy
 | 
					   can't handle far buffers in the medium and small models, we have to copy
 | 
				
			||||||
   the data.
 | 
					   the data.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
@ -415,7 +426,7 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      do
 | 
					      do
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         written = MIN(NEAR_BUF_SIZE, remaining);
 | 
					         written = MIN(NEAR_BUF_SIZE, remaining);
 | 
				
			||||||
         png_memcpy(buf, data, written); /* copy far buffer to near buffer */
 | 
					         png_memcpy(buf, data, written); /* Copy far buffer to near buffer */
 | 
				
			||||||
         WRITEFILE(io_ptr, buf, written, err);
 | 
					         WRITEFILE(io_ptr, buf, written, err);
 | 
				
			||||||
         if (err != written)
 | 
					         if (err != written)
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
@ -457,7 +468,8 @@ pngtest_error(png_structp png_ptr, png_const_charp message)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   pngtest_warning(png_ptr, message);
 | 
					   pngtest_warning(png_ptr, message);
 | 
				
			||||||
   /* We can return because png_error calls the default handler, which is
 | 
					   /* We can return because png_error calls the default handler, which is
 | 
				
			||||||
    * actually OK in this case. */
 | 
					    * actually OK in this case.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_NO_STDIO */
 | 
					#endif /* PNG_NO_STDIO */
 | 
				
			||||||
/* END of code to validate stdio-free compilation */
 | 
					/* END of code to validate stdio-free compilation */
 | 
				
			||||||
@ -466,13 +478,14 @@ pngtest_error(png_structp png_ptr, png_const_charp message)
 | 
				
			|||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
 | 
					#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Allocate memory.  For reasonable files, size should never exceed
 | 
					/* Allocate memory.  For reasonable files, size should never exceed
 | 
				
			||||||
   64K.  However, zlib may allocate more then 64K if you don't tell
 | 
					 * 64K.  However, zlib may allocate more then 64K if you don't tell
 | 
				
			||||||
   it not to.  See zconf.h and png.h for more information.  zlib does
 | 
					 * it not to.  See zconf.h and png.h for more information.  zlib does
 | 
				
			||||||
   need to allocate exactly 64K, so whatever you call here must
 | 
					 * need to allocate exactly 64K, so whatever you call here must
 | 
				
			||||||
   have the ability to do that.
 | 
					 * have the ability to do that.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
   This piece of code can be compiled to validate max 64K allocations
 | 
					 * This piece of code can be compiled to validate max 64K allocations
 | 
				
			||||||
   by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. */
 | 
					 * by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
typedef struct memory_information
 | 
					typedef struct memory_information
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_uint_32               size;
 | 
					   png_uint_32               size;
 | 
				
			||||||
@ -495,7 +508,8 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* png_malloc has already tested for NULL; png_create_struct calls
 | 
					   /* png_malloc has already tested for NULL; png_create_struct calls
 | 
				
			||||||
      png_debug_malloc directly, with png_ptr == NULL which is OK */
 | 
					    * png_debug_malloc directly, with png_ptr == NULL which is OK
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (size == 0)
 | 
					   if (size == 0)
 | 
				
			||||||
      return (NULL);
 | 
					      return (NULL);
 | 
				
			||||||
@ -592,7 +606,7 @@ png_debug_free(png_structp png_ptr, png_voidp ptr)
 | 
				
			|||||||
/* Demonstration of user chunk support of the sTER and vpAg chunks */
 | 
					/* Demonstration of user chunk support of the sTER and vpAg chunks */
 | 
				
			||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* (sTER is a public chunk not yet understood by libpng.  vpAg is a private
 | 
					/* (sTER is a public chunk not yet known by libpng.  vpAg is a private
 | 
				
			||||||
chunk used in ImageMagick to store "virtual page" size).  */
 | 
					chunk used in ImageMagick to store "virtual page" size).  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static png_uint_32 user_chunk_data[4];
 | 
					static png_uint_32 user_chunk_data[4];
 | 
				
			||||||
@ -606,50 +620,51 @@ static png_uint_32 user_chunk_data[4];
 | 
				
			|||||||
static int read_user_chunk_callback(png_struct *png_ptr,
 | 
					static int read_user_chunk_callback(png_struct *png_ptr,
 | 
				
			||||||
   png_unknown_chunkp chunk)
 | 
					   png_unknown_chunkp chunk)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  png_uint_32
 | 
					   png_uint_32
 | 
				
			||||||
    *my_user_chunk_data;
 | 
					     *my_user_chunk_data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Return one of the following: */
 | 
					   /* Return one 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
 | 
				
			||||||
 | 
					    *
 | 
				
			||||||
 | 
					    * The unknown chunk structure contains the chunk data:
 | 
				
			||||||
 | 
					    * png_byte name[5];
 | 
				
			||||||
 | 
					    * png_byte *data;
 | 
				
			||||||
 | 
					    * png_size_t size;
 | 
				
			||||||
 | 
					    *
 | 
				
			||||||
 | 
					    * Note that libpng has already taken care of the CRC handling.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* The unknown chunk structure contains the chunk data:
 | 
					   if (chunk->name[0] == 115 && chunk->name[1] ==  84 &&     /* s  T */
 | 
				
			||||||
   * png_byte name[5];
 | 
					       chunk->name[2] ==  69 && chunk->name[3] ==  82)       /* E  R */
 | 
				
			||||||
   * png_byte *data;
 | 
					      {
 | 
				
			||||||
   * png_size_t size;
 | 
					         /* Found sTER chunk */
 | 
				
			||||||
   *
 | 
					         if (chunk->size != 1)
 | 
				
			||||||
   *  Note that libpng has already taken care of the CRC handling.
 | 
					            return (-1); /* Error return */
 | 
				
			||||||
   */
 | 
					         if (chunk->data[0] != 0 && chunk->data[0] != 1)
 | 
				
			||||||
 | 
					            return (-1);  /* Invalid mode */
 | 
				
			||||||
 | 
					         my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
 | 
				
			||||||
 | 
					         my_user_chunk_data[0]=chunk->data[0]+1;
 | 
				
			||||||
 | 
					         return (1);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (chunk->name[0] == 115 && chunk->name[1] ==  84 &&     /* s  T */
 | 
					   if (chunk->name[0] != 118 || chunk->name[1] != 112 ||    /* v  p */
 | 
				
			||||||
      chunk->name[2] ==  69 && chunk->name[3] ==  82)       /* E  R */
 | 
					       chunk->name[2] !=  65 || chunk->name[3] != 103)      /* A  g */
 | 
				
			||||||
     {
 | 
					      return (0); /* Did not recognize */
 | 
				
			||||||
       /* Found sTER chunk */
 | 
					 | 
				
			||||||
       if (chunk->size != 1)
 | 
					 | 
				
			||||||
         return (-1); /* Error return */
 | 
					 | 
				
			||||||
       if (chunk->data[0] != 0 && chunk->data[0] != 1)
 | 
					 | 
				
			||||||
          return (-1);  /* Invalid mode */
 | 
					 | 
				
			||||||
       my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
 | 
					 | 
				
			||||||
       my_user_chunk_data[0]=chunk->data[0]+1;
 | 
					 | 
				
			||||||
       return (1);
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
  if (chunk->name[0] != 118 || chunk->name[1] != 112 ||    /* v  p */
 | 
					 | 
				
			||||||
      chunk->name[2] !=  65 || chunk->name[3] != 103)      /* A  g */
 | 
					 | 
				
			||||||
    return (0); /* Did not recognize */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Found ImageMagick vpAg chunk */
 | 
					   /* Found ImageMagick vpAg chunk */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (chunk->size != 9)
 | 
					   if (chunk->size != 9)
 | 
				
			||||||
    return (-1); /* Error return */
 | 
					      return (-1); /* Error return */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
 | 
					   my_user_chunk_data=(png_uint_32 *) png_get_user_chunk_ptr(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  my_user_chunk_data[1]=png_get_uint_31(png_ptr, chunk->data);
 | 
					   my_user_chunk_data[1]=png_get_uint_31(png_ptr, chunk->data);
 | 
				
			||||||
  my_user_chunk_data[2]=png_get_uint_31(png_ptr, chunk->data + 4);
 | 
					   my_user_chunk_data[2]=png_get_uint_31(png_ptr, chunk->data + 4);
 | 
				
			||||||
  my_user_chunk_data[3]=(png_uint_32)chunk->data[8];
 | 
					   my_user_chunk_data[3]=(png_uint_32)chunk->data[8];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (1);
 | 
					   return (1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -730,12 +745,12 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
  user_chunk_data[0] = 0;
 | 
					   user_chunk_data[0] = 0;
 | 
				
			||||||
  user_chunk_data[1] = 0;
 | 
					   user_chunk_data[1] = 0;
 | 
				
			||||||
  user_chunk_data[2] = 0;
 | 
					   user_chunk_data[2] = 0;
 | 
				
			||||||
  user_chunk_data[3] = 0;
 | 
					   user_chunk_data[3] = 0;
 | 
				
			||||||
  png_set_read_user_chunk_fn(read_ptr, user_chunk_data,
 | 
					   png_set_read_user_chunk_fn(read_ptr, user_chunk_data,
 | 
				
			||||||
    read_user_chunk_callback);
 | 
					     read_user_chunk_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef PNG_WRITE_SUPPORTED
 | 
					#ifdef PNG_WRITE_SUPPORTED
 | 
				
			||||||
@ -844,10 +859,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
 | 
					#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     int i;
 | 
					      int i;
 | 
				
			||||||
     for (i = 0; i<256; i++)
 | 
					      for (i = 0; i<256; i++)
 | 
				
			||||||
        filters_used[i] = 0;
 | 
					         filters_used[i] = 0;
 | 
				
			||||||
     png_set_read_user_transform_fn(read_ptr, count_filters);
 | 
					      png_set_read_user_transform_fn(read_ptr, count_filters);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
					#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
				
			||||||
@ -906,9 +921,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      png_fixed_point gamma;
 | 
					      png_fixed_point gamma;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma))
 | 
					      if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma);
 | 
					         png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#else /* Use floating point versions */
 | 
					#else /* Use floating point versions */
 | 
				
			||||||
@ -930,13 +943,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      double gamma;
 | 
					      double gamma;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_gAMA(read_ptr, read_info_ptr, &gamma))
 | 
					      if (png_get_gAMA(read_ptr, read_info_ptr, &gamma))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_gAMA(write_ptr, write_info_ptr, gamma);
 | 
					         png_set_gAMA(write_ptr, write_info_ptr, gamma);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif /* floating point */
 | 
					#endif /* Floating point */
 | 
				
			||||||
#endif /* fixed point */
 | 
					#endif /* Fixed point */
 | 
				
			||||||
#if defined(PNG_iCCP_SUPPORTED)
 | 
					#if defined(PNG_iCCP_SUPPORTED)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_charp name;
 | 
					      png_charp name;
 | 
				
			||||||
@ -957,9 +968,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      int intent;
 | 
					      int intent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_sRGB(read_ptr, read_info_ptr, &intent))
 | 
					      if (png_get_sRGB(read_ptr, read_info_ptr, &intent))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_sRGB(write_ptr, write_info_ptr, intent);
 | 
					         png_set_sRGB(write_ptr, write_info_ptr, intent);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -967,9 +976,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      int num_palette;
 | 
					      int num_palette;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette))
 | 
					      if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette);
 | 
					         png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#if defined(PNG_bKGD_SUPPORTED)
 | 
					#if defined(PNG_bKGD_SUPPORTED)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -986,9 +993,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      png_uint_16p hist;
 | 
					      png_uint_16p hist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_hIST(read_ptr, read_info_ptr, &hist))
 | 
					      if (png_get_hIST(read_ptr, read_info_ptr, &hist))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_hIST(write_ptr, write_info_ptr, hist);
 | 
					         png_set_hIST(write_ptr, write_info_ptr, hist);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_oFFs_SUPPORTED)
 | 
					#if defined(PNG_oFFs_SUPPORTED)
 | 
				
			||||||
@ -997,7 +1002,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      int unit_type;
 | 
					      int unit_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_oFFs(read_ptr, read_info_ptr, &offset_x, &offset_y,
 | 
					      if (png_get_oFFs(read_ptr, read_info_ptr, &offset_x, &offset_y,
 | 
				
			||||||
         &unit_type))
 | 
					          &unit_type))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type);
 | 
					         png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -1024,9 +1029,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      int unit_type;
 | 
					      int unit_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type))
 | 
					      if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type);
 | 
					         png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_sBIT_SUPPORTED)
 | 
					#if defined(PNG_sBIT_SUPPORTED)
 | 
				
			||||||
@ -1034,9 +1037,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      png_color_8p sig_bit;
 | 
					      png_color_8p sig_bit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit))
 | 
					      if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit))
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
         png_set_sBIT(write_ptr, write_info_ptr, sig_bit);
 | 
					         png_set_sBIT(write_ptr, write_info_ptr, sig_bit);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_sCAL_SUPPORTED)
 | 
					#if defined(PNG_sCAL_SUPPORTED)
 | 
				
			||||||
@ -1086,9 +1087,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
         png_set_tIME(write_ptr, write_info_ptr, mod_time);
 | 
					         png_set_tIME(write_ptr, write_info_ptr, mod_time);
 | 
				
			||||||
#if defined(PNG_TIME_RFC1123_SUPPORTED)
 | 
					#if defined(PNG_TIME_RFC1123_SUPPORTED)
 | 
				
			||||||
         /* we have to use png_memcpy instead of "=" because the string
 | 
					         /* We have to use png_memcpy instead of "=" because the string
 | 
				
			||||||
            pointed to by png_convert_to_rfc1123() gets free'ed before
 | 
					          * pointed to by png_convert_to_rfc1123() gets free'ed before
 | 
				
			||||||
            we use it */
 | 
					          * we use it.
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
         png_memcpy(tIME_string,
 | 
					         png_memcpy(tIME_string,
 | 
				
			||||||
                    png_convert_to_rfc1123(read_ptr, mod_time),
 | 
					                    png_convert_to_rfc1123(read_ptr, mod_time),
 | 
				
			||||||
                    png_sizeof(tIME_string));
 | 
					                    png_sizeof(tIME_string));
 | 
				
			||||||
@ -1110,13 +1112,13 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
         int sample_max = (1 << read_info_ptr->bit_depth);
 | 
					         int sample_max = (1 << read_info_ptr->bit_depth);
 | 
				
			||||||
         /* libpng doesn't reject a tRNS chunk with out-of-range samples */
 | 
					         /* libpng doesn't reject a tRNS chunk with out-of-range samples */
 | 
				
			||||||
         if (!((read_info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
 | 
					         if (!((read_info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
 | 
				
			||||||
            (int)trans_values->gray > sample_max) ||
 | 
					             (int)trans_values->gray > sample_max) ||
 | 
				
			||||||
            (read_info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
 | 
					             (read_info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
 | 
				
			||||||
            ((int)trans_values->red > sample_max ||
 | 
					             ((int)trans_values->red > sample_max ||
 | 
				
			||||||
            (int)trans_values->green > sample_max ||
 | 
					             (int)trans_values->green > sample_max ||
 | 
				
			||||||
            (int)trans_values->blue > sample_max))))
 | 
					             (int)trans_values->blue > sample_max))))
 | 
				
			||||||
           png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans,
 | 
					            png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans,
 | 
				
			||||||
              trans_values);
 | 
					               trans_values);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1130,9 +1132,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
         png_size_t i;
 | 
					         png_size_t i;
 | 
				
			||||||
         png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns,
 | 
					         png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns,
 | 
				
			||||||
           num_unknowns);
 | 
					           num_unknowns);
 | 
				
			||||||
         /* copy the locations from the read_info_ptr.  The automatically
 | 
					         /* Copy the locations from the read_info_ptr.  The automatically
 | 
				
			||||||
            generated locations in write_info_ptr are wrong because we
 | 
					          * generated locations in write_info_ptr are wrong because we
 | 
				
			||||||
            haven't written anything yet */
 | 
					          * haven't written anything yet.
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
         for (i = 0; i < (png_size_t)num_unknowns; i++)
 | 
					         for (i = 0; i < (png_size_t)num_unknowns; i++)
 | 
				
			||||||
           png_set_unknown_chunk_location(write_ptr, write_info_ptr, i,
 | 
					           png_set_unknown_chunk_location(write_ptr, write_info_ptr, i,
 | 
				
			||||||
             unknowns[i].location);
 | 
					             unknowns[i].location);
 | 
				
			||||||
@ -1144,40 +1147,40 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
   png_debug(0, "Writing info struct");
 | 
					   png_debug(0, "Writing info struct");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* If we wanted, we could write info in two steps:
 | 
					/* If we wanted, we could write info in two steps:
 | 
				
			||||||
   png_write_info_before_PLTE(write_ptr, write_info_ptr);
 | 
					 * png_write_info_before_PLTE(write_ptr, write_info_ptr);
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
   png_write_info(write_ptr, write_info_ptr);
 | 
					   png_write_info(write_ptr, write_info_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
   if (user_chunk_data[0] != 0)
 | 
					   if (user_chunk_data[0] != 0)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_byte png_sTER[5] = {115,  84,  69,  82, '\0'};
 | 
					      png_byte png_sTER[5] = {115,  84,  69,  82, '\0'};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     unsigned char
 | 
					      unsigned char
 | 
				
			||||||
       ster_chunk_data[1];
 | 
					        ster_chunk_data[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     if (verbose)
 | 
					      if (verbose)
 | 
				
			||||||
        fprintf(STDERR, "\n stereo mode = %lu\n",
 | 
					         fprintf(STDERR, "\n stereo mode = %lu\n",
 | 
				
			||||||
          (unsigned long)(user_chunk_data[0] - 1));
 | 
					           (unsigned long)(user_chunk_data[0] - 1));
 | 
				
			||||||
     ster_chunk_data[0]=(unsigned char)(user_chunk_data[0] - 1);
 | 
					      ster_chunk_data[0]=(unsigned char)(user_chunk_data[0] - 1);
 | 
				
			||||||
     png_write_chunk(write_ptr, png_sTER, ster_chunk_data, 1);
 | 
					      png_write_chunk(write_ptr, png_sTER, ster_chunk_data, 1);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   if (user_chunk_data[1] != 0 || user_chunk_data[2] != 0)
 | 
					   if (user_chunk_data[1] != 0 || user_chunk_data[2] != 0)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     png_byte png_vpAg[5] = {118, 112,  65, 103, '\0'};
 | 
					      png_byte png_vpAg[5] = {118, 112,  65, 103, '\0'};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     unsigned char
 | 
					      unsigned char
 | 
				
			||||||
       vpag_chunk_data[9];
 | 
					        vpag_chunk_data[9];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     if (verbose)
 | 
					      if (verbose)
 | 
				
			||||||
        fprintf(STDERR, " vpAg = %lu x %lu, units = %lu\n",
 | 
					         fprintf(STDERR, " vpAg = %lu x %lu, units = %lu\n",
 | 
				
			||||||
          (unsigned long)user_chunk_data[1],
 | 
					           (unsigned long)user_chunk_data[1],
 | 
				
			||||||
          (unsigned long)user_chunk_data[2],
 | 
					           (unsigned long)user_chunk_data[2],
 | 
				
			||||||
          (unsigned long)user_chunk_data[3]);
 | 
					           (unsigned long)user_chunk_data[3]);
 | 
				
			||||||
     png_save_uint_32(vpag_chunk_data, user_chunk_data[1]);
 | 
					      png_save_uint_32(vpag_chunk_data, user_chunk_data[1]);
 | 
				
			||||||
     png_save_uint_32(vpag_chunk_data + 4, user_chunk_data[2]);
 | 
					      png_save_uint_32(vpag_chunk_data + 4, user_chunk_data[2]);
 | 
				
			||||||
     vpag_chunk_data[8] = (unsigned char)(user_chunk_data[3] & 0xff);
 | 
					      vpag_chunk_data[8] = (unsigned char)(user_chunk_data[3] & 0xff);
 | 
				
			||||||
     png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9);
 | 
					      png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1272,7 +1275,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
         png_set_tIME(write_ptr, write_end_info_ptr, mod_time);
 | 
					         png_set_tIME(write_ptr, write_end_info_ptr, mod_time);
 | 
				
			||||||
#if defined(PNG_TIME_RFC1123_SUPPORTED)
 | 
					#if defined(PNG_TIME_RFC1123_SUPPORTED)
 | 
				
			||||||
         /* we have to use png_memcpy instead of "=" because the string
 | 
					         /* We have to use png_memcpy instead of "=" because the string
 | 
				
			||||||
            pointed to by png_convert_to_rfc1123() gets free'ed before
 | 
					            pointed to by png_convert_to_rfc1123() gets free'ed before
 | 
				
			||||||
            we use it */
 | 
					            we use it */
 | 
				
			||||||
         png_memcpy(tIME_string,
 | 
					         png_memcpy(tIME_string,
 | 
				
			||||||
@ -1295,9 +1298,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
         png_size_t i;
 | 
					         png_size_t i;
 | 
				
			||||||
         png_set_unknown_chunks(write_ptr, write_end_info_ptr, unknowns,
 | 
					         png_set_unknown_chunks(write_ptr, write_end_info_ptr, unknowns,
 | 
				
			||||||
           num_unknowns);
 | 
					           num_unknowns);
 | 
				
			||||||
         /* copy the locations from the read_info_ptr.  The automatically
 | 
					         /* Copy the locations from the read_info_ptr.  The automatically
 | 
				
			||||||
            generated locations in write_end_info_ptr are wrong because we
 | 
					          * generated locations in write_end_info_ptr are wrong because we
 | 
				
			||||||
            haven't written the end_info yet */
 | 
					          * haven't written the end_info yet.
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
         for (i = 0; i < (png_size_t)num_unknowns; i++)
 | 
					         for (i = 0; i < (png_size_t)num_unknowns; i++)
 | 
				
			||||||
           png_set_unknown_chunk_location(write_ptr, write_end_info_ptr, i,
 | 
					           png_set_unknown_chunk_location(write_ptr, write_end_info_ptr, i,
 | 
				
			||||||
             unknowns[i].location);
 | 
					             unknowns[i].location);
 | 
				
			||||||
@ -1420,7 +1424,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
 | 
				
			|||||||
   return (0);
 | 
					   return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* input and output filenames */
 | 
					/* Input and output filenames */
 | 
				
			||||||
#ifdef RISCOS
 | 
					#ifdef RISCOS
 | 
				
			||||||
static PNG_CONST char *inname = "pngtest/png";
 | 
					static PNG_CONST char *inname = "pngtest/png";
 | 
				
			||||||
static PNG_CONST char *outname = "pngout/png";
 | 
					static PNG_CONST char *outname = "pngout/png";
 | 
				
			||||||
@ -1449,9 +1453,10 @@ main(int argc, char *argv[])
 | 
				
			|||||||
                    (long)png_sizeof(png_struct), (long)png_sizeof(png_info));
 | 
					                    (long)png_sizeof(png_struct), (long)png_sizeof(png_info));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Do some consistency checking on the memory allocation settings, I'm
 | 
					   /* Do some consistency checking on the memory allocation settings, I'm
 | 
				
			||||||
      not sure this matters, but it is nice to know, the first of these
 | 
					    * not sure this matters, but it is nice to know, the first of these
 | 
				
			||||||
      tests should be impossible because of the way the macros are set
 | 
					    * tests should be impossible because of the way the macros are set
 | 
				
			||||||
      in pngconf.h */
 | 
					    * in pngconf.h
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
 | 
					#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
 | 
				
			||||||
      fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n");
 | 
					      fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1681,4 +1686,4 @@ main(int argc, char *argv[])
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 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 version_1_0_44 your_png_h_is_not_version_1_0_44;
 | 
					typedef version_1_0_45 your_png_h_is_not_version_1_0_45;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										64
									
								
								pngtrans.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								pngtrans.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* 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.2.30 [August 15, 2008]
 | 
					 * Last changed in libpng 1.2.36 [May 14, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -13,35 +13,38 @@
 | 
				
			|||||||
#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 | 
					#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 | 
					#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 | 
				
			||||||
/* turn on BGR-to-RGB mapping */
 | 
					/* Turn on BGR-to-RGB mapping */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_bgr(png_structp png_ptr)
 | 
					png_set_bgr(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_bgr");
 | 
					   png_debug(1, "in png_set_bgr");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_BGR;
 | 
					   png_ptr->transformations |= PNG_BGR;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
					#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
				
			||||||
/* turn on 16 bit byte swapping */
 | 
					/* Turn on 16 bit byte swapping */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_swap(png_structp png_ptr)
 | 
					png_set_swap(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_swap");
 | 
					   png_debug(1, "in png_set_swap");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (png_ptr->bit_depth == 16)
 | 
					   if (png_ptr->bit_depth == 16)
 | 
				
			||||||
      png_ptr->transformations |= PNG_SWAP_BYTES;
 | 
					      png_ptr->transformations |= PNG_SWAP_BYTES;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
 | 
					#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
 | 
				
			||||||
/* turn on pixel packing */
 | 
					/* Turn on pixel packing */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_packing(png_structp png_ptr)
 | 
					png_set_packing(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_packing");
 | 
					   png_debug(1, "in png_set_packing");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (png_ptr->bit_depth < 8)
 | 
					   if (png_ptr->bit_depth < 8)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_ptr->transformations |= PNG_PACK;
 | 
					      png_ptr->transformations |= PNG_PACK;
 | 
				
			||||||
@ -51,12 +54,13 @@ png_set_packing(png_structp png_ptr)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 | 
					#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 | 
				
			||||||
/* turn on packed pixel swapping */
 | 
					/* Turn on packed pixel swapping */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_packswap(png_structp png_ptr)
 | 
					png_set_packswap(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_packswap");
 | 
					   png_debug(1, "in png_set_packswap");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (png_ptr->bit_depth < 8)
 | 
					   if (png_ptr->bit_depth < 8)
 | 
				
			||||||
      png_ptr->transformations |= PNG_PACKSWAP;
 | 
					      png_ptr->transformations |= PNG_PACKSWAP;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -67,7 +71,8 @@ void PNGAPI
 | 
				
			|||||||
png_set_shift(png_structp png_ptr, png_color_8p true_bits)
 | 
					png_set_shift(png_structp png_ptr, png_color_8p true_bits)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_shift");
 | 
					   png_debug(1, "in png_set_shift");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_SHIFT;
 | 
					   png_ptr->transformations |= PNG_SHIFT;
 | 
				
			||||||
   png_ptr->shift = *true_bits;
 | 
					   png_ptr->shift = *true_bits;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -99,7 +104,8 @@ void PNGAPI
 | 
				
			|||||||
png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
 | 
					png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_filler");
 | 
					   png_debug(1, "in png_set_filler");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_FILLER;
 | 
					   png_ptr->transformations |= PNG_FILLER;
 | 
				
			||||||
   png_ptr->filler = (png_byte)filler;
 | 
					   png_ptr->filler = (png_byte)filler;
 | 
				
			||||||
   if (filler_loc == PNG_FILLER_AFTER)
 | 
					   if (filler_loc == PNG_FILLER_AFTER)
 | 
				
			||||||
@ -132,7 +138,8 @@ void PNGAPI
 | 
				
			|||||||
png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
 | 
					png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_add_alpha");
 | 
					   png_debug(1, "in png_set_add_alpha");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_set_filler(png_ptr, filler, filler_loc);
 | 
					   png_set_filler(png_ptr, filler, filler_loc);
 | 
				
			||||||
   png_ptr->transformations |= PNG_ADD_ALPHA;
 | 
					   png_ptr->transformations |= PNG_ADD_ALPHA;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -146,7 +153,8 @@ void PNGAPI
 | 
				
			|||||||
png_set_swap_alpha(png_structp png_ptr)
 | 
					png_set_swap_alpha(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_swap_alpha");
 | 
					   png_debug(1, "in png_set_swap_alpha");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_SWAP_ALPHA;
 | 
					   png_ptr->transformations |= PNG_SWAP_ALPHA;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -157,7 +165,8 @@ void PNGAPI
 | 
				
			|||||||
png_set_invert_alpha(png_structp png_ptr)
 | 
					png_set_invert_alpha(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_invert_alpha");
 | 
					   png_debug(1, "in png_set_invert_alpha");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_INVERT_ALPHA;
 | 
					   png_ptr->transformations |= PNG_INVERT_ALPHA;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -167,11 +176,12 @@ void PNGAPI
 | 
				
			|||||||
png_set_invert_mono(png_structp png_ptr)
 | 
					png_set_invert_mono(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_invert_mono");
 | 
					   png_debug(1, "in png_set_invert_mono");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_ptr->transformations |= PNG_INVERT_MONO;
 | 
					   png_ptr->transformations |= PNG_INVERT_MONO;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* invert monochrome grayscale data */
 | 
					/* Invert monochrome grayscale data */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_invert(png_row_infop row_info, png_bytep row)
 | 
					png_do_invert(png_row_infop row_info, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -226,7 +236,7 @@ png_do_invert(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
					#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
				
			||||||
/* swaps byte order on 16 bit depth images */
 | 
					/* Swaps byte order on 16 bit depth images */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_swap(png_row_infop row_info, png_bytep row)
 | 
					png_do_swap(png_row_infop row_info, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -357,7 +367,7 @@ static PNG_CONST png_byte fourbppswaptable[256] = {
 | 
				
			|||||||
   0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF
 | 
					   0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* swaps pixel packing order within bytes */
 | 
					/* Swaps pixel packing order within bytes */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_packswap(png_row_infop row_info, png_bytep row)
 | 
					png_do_packswap(png_row_infop row_info, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -389,7 +399,7 @@ png_do_packswap(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
 | 
					#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
 | 
				
			||||||
    defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
 | 
					    defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
 | 
				
			||||||
/* remove filler or alpha byte(s) */
 | 
					/* Remove filler or alpha byte(s) */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
 | 
					png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -404,9 +414,9 @@ png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
 | 
				
			|||||||
      png_uint_32 i;
 | 
					      png_uint_32 i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
 | 
					      if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
 | 
				
			||||||
         (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
 | 
					          (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
 | 
				
			||||||
         (flags & PNG_FLAG_STRIP_ALPHA))) &&
 | 
					          (flags & PNG_FLAG_STRIP_ALPHA))) &&
 | 
				
			||||||
         row_info->channels == 4)
 | 
					          row_info->channels == 4)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (row_info->bit_depth == 8)
 | 
					         if (row_info->bit_depth == 8)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
@ -547,7 +557,7 @@ png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 | 
					#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 | 
				
			||||||
/* swaps red and blue bytes within a pixel */
 | 
					/* Swaps red and blue bytes within a pixel */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_bgr(png_row_infop row_info, png_bytep row)
 | 
					png_do_bgr(png_row_infop row_info, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -631,7 +641,8 @@ png_set_user_transform_info(png_structp png_ptr, png_voidp
 | 
				
			|||||||
   user_transform_ptr, int user_transform_depth, int user_transform_channels)
 | 
					   user_transform_ptr, int user_transform_depth, int user_transform_channels)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_set_user_transform_info");
 | 
					   png_debug(1, "in png_set_user_transform_info");
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
					#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
				
			||||||
   png_ptr->user_transform_ptr = user_transform_ptr;
 | 
					   png_ptr->user_transform_ptr = user_transform_ptr;
 | 
				
			||||||
   png_ptr->user_transform_depth = (png_byte)user_transform_depth;
 | 
					   png_ptr->user_transform_depth = (png_byte)user_transform_depth;
 | 
				
			||||||
@ -652,7 +663,8 @@ png_set_user_transform_info(png_structp png_ptr, png_voidp
 | 
				
			|||||||
png_voidp PNGAPI
 | 
					png_voidp PNGAPI
 | 
				
			||||||
png_get_user_transform_ptr(png_structp png_ptr)
 | 
					png_get_user_transform_ptr(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return (NULL);
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return (NULL);
 | 
				
			||||||
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
					#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
 | 
				
			||||||
   return ((png_voidp)png_ptr->user_transform_ptr);
 | 
					   return ((png_voidp)png_ptr->user_transform_ptr);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										109
									
								
								pngwio.c
									
									
									
									
									
								
							
							
						
						
									
										109
									
								
								pngwio.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngwio.c - functions for data output
 | 
					/* pngwio.c - functions for data output
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -20,10 +20,11 @@
 | 
				
			|||||||
#ifdef PNG_WRITE_SUPPORTED
 | 
					#ifdef PNG_WRITE_SUPPORTED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Write the data to whatever output you are using.  The default routine
 | 
					/* Write the data to whatever output you are using.  The default routine
 | 
				
			||||||
   writes to a file pointer.  Note that this routine sometimes gets called
 | 
					 * writes to a file pointer.  Note that this routine sometimes gets called
 | 
				
			||||||
   with very small lengths, so you should implement some kind of simple
 | 
					 * with very small lengths, so you should implement some kind of simple
 | 
				
			||||||
   buffering if you are using unbuffered writes.  This should never be asked
 | 
					 * buffering if you are using unbuffered writes.  This should never be asked
 | 
				
			||||||
   to write more than 64K on a 16 bit machine.  */
 | 
					 * to write more than 64K on a 16 bit machine.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
					png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			||||||
@ -36,16 +37,18 @@ png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_NO_STDIO)
 | 
					#if !defined(PNG_NO_STDIO)
 | 
				
			||||||
/* This is the function that does the actual writing of data.  If you are
 | 
					/* This is the function that does the actual writing of data.  If you are
 | 
				
			||||||
   not writing to a standard C stream, you should create a replacement
 | 
					 * not writing to a standard C stream, you should create a replacement
 | 
				
			||||||
   write_data function and use it at run time with png_set_write_fn(), rather
 | 
					 * write_data function and use it at run time with png_set_write_fn(), rather
 | 
				
			||||||
   than changing the library. */
 | 
					 * than changing the library.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
#ifndef USE_FAR_KEYWORD
 | 
					#ifndef USE_FAR_KEYWORD
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
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, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_uint_32 check;
 | 
					   png_uint_32 check;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
#if defined(_WIN32_WCE)
 | 
					#if defined(_WIN32_WCE)
 | 
				
			||||||
   if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
 | 
					   if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
 | 
				
			||||||
      check = 0;
 | 
					      check = 0;
 | 
				
			||||||
@ -56,10 +59,10 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      png_error(png_ptr, "Write Error");
 | 
					      png_error(png_ptr, "Write Error");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
/* this is the model-independent version. Since the standard I/O library
 | 
					/* This is the model-independent version. Since the standard I/O library
 | 
				
			||||||
   can't handle far buffers in the medium and small models, we have to copy
 | 
					 * can't handle far buffers in the medium and small models, we have to copy
 | 
				
			||||||
   the data.
 | 
					 * the data.
 | 
				
			||||||
*/
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NEAR_BUF_SIZE 1024
 | 
					#define NEAR_BUF_SIZE 1024
 | 
				
			||||||
#define MIN(a,b) (a <= b ? a : b)
 | 
					#define MIN(a,b) (a <= b ? a : b)
 | 
				
			||||||
@ -71,7 +74,8 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
   png_byte *near_data;  /* Needs to be "png_byte *" instead of "png_bytep" */
 | 
					   png_byte *near_data;  /* Needs to be "png_byte *" instead of "png_bytep" */
 | 
				
			||||||
   png_FILE_p io_ptr;
 | 
					   png_FILE_p io_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   /* Check if data really is near. If so, use usual code. */
 | 
					   /* Check if data really is near. If so, use usual code. */
 | 
				
			||||||
   near_data = (png_byte *)CVT_PTR_NOCHECK(data);
 | 
					   near_data = (png_byte *)CVT_PTR_NOCHECK(data);
 | 
				
			||||||
   io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
 | 
					   io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
 | 
				
			||||||
@ -93,7 +97,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      do
 | 
					      do
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         written = MIN(NEAR_BUF_SIZE, remaining);
 | 
					         written = MIN(NEAR_BUF_SIZE, remaining);
 | 
				
			||||||
         png_memcpy(buf, data, written); /* copy far buffer to near buffer */
 | 
					         png_memcpy(buf, data, written); /* Copy far buffer to near buffer */
 | 
				
			||||||
#if defined(_WIN32_WCE)
 | 
					#if defined(_WIN32_WCE)
 | 
				
			||||||
         if ( !WriteFile(io_ptr, buf, written, &err, NULL) )
 | 
					         if ( !WriteFile(io_ptr, buf, written, &err, NULL) )
 | 
				
			||||||
            err = 0;
 | 
					            err = 0;
 | 
				
			||||||
@ -102,8 +106,10 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
         if (err != written)
 | 
					         if (err != written)
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
            check += err;
 | 
					            check += err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         data += written;
 | 
					         data += written;
 | 
				
			||||||
         remaining -= written;
 | 
					         remaining -= written;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -117,8 +123,9 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This function is called to output any data pending writing (normally
 | 
					/* This function is called to output any data pending writing (normally
 | 
				
			||||||
   to disk).  After png_flush is called, there should be no data pending
 | 
					 * to disk).  After png_flush is called, there should be no data pending
 | 
				
			||||||
   writing in any buffers. */
 | 
					 * writing in any buffers.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
 | 
					#if defined(PNG_WRITE_FLUSH_SUPPORTED)
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_flush(png_structp png_ptr)
 | 
					png_flush(png_structp png_ptr)
 | 
				
			||||||
@ -134,7 +141,8 @@ png_default_flush(png_structp png_ptr)
 | 
				
			|||||||
#if !defined(_WIN32_WCE)
 | 
					#if !defined(_WIN32_WCE)
 | 
				
			||||||
   png_FILE_p io_ptr;
 | 
					   png_FILE_p io_ptr;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
#if !defined(_WIN32_WCE)
 | 
					#if !defined(_WIN32_WCE)
 | 
				
			||||||
   io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
 | 
					   io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
 | 
				
			||||||
   fflush(io_ptr);
 | 
					   fflush(io_ptr);
 | 
				
			||||||
@ -144,43 +152,47 @@ png_default_flush(png_structp png_ptr)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This function allows the application to supply new output functions for
 | 
					/* This function allows the application to supply new output functions for
 | 
				
			||||||
   libpng if standard C streams aren't being used.
 | 
					 * libpng if standard C streams aren't being used.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
   This function takes as its arguments:
 | 
					 * This function takes as its arguments:
 | 
				
			||||||
   png_ptr       - pointer to a png output data structure
 | 
					 * png_ptr       - pointer to a png output data structure
 | 
				
			||||||
   io_ptr        - pointer to user supplied structure containing info about
 | 
					 * io_ptr        - pointer to user supplied structure containing info about
 | 
				
			||||||
                   the output functions.  May be NULL.
 | 
					 *                 the output functions.  May be NULL.
 | 
				
			||||||
   write_data_fn - pointer to a new output function that takes as its
 | 
					 * write_data_fn - pointer to a new output function that takes as its
 | 
				
			||||||
                   arguments a pointer to a png_struct, a pointer to
 | 
					 *                 arguments a pointer to a png_struct, a pointer to
 | 
				
			||||||
                   data to be written, and a 32-bit unsigned int that is
 | 
					 *                 data to be written, and a 32-bit unsigned int that is
 | 
				
			||||||
                   the number of bytes to be written.  The new write
 | 
					 *                 the number of bytes to be written.  The new write
 | 
				
			||||||
                   function should call png_error(png_ptr, "Error msg")
 | 
					 *                 function should call png_error(png_ptr, "Error msg")
 | 
				
			||||||
                   to exit and output any fatal error messages.  May be
 | 
					 *                 to exit and output any fatal error messages.  May be
 | 
				
			||||||
                   NULL, in which case libpng's default function will
 | 
					 *                 NULL, in which case libpng's default function will
 | 
				
			||||||
                   be used.
 | 
					 *                 be used.
 | 
				
			||||||
   flush_data_fn - pointer to a new flush function that takes as its
 | 
					 * flush_data_fn - pointer to a new flush function that takes as its
 | 
				
			||||||
                   arguments a pointer to a png_struct.  After a call to
 | 
					 *                 arguments a pointer to a png_struct.  After a call to
 | 
				
			||||||
                   the flush function, there should be no data in any buffers
 | 
					 *                 the flush function, there should be no data in any buffers
 | 
				
			||||||
                   or pending transmission.  If the output method doesn't do
 | 
					 *                 or pending transmission.  If the output method doesn't do
 | 
				
			||||||
                   any buffering of ouput, a function prototype must still be
 | 
					 *                 any buffering of ouput, a function prototype must still be
 | 
				
			||||||
                   supplied although it doesn't have to do anything.  If
 | 
					 *                 supplied although it doesn't have to do anything.  If
 | 
				
			||||||
                   PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
 | 
					 *                 PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
 | 
				
			||||||
                   time, output_flush_fn will be ignored, although it must be
 | 
					 *                 time, output_flush_fn will be ignored, although it must be
 | 
				
			||||||
                   supplied for compatibility.  May be NULL, in which case
 | 
					 *                 supplied for compatibility.  May be NULL, in which case
 | 
				
			||||||
                   libpng's default function will be used, if
 | 
					 *                 libpng's default function will be used, if
 | 
				
			||||||
                   PNG_WRITE_FLUSH_SUPPORTED is defined.  This is not
 | 
					 *                 PNG_WRITE_FLUSH_SUPPORTED is defined.  This is not
 | 
				
			||||||
                   a good idea if io_ptr does not point to a standard
 | 
					 *                 a good idea if io_ptr does not point to a standard
 | 
				
			||||||
                   *FILE structure. */
 | 
					 *                 *FILE structure.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
 | 
					png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
 | 
				
			||||||
   png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
 | 
					   png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->io_ptr = io_ptr;
 | 
					   png_ptr->io_ptr = io_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(PNG_NO_STDIO)
 | 
					#if !defined(PNG_NO_STDIO)
 | 
				
			||||||
   if (write_data_fn != NULL)
 | 
					   if (write_data_fn != NULL)
 | 
				
			||||||
      png_ptr->write_data_fn = write_data_fn;
 | 
					      png_ptr->write_data_fn = write_data_fn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
      png_ptr->write_data_fn = png_default_write_data;
 | 
					      png_ptr->write_data_fn = png_default_write_data;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@ -191,6 +203,7 @@ png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
 | 
				
			|||||||
#if !defined(PNG_NO_STDIO)
 | 
					#if !defined(PNG_NO_STDIO)
 | 
				
			||||||
   if (output_flush_fn != NULL)
 | 
					   if (output_flush_fn != NULL)
 | 
				
			||||||
      png_ptr->output_flush_fn = output_flush_fn;
 | 
					      png_ptr->output_flush_fn = output_flush_fn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
      png_ptr->output_flush_fn = png_default_flush;
 | 
					      png_ptr->output_flush_fn = png_default_flush;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@ -217,9 +230,11 @@ void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
 | 
				
			|||||||
   void FAR *far_ptr;
 | 
					   void FAR *far_ptr;
 | 
				
			||||||
   FP_OFF(near_ptr) = FP_OFF(ptr);
 | 
					   FP_OFF(near_ptr) = FP_OFF(ptr);
 | 
				
			||||||
   far_ptr = (void FAR *)near_ptr;
 | 
					   far_ptr = (void FAR *)near_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (check != 0)
 | 
					   if (check != 0)
 | 
				
			||||||
      if (FP_SEG(ptr) != FP_SEG(far_ptr))
 | 
					      if (FP_SEG(ptr) != FP_SEG(far_ptr))
 | 
				
			||||||
         png_error(png_ptr, "segment lost in conversion");
 | 
					         png_error(png_ptr, "segment lost in conversion");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return(near_ptr);
 | 
					   return(near_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#  else
 | 
					#  else
 | 
				
			||||||
@ -229,9 +244,11 @@ void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
 | 
				
			|||||||
   void FAR *far_ptr;
 | 
					   void FAR *far_ptr;
 | 
				
			||||||
   near_ptr = (void FAR *)ptr;
 | 
					   near_ptr = (void FAR *)ptr;
 | 
				
			||||||
   far_ptr = (void FAR *)near_ptr;
 | 
					   far_ptr = (void FAR *)near_ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (check != 0)
 | 
					   if (check != 0)
 | 
				
			||||||
      if (far_ptr != ptr)
 | 
					      if (far_ptr != ptr)
 | 
				
			||||||
         png_error(png_ptr, "segment lost in conversion");
 | 
					         png_error(png_ptr, "segment lost in conversion");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return(near_ptr);
 | 
					   return(near_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#   endif
 | 
					#   endif
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										259
									
								
								pngwrite.c
									
									
									
									
									
								
							
							
						
						
									
										259
									
								
								pngwrite.c
									
									
									
									
									
								
							@ -1,14 +1,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngwrite.c - general routines to write a PNG file
 | 
					/* pngwrite.c - general routines to write a PNG file
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.34 [December 18, 2008]
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2008 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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.)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* get internal access to png.h */
 | 
					/* Get internal access to png.h */
 | 
				
			||||||
#define PNG_INTERNAL
 | 
					#define PNG_INTERNAL
 | 
				
			||||||
#include "png.h"
 | 
					#include "png.h"
 | 
				
			||||||
#ifdef PNG_WRITE_SUPPORTED
 | 
					#ifdef PNG_WRITE_SUPPORTED
 | 
				
			||||||
@ -30,7 +30,7 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
   if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
 | 
					   if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
   png_write_sig(png_ptr); /* write PNG signature */
 | 
					   png_write_sig(png_ptr); /* Write PNG signature */
 | 
				
			||||||
#if defined(PNG_MNG_FEATURES_SUPPORTED)
 | 
					#if defined(PNG_MNG_FEATURES_SUPPORTED)
 | 
				
			||||||
   if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted))
 | 
					   if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -38,7 +38,7 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      png_ptr->mng_features_permitted=0;
 | 
					      png_ptr->mng_features_permitted=0;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   /* write IHDR information. */
 | 
					   /* Write IHDR information. */
 | 
				
			||||||
   png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
 | 
					   png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
 | 
				
			||||||
      info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type,
 | 
					      info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type,
 | 
				
			||||||
      info_ptr->filter_type,
 | 
					      info_ptr->filter_type,
 | 
				
			||||||
@ -47,8 +47,9 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
#else
 | 
					#else
 | 
				
			||||||
      0);
 | 
					      0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   /* the rest of these check to see if the valid field has the appropriate
 | 
					   /* The rest of these check to see if the valid field has the appropriate
 | 
				
			||||||
      flag set, and if it does, writes the chunk. */
 | 
					    * flag set, and if it does, writes the chunk.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
#if defined(PNG_WRITE_gAMA_SUPPORTED)
 | 
					#if defined(PNG_WRITE_gAMA_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_gAMA)
 | 
					   if (info_ptr->valid & PNG_INFO_gAMA)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -97,14 +98,14 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->unknown_chunks_num)
 | 
					   if (info_ptr->unknown_chunks_num)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       png_unknown_chunk *up;
 | 
					      png_unknown_chunk *up;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       png_debug(5, "writing extra chunks");
 | 
					      png_debug(5, "writing extra chunks");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       for (up = info_ptr->unknown_chunks;
 | 
					      for (up = info_ptr->unknown_chunks;
 | 
				
			||||||
            up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
 | 
					           up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num;
 | 
				
			||||||
            up++)
 | 
					           up++)
 | 
				
			||||||
       {
 | 
					      {
 | 
				
			||||||
         int keep=png_handle_as_unknown(png_ptr, up->name);
 | 
					         int keep=png_handle_as_unknown(png_ptr, up->name);
 | 
				
			||||||
         if (keep != PNG_HANDLE_CHUNK_NEVER &&
 | 
					         if (keep != PNG_HANDLE_CHUNK_NEVER &&
 | 
				
			||||||
            up->location && !(up->location & PNG_HAVE_PLTE) &&
 | 
					            up->location && !(up->location & PNG_HAVE_PLTE) &&
 | 
				
			||||||
@ -116,7 +117,7 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
               png_warning(png_ptr, "Writing zero-length unknown chunk");
 | 
					               png_warning(png_ptr, "Writing zero-length unknown chunk");
 | 
				
			||||||
            png_write_chunk(png_ptr, up->name, up->data, up->size);
 | 
					            png_write_chunk(png_ptr, up->name, up->data, up->size);
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
       }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
 | 
					      png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
 | 
				
			||||||
@ -145,20 +146,20 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_tRNS_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tRNS_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_tRNS)
 | 
					   if (info_ptr->valid & PNG_INFO_tRNS)
 | 
				
			||||||
      {
 | 
					   {
 | 
				
			||||||
#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
 | 
				
			||||||
         /* invert the alpha channel (in tRNS) */
 | 
					      /* Invert the alpha channel (in tRNS) */
 | 
				
			||||||
         if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
 | 
					      if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
 | 
				
			||||||
            info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
					         info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
 | 
				
			||||||
         {
 | 
					      {
 | 
				
			||||||
            int j;
 | 
					         int j;
 | 
				
			||||||
            for (j=0; j<(int)info_ptr->num_trans; j++)
 | 
					         for (j=0; j<(int)info_ptr->num_trans; j++)
 | 
				
			||||||
               info_ptr->trans[j] = (png_byte)(255 - info_ptr->trans[j]);
 | 
					            info_ptr->trans[j] = (png_byte)(255 - info_ptr->trans[j]);
 | 
				
			||||||
         }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values),
 | 
					      png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values),
 | 
				
			||||||
         info_ptr->num_trans, info_ptr->color_type);
 | 
					         info_ptr->num_trans, info_ptr->color_type);
 | 
				
			||||||
      }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_bKGD_SUPPORTED)
 | 
					#if defined(PNG_WRITE_bKGD_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_bKGD)
 | 
					   if (info_ptr->valid & PNG_INFO_bKGD)
 | 
				
			||||||
@ -179,49 +180,56 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams,
 | 
					         info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams,
 | 
				
			||||||
         info_ptr->pcal_units, info_ptr->pcal_params);
 | 
					         info_ptr->pcal_units, info_ptr->pcal_params);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_sCAL_SUPPORTED)
 | 
					
 | 
				
			||||||
 | 
					#if defined(PNG_sCAL_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_sCAL)
 | 
					   if (info_ptr->valid & PNG_INFO_sCAL)
 | 
				
			||||||
 | 
					#if defined(PNG_WRITE_sCAL_SUPPORTED)
 | 
				
			||||||
#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
 | 
					#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
 | 
				
			||||||
      png_write_sCAL(png_ptr, (int)info_ptr->scal_unit,
 | 
					      png_write_sCAL(png_ptr, (int)info_ptr->scal_unit,
 | 
				
			||||||
          info_ptr->scal_pixel_width, info_ptr->scal_pixel_height);
 | 
					          info_ptr->scal_pixel_width, info_ptr->scal_pixel_height);
 | 
				
			||||||
#else
 | 
					#else /* !FLOATING_POINT */
 | 
				
			||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
 | 
					#ifdef PNG_FIXED_POINT_SUPPORTED
 | 
				
			||||||
      png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
 | 
					      png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
 | 
				
			||||||
          info_ptr->scal_s_width, info_ptr->scal_s_height);
 | 
					          info_ptr->scal_s_width, info_ptr->scal_s_height);
 | 
				
			||||||
#else
 | 
					#endif /* FIXED_POINT */
 | 
				
			||||||
 | 
					#endif /* FLOATING_POINT */
 | 
				
			||||||
 | 
					#else  /* !WRITE_sCAL */
 | 
				
			||||||
      png_warning(png_ptr,
 | 
					      png_warning(png_ptr,
 | 
				
			||||||
          "png_write_sCAL not supported; sCAL chunk not written.");
 | 
					          "png_write_sCAL not supported; sCAL chunk not written.");
 | 
				
			||||||
#endif
 | 
					#endif /* WRITE_sCAL */
 | 
				
			||||||
#endif
 | 
					#endif /* sCAL */
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_pHYs_SUPPORTED)
 | 
					#if defined(PNG_WRITE_pHYs_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
					   if (info_ptr->valid & PNG_INFO_pHYs)
 | 
				
			||||||
      png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
 | 
					      png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
 | 
				
			||||||
         info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type);
 | 
					         info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type);
 | 
				
			||||||
#endif
 | 
					#endif /* pHYs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_tIME_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tIME_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_tIME)
 | 
					   if (info_ptr->valid & PNG_INFO_tIME)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_write_tIME(png_ptr, &(info_ptr->mod_time));
 | 
					      png_write_tIME(png_ptr, &(info_ptr->mod_time));
 | 
				
			||||||
      png_ptr->mode |= PNG_WROTE_tIME;
 | 
					      png_ptr->mode |= PNG_WROTE_tIME;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif /* tIME */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_sPLT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_sPLT_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_sPLT)
 | 
					   if (info_ptr->valid & PNG_INFO_sPLT)
 | 
				
			||||||
     for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
 | 
					     for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
 | 
				
			||||||
       png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
 | 
					       png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
 | 
				
			||||||
#endif
 | 
					#endif /* sPLT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
				
			||||||
   /* Check to see if we need to write text chunks */
 | 
					   /* Check to see if we need to write text chunks */
 | 
				
			||||||
   for (i = 0; i < info_ptr->num_text; i++)
 | 
					   for (i = 0; i < info_ptr->num_text; i++)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_debug2(2, "Writing header text chunk %d, type %d", i,
 | 
					      png_debug2(2, "Writing header text chunk %d, type %d", i,
 | 
				
			||||||
         info_ptr->text[i].compression);
 | 
					         info_ptr->text[i].compression);
 | 
				
			||||||
      /* an internationalized chunk? */
 | 
					      /* An internationalized chunk? */
 | 
				
			||||||
      if (info_ptr->text[i].compression > 0)
 | 
					      if (info_ptr->text[i].compression > 0)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
				
			||||||
          /* write international chunk */
 | 
					          /* Write international chunk */
 | 
				
			||||||
          png_write_iTXt(png_ptr,
 | 
					          png_write_iTXt(png_ptr,
 | 
				
			||||||
                         info_ptr->text[i].compression,
 | 
					                         info_ptr->text[i].compression,
 | 
				
			||||||
                         info_ptr->text[i].key,
 | 
					                         info_ptr->text[i].key,
 | 
				
			||||||
@ -238,7 +246,7 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt)
 | 
					      else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
				
			||||||
         /* write compressed chunk */
 | 
					         /* Write compressed chunk */
 | 
				
			||||||
         png_write_zTXt(png_ptr, info_ptr->text[i].key,
 | 
					         png_write_zTXt(png_ptr, info_ptr->text[i].key,
 | 
				
			||||||
            info_ptr->text[i].text, 0,
 | 
					            info_ptr->text[i].text, 0,
 | 
				
			||||||
            info_ptr->text[i].compression);
 | 
					            info_ptr->text[i].compression);
 | 
				
			||||||
@ -251,18 +259,20 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
      else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
 | 
					      else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
				
			||||||
         /* write uncompressed chunk */
 | 
					         /* Write uncompressed chunk */
 | 
				
			||||||
         png_write_tEXt(png_ptr, info_ptr->text[i].key,
 | 
					         png_write_tEXt(png_ptr, info_ptr->text[i].key,
 | 
				
			||||||
                         info_ptr->text[i].text,
 | 
					                         info_ptr->text[i].text,
 | 
				
			||||||
                         0);
 | 
					                         0);
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
         png_warning(png_ptr, "Unable to write uncompressed text");
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
         /* Mark this chunk as written */
 | 
					         /* Mark this chunk as written */
 | 
				
			||||||
         info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
 | 
					         info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					         /* Can't get here */
 | 
				
			||||||
 | 
					         png_warning(png_ptr, "Unable to write uncompressed text");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif /* tEXt */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
 | 
					#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
 | 
				
			||||||
   if (info_ptr->unknown_chunks_num)
 | 
					   if (info_ptr->unknown_chunks_num)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -302,29 +312,29 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
   if (!(png_ptr->mode & PNG_HAVE_IDAT))
 | 
					   if (!(png_ptr->mode & PNG_HAVE_IDAT))
 | 
				
			||||||
      png_error(png_ptr, "No IDATs written into file");
 | 
					      png_error(png_ptr, "No IDATs written into file");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* see if user wants us to write information chunks */
 | 
					   /* See if user wants us to write information chunks */
 | 
				
			||||||
   if (info_ptr != NULL)
 | 
					   if (info_ptr != NULL)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
				
			||||||
      int i; /* local index variable */
 | 
					      int i; /* Local index variable */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_tIME_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tIME_SUPPORTED)
 | 
				
			||||||
      /* check to see if user has supplied a time chunk */
 | 
					      /* Check to see if user has supplied a time chunk */
 | 
				
			||||||
      if ((info_ptr->valid & PNG_INFO_tIME) &&
 | 
					      if ((info_ptr->valid & PNG_INFO_tIME) &&
 | 
				
			||||||
         !(png_ptr->mode & PNG_WROTE_tIME))
 | 
					         !(png_ptr->mode & PNG_WROTE_tIME))
 | 
				
			||||||
         png_write_tIME(png_ptr, &(info_ptr->mod_time));
 | 
					         png_write_tIME(png_ptr, &(info_ptr->mod_time));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_TEXT_SUPPORTED)
 | 
				
			||||||
      /* loop through comment chunks */
 | 
					      /* Loop through comment chunks */
 | 
				
			||||||
      for (i = 0; i < info_ptr->num_text; i++)
 | 
					      for (i = 0; i < info_ptr->num_text; i++)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_debug2(2, "Writing trailer text chunk %d, type %d", i,
 | 
					         png_debug2(2, "Writing trailer text chunk %d, type %d", i,
 | 
				
			||||||
            info_ptr->text[i].compression);
 | 
					            info_ptr->text[i].compression);
 | 
				
			||||||
         /* an internationalized chunk? */
 | 
					         /* An internationalized chunk? */
 | 
				
			||||||
         if (info_ptr->text[i].compression > 0)
 | 
					         if (info_ptr->text[i].compression > 0)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
				
			||||||
             /* write international chunk */
 | 
					             /* Write international chunk */
 | 
				
			||||||
             png_write_iTXt(png_ptr,
 | 
					             png_write_iTXt(png_ptr,
 | 
				
			||||||
                         info_ptr->text[i].compression,
 | 
					                         info_ptr->text[i].compression,
 | 
				
			||||||
                         info_ptr->text[i].key,
 | 
					                         info_ptr->text[i].key,
 | 
				
			||||||
@ -340,7 +350,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt)
 | 
					         else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
				
			||||||
            /* write compressed chunk */
 | 
					            /* Write compressed chunk */
 | 
				
			||||||
            png_write_zTXt(png_ptr, info_ptr->text[i].key,
 | 
					            png_write_zTXt(png_ptr, info_ptr->text[i].key,
 | 
				
			||||||
               info_ptr->text[i].text, 0,
 | 
					               info_ptr->text[i].text, 0,
 | 
				
			||||||
               info_ptr->text[i].compression);
 | 
					               info_ptr->text[i].compression);
 | 
				
			||||||
@ -353,7 +363,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
         else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
 | 
					         else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
				
			||||||
            /* write uncompressed chunk */
 | 
					            /* Write uncompressed chunk */
 | 
				
			||||||
            png_write_tEXt(png_ptr, info_ptr->text[i].key,
 | 
					            png_write_tEXt(png_ptr, info_ptr->text[i].key,
 | 
				
			||||||
               info_ptr->text[i].text, 0);
 | 
					               info_ptr->text[i].text, 0);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@ -391,7 +401,7 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   png_ptr->mode |= PNG_AFTER_IDAT;
 | 
					   png_ptr->mode |= PNG_AFTER_IDAT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write end of PNG file */
 | 
					   /* Write end of PNG file */
 | 
				
			||||||
   png_write_IEND(png_ptr);
 | 
					   png_write_IEND(png_ptr);
 | 
				
			||||||
   /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03,
 | 
					   /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03,
 | 
				
			||||||
    * and restored again in libpng-1.2.30, may cause some applications that
 | 
					    * and restored again in libpng-1.2.30, may cause some applications that
 | 
				
			||||||
@ -471,7 +481,7 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
 | 
				
			|||||||
   if (png_ptr == NULL)
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
      return (NULL);
 | 
					      return (NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* added at libpng-1.2.6 */
 | 
					   /* Added at libpng-1.2.6 */
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
					   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
				
			||||||
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
					   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
				
			||||||
@ -542,7 +552,7 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
 | 
				
			|||||||
     }
 | 
					     }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize zbuf - compression buffer */
 | 
					   /* Initialize zbuf - compression buffer */
 | 
				
			||||||
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
					   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
				
			||||||
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
					   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
      (png_uint_32)png_ptr->zbuf_size);
 | 
					      (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -636,7 +646,7 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   png_structp png_ptr=*ptr_ptr;
 | 
					   png_structp png_ptr=*ptr_ptr;
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   jmp_buf tmp_jmp; /* to save current jump buffer */
 | 
					   jmp_buf tmp_jmp; /* To save current jump buffer */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   int i = 0;
 | 
					   int i = 0;
 | 
				
			||||||
@ -662,7 +672,7 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
   png_debug(1, "in png_write_init_3");
 | 
					   png_debug(1, "in png_write_init_3");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   /* save jump buffer and error functions */
 | 
					   /* Save jump buffer and error functions */
 | 
				
			||||||
   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
					   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -673,24 +683,24 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
 | 
				
			|||||||
       *ptr_ptr = png_ptr;
 | 
					       *ptr_ptr = png_ptr;
 | 
				
			||||||
     }
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* reset all variables to 0 */
 | 
					   /* Reset all variables to 0 */
 | 
				
			||||||
   png_memset(png_ptr, 0, png_sizeof(png_struct));
 | 
					   png_memset(png_ptr, 0, png_sizeof(png_struct));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* added at libpng-1.2.6 */
 | 
					   /* Added at libpng-1.2.6 */
 | 
				
			||||||
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
					#ifdef PNG_SET_USER_LIMITS_SUPPORTED
 | 
				
			||||||
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
					   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
 | 
				
			||||||
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
					   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   /* restore jump buffer */
 | 
					   /* Restore jump buffer */
 | 
				
			||||||
   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
 | 
					   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
 | 
					   png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
 | 
				
			||||||
      png_flush_ptr_NULL);
 | 
					      png_flush_ptr_NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize zbuf - compression buffer */
 | 
					   /* Initialize zbuf - compression buffer */
 | 
				
			||||||
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
					   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
 | 
				
			||||||
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
					   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
      (png_uint_32)png_ptr->zbuf_size);
 | 
					      (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -710,15 +720,15 @@ void PNGAPI
 | 
				
			|||||||
png_write_rows(png_structp png_ptr, png_bytepp row,
 | 
					png_write_rows(png_structp png_ptr, png_bytepp row,
 | 
				
			||||||
   png_uint_32 num_rows)
 | 
					   png_uint_32 num_rows)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_uint_32 i; /* row counter */
 | 
					   png_uint_32 i; /* Row counter */
 | 
				
			||||||
   png_bytepp rp; /* row pointer */
 | 
					   png_bytepp rp; /* Row pointer */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_rows");
 | 
					   png_debug(1, "in png_write_rows");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL)
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* loop through the rows */
 | 
					   /* Loop through the rows */
 | 
				
			||||||
   for (i = 0, rp = row; i < num_rows; i++, rp++)
 | 
					   for (i = 0, rp = row; i < num_rows; i++, rp++)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_write_row(png_ptr, *rp);
 | 
					      png_write_row(png_ptr, *rp);
 | 
				
			||||||
@ -731,25 +741,26 @@ png_write_rows(png_structp png_ptr, png_bytepp row,
 | 
				
			|||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_write_image(png_structp png_ptr, png_bytepp image)
 | 
					png_write_image(png_structp png_ptr, png_bytepp image)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   png_uint_32 i; /* row index */
 | 
					   png_uint_32 i; /* Row index */
 | 
				
			||||||
   int pass, num_pass; /* pass variables */
 | 
					   int pass, num_pass; /* Pass variables */
 | 
				
			||||||
   png_bytepp rp; /* points to current row */
 | 
					   png_bytepp rp; /* Points to current row */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL)
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_image");
 | 
					   png_debug(1, "in png_write_image");
 | 
				
			||||||
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* intialize interlace handling.  If image is not interlaced,
 | 
					   /* Initialize interlace handling.  If image is not interlaced,
 | 
				
			||||||
      this will set pass to 1 */
 | 
					    * this will set pass to 1
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
   num_pass = png_set_interlace_handling(png_ptr);
 | 
					   num_pass = png_set_interlace_handling(png_ptr);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   num_pass = 1;
 | 
					   num_pass = 1;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   /* loop through passes */
 | 
					   /* Loop through passes */
 | 
				
			||||||
   for (pass = 0; pass < num_pass; pass++)
 | 
					   for (pass = 0; pass < num_pass; pass++)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* loop through image */
 | 
					      /* Loop through image */
 | 
				
			||||||
      for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
 | 
					      for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_write_row(png_ptr, *rp);
 | 
					         png_write_row(png_ptr, *rp);
 | 
				
			||||||
@ -757,7 +768,7 @@ png_write_image(png_structp png_ptr, png_bytepp image)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* called by user to write a row of image data */
 | 
					/* Called by user to write a row of image data */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_write_row(png_structp png_ptr, png_bytep row)
 | 
					png_write_row(png_structp png_ptr, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -766,49 +777,49 @@ png_write_row(png_structp png_ptr, png_bytep row)
 | 
				
			|||||||
   png_debug2(1, "in png_write_row (row %ld, pass %d)",
 | 
					   png_debug2(1, "in png_write_row (row %ld, pass %d)",
 | 
				
			||||||
      png_ptr->row_number, png_ptr->pass);
 | 
					      png_ptr->row_number, png_ptr->pass);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize transformations and other stuff if first time */
 | 
					   /* Initialize transformations and other stuff if first time */
 | 
				
			||||||
   if (png_ptr->row_number == 0 && png_ptr->pass == 0)
 | 
					   if (png_ptr->row_number == 0 && png_ptr->pass == 0)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
   /* make sure we wrote the header info */
 | 
					      /* Make sure we wrote the header info */
 | 
				
			||||||
   if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
 | 
					      if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
 | 
				
			||||||
      png_error(png_ptr,
 | 
					         png_error(png_ptr,
 | 
				
			||||||
         "png_write_info was never called before png_write_row.");
 | 
					            "png_write_info was never called before png_write_row.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* check for transforms that have been set but were defined out */
 | 
					      /* Check for transforms that have been set but were defined out */
 | 
				
			||||||
#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_INVERT_MONO)
 | 
					      if (png_ptr->transformations & PNG_INVERT_MONO)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_FILLER)
 | 
					      if (png_ptr->transformations & PNG_FILLER)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && defined(PNG_READ_PACKSWAP_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_PACKSWAP)
 | 
					      if (png_ptr->transformations & PNG_PACKSWAP)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_PACK)
 | 
					      if (png_ptr->transformations & PNG_PACK)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_SHIFT)
 | 
					      if (png_ptr->transformations & PNG_SHIFT)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_BGR)
 | 
					      if (png_ptr->transformations & PNG_BGR)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)
 | 
					#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_SWAP_BYTES)
 | 
					      if (png_ptr->transformations & PNG_SWAP_BYTES)
 | 
				
			||||||
      png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");
 | 
					         png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      png_write_start_row(png_ptr);
 | 
					      png_write_start_row(png_ptr);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* if interlaced and not interested in row, return */
 | 
					   /* If interlaced and not interested in row, return */
 | 
				
			||||||
   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
					   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      switch (png_ptr->pass)
 | 
					      switch (png_ptr->pass)
 | 
				
			||||||
@ -866,7 +877,7 @@ png_write_row(png_structp png_ptr, png_bytep row)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set up row info for transformations */
 | 
					   /* Set up row info for transformations */
 | 
				
			||||||
   png_ptr->row_info.color_type = png_ptr->color_type;
 | 
					   png_ptr->row_info.color_type = png_ptr->color_type;
 | 
				
			||||||
   png_ptr->row_info.width = png_ptr->usr_width;
 | 
					   png_ptr->row_info.width = png_ptr->usr_width;
 | 
				
			||||||
   png_ptr->row_info.channels = png_ptr->usr_channels;
 | 
					   png_ptr->row_info.channels = png_ptr->usr_channels;
 | 
				
			||||||
@ -889,13 +900,13 @@ png_write_row(png_structp png_ptr, png_bytep row)
 | 
				
			|||||||
      png_ptr->row_info.rowbytes);
 | 
					      png_ptr->row_info.rowbytes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
 | 
				
			||||||
   /* handle interlacing */
 | 
					   /* Handle interlacing */
 | 
				
			||||||
   if (png_ptr->interlaced && png_ptr->pass < 6 &&
 | 
					   if (png_ptr->interlaced && png_ptr->pass < 6 &&
 | 
				
			||||||
      (png_ptr->transformations & PNG_INTERLACE))
 | 
					      (png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_do_write_interlace(&(png_ptr->row_info),
 | 
					      png_do_write_interlace(&(png_ptr->row_info),
 | 
				
			||||||
         png_ptr->row_buf + 1, png_ptr->pass);
 | 
					         png_ptr->row_buf + 1, png_ptr->pass);
 | 
				
			||||||
      /* this should always get caught above, but still ... */
 | 
					      /* This should always get caught above, but still ... */
 | 
				
			||||||
      if (!(png_ptr->row_info.width))
 | 
					      if (!(png_ptr->row_info.width))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_write_finish_row(png_ptr);
 | 
					         png_write_finish_row(png_ptr);
 | 
				
			||||||
@ -904,7 +915,7 @@ png_write_row(png_structp png_ptr, png_bytep row)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* handle other transformations */
 | 
					   /* Handle other transformations */
 | 
				
			||||||
   if (png_ptr->transformations)
 | 
					   if (png_ptr->transformations)
 | 
				
			||||||
      png_do_write_transformations(png_ptr);
 | 
					      png_do_write_transformations(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -944,7 +955,7 @@ png_set_flush(png_structp png_ptr, int nrows)
 | 
				
			|||||||
   png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
 | 
					   png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* flush the current output buffers now */
 | 
					/* Flush the current output buffers now */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_write_flush(png_structp png_ptr)
 | 
					png_write_flush(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -955,17 +966,17 @@ png_write_flush(png_structp png_ptr)
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
   /* We have already written out all of the data */
 | 
					   /* We have already written out all of the data */
 | 
				
			||||||
   if (png_ptr->row_number >= png_ptr->num_rows)
 | 
					   if (png_ptr->row_number >= png_ptr->num_rows)
 | 
				
			||||||
     return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      int ret;
 | 
					      int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* compress the data */
 | 
					      /* Compress the data */
 | 
				
			||||||
      ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);
 | 
					      ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);
 | 
				
			||||||
      wrote_IDAT = 0;
 | 
					      wrote_IDAT = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* check for compression errors */
 | 
					      /* Check for compression errors */
 | 
				
			||||||
      if (ret != Z_OK)
 | 
					      if (ret != Z_OK)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (png_ptr->zstream.msg != NULL)
 | 
					         if (png_ptr->zstream.msg != NULL)
 | 
				
			||||||
@ -976,7 +987,7 @@ png_write_flush(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (!(png_ptr->zstream.avail_out))
 | 
					      if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* write the IDAT and reset the zlib output buffer */
 | 
					         /* Write the IDAT and reset the zlib output buffer */
 | 
				
			||||||
         png_write_IDAT(png_ptr, png_ptr->zbuf,
 | 
					         png_write_IDAT(png_ptr, png_ptr->zbuf,
 | 
				
			||||||
                        png_ptr->zbuf_size);
 | 
					                        png_ptr->zbuf_size);
 | 
				
			||||||
         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
					         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
				
			||||||
@ -988,7 +999,7 @@ png_write_flush(png_structp png_ptr)
 | 
				
			|||||||
   /* If there is any data left to be output, write it into a new IDAT */
 | 
					   /* If there is any data left to be output, write it into a new IDAT */
 | 
				
			||||||
   if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)
 | 
					   if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* write the IDAT and reset the zlib output buffer */
 | 
					      /* Write the IDAT and reset the zlib output buffer */
 | 
				
			||||||
      png_write_IDAT(png_ptr, png_ptr->zbuf,
 | 
					      png_write_IDAT(png_ptr, png_ptr->zbuf,
 | 
				
			||||||
                     png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
					                     png_ptr->zbuf_size - png_ptr->zstream.avail_out);
 | 
				
			||||||
      png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
					      png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
				
			||||||
@ -999,7 +1010,7 @@ png_write_flush(png_structp png_ptr)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif /* PNG_WRITE_FLUSH_SUPPORTED */
 | 
					#endif /* PNG_WRITE_FLUSH_SUPPORTED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* free all memory used by the write */
 | 
					/* Free all memory used by the write */
 | 
				
			||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
 | 
					png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1075,7 +1086,7 @@ void /* PRIVATE */
 | 
				
			|||||||
png_write_destroy(png_structp png_ptr)
 | 
					png_write_destroy(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   jmp_buf tmp_jmp; /* save jump buffer */
 | 
					   jmp_buf tmp_jmp; /* Save jump buffer */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   png_error_ptr error_fn;
 | 
					   png_error_ptr error_fn;
 | 
				
			||||||
   png_error_ptr warning_fn;
 | 
					   png_error_ptr warning_fn;
 | 
				
			||||||
@ -1085,10 +1096,10 @@ png_write_destroy(png_structp png_ptr)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_destroy");
 | 
					   png_debug(1, "in png_write_destroy");
 | 
				
			||||||
   /* free any memory zlib uses */
 | 
					   /* Free any memory zlib uses */
 | 
				
			||||||
   deflateEnd(&png_ptr->zstream);
 | 
					   deflateEnd(&png_ptr->zstream);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* free our memory.  png_free checks NULL for us. */
 | 
					   /* Free our memory.  png_free checks NULL for us. */
 | 
				
			||||||
   png_free(png_ptr, png_ptr->zbuf);
 | 
					   png_free(png_ptr, png_ptr->zbuf);
 | 
				
			||||||
   png_free(png_ptr, png_ptr->row_buf);
 | 
					   png_free(png_ptr, png_ptr->row_buf);
 | 
				
			||||||
#ifndef PNG_NO_WRITE_FILTER
 | 
					#ifndef PNG_NO_WRITE_FILTER
 | 
				
			||||||
@ -1112,7 +1123,7 @@ png_write_destroy(png_structp png_ptr)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_SETJMP_SUPPORTED
 | 
					#ifdef PNG_SETJMP_SUPPORTED
 | 
				
			||||||
   /* reset structure */
 | 
					   /* Reset structure */
 | 
				
			||||||
   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
					   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1415,7 +1426,7 @@ png_set_compression_window_bits(png_structp png_ptr, int window_bits)
 | 
				
			|||||||
   else if (window_bits < 8)
 | 
					   else if (window_bits < 8)
 | 
				
			||||||
      png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
 | 
					      png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
 | 
				
			||||||
#ifndef WBITS_8_OK
 | 
					#ifndef WBITS_8_OK
 | 
				
			||||||
   /* avoid libpng bug with 256-byte windows */
 | 
					   /* Avoid libpng bug with 256-byte windows */
 | 
				
			||||||
   if (window_bits == 8)
 | 
					   if (window_bits == 8)
 | 
				
			||||||
     {
 | 
					     {
 | 
				
			||||||
       png_warning(png_ptr, "Compression window is being reset to 512");
 | 
					       png_warning(png_ptr, "Compression window is being reset to 512");
 | 
				
			||||||
@ -1468,9 +1479,9 @@ png_write_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   if (png_ptr == NULL || info_ptr == NULL)
 | 
					   if (png_ptr == NULL || info_ptr == NULL)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
 | 
				
			||||||
   /* invert the alpha channel from opacity to transparency */
 | 
					   /* Invert the alpha channel from opacity to transparency */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
 | 
					   if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
 | 
				
			||||||
       png_set_invert_alpha(png_ptr);
 | 
					      png_set_invert_alpha(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* Write the file header information. */
 | 
					   /* Write the file header information. */
 | 
				
			||||||
@ -1479,9 +1490,9 @@ png_write_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
   /* ------ these transformations don't touch the info structure ------- */
 | 
					   /* ------ these transformations don't touch the info structure ------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_INVERT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_INVERT_SUPPORTED)
 | 
				
			||||||
   /* invert monochrome pixels */
 | 
					   /* Invert monochrome pixels */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_INVERT_MONO)
 | 
					   if (transforms & PNG_TRANSFORM_INVERT_MONO)
 | 
				
			||||||
       png_set_invert_mono(png_ptr);
 | 
					      png_set_invert_mono(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_SHIFT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_SHIFT_SUPPORTED)
 | 
				
			||||||
@ -1490,57 +1501,57 @@ png_write_png(png_structp png_ptr, png_infop info_ptr,
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
   if ((transforms & PNG_TRANSFORM_SHIFT)
 | 
					   if ((transforms & PNG_TRANSFORM_SHIFT)
 | 
				
			||||||
               && (info_ptr->valid & PNG_INFO_sBIT))
 | 
					               && (info_ptr->valid & PNG_INFO_sBIT))
 | 
				
			||||||
       png_set_shift(png_ptr, &info_ptr->sig_bit);
 | 
					      png_set_shift(png_ptr, &info_ptr->sig_bit);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_PACK_SUPPORTED)
 | 
					#if defined(PNG_WRITE_PACK_SUPPORTED)
 | 
				
			||||||
   /* pack pixels into bytes */
 | 
					   /* Pack pixels into bytes */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_PACKING)
 | 
					   if (transforms & PNG_TRANSFORM_PACKING)
 | 
				
			||||||
       png_set_packing(png_ptr);
 | 
					       png_set_packing(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
 | 
					#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
 | 
				
			||||||
   /* swap location of alpha bytes from ARGB to RGBA */
 | 
					   /* Swap location of alpha bytes from ARGB to RGBA */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
 | 
					   if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
 | 
				
			||||||
       png_set_swap_alpha(png_ptr);
 | 
					      png_set_swap_alpha(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_FILLER_SUPPORTED)
 | 
					#if defined(PNG_WRITE_FILLER_SUPPORTED)
 | 
				
			||||||
   /* Pack XRGB/RGBX/ARGB/RGBA into * RGB (4 channels -> 3 channels) */
 | 
					   /* Pack XRGB/RGBX/ARGB/RGBA into * RGB (4 channels -> 3 channels) */
 | 
				
			||||||
  if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER)
 | 
					   if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER)
 | 
				
			||||||
      png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
 | 
					      png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
 | 
				
			||||||
  else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE)
 | 
					   else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE)
 | 
				
			||||||
      png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
 | 
					      png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_BGR_SUPPORTED)
 | 
					#if defined(PNG_WRITE_BGR_SUPPORTED)
 | 
				
			||||||
   /* flip BGR pixels to RGB */
 | 
					   /* Flip BGR pixels to RGB */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_BGR)
 | 
					   if (transforms & PNG_TRANSFORM_BGR)
 | 
				
			||||||
       png_set_bgr(png_ptr);
 | 
					      png_set_bgr(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
					#if defined(PNG_WRITE_SWAP_SUPPORTED)
 | 
				
			||||||
   /* swap bytes of 16-bit files to most significant byte first */
 | 
					   /* Swap bytes of 16-bit files to most significant byte first */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
 | 
					   if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
 | 
				
			||||||
       png_set_swap(png_ptr);
 | 
					      png_set_swap(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 | 
					#if defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 | 
				
			||||||
   /* swap bits of 1, 2, 4 bit packed pixel formats */
 | 
					   /* Swap bits of 1, 2, 4 bit packed pixel formats */
 | 
				
			||||||
   if (transforms & PNG_TRANSFORM_PACKSWAP)
 | 
					   if (transforms & PNG_TRANSFORM_PACKSWAP)
 | 
				
			||||||
       png_set_packswap(png_ptr);
 | 
					      png_set_packswap(png_ptr);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* ----------------------- end of transformations ------------------- */
 | 
					   /* ----------------------- end of transformations ------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write the bits */
 | 
					   /* Write the bits */
 | 
				
			||||||
   if (info_ptr->valid & PNG_INFO_IDAT)
 | 
					   if (info_ptr->valid & PNG_INFO_IDAT)
 | 
				
			||||||
       png_write_image(png_ptr, info_ptr->row_pointers);
 | 
					       png_write_image(png_ptr, info_ptr->row_pointers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* It is REQUIRED to call this to finish writing the rest of the file */
 | 
					   /* It is REQUIRED to call this to finish writing the rest of the file */
 | 
				
			||||||
   png_write_end(png_ptr, info_ptr);
 | 
					   png_write_end(png_ptr, info_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   transforms = transforms; /* quiet compiler warnings */
 | 
					   transforms = transforms; /* Quiet compiler warnings */
 | 
				
			||||||
   params = params;
 | 
					   params = params;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								pngwtran.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								pngwtran.c
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* 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.2.9 April 14, 2006
 | 
					 * Last changed in libpng 1.2.37 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2006 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 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_do_write_transformations(png_structp png_ptr)
 | 
				
			|||||||
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
					#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
 | 
				
			||||||
   if (png_ptr->transformations & PNG_USER_TRANSFORM)
 | 
					   if (png_ptr->transformations & PNG_USER_TRANSFORM)
 | 
				
			||||||
      if (png_ptr->write_user_transform_fn != NULL)
 | 
					      if (png_ptr->write_user_transform_fn != NULL)
 | 
				
			||||||
        (*(png_ptr->write_user_transform_fn)) /* user write transform function */
 | 
					        (*(png_ptr->write_user_transform_fn)) /* User write transform function */
 | 
				
			||||||
          (png_ptr,                    /* png_ptr */
 | 
					          (png_ptr,                    /* png_ptr */
 | 
				
			||||||
           &(png_ptr->row_info),       /* row_info:     */
 | 
					           &(png_ptr->row_info),       /* row_info:     */
 | 
				
			||||||
             /*  png_uint_32 width;          width of row */
 | 
					             /*  png_uint_32 width;          width of row */
 | 
				
			||||||
@ -248,7 +248,7 @@ png_do_shift(png_row_infop row_info, png_bytep row, png_color_8p bit_depth)
 | 
				
			|||||||
         channels++;
 | 
					         channels++;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* with low row depths, could only be grayscale, so one channel */
 | 
					      /* With low row depths, could only be grayscale, so one channel */
 | 
				
			||||||
      if (row_info->bit_depth < 8)
 | 
					      if (row_info->bit_depth < 8)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_bytep bp = row;
 | 
					         png_bytep bp = row;
 | 
				
			||||||
@ -439,7 +439,7 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
            png_uint_32 row_width = row_info->width;
 | 
					            png_uint_32 row_width = row_info->width;
 | 
				
			||||||
            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
					            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               /* does nothing
 | 
					               /* Does nothing
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
@ -457,7 +457,7 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
					            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               /* does nothing
 | 
					               /* Does nothing
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
@ -495,7 +495,7 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
					            for (i = 0, sp = dp = row; i < row_width; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               /* does nothing
 | 
					               /* Does nothing
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               *(dp++) = *(sp++);
 | 
					               *(dp++) = *(sp++);
 | 
				
			||||||
               */
 | 
					               */
 | 
				
			||||||
@ -510,7 +510,7 @@ png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_MNG_FEATURES_SUPPORTED)
 | 
					#if defined(PNG_MNG_FEATURES_SUPPORTED)
 | 
				
			||||||
/* undoes intrapixel differencing  */
 | 
					/* Undoes intrapixel differencing  */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
 | 
					png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										352
									
								
								pngwutil.c
									
									
									
									
									
								
							
							
						
						
									
										352
									
								
								pngwutil.c
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* pngwutil.c - utilities to write a PNG file
 | 
					/* pngwutil.c - utilities to write a PNG file
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Last changed in libpng 1.2.36 [May 7, 2009]
 | 
					 * Last changed in libpng 1.2.36 [June 4, 2009]
 | 
				
			||||||
 * For conditions of distribution and use, see copyright notice in png.h
 | 
					 * For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
					 * Copyright (c) 1998-2009 Glenn Randers-Pehrson
 | 
				
			||||||
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
					 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
 | 
				
			||||||
@ -60,7 +60,7 @@ png_write_sig(png_structp png_ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   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};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* 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));
 | 
					      (png_size_t)(8 - png_ptr->sig_bytes));
 | 
				
			||||||
   if (png_ptr->sig_bytes < 3)
 | 
					   if (png_ptr->sig_bytes < 3)
 | 
				
			||||||
@ -80,7 +80,8 @@ void PNGAPI
 | 
				
			|||||||
png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
 | 
					png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
 | 
				
			||||||
   png_bytep data, png_size_t length)
 | 
					   png_bytep data, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
 | 
					   png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
 | 
				
			||||||
   png_write_chunk_data(png_ptr, data, (png_size_t)length);
 | 
					   png_write_chunk_data(png_ptr, data, (png_size_t)length);
 | 
				
			||||||
   png_write_chunk_end(png_ptr);
 | 
					   png_write_chunk_end(png_ptr);
 | 
				
			||||||
@ -98,15 +99,16 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   png_debug2(0, "Writing %s chunk, length = %lu", chunk_name,
 | 
					   png_debug2(0, "Writing %s chunk, length = %lu", chunk_name,
 | 
				
			||||||
      (unsigned long)length);
 | 
					      (unsigned long)length);
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write the length and the chunk name */
 | 
					   /* Write the length and the chunk name */
 | 
				
			||||||
   png_save_uint_32(buf, length);
 | 
					   png_save_uint_32(buf, length);
 | 
				
			||||||
   png_memcpy(buf + 4, chunk_name, 4);
 | 
					   png_memcpy(buf + 4, chunk_name, 4);
 | 
				
			||||||
   png_write_data(png_ptr, buf, (png_size_t)8);
 | 
					   png_write_data(png_ptr, buf, (png_size_t)8);
 | 
				
			||||||
   /* put the chunk name into png_ptr->chunk_name */
 | 
					   /* Put the chunk name into png_ptr->chunk_name */
 | 
				
			||||||
   png_memcpy(png_ptr->chunk_name, chunk_name, 4);
 | 
					   png_memcpy(png_ptr->chunk_name, chunk_name, 4);
 | 
				
			||||||
   /* reset the crc and run it over the chunk name */
 | 
					   /* Reset the crc and run it over the chunk name */
 | 
				
			||||||
   png_reset_crc(png_ptr);
 | 
					   png_reset_crc(png_ptr);
 | 
				
			||||||
   png_calculate_crc(png_ptr, chunk_name, (png_size_t)4);
 | 
					   png_calculate_crc(png_ptr, chunk_name, (png_size_t)4);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -119,12 +121,13 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
 | 
				
			|||||||
void PNGAPI
 | 
					void PNGAPI
 | 
				
			||||||
png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
					png_write_chunk_data(png_structp png_ptr, png_bytep data, 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) return;
 | 
					   if (png_ptr == NULL)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
   if (data != NULL && length > 0)
 | 
					   if (data != NULL && length > 0)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_write_data(png_ptr, data, length);
 | 
					      png_write_data(png_ptr, data, length);
 | 
				
			||||||
      /* update the CRC after writing the data,
 | 
					      /* Update the CRC after writing the data,
 | 
				
			||||||
       * in case that the user I/O routine alters it.
 | 
					       * in case that the user I/O routine alters it.
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
      png_calculate_crc(png_ptr, data, length);
 | 
					      png_calculate_crc(png_ptr, data, length);
 | 
				
			||||||
@ -139,15 +142,14 @@ png_write_chunk_end(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   if (png_ptr == NULL) return;
 | 
					   if (png_ptr == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* 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, (png_size_t)4);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED)
 | 
					#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED)
 | 
				
			||||||
/*
 | 
					/* This pair of functions encapsulates the operation of (a) compressing a
 | 
				
			||||||
 * This pair of functions encapsulates the operation of (a) compressing a
 | 
					 | 
				
			||||||
 * text string, and (b) issuing it later as a series of chunk data writes.
 | 
					 * text string, and (b) issuing it later as a series of chunk data writes.
 | 
				
			||||||
 * The compression_state structure is shared context for these functions
 | 
					 * The compression_state structure is shared context for these functions
 | 
				
			||||||
 * set up by the caller in order to make the whole mess thread-safe.
 | 
					 * set up by the caller in order to make the whole mess thread-safe.
 | 
				
			||||||
@ -155,14 +157,14 @@ png_write_chunk_end(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    char *input;   /* the uncompressed input data */
 | 
					   char *input;   /* The uncompressed input data */
 | 
				
			||||||
    int input_len;   /* its length */
 | 
					   int input_len;   /* Its length */
 | 
				
			||||||
    int num_output_ptr; /* number of output pointers used */
 | 
					   int num_output_ptr; /* Number of output pointers used */
 | 
				
			||||||
    int max_output_ptr; /* size of output_ptr */
 | 
					   int max_output_ptr; /* Size of output_ptr */
 | 
				
			||||||
    png_charpp output_ptr; /* array of pointers to output */
 | 
					   png_charpp output_ptr; /* Array of pointers to output */
 | 
				
			||||||
} compression_state;
 | 
					} compression_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* compress given text into storage in the png_ptr structure */
 | 
					/* Compress given text into storage in the png_ptr structure */
 | 
				
			||||||
static int /* PRIVATE */
 | 
					static int /* PRIVATE */
 | 
				
			||||||
png_text_compress(png_structp png_ptr,
 | 
					png_text_compress(png_structp png_ptr,
 | 
				
			||||||
        png_charp text, png_size_t text_len, int compression,
 | 
					        png_charp text, png_size_t text_len, int compression,
 | 
				
			||||||
@ -176,7 +178,7 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
   comp->input = NULL;
 | 
					   comp->input = NULL;
 | 
				
			||||||
   comp->input_len = 0;
 | 
					   comp->input_len = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* we may just want to pass the text right through */
 | 
					   /* We may just want to pass the text right through */
 | 
				
			||||||
   if (compression == PNG_TEXT_COMPRESSION_NONE)
 | 
					   if (compression == PNG_TEXT_COMPRESSION_NONE)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       comp->input = text;
 | 
					       comp->input = text;
 | 
				
			||||||
@ -210,29 +212,29 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
    * wouldn't cause a failure, just a slowdown due to swapping).
 | 
					    * wouldn't cause a failure, just a slowdown due to swapping).
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set up the compression buffers */
 | 
					   /* Set up the compression buffers */
 | 
				
			||||||
   png_ptr->zstream.avail_in = (uInt)text_len;
 | 
					   png_ptr->zstream.avail_in = (uInt)text_len;
 | 
				
			||||||
   png_ptr->zstream.next_in = (Bytef *)text;
 | 
					   png_ptr->zstream.next_in = (Bytef *)text;
 | 
				
			||||||
   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
					   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
				
			||||||
   png_ptr->zstream.next_out = (Bytef *)png_ptr->zbuf;
 | 
					   png_ptr->zstream.next_out = (Bytef *)png_ptr->zbuf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* this is the same compression loop as in png_write_row() */
 | 
					   /* This is the same compression loop as in png_write_row() */
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* compress the data */
 | 
					      /* Compress the data */
 | 
				
			||||||
      ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
 | 
					      ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
 | 
				
			||||||
      if (ret != Z_OK)
 | 
					      if (ret != Z_OK)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* error */
 | 
					         /* Error */
 | 
				
			||||||
         if (png_ptr->zstream.msg != NULL)
 | 
					         if (png_ptr->zstream.msg != NULL)
 | 
				
			||||||
            png_error(png_ptr, png_ptr->zstream.msg);
 | 
					            png_error(png_ptr, png_ptr->zstream.msg);
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
            png_error(png_ptr, "zlib error");
 | 
					            png_error(png_ptr, "zlib error");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      /* check to see if we need more room */
 | 
					      /* Check to see if we need more room */
 | 
				
			||||||
      if (!(png_ptr->zstream.avail_out))
 | 
					      if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* make sure the output array has room */
 | 
					         /* Make sure the output array has room */
 | 
				
			||||||
         if (comp->num_output_ptr >= comp->max_output_ptr)
 | 
					         if (comp->num_output_ptr >= comp->max_output_ptr)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            int old_max;
 | 
					            int old_max;
 | 
				
			||||||
@ -257,7 +259,7 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
                  (comp->max_output_ptr * png_sizeof(png_charp)));
 | 
					                  (comp->max_output_ptr * png_sizeof(png_charp)));
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         /* save the data */
 | 
					         /* Save the data */
 | 
				
			||||||
         comp->output_ptr[comp->num_output_ptr] =
 | 
					         comp->output_ptr[comp->num_output_ptr] =
 | 
				
			||||||
            (png_charp)png_malloc(png_ptr,
 | 
					            (png_charp)png_malloc(png_ptr,
 | 
				
			||||||
            (png_uint_32)png_ptr->zbuf_size);
 | 
					            (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -269,21 +271,21 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
         png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
					         png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
				
			||||||
         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
					         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   /* continue until we don't have any more to compress */
 | 
					   /* Continue until we don't have any more to compress */
 | 
				
			||||||
   } while (png_ptr->zstream.avail_in);
 | 
					   } while (png_ptr->zstream.avail_in);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* finish the compression */
 | 
					   /* Finish the compression */
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* tell zlib we are finished */
 | 
					      /* Tell zlib we are finished */
 | 
				
			||||||
      ret = deflate(&png_ptr->zstream, Z_FINISH);
 | 
					      ret = deflate(&png_ptr->zstream, Z_FINISH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (ret == Z_OK)
 | 
					      if (ret == Z_OK)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* check to see if we need more room */
 | 
					         /* Check to see if we need more room */
 | 
				
			||||||
         if (!(png_ptr->zstream.avail_out))
 | 
					         if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            /* check to make sure our output array has room */
 | 
					            /* Check to make sure our output array has room */
 | 
				
			||||||
            if (comp->num_output_ptr >= comp->max_output_ptr)
 | 
					            if (comp->num_output_ptr >= comp->max_output_ptr)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               int old_max;
 | 
					               int old_max;
 | 
				
			||||||
@ -309,7 +311,7 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
                     png_sizeof(png_charp)));
 | 
					                     png_sizeof(png_charp)));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /* save off the data */
 | 
					            /* Save the data */
 | 
				
			||||||
            comp->output_ptr[comp->num_output_ptr] =
 | 
					            comp->output_ptr[comp->num_output_ptr] =
 | 
				
			||||||
               (png_charp)png_malloc(png_ptr,
 | 
					               (png_charp)png_malloc(png_ptr,
 | 
				
			||||||
               (png_uint_32)png_ptr->zbuf_size);
 | 
					               (png_uint_32)png_ptr->zbuf_size);
 | 
				
			||||||
@ -324,7 +326,7 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      else if (ret != Z_STREAM_END)
 | 
					      else if (ret != Z_STREAM_END)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* we got an error */
 | 
					         /* We got an error */
 | 
				
			||||||
         if (png_ptr->zstream.msg != NULL)
 | 
					         if (png_ptr->zstream.msg != NULL)
 | 
				
			||||||
            png_error(png_ptr, png_ptr->zstream.msg);
 | 
					            png_error(png_ptr, png_ptr->zstream.msg);
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
@ -332,7 +334,7 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   } while (ret != Z_STREAM_END);
 | 
					   } while (ret != Z_STREAM_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* text length is number of buffers plus last buffer */
 | 
					   /* Text length is number of buffers plus last buffer */
 | 
				
			||||||
   text_len = png_ptr->zbuf_size * comp->num_output_ptr;
 | 
					   text_len = png_ptr->zbuf_size * comp->num_output_ptr;
 | 
				
			||||||
   if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
 | 
					   if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
 | 
				
			||||||
      text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out;
 | 
					      text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out;
 | 
				
			||||||
@ -340,21 +342,21 @@ png_text_compress(png_structp png_ptr,
 | 
				
			|||||||
   return((int)text_len);
 | 
					   return((int)text_len);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ship the compressed text out via chunk writes */
 | 
					/* Ship the compressed text out via chunk writes */
 | 
				
			||||||
static void /* PRIVATE */
 | 
					static void /* PRIVATE */
 | 
				
			||||||
png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
 | 
					png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   int i;
 | 
					   int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* handle the no-compression case */
 | 
					   /* Handle the no-compression case */
 | 
				
			||||||
   if (comp->input)
 | 
					   if (comp->input)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
       png_write_chunk_data(png_ptr, (png_bytep)comp->input,
 | 
					      png_write_chunk_data(png_ptr, (png_bytep)comp->input,
 | 
				
			||||||
                            (png_size_t)comp->input_len);
 | 
					                            (png_size_t)comp->input_len);
 | 
				
			||||||
       return;
 | 
					      return;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write saved output buffers, if any */
 | 
					   /* Write saved output buffers, if any */
 | 
				
			||||||
   for (i = 0; i < comp->num_output_ptr; i++)
 | 
					   for (i = 0; i < comp->num_output_ptr; i++)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i],
 | 
					      png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i],
 | 
				
			||||||
@ -365,12 +367,12 @@ png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
 | 
				
			|||||||
   if (comp->max_output_ptr != 0)
 | 
					   if (comp->max_output_ptr != 0)
 | 
				
			||||||
      png_free(png_ptr, comp->output_ptr);
 | 
					      png_free(png_ptr, comp->output_ptr);
 | 
				
			||||||
       comp->output_ptr=NULL;
 | 
					       comp->output_ptr=NULL;
 | 
				
			||||||
   /* write anything left in zbuf */
 | 
					   /* Write anything left in zbuf */
 | 
				
			||||||
   if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
 | 
					   if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
 | 
				
			||||||
      png_write_chunk_data(png_ptr, png_ptr->zbuf,
 | 
					      png_write_chunk_data(png_ptr, png_ptr->zbuf,
 | 
				
			||||||
         (png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out));
 | 
					         (png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* reset zlib for another zTXt/iTXt or image data */
 | 
					   /* Reset zlib for another zTXt/iTXt or image data */
 | 
				
			||||||
   deflateReset(&png_ptr->zstream);
 | 
					   deflateReset(&png_ptr->zstream);
 | 
				
			||||||
   png_ptr->zstream.data_type = Z_BINARY;
 | 
					   png_ptr->zstream.data_type = Z_BINARY;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -390,7 +392,7 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
   int ret;
 | 
					   int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_byte buf[13]; /* buffer to store the IHDR info */
 | 
					   png_byte buf[13]; /* Buffer to store the IHDR info */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_IHDR");
 | 
					   png_debug(1, "in png_write_IHDR");
 | 
				
			||||||
   /* Check that we have valid input data from the application info */
 | 
					   /* Check that we have valid input data from the application info */
 | 
				
			||||||
@ -476,7 +478,7 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
 | 
				
			|||||||
   interlace_type=PNG_INTERLACE_NONE;
 | 
					   interlace_type=PNG_INTERLACE_NONE;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* save off the relevent information */
 | 
					   /* Save the relevent information */
 | 
				
			||||||
   png_ptr->bit_depth = (png_byte)bit_depth;
 | 
					   png_ptr->bit_depth = (png_byte)bit_depth;
 | 
				
			||||||
   png_ptr->color_type = (png_byte)color_type;
 | 
					   png_ptr->color_type = (png_byte)color_type;
 | 
				
			||||||
   png_ptr->interlaced = (png_byte)interlace_type;
 | 
					   png_ptr->interlaced = (png_byte)interlace_type;
 | 
				
			||||||
@ -489,12 +491,12 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels);
 | 
					   png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels);
 | 
				
			||||||
   png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
 | 
					   png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
 | 
				
			||||||
   /* set the usr info, so any transformations can modify it */
 | 
					   /* Set the usr info, so any transformations can modify it */
 | 
				
			||||||
   png_ptr->usr_width = png_ptr->width;
 | 
					   png_ptr->usr_width = png_ptr->width;
 | 
				
			||||||
   png_ptr->usr_bit_depth = png_ptr->bit_depth;
 | 
					   png_ptr->usr_bit_depth = png_ptr->bit_depth;
 | 
				
			||||||
   png_ptr->usr_channels = png_ptr->channels;
 | 
					   png_ptr->usr_channels = png_ptr->channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* pack the header information into the buffer */
 | 
					   /* Pack the header information into the buffer */
 | 
				
			||||||
   png_save_uint_32(buf, width);
 | 
					   png_save_uint_32(buf, width);
 | 
				
			||||||
   png_save_uint_32(buf + 4, height);
 | 
					   png_save_uint_32(buf + 4, height);
 | 
				
			||||||
   buf[8] = (png_byte)bit_depth;
 | 
					   buf[8] = (png_byte)bit_depth;
 | 
				
			||||||
@ -503,10 +505,10 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
 | 
				
			|||||||
   buf[11] = (png_byte)filter_type;
 | 
					   buf[11] = (png_byte)filter_type;
 | 
				
			||||||
   buf[12] = (png_byte)interlace_type;
 | 
					   buf[12] = (png_byte)interlace_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write the chunk */
 | 
					   /* Write the chunk */
 | 
				
			||||||
   png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
 | 
					   png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* initialize zlib with PNG info */
 | 
					   /* Initialize zlib with PNG info */
 | 
				
			||||||
   png_ptr->zstream.zalloc = png_zalloc;
 | 
					   png_ptr->zstream.zalloc = png_zalloc;
 | 
				
			||||||
   png_ptr->zstream.zfree = png_zfree;
 | 
					   png_ptr->zstream.zfree = png_zfree;
 | 
				
			||||||
   png_ptr->zstream.opaque = (voidpf)png_ptr;
 | 
					   png_ptr->zstream.opaque = (voidpf)png_ptr;
 | 
				
			||||||
@ -549,13 +551,13 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
 | 
				
			|||||||
   png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
					   png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
				
			||||||
   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
					   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
				
			||||||
   /* libpng is not interested in zstream.data_type */
 | 
					   /* libpng is not interested in zstream.data_type */
 | 
				
			||||||
   /* set it to a predefined value, to avoid its evaluation inside zlib */
 | 
					   /* Set it to a predefined value, to avoid its evaluation inside zlib */
 | 
				
			||||||
   png_ptr->zstream.data_type = Z_BINARY;
 | 
					   png_ptr->zstream.data_type = Z_BINARY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->mode = PNG_HAVE_IHDR;
 | 
					   png_ptr->mode = PNG_HAVE_IHDR;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* write the palette.  We are careful not to trust png_color to be in the
 | 
					/* Write the palette.  We are careful not to trust png_color to be in the
 | 
				
			||||||
 * correct order for PNG, so people can redefine it to any convenient
 | 
					 * correct order for PNG, so people can redefine it to any convenient
 | 
				
			||||||
 * structure.
 | 
					 * structure.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -622,7 +624,7 @@ png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
 | 
				
			|||||||
   png_ptr->mode |= PNG_HAVE_PLTE;
 | 
					   png_ptr->mode |= PNG_HAVE_PLTE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* write an IDAT chunk */
 | 
					/* Write an IDAT chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
					png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -639,9 +641,11 @@ png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
      unsigned int z_cmf = data[0];  /* zlib compression method and flags */
 | 
					      unsigned int z_cmf = data[0];  /* zlib compression method and flags */
 | 
				
			||||||
      if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70)
 | 
					      if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* Avoid memory underflows and multiplication overflows. */
 | 
					         /* Avoid memory underflows and multiplication overflows.
 | 
				
			||||||
         /* The conditions below are practically always satisfied;
 | 
					          *
 | 
				
			||||||
            however, they still must be checked. */
 | 
					          * The conditions below are practically always satisfied;
 | 
				
			||||||
 | 
					          * however, they still must be checked.
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
         if (length >= 2 &&
 | 
					         if (length >= 2 &&
 | 
				
			||||||
             png_ptr->height < 16384 && png_ptr->width < 16384)
 | 
					             png_ptr->height < 16384 && png_ptr->width < 16384)
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
@ -674,7 +678,7 @@ png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
 | 
				
			|||||||
   png_ptr->mode |= PNG_HAVE_IDAT;
 | 
					   png_ptr->mode |= PNG_HAVE_IDAT;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* write an IEND chunk */
 | 
					/* Write an IEND chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_IEND(png_structp png_ptr)
 | 
					png_write_IEND(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -688,7 +692,7 @@ png_write_IEND(png_structp png_ptr)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_gAMA_SUPPORTED)
 | 
					#if defined(PNG_WRITE_gAMA_SUPPORTED)
 | 
				
			||||||
/* write a gAMA chunk */
 | 
					/* Write a gAMA chunk */
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_gAMA(png_structp png_ptr, double file_gamma)
 | 
					png_write_gAMA(png_structp png_ptr, double file_gamma)
 | 
				
			||||||
@ -724,7 +728,7 @@ png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_sRGB_SUPPORTED)
 | 
					#if defined(PNG_WRITE_sRGB_SUPPORTED)
 | 
				
			||||||
/* write a sRGB chunk */
 | 
					/* Write a sRGB chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_sRGB(png_structp png_ptr, int srgb_intent)
 | 
					png_write_sRGB(png_structp png_ptr, int srgb_intent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -743,7 +747,7 @@ png_write_sRGB(png_structp png_ptr, int srgb_intent)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_iCCP_SUPPORTED)
 | 
					#if defined(PNG_WRITE_iCCP_SUPPORTED)
 | 
				
			||||||
/* write an iCCP chunk */
 | 
					/* Write an iCCP chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
 | 
					png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
 | 
				
			||||||
   png_charp profile, int profile_len)
 | 
					   png_charp profile, int profile_len)
 | 
				
			||||||
@ -800,7 +804,7 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
 | 
				
			|||||||
      profile_len = png_text_compress(png_ptr, profile,
 | 
					      profile_len = png_text_compress(png_ptr, profile,
 | 
				
			||||||
        (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
 | 
					        (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* make sure we include the NULL after the name and the compression type */
 | 
					   /* Make sure we include the NULL after the name and the compression type */
 | 
				
			||||||
   png_write_chunk_start(png_ptr, (png_bytep)png_iCCP,
 | 
					   png_write_chunk_start(png_ptr, (png_bytep)png_iCCP,
 | 
				
			||||||
          (png_uint_32)(name_len + profile_len + 2));
 | 
					          (png_uint_32)(name_len + profile_len + 2));
 | 
				
			||||||
   new_name[name_len + 1] = 0x00;
 | 
					   new_name[name_len + 1] = 0x00;
 | 
				
			||||||
@ -816,7 +820,7 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_sPLT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_sPLT_SUPPORTED)
 | 
				
			||||||
/* write a sPLT chunk */
 | 
					/* Write a sPLT chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
 | 
					png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -834,18 +838,17 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_sPLT");
 | 
					   png_debug(1, "in png_write_sPLT");
 | 
				
			||||||
   if ((name_len = png_check_keyword(png_ptr,
 | 
					   if ((name_len = png_check_keyword(png_ptr,spalette->name, &new_name))==0)
 | 
				
			||||||
      spalette->name, &new_name))==0)
 | 
					      return;
 | 
				
			||||||
     return;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* make sure we include the NULL after the name */
 | 
					   /* Make sure we include the NULL after the name */
 | 
				
			||||||
   png_write_chunk_start(png_ptr, (png_bytep)png_sPLT,
 | 
					   png_write_chunk_start(png_ptr, (png_bytep)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,
 | 
				
			||||||
     (png_size_t)(name_len + 1));
 | 
					     (png_size_t)(name_len + 1));
 | 
				
			||||||
   png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, (png_size_t)1);
 | 
					   png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, (png_size_t)1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* loop through each palette entry, writing appropriately */
 | 
					   /* Loop through each palette entry, writing appropriately */
 | 
				
			||||||
#ifndef PNG_NO_POINTER_INDEXING
 | 
					#ifndef PNG_NO_POINTER_INDEXING
 | 
				
			||||||
   for (ep = spalette->entries; ep<spalette->entries + spalette->nentries; ep++)
 | 
					   for (ep = spalette->entries; ep<spalette->entries + spalette->nentries; ep++)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
@ -897,7 +900,7 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_sBIT_SUPPORTED)
 | 
					#if defined(PNG_WRITE_sBIT_SUPPORTED)
 | 
				
			||||||
/* write the sBIT chunk */
 | 
					/* Write the sBIT chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
 | 
					png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -908,7 +911,7 @@ png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
 | 
				
			|||||||
   png_size_t size;
 | 
					   png_size_t size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_sBIT");
 | 
					   png_debug(1, "in png_write_sBIT");
 | 
				
			||||||
   /* make sure we don't depend upon the order of PNG_COLOR_8 */
 | 
					   /* Make sure we don't depend upon the order of PNG_COLOR_8 */
 | 
				
			||||||
   if (color_type & PNG_COLOR_MASK_COLOR)
 | 
					   if (color_type & PNG_COLOR_MASK_COLOR)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_byte maxbits;
 | 
					      png_byte maxbits;
 | 
				
			||||||
@ -953,7 +956,7 @@ png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_cHRM_SUPPORTED)
 | 
					#if defined(PNG_WRITE_cHRM_SUPPORTED)
 | 
				
			||||||
/* write the cHRM chunk */
 | 
					/* Write the cHRM chunk */
 | 
				
			||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
					#ifdef PNG_FLOATING_POINT_SUPPORTED
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
 | 
					png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
 | 
				
			||||||
@ -984,21 +987,21 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
 | 
				
			|||||||
      int_red_x, int_red_y, int_green_x, int_green_y, int_blue_x, int_blue_y))
 | 
					      int_red_x, int_red_y, int_green_x, int_green_y, int_blue_x, int_blue_y))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     /* each value is saved in 1/100,000ths */
 | 
					      /* Each value is saved in 1/100,000ths */
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
     png_save_uint_32(buf, int_white_x);
 | 
					      png_save_uint_32(buf, int_white_x);
 | 
				
			||||||
     png_save_uint_32(buf + 4, int_white_y);
 | 
					      png_save_uint_32(buf + 4, int_white_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     png_save_uint_32(buf + 8, int_red_x);
 | 
					      png_save_uint_32(buf + 8, int_red_x);
 | 
				
			||||||
     png_save_uint_32(buf + 12, int_red_y);
 | 
					      png_save_uint_32(buf + 12, int_red_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     png_save_uint_32(buf + 16, int_green_x);
 | 
					      png_save_uint_32(buf + 16, int_green_x);
 | 
				
			||||||
     png_save_uint_32(buf + 20, int_green_y);
 | 
					      png_save_uint_32(buf + 20, int_green_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     png_save_uint_32(buf + 24, int_blue_x);
 | 
					      png_save_uint_32(buf + 24, int_blue_x);
 | 
				
			||||||
     png_save_uint_32(buf + 28, int_blue_y);
 | 
					      png_save_uint_32(buf + 28, int_blue_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
 | 
					      png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1015,32 +1018,32 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
 | 
				
			|||||||
   png_byte buf[32];
 | 
					   png_byte buf[32];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_cHRM");
 | 
					   png_debug(1, "in png_write_cHRM");
 | 
				
			||||||
   /* each value is saved in 1/100,000ths */
 | 
					   /* Each value is saved in 1/100,000ths */
 | 
				
			||||||
#if !defined(PNG_NO_CHECK_cHRM)
 | 
					#if !defined(PNG_NO_CHECK_cHRM)
 | 
				
			||||||
   if (png_check_cHRM_fixed(png_ptr, white_x, white_y, red_x, red_y,
 | 
					   if (png_check_cHRM_fixed(png_ptr, white_x, white_y, red_x, red_y,
 | 
				
			||||||
      green_x, green_y, blue_x, blue_y))
 | 
					      green_x, green_y, blue_x, blue_y))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
   png_save_uint_32(buf, (png_uint_32)white_x);
 | 
					      png_save_uint_32(buf, (png_uint_32)white_x);
 | 
				
			||||||
   png_save_uint_32(buf + 4, (png_uint_32)white_y);
 | 
					      png_save_uint_32(buf + 4, (png_uint_32)white_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_save_uint_32(buf + 8, (png_uint_32)red_x);
 | 
					      png_save_uint_32(buf + 8, (png_uint_32)red_x);
 | 
				
			||||||
   png_save_uint_32(buf + 12, (png_uint_32)red_y);
 | 
					      png_save_uint_32(buf + 12, (png_uint_32)red_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_save_uint_32(buf + 16, (png_uint_32)green_x);
 | 
					      png_save_uint_32(buf + 16, (png_uint_32)green_x);
 | 
				
			||||||
   png_save_uint_32(buf + 20, (png_uint_32)green_y);
 | 
					      png_save_uint_32(buf + 20, (png_uint_32)green_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_save_uint_32(buf + 24, (png_uint_32)blue_x);
 | 
					      png_save_uint_32(buf + 24, (png_uint_32)blue_x);
 | 
				
			||||||
   png_save_uint_32(buf + 28, (png_uint_32)blue_y);
 | 
					      png_save_uint_32(buf + 28, (png_uint_32)blue_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
 | 
					      png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_tRNS_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tRNS_SUPPORTED)
 | 
				
			||||||
/* write the tRNS chunk */
 | 
					/* Write the tRNS chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
 | 
					png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
 | 
				
			||||||
   int num_trans, int color_type)
 | 
					   int num_trans, int color_type)
 | 
				
			||||||
@ -1058,13 +1061,13 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
 | 
				
			|||||||
         png_warning(png_ptr, "Invalid number of transparent colors specified");
 | 
					         png_warning(png_ptr, "Invalid number of transparent colors specified");
 | 
				
			||||||
         return;
 | 
					         return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      /* write the chunk out as it is */
 | 
					      /* Write the chunk out as it is */
 | 
				
			||||||
      png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans,
 | 
					      png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans,
 | 
				
			||||||
        (png_size_t)num_trans);
 | 
					        (png_size_t)num_trans);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
   else if (color_type == PNG_COLOR_TYPE_GRAY)
 | 
					   else if (color_type == PNG_COLOR_TYPE_GRAY)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* one 16 bit value */
 | 
					      /* One 16 bit value */
 | 
				
			||||||
      if (tran->gray >= (1 << png_ptr->bit_depth))
 | 
					      if (tran->gray >= (1 << png_ptr->bit_depth))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         png_warning(png_ptr,
 | 
					         png_warning(png_ptr,
 | 
				
			||||||
@ -1076,7 +1079,7 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
   else if (color_type == PNG_COLOR_TYPE_RGB)
 | 
					   else if (color_type == PNG_COLOR_TYPE_RGB)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* three 16 bit values */
 | 
					      /* Three 16 bit values */
 | 
				
			||||||
      png_save_uint_16(buf, tran->red);
 | 
					      png_save_uint_16(buf, tran->red);
 | 
				
			||||||
      png_save_uint_16(buf + 2, tran->green);
 | 
					      png_save_uint_16(buf + 2, tran->green);
 | 
				
			||||||
      png_save_uint_16(buf + 4, tran->blue);
 | 
					      png_save_uint_16(buf + 4, tran->blue);
 | 
				
			||||||
@ -1096,7 +1099,7 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_bKGD_SUPPORTED)
 | 
					#if defined(PNG_WRITE_bKGD_SUPPORTED)
 | 
				
			||||||
/* write the background chunk */
 | 
					/* Write the background chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
 | 
					png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1149,7 +1152,7 @@ png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_hIST_SUPPORTED)
 | 
					#if defined(PNG_WRITE_hIST_SUPPORTED)
 | 
				
			||||||
/* write the histogram */
 | 
					/* Write the histogram */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist)
 | 
					png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1249,8 +1252,8 @@ png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      while (*kp == ' ')
 | 
					      while (*kp == ' ')
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        *(kp--) = '\0';
 | 
					         *(kp--) = '\0';
 | 
				
			||||||
        key_len--;
 | 
					         key_len--;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1262,8 +1265,8 @@ png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      while (*kp == ' ')
 | 
					      while (*kp == ' ')
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        kp++;
 | 
					         kp++;
 | 
				
			||||||
        key_len--;
 | 
					         key_len--;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1311,7 +1314,7 @@ png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_tEXt_SUPPORTED)
 | 
				
			||||||
/* write a tEXt chunk */
 | 
					/* Write a tEXt chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
					png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
				
			||||||
   png_size_t text_len)
 | 
					   png_size_t text_len)
 | 
				
			||||||
@ -1331,7 +1334,7 @@ png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
				
			|||||||
   else
 | 
					   else
 | 
				
			||||||
      text_len = png_strlen(text);
 | 
					      text_len = png_strlen(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* make sure we include the 0 after the key */
 | 
					   /* Make sure we include the 0 after the key */
 | 
				
			||||||
   png_write_chunk_start(png_ptr, (png_bytep)png_tEXt,
 | 
					   png_write_chunk_start(png_ptr, (png_bytep)png_tEXt,
 | 
				
			||||||
      (png_uint_32)(key_len + text_len + 1));
 | 
					      (png_uint_32)(key_len + text_len + 1));
 | 
				
			||||||
   /*
 | 
					   /*
 | 
				
			||||||
@ -1351,7 +1354,7 @@ png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_zTXt_SUPPORTED)
 | 
				
			||||||
/* write a compressed text chunk */
 | 
					/* Write a compressed text chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
					png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
				
			||||||
   png_size_t text_len, int compression)
 | 
					   png_size_t text_len, int compression)
 | 
				
			||||||
@ -1387,31 +1390,31 @@ png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   text_len = png_strlen(text);
 | 
					   text_len = png_strlen(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* compute the compressed data; do it now for the length */
 | 
					   /* Compute the compressed data; do it now for the length */
 | 
				
			||||||
   text_len = png_text_compress(png_ptr, text, text_len, compression,
 | 
					   text_len = png_text_compress(png_ptr, text, text_len, compression,
 | 
				
			||||||
       &comp);
 | 
					       &comp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write start of chunk */
 | 
					   /* Write start of chunk */
 | 
				
			||||||
   png_write_chunk_start(png_ptr, (png_bytep)png_zTXt,
 | 
					   png_write_chunk_start(png_ptr, (png_bytep)png_zTXt,
 | 
				
			||||||
     (png_uint_32)(key_len+text_len + 2));
 | 
					     (png_uint_32)(key_len+text_len + 2));
 | 
				
			||||||
   /* write key */
 | 
					   /* Write key */
 | 
				
			||||||
   png_write_chunk_data(png_ptr, (png_bytep)new_key,
 | 
					   png_write_chunk_data(png_ptr, (png_bytep)new_key,
 | 
				
			||||||
     (png_size_t)(key_len + 1));
 | 
					     (png_size_t)(key_len + 1));
 | 
				
			||||||
   png_free(png_ptr, new_key);
 | 
					   png_free(png_ptr, new_key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   buf[0] = (png_byte)compression;
 | 
					   buf[0] = (png_byte)compression;
 | 
				
			||||||
   /* write compression */
 | 
					   /* Write compression */
 | 
				
			||||||
   png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1);
 | 
					   png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1);
 | 
				
			||||||
   /* write the compressed data */
 | 
					   /* Write the compressed data */
 | 
				
			||||||
   png_write_compressed_data_out(png_ptr, &comp);
 | 
					   png_write_compressed_data_out(png_ptr, &comp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* close the chunk */
 | 
					   /* Close the chunk */
 | 
				
			||||||
   png_write_chunk_end(png_ptr);
 | 
					   png_write_chunk_end(png_ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
					#if defined(PNG_WRITE_iTXt_SUPPORTED)
 | 
				
			||||||
/* write an iTXt chunk */
 | 
					/* Write an iTXt chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
					png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
				
			||||||
    png_charp lang, png_charp lang_key, png_charp text)
 | 
					    png_charp lang, png_charp lang_key, png_charp text)
 | 
				
			||||||
@ -1443,21 +1446,21 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (lang_key == NULL)
 | 
					   if (lang_key == NULL)
 | 
				
			||||||
     lang_key_len = 0;
 | 
					      lang_key_len = 0;
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
     lang_key_len = png_strlen(lang_key);
 | 
					      lang_key_len = png_strlen(lang_key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (text == NULL)
 | 
					   if (text == NULL)
 | 
				
			||||||
      text_len = 0;
 | 
					      text_len = 0;
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
     text_len = png_strlen(text);
 | 
					      text_len = png_strlen(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* compute the compressed data; do it now for the length */
 | 
					   /* Compute the compressed data; do it now for the length */
 | 
				
			||||||
   text_len = png_text_compress(png_ptr, text, text_len, compression-2,
 | 
					   text_len = png_text_compress(png_ptr, text, text_len, compression-2,
 | 
				
			||||||
      &comp);
 | 
					      &comp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* make sure we include the compression flag, the compression byte,
 | 
					   /* Make sure we include the compression flag, the compression byte,
 | 
				
			||||||
    * and the NULs after the key, lang, and lang_key parts */
 | 
					    * and the NULs after the key, lang, and lang_key parts */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_write_chunk_start(png_ptr, (png_bytep)png_iTXt,
 | 
					   png_write_chunk_start(png_ptr, (png_bytep)png_iTXt,
 | 
				
			||||||
@ -1468,8 +1471,7 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
				
			|||||||
        + lang_key_len
 | 
					        + lang_key_len
 | 
				
			||||||
        + text_len));
 | 
					        + text_len));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /*
 | 
					   /* We leave it to the application to meet PNG-1.0 requirements on the
 | 
				
			||||||
    * We leave it to the application to meet PNG-1.0 requirements on the
 | 
					 | 
				
			||||||
    * contents of the text.  PNG-1.0 through PNG-1.2 discourage the use of
 | 
					    * contents of the text.  PNG-1.0 through PNG-1.2 discourage the use of
 | 
				
			||||||
    * any non-Latin-1 characters except for NEWLINE.  ISO PNG will forbid them.
 | 
					    * any non-Latin-1 characters except for NEWLINE.  ISO PNG will forbid them.
 | 
				
			||||||
    * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
 | 
					    * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
 | 
				
			||||||
@ -1477,13 +1479,13 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
				
			|||||||
   png_write_chunk_data(png_ptr, (png_bytep)new_key,
 | 
					   png_write_chunk_data(png_ptr, (png_bytep)new_key,
 | 
				
			||||||
     (png_size_t)(key_len + 1));
 | 
					     (png_size_t)(key_len + 1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set the compression flag */
 | 
					   /* Set the compression flag */
 | 
				
			||||||
   if (compression == PNG_ITXT_COMPRESSION_NONE || \
 | 
					   if (compression == PNG_ITXT_COMPRESSION_NONE || \
 | 
				
			||||||
       compression == PNG_TEXT_COMPRESSION_NONE)
 | 
					       compression == PNG_TEXT_COMPRESSION_NONE)
 | 
				
			||||||
       cbuf[0] = 0;
 | 
					       cbuf[0] = 0;
 | 
				
			||||||
   else /* compression == PNG_ITXT_COMPRESSION_zTXt */
 | 
					   else /* compression == PNG_ITXT_COMPRESSION_zTXt */
 | 
				
			||||||
       cbuf[0] = 1;
 | 
					       cbuf[0] = 1;
 | 
				
			||||||
   /* set the compression method */
 | 
					   /* Set the compression method */
 | 
				
			||||||
   cbuf[1] = 0;
 | 
					   cbuf[1] = 0;
 | 
				
			||||||
   png_write_chunk_data(png_ptr, cbuf, (png_size_t)2);
 | 
					   png_write_chunk_data(png_ptr, cbuf, (png_size_t)2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1501,7 +1503,7 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_oFFs_SUPPORTED)
 | 
					#if defined(PNG_WRITE_oFFs_SUPPORTED)
 | 
				
			||||||
/* write the oFFs chunk */
 | 
					/* Write the oFFs chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
 | 
					png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
 | 
				
			||||||
   int unit_type)
 | 
					   int unit_type)
 | 
				
			||||||
@ -1523,7 +1525,7 @@ png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(PNG_WRITE_pCAL_SUPPORTED)
 | 
					#if defined(PNG_WRITE_pCAL_SUPPORTED)
 | 
				
			||||||
/* write the pCAL chunk (described in the PNG extensions document) */
 | 
					/* Write the pCAL chunk (described in the PNG extensions document) */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
 | 
					png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
 | 
				
			||||||
   png_int_32 X1, int type, int nparams, png_charp units, png_charpp params)
 | 
					   png_int_32 X1, int type, int nparams, png_charp units, png_charpp params)
 | 
				
			||||||
@ -1585,7 +1587,7 @@ png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_sCAL_SUPPORTED)
 | 
					#if defined(PNG_WRITE_sCAL_SUPPORTED)
 | 
				
			||||||
/* write the sCAL chunk */
 | 
					/* Write the sCAL chunk */
 | 
				
			||||||
#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
 | 
					#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_sCAL(png_structp png_ptr, int unit, double width, double height)
 | 
					png_write_sCAL(png_structp png_ptr, int unit, double width, double height)
 | 
				
			||||||
@ -1648,8 +1650,8 @@ png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   buf[0] = (png_byte)unit;
 | 
					   buf[0] = (png_byte)unit;
 | 
				
			||||||
   png_memcpy(buf + 1, width, wlen + 1);      /* append the '\0' here */
 | 
					   png_memcpy(buf + 1, width, wlen + 1);      /* Append the '\0' here */
 | 
				
			||||||
   png_memcpy(buf + wlen + 2, height, hlen);  /* do NOT append the '\0' here */
 | 
					   png_memcpy(buf + wlen + 2, height, hlen);  /* Do NOT append the '\0' here */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
 | 
					   png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
 | 
				
			||||||
   png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len);
 | 
					   png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len);
 | 
				
			||||||
@ -1659,7 +1661,7 @@ png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_pHYs_SUPPORTED)
 | 
					#if defined(PNG_WRITE_pHYs_SUPPORTED)
 | 
				
			||||||
/* write the pHYs chunk */
 | 
					/* Write the pHYs chunk */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
 | 
					png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
 | 
				
			||||||
   png_uint_32 y_pixels_per_unit,
 | 
					   png_uint_32 y_pixels_per_unit,
 | 
				
			||||||
@ -1714,24 +1716,24 @@ png_write_tIME(png_structp png_ptr, png_timep mod_time)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* initializes the row writing capability of libpng */
 | 
					/* Initializes the row writing capability of libpng */
 | 
				
			||||||
void /* PRIVATE */
 | 
					void /* PRIVATE */
 | 
				
			||||||
png_write_start_row(png_structp png_ptr)
 | 
					png_write_start_row(png_structp png_ptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block in the y direction */
 | 
					   /* Start of interlace block in the y direction */
 | 
				
			||||||
   int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
					   int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block in the y direction */
 | 
					   /* Offset to next interlace block in the y direction */
 | 
				
			||||||
   int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
					   int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1742,13 +1744,13 @@ png_write_start_row(png_structp png_ptr)
 | 
				
			|||||||
   buf_size = (png_size_t)(PNG_ROWBYTES(
 | 
					   buf_size = (png_size_t)(PNG_ROWBYTES(
 | 
				
			||||||
      png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
 | 
					      png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* set up row buffer */
 | 
					   /* Set up row buffer */
 | 
				
			||||||
   png_ptr->row_buf = (png_bytep)png_malloc(png_ptr,
 | 
					   png_ptr->row_buf = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
     (png_uint_32)buf_size);
 | 
					     (png_uint_32)buf_size);
 | 
				
			||||||
   png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
 | 
					   png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef PNG_NO_WRITE_FILTER
 | 
					#ifndef PNG_NO_WRITE_FILTER
 | 
				
			||||||
   /* set up filtering buffer, if using this filter */
 | 
					   /* Set up filtering buffer, if using this filter */
 | 
				
			||||||
   if (png_ptr->do_filter & PNG_FILTER_SUB)
 | 
					   if (png_ptr->do_filter & PNG_FILTER_SUB)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
 | 
					      png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
@ -1759,7 +1761,7 @@ png_write_start_row(png_structp png_ptr)
 | 
				
			|||||||
   /* We only need to keep the previous row if we are using one of these. */
 | 
					   /* We only need to keep the previous row if we are using one of these. */
 | 
				
			||||||
   if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
 | 
					   if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
     /* set up previous row buffer */
 | 
					     /* Set up previous row buffer */
 | 
				
			||||||
     png_ptr->prev_row = (png_bytep)png_malloc(png_ptr,
 | 
					     png_ptr->prev_row = (png_bytep)png_malloc(png_ptr,
 | 
				
			||||||
        (png_uint_32)buf_size);
 | 
					        (png_uint_32)buf_size);
 | 
				
			||||||
     png_memset(png_ptr->prev_row, 0, buf_size);
 | 
					     png_memset(png_ptr->prev_row, 0, buf_size);
 | 
				
			||||||
@ -1788,7 +1790,7 @@ png_write_start_row(png_structp png_ptr)
 | 
				
			|||||||
#endif /* PNG_NO_WRITE_FILTER */
 | 
					#endif /* PNG_NO_WRITE_FILTER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
				
			||||||
   /* if interlaced, we need to set up width and height of pass */
 | 
					   /* If interlaced, we need to set up width and height of pass */
 | 
				
			||||||
   if (png_ptr->interlaced)
 | 
					   if (png_ptr->interlaced)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (!(png_ptr->transformations & PNG_INTERLACE))
 | 
					      if (!(png_ptr->transformations & PNG_INTERLACE))
 | 
				
			||||||
@ -1820,18 +1822,18 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block in the y direction */
 | 
					   /* Start of interlace block in the y direction */
 | 
				
			||||||
   int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
					   int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block in the y direction */
 | 
					   /* Offset to next interlace block in the y direction */
 | 
				
			||||||
   int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
					   int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1839,15 +1841,15 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
   int ret;
 | 
					   int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_finish_row");
 | 
					   png_debug(1, "in png_write_finish_row");
 | 
				
			||||||
   /* next row */
 | 
					   /* Next row */
 | 
				
			||||||
   png_ptr->row_number++;
 | 
					   png_ptr->row_number++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* see if we are done */
 | 
					   /* See if we are done */
 | 
				
			||||||
   if (png_ptr->row_number < png_ptr->num_rows)
 | 
					   if (png_ptr->row_number < png_ptr->num_rows)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
					#ifdef PNG_WRITE_INTERLACING_SUPPORTED
 | 
				
			||||||
   /* if interlaced, go to next pass */
 | 
					   /* If interlaced, go to next pass */
 | 
				
			||||||
   if (png_ptr->interlaced)
 | 
					   if (png_ptr->interlaced)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_ptr->row_number = 0;
 | 
					      png_ptr->row_number = 0;
 | 
				
			||||||
@ -1857,7 +1859,7 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* loop until we find a non-zero width or height pass */
 | 
					         /* Loop until we find a non-zero width or height pass */
 | 
				
			||||||
         do
 | 
					         do
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            png_ptr->pass++;
 | 
					            png_ptr->pass++;
 | 
				
			||||||
@ -1877,7 +1879,7 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* reset the row above the image for the next pass */
 | 
					      /* Reset the row above the image for the next pass */
 | 
				
			||||||
      if (png_ptr->pass < 7)
 | 
					      if (png_ptr->pass < 7)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (png_ptr->prev_row != NULL)
 | 
					         if (png_ptr->prev_row != NULL)
 | 
				
			||||||
@ -1889,16 +1891,16 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* if we get here, we've just written the last row, so we need
 | 
					   /* If we get here, we've just written the last row, so we need
 | 
				
			||||||
      to flush the compressor */
 | 
					      to flush the compressor */
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* tell the compressor we are done */
 | 
					      /* Tell the compressor we are done */
 | 
				
			||||||
      ret = deflate(&png_ptr->zstream, Z_FINISH);
 | 
					      ret = deflate(&png_ptr->zstream, Z_FINISH);
 | 
				
			||||||
      /* check for an error */
 | 
					      /* Check for an error */
 | 
				
			||||||
      if (ret == Z_OK)
 | 
					      if (ret == Z_OK)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* check to see if we need more room */
 | 
					         /* Check to see if we need more room */
 | 
				
			||||||
         if (!(png_ptr->zstream.avail_out))
 | 
					         if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
         {
 | 
					         {
 | 
				
			||||||
            png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
 | 
					            png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
 | 
				
			||||||
@ -1915,7 +1917,7 @@ png_write_finish_row(png_structp png_ptr)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   } while (ret != Z_STREAM_END);
 | 
					   } while (ret != Z_STREAM_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* write any extra space */
 | 
					   /* Write any extra space */
 | 
				
			||||||
   if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
 | 
					   if (png_ptr->zstream.avail_out < png_ptr->zbuf_size)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size -
 | 
					      png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size -
 | 
				
			||||||
@ -1938,24 +1940,24 @@ void /* PRIVATE */
 | 
				
			|||||||
png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
 | 
					png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef PNG_USE_LOCAL_ARRAYS
 | 
					#ifdef PNG_USE_LOCAL_ARRAYS
 | 
				
			||||||
   /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
					   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* start of interlace block */
 | 
					   /* Start of interlace block */
 | 
				
			||||||
   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
					   int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* offset to next interlace block */
 | 
					   /* Offset to next interlace block */
 | 
				
			||||||
   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
					   int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_do_write_interlace");
 | 
					   png_debug(1, "in png_do_write_interlace");
 | 
				
			||||||
   /* we don't have to do anything on the last pass (6) */
 | 
					   /* We don't have to do anything on the last pass (6) */
 | 
				
			||||||
#if defined(PNG_USELESS_TESTS_SUPPORTED)
 | 
					#if defined(PNG_USELESS_TESTS_SUPPORTED)
 | 
				
			||||||
   if (row != NULL && row_info != NULL && pass < 6)
 | 
					   if (row != NULL && row_info != NULL && pass < 6)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
   if (pass < 6)
 | 
					   if (pass < 6)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      /* each pixel depth is handled separately */
 | 
					      /* Each pixel depth is handled separately */
 | 
				
			||||||
      switch (row_info->pixel_depth)
 | 
					      switch (row_info->pixel_depth)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         case 1:
 | 
					         case 1:
 | 
				
			||||||
@ -2066,27 +2068,27 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
 | 
				
			|||||||
            png_uint_32 row_width = row_info->width;
 | 
					            png_uint_32 row_width = row_info->width;
 | 
				
			||||||
            png_size_t pixel_bytes;
 | 
					            png_size_t pixel_bytes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /* start at the beginning */
 | 
					            /* Start at the beginning */
 | 
				
			||||||
            dp = row;
 | 
					            dp = row;
 | 
				
			||||||
            /* find out how many bytes each pixel takes up */
 | 
					            /* Find out how many bytes each pixel takes up */
 | 
				
			||||||
            pixel_bytes = (row_info->pixel_depth >> 3);
 | 
					            pixel_bytes = (row_info->pixel_depth >> 3);
 | 
				
			||||||
            /* loop through the row, only looking at the pixels that
 | 
					            /* Loop through the row, only looking at the pixels that
 | 
				
			||||||
               matter */
 | 
					               matter */
 | 
				
			||||||
            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])
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
               /* find out where the original pixel is */
 | 
					               /* Find out where the original pixel is */
 | 
				
			||||||
               sp = row + (png_size_t)i * pixel_bytes;
 | 
					               sp = row + (png_size_t)i * pixel_bytes;
 | 
				
			||||||
               /* move the pixel */
 | 
					               /* Move the pixel */
 | 
				
			||||||
               if (dp != sp)
 | 
					               if (dp != sp)
 | 
				
			||||||
                  png_memcpy(dp, sp, pixel_bytes);
 | 
					                  png_memcpy(dp, sp, pixel_bytes);
 | 
				
			||||||
               /* next pixel */
 | 
					               /* Next pixel */
 | 
				
			||||||
               dp += pixel_bytes;
 | 
					               dp += pixel_bytes;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      /* set new row width */
 | 
					      /* Set new row width */
 | 
				
			||||||
      row_info->width = (row_info->width +
 | 
					      row_info->width = (row_info->width +
 | 
				
			||||||
         png_pass_inc[pass] - 1 -
 | 
					         png_pass_inc[pass] - 1 -
 | 
				
			||||||
         png_pass_start[pass]) /
 | 
					         png_pass_start[pass]) /
 | 
				
			||||||
@ -2119,7 +2121,7 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_debug(1, "in png_write_find_filter");
 | 
					   png_debug(1, "in png_write_find_filter");
 | 
				
			||||||
   /* find out how many bytes offset each pixel is */
 | 
					   /* Find out how many bytes offset each pixel is */
 | 
				
			||||||
   bpp = (row_info->pixel_depth + 7) >> 3;
 | 
					   bpp = (row_info->pixel_depth + 7) >> 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   prev_row = png_ptr->prev_row;
 | 
					   prev_row = png_ptr->prev_row;
 | 
				
			||||||
@ -2206,9 +2208,9 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
 | 
				
			|||||||
      mins = sum;
 | 
					      mins = sum;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* sub filter */
 | 
					   /* Sub filter */
 | 
				
			||||||
   if (filter_to_do == PNG_FILTER_SUB)
 | 
					   if (filter_to_do == PNG_FILTER_SUB)
 | 
				
			||||||
   /* it's the only filter so no testing is needed */
 | 
					   /* It's the only filter so no testing is needed */
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_bytep rp, lp, dp;
 | 
					      png_bytep rp, lp, dp;
 | 
				
			||||||
      png_uint_32 i;
 | 
					      png_uint_32 i;
 | 
				
			||||||
@ -2323,7 +2325,7 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* up filter */
 | 
					   /* Up filter */
 | 
				
			||||||
   if (filter_to_do == PNG_FILTER_UP)
 | 
					   if (filter_to_do == PNG_FILTER_UP)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_bytep rp, dp, pp;
 | 
					      png_bytep rp, dp, pp;
 | 
				
			||||||
@ -2426,7 +2428,7 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* avg filter */
 | 
					   /* Avg filter */
 | 
				
			||||||
   if (filter_to_do == PNG_FILTER_AVG)
 | 
					   if (filter_to_do == PNG_FILTER_AVG)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_bytep rp, dp, pp, lp;
 | 
					      png_bytep rp, dp, pp, lp;
 | 
				
			||||||
@ -2729,18 +2731,18 @@ png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   png_debug(1, "in png_write_filtered_row");
 | 
					   png_debug(1, "in png_write_filtered_row");
 | 
				
			||||||
   png_debug1(2, "filter = %d", filtered_row[0]);
 | 
					   png_debug1(2, "filter = %d", filtered_row[0]);
 | 
				
			||||||
   /* set up the zlib input buffer */
 | 
					   /* Set up the zlib input buffer */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   png_ptr->zstream.next_in = filtered_row;
 | 
					   png_ptr->zstream.next_in = filtered_row;
 | 
				
			||||||
   png_ptr->zstream.avail_in = (uInt)png_ptr->row_info.rowbytes + 1;
 | 
					   png_ptr->zstream.avail_in = (uInt)png_ptr->row_info.rowbytes + 1;
 | 
				
			||||||
   /* repeat until we have compressed all the data */
 | 
					   /* Repeat until we have compressed all the data */
 | 
				
			||||||
   do
 | 
					   do
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      int ret; /* return of zlib */
 | 
					      int ret; /* Return of zlib */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* compress the data */
 | 
					      /* Compress the data */
 | 
				
			||||||
      ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
 | 
					      ret = deflate(&png_ptr->zstream, Z_NO_FLUSH);
 | 
				
			||||||
      /* check for compression errors */
 | 
					      /* Check for compression errors */
 | 
				
			||||||
      if (ret != Z_OK)
 | 
					      if (ret != Z_OK)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         if (png_ptr->zstream.msg != NULL)
 | 
					         if (png_ptr->zstream.msg != NULL)
 | 
				
			||||||
@ -2749,18 +2751,18 @@ png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
 | 
				
			|||||||
            png_error(png_ptr, "zlib error");
 | 
					            png_error(png_ptr, "zlib error");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* see if it is time to write another IDAT */
 | 
					      /* See if it is time to write another IDAT */
 | 
				
			||||||
      if (!(png_ptr->zstream.avail_out))
 | 
					      if (!(png_ptr->zstream.avail_out))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         /* write the IDAT and reset the zlib output buffer */
 | 
					         /* Write the IDAT and reset the zlib output buffer */
 | 
				
			||||||
         png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
 | 
					         png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
 | 
				
			||||||
         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
					         png_ptr->zstream.next_out = png_ptr->zbuf;
 | 
				
			||||||
         png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
					         png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
   /* repeat until all data has been compressed */
 | 
					   /* Repeat until all data has been compressed */
 | 
				
			||||||
   } while (png_ptr->zstream.avail_in);
 | 
					   } while (png_ptr->zstream.avail_in);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* swap the current and previous rows */
 | 
					   /* Swap the current and previous rows */
 | 
				
			||||||
   if (png_ptr->prev_row != NULL)
 | 
					   if (png_ptr->prev_row != NULL)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      png_bytep tptr;
 | 
					      png_bytep tptr;
 | 
				
			||||||
@ -2770,7 +2772,7 @@ png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
 | 
				
			|||||||
      png_ptr->row_buf = tptr;
 | 
					      png_ptr->row_buf = tptr;
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* finish row - updates counters and flushes zlib if last row */
 | 
					   /* Finish row - updates counters and flushes zlib if last row */
 | 
				
			||||||
   png_write_finish_row(png_ptr);
 | 
					   png_write_finish_row(png_ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
 | 
					#if defined(PNG_WRITE_FLUSH_SUPPORTED)
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@ project(PNG)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set(PNGLIB_MAJOR 1)
 | 
					set(PNGLIB_MAJOR 1)
 | 
				
			||||||
set(PNGLIB_MINOR 0)
 | 
					set(PNGLIB_MINOR 0)
 | 
				
			||||||
set(PNGLIB_RELEASE 44)
 | 
					set(PNGLIB_RELEASE 45)
 | 
				
			||||||
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
 | 
					set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
 | 
				
			||||||
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
 | 
					set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -169,7 +169,7 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# SET UP LINKS
 | 
					# SET UP LINKS
 | 
				
			||||||
set_target_properties(${PNG_LIB_NAME} PROPERTIES
 | 
					set_target_properties(${PNG_LIB_NAME} PROPERTIES
 | 
				
			||||||
#    VERSION 0.${PNGLIB_RELEASE}.1.0.44
 | 
					#    VERSION 0.${PNGLIB_RELEASE}.1.0.45
 | 
				
			||||||
     VERSION 0.${PNGLIB_RELEASE}.0
 | 
					     VERSION 0.${PNGLIB_RELEASE}.0
 | 
				
			||||||
     SOVERSION 0
 | 
					     SOVERSION 0
 | 
				
			||||||
     CLEAN_DIRECT_OUTPUT 1)
 | 
					     CLEAN_DIRECT_OUTPUT 1)
 | 
				
			||||||
@ -184,7 +184,6 @@ install_targets(/lib ${PNG_LIB_NAME})
 | 
				
			|||||||
if(PNG_STATIC)
 | 
					if(PNG_STATIC)
 | 
				
			||||||
  install_targets(/lib ${PNG_LIB_NAME_STATIC})
 | 
					  install_targets(/lib ${PNG_LIB_NAME_STATIC})
 | 
				
			||||||
endif(PNG_STATIC)
 | 
					endif(PNG_STATIC)
 | 
				
			||||||
 | 
					 | 
				
			||||||
install(FILES png.h pngconf.h         DESTINATION include)
 | 
					install(FILES png.h pngconf.h         DESTINATION include)
 | 
				
			||||||
install(FILES png.h pngconf.h         DESTINATION include/${PNGLIB_NAME})
 | 
					install(FILES png.h pngconf.h         DESTINATION include/${PNGLIB_NAME})
 | 
				
			||||||
install(FILES libpng.3 libpngpf.3             DESTINATION man/man3)
 | 
					install(FILES libpng.3 libpngpf.3             DESTINATION man/man3)
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,7 @@ test : pngtest.exe
 | 
				
			|||||||
   run pngtest
 | 
					   run pngtest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean :
 | 
					clean :
 | 
				
			||||||
	delete *.obj;*,*.exe;*
 | 
						delete *.obj;*,*.exe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Other dependencies.
 | 
					# Other dependencies.
 | 
				
			||||||
@ -44,9 +44,9 @@ pngerror.obj : png.h, pngconf.h
 | 
				
			|||||||
pngmem.obj : png.h, pngconf.h
 | 
					pngmem.obj : png.h, pngconf.h
 | 
				
			||||||
pngrio.obj : png.h, pngconf.h
 | 
					pngrio.obj : png.h, pngconf.h
 | 
				
			||||||
pngwio.obj : png.h, pngconf.h
 | 
					pngwio.obj : png.h, pngconf.h
 | 
				
			||||||
pngtest.obj : png.h, pngconf.h
 | 
					 | 
				
			||||||
pngtrans.obj : png.h, pngconf.h
 | 
					pngtrans.obj : png.h, pngconf.h
 | 
				
			||||||
pngwrite.obj : png.h, pngconf.h
 | 
					pngwrite.obj : png.h, pngconf.h
 | 
				
			||||||
pngwtran.obj : png.h, pngconf.h
 | 
					pngwtran.obj : png.h, pngconf.h
 | 
				
			||||||
pngwutil.obj : png.h, pngconf.h
 | 
					pngwutil.obj : png.h, pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.obj : png.h, pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Modeled after libxml-config.
 | 
					# Modeled after libxml-config.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version=1.0.44
 | 
					version=1.0.45
 | 
				
			||||||
prefix=""
 | 
					prefix=""
 | 
				
			||||||
libdir=""
 | 
					libdir=""
 | 
				
			||||||
libs=""
 | 
					libs=""
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,8 @@ I_opts="-I${includedir}"
 | 
				
			|||||||
L_opts="-L${libdir}"
 | 
					L_opts="-L${libdir}"
 | 
				
			||||||
R_opts=""
 | 
					R_opts=""
 | 
				
			||||||
cppflags=""
 | 
					cppflags=""
 | 
				
			||||||
ccopts="@LIBPNG_NO_MMX@"
 | 
					%12-%ccopts="@LIBPNG_NO_MMX@"
 | 
				
			||||||
 | 
					%14+%ccopts=""
 | 
				
			||||||
ldopts=""
 | 
					ldopts=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage()
 | 
					usage()
 | 
				
			||||||
 | 
				
			|||||||
@ -8,4 +8,5 @@ Description: Loads and saves PNG files
 | 
				
			|||||||
Version: @PNGLIB_VERSION@
 | 
					Version: @PNGLIB_VERSION@
 | 
				
			||||||
Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
 | 
					Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
 | 
				
			||||||
Libs.private: @LIBS@
 | 
					Libs.private: @LIBS@
 | 
				
			||||||
Cflags: -I${includedir} @LIBPNG_NO_MMX@
 | 
					%12-%Cflags: -I${includedir} @LIBPNG_NO_MMX@
 | 
				
			||||||
 | 
					%14+%Cflags: -I${includedir}
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,6 @@ includedir=@includedir@/libpng10
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Name: libpng
 | 
					Name: libpng
 | 
				
			||||||
Description: Loads and saves PNG files
 | 
					Description: Loads and saves PNG files
 | 
				
			||||||
Version: 1.0.44
 | 
					Version: 1.0.45
 | 
				
			||||||
Libs: -L${libdir} -lpng10
 | 
					Libs: -L${libdir} -lpng10
 | 
				
			||||||
Cflags: -I${includedir}
 | 
					Cflags: -I${includedir}
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,6 @@ CMHGflags =
 | 
				
			|||||||
LibFileflags = -c -l -o $@
 | 
					LibFileflags = -c -l -o $@
 | 
				
			||||||
Squeezeflags = -o $@
 | 
					Squeezeflags = -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Final targets:
 | 
					# Final targets:
 | 
				
			||||||
@.libpng-lib:   @.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \
 | 
					@.libpng-lib:   @.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \
 | 
				
			||||||
	@.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \
 | 
						@.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
# makefile for libpng using gcc (generic, static library)
 | 
					# makefile for libpng using gcc (generic, static library)
 | 
				
			||||||
# Copyright (C) 2002, 2006, 2008 Glenn Randers-Pehrson
 | 
					# Copyright (C) 2002, 2006-2009 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 2000 Cosmin Truta
 | 
					# Copyright (C) 2000 Cosmin Truta
 | 
				
			||||||
# Copyright (C) 2000 Marc O. Gloor (AIX support added, from makefile.gcc)
 | 
					# Copyright (C) 2000 Marc O. Gloor (AIX support added, from makefile.gcc)
 | 
				
			||||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
					# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
				
			||||||
@ -20,7 +20,7 @@ LN_SF = ln -f -s
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prefix=/usr/local
 | 
					prefix=/usr/local
 | 
				
			||||||
@ -54,7 +54,7 @@ A=.a
 | 
				
			|||||||
E=
 | 
					E=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Variables
 | 
					# Variables
 | 
				
			||||||
OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 | 
					OBJS =  png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 | 
				
			||||||
	pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
 | 
						pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
 | 
				
			||||||
	pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
 | 
						pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -94,20 +94,20 @@ install: $(LIBNAME)$(A)
 | 
				
			|||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM_F) *.o $(LIBNAME)$(A) pngtest pngout.png
 | 
						$(RM_F) *.o $(LIBNAME)$(A) pngtest pngout.png
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png$(O): png.h pngconf.h
 | 
					png$(O):      png.h pngconf.h
 | 
				
			||||||
pngerror$(O): png.h pngconf.h
 | 
					pngerror$(O): png.h pngconf.h
 | 
				
			||||||
pngget$(O): png.h pngconf.h
 | 
					pngget$(O):   png.h pngconf.h
 | 
				
			||||||
pngmem$(O): png.h pngconf.h
 | 
					pngmem$(O):   png.h pngconf.h
 | 
				
			||||||
pngpread$(O): png.h pngconf.h
 | 
					pngpread$(O): png.h pngconf.h
 | 
				
			||||||
pngread$(O): png.h pngconf.h
 | 
					pngread$(O):  png.h pngconf.h
 | 
				
			||||||
pngrio$(O): png.h pngconf.h
 | 
					pngrio$(O):   png.h pngconf.h
 | 
				
			||||||
pngrtran$(O): png.h pngconf.h
 | 
					pngrtran$(O): png.h pngconf.h
 | 
				
			||||||
pngrutil$(O): png.h pngconf.h
 | 
					pngrutil$(O): png.h pngconf.h
 | 
				
			||||||
pngset$(O): png.h pngconf.h
 | 
					pngset$(O):   png.h pngconf.h
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O):   png.h pngconf.h
 | 
				
			||||||
pngwrite$(O): png.h pngconf.h
 | 
					pngwrite$(O): png.h pngconf.h
 | 
				
			||||||
pngwtran$(O): png.h pngconf.h
 | 
					pngwtran$(O): png.h pngconf.h
 | 
				
			||||||
pngwutil$(O): png.h pngconf.h
 | 
					pngwutil$(O): png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O):  png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,6 @@
 | 
				
			|||||||
## Where zlib.h, zconf.h and zlib.lib are
 | 
					## Where zlib.h, zconf.h and zlib.lib are
 | 
				
			||||||
ZLIB_DIR=..\zlib
 | 
					ZLIB_DIR=..\zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Compiler, linker and lib stuff
 | 
					## Compiler, linker and lib stuff
 | 
				
			||||||
CC=bcc32
 | 
					CC=bcc32
 | 
				
			||||||
LD=bcc32
 | 
					LD=bcc32
 | 
				
			||||||
@ -49,7 +48,6 @@ CFLAGS=-I$(ZLIB_DIR) -O2 -d -k- -w $(TARGET_CPU) $(CDEBUG)
 | 
				
			|||||||
# -M  generate map file
 | 
					# -M  generate map file
 | 
				
			||||||
LDFLAGS=-L$(ZLIB_DIR) -M $(LDEBUG)
 | 
					LDFLAGS=-L$(ZLIB_DIR) -M $(LDEBUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Variables
 | 
					## Variables
 | 
				
			||||||
OBJS = \
 | 
					OBJS = \
 | 
				
			||||||
	png.obj \
 | 
						png.obj \
 | 
				
			||||||
@ -87,7 +85,6 @@ LIBOBJS = \
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIBNAME=libpng.lib
 | 
					LIBNAME=libpng.lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Implicit rules
 | 
					## Implicit rules
 | 
				
			||||||
# Braces let make "batch" calls to the compiler,
 | 
					# Braces let make "batch" calls to the compiler,
 | 
				
			||||||
# 2 calls instead of 12; space is important.
 | 
					# 2 calls instead of 12; space is important.
 | 
				
			||||||
@ -100,7 +97,6 @@ LIBNAME=libpng.lib
 | 
				
			|||||||
.obj.exe:
 | 
					.obj.exe:
 | 
				
			||||||
	$(LD) $(LDFLAGS) $*.obj $(LIBNAME) zlib.lib $(NOEHLIB)
 | 
						$(LD) $(LDFLAGS) $*.obj $(LIBNAME) zlib.lib $(NOEHLIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Major targets
 | 
					## Major targets
 | 
				
			||||||
all: libpng pngtest
 | 
					all: libpng pngtest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -111,25 +107,24 @@ pngtest: pngtest.exe
 | 
				
			|||||||
test: pngtest.exe
 | 
					test: pngtest.exe
 | 
				
			||||||
	pngtest
 | 
						pngtest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Minor Targets
 | 
					## Minor Targets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png.obj: png.c
 | 
					png.obj: png.c png.h pngconf.h
 | 
				
			||||||
pngerror.obj: pngerror.c
 | 
					pngerror.obj: pngerror.c png.h pngconf.h
 | 
				
			||||||
pngget.obj: pngget.c
 | 
					pngget.obj: pngget.c png.h pngconf.h
 | 
				
			||||||
pngmem.obj: pngmem.c
 | 
					pngmem.obj: pngmem.c png.h pngconf.h
 | 
				
			||||||
pngpread.obj: pngpread.c
 | 
					pngpread.obj: pngpread.c png.h pngconf.h
 | 
				
			||||||
pngread.obj: pngread.c
 | 
					pngread.obj: pngread.c png.h pngconf.h
 | 
				
			||||||
pngrio.obj: pngrio.c
 | 
					pngrio.obj: pngrio.c png.h pngconf.h
 | 
				
			||||||
pngrtran.obj: pngrtran.c
 | 
					pngrtran.obj: pngrtran.c png.h pngconf.h
 | 
				
			||||||
pngrutil.obj: pngrutil.c
 | 
					pngrutil.obj: pngrutil.c png.h pngconf.h
 | 
				
			||||||
pngset.obj: pngset.c
 | 
					pngset.obj: pngset.c png.h pngconf.h
 | 
				
			||||||
pngtrans.obj: pngtrans.c
 | 
					pngtrans.obj: pngtrans.c png.h pngconf.h
 | 
				
			||||||
pngwio.obj: pngwio.c
 | 
					pngwio.obj: pngwio.c png.h pngconf.h
 | 
				
			||||||
pngwrite.obj: pngwrite.c
 | 
					pngwrite.obj: pngwrite.c png.h pngconf.h
 | 
				
			||||||
pngwtran.obj: pngwtran.c
 | 
					pngwtran.obj: pngwtran.c png.h pngconf.h
 | 
				
			||||||
pngwutil.obj: pngwutil.c
 | 
					pngwutil.obj: pngwutil.c png.h pngconf.h
 | 
				
			||||||
 | 
					pngtest.obj: pngtest.c png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(LIBNAME): $(OBJS)
 | 
					$(LIBNAME): $(OBJS)
 | 
				
			||||||
	-del $(LIBNAME)
 | 
						-del $(LIBNAME)
 | 
				
			||||||
@ -137,7 +132,6 @@ $(LIBNAME): $(OBJS)
 | 
				
			|||||||
$(LIBOBJS), libpng
 | 
					$(LIBOBJS), libpng
 | 
				
			||||||
|
 | 
					|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Cleanup
 | 
					# Cleanup
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	-del *.obj
 | 
						-del *.obj
 | 
				
			||||||
@ -148,5 +142,4 @@ clean:
 | 
				
			|||||||
	-del *.tds
 | 
						-del *.tds
 | 
				
			||||||
	-del pngout.png
 | 
						-del pngout.png
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# End of makefile for libpng
 | 
					# End of makefile for libpng
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -223,4 +223,5 @@ pngwrite.o pngwrite.pic.o: png.h pngconf.h
 | 
				
			|||||||
pngwtran.o pngwtran.pic.o: png.h pngconf.h
 | 
					pngwtran.o pngwtran.pic.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o pngwutil.pic.o: png.h pngconf.h
 | 
					pngwutil.o pngwutil.pic.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o pngpread.pic.o: png.h pngconf.h
 | 
					pngpread.o pngpread.pic.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,6 @@
 | 
				
			|||||||
## Where zlib.h, zconf.h and zlib_MODEL.lib are
 | 
					## Where zlib.h, zconf.h and zlib_MODEL.lib are
 | 
				
			||||||
ZLIB_DIR=..\zlib
 | 
					ZLIB_DIR=..\zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Compiler, linker and lib stuff
 | 
					## Compiler, linker and lib stuff
 | 
				
			||||||
CC=bcc
 | 
					CC=bcc
 | 
				
			||||||
LD=bcc
 | 
					LD=bcc
 | 
				
			||||||
@ -57,8 +56,8 @@ CFLAGS=-O2 -Z -X- -w -I$(ZLIB_DIR) -$(TARGET_CPU) $(MODEL_ARG) $(CDEBUG)
 | 
				
			|||||||
# -M  generate map file
 | 
					# -M  generate map file
 | 
				
			||||||
LDFLAGS=-M -L$(ZLIB_DIR) $(MODEL_ARG) $(LDEBUG)
 | 
					LDFLAGS=-M -L$(ZLIB_DIR) $(MODEL_ARG) $(LDEBUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Variables
 | 
					## Variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OBJS = \
 | 
					OBJS = \
 | 
				
			||||||
	png.obj \
 | 
						png.obj \
 | 
				
			||||||
	pngerror.obj \
 | 
						pngerror.obj \
 | 
				
			||||||
@ -95,8 +94,8 @@ LIBOBJS = \
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIBNAME=libpng$(MODEL).lib
 | 
					LIBNAME=libpng$(MODEL).lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Implicit rules
 | 
					## Implicit rules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Braces let make "batch" calls to the compiler,
 | 
					# Braces let make "batch" calls to the compiler,
 | 
				
			||||||
# 2 calls instead of 12; space is important.
 | 
					# 2 calls instead of 12; space is important.
 | 
				
			||||||
.c.obj:
 | 
					.c.obj:
 | 
				
			||||||
@ -105,8 +104,8 @@ LIBNAME=libpng$(MODEL).lib
 | 
				
			|||||||
.c.exe:
 | 
					.c.exe:
 | 
				
			||||||
	$(CC) $(CFLAGS) $(LDFLAGS) $*.c $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB)
 | 
						$(CC) $(CFLAGS) $(LDFLAGS) $*.c $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Major targets
 | 
					## Major targets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: libpng pngtest
 | 
					all: libpng pngtest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libpng: $(LIBNAME)
 | 
					libpng: $(LIBNAME)
 | 
				
			||||||
@ -116,25 +115,23 @@ pngtest: pngtest$(MODEL).exe
 | 
				
			|||||||
test: pngtest$(MODEL).exe
 | 
					test: pngtest$(MODEL).exe
 | 
				
			||||||
	pngtest$(MODEL)
 | 
						pngtest$(MODEL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Minor Targets
 | 
					## Minor Targets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png.obj: png.c
 | 
					png.obj: png.c png.h pngconf.h
 | 
				
			||||||
pngerror.obj: pngerror.c
 | 
					pngerror.obj: pngerror.c png.h pngconf.h
 | 
				
			||||||
pngget.obj: pngget.c
 | 
					pngget.obj: pngget.c png.h pngconf.h
 | 
				
			||||||
pngmem.obj: pngmem.c
 | 
					pngmem.obj: pngmem.c png.h pngconf.h
 | 
				
			||||||
pngpread.obj: pngpread.c
 | 
					pngpread.obj: pngpread.c png.h pngconf.h
 | 
				
			||||||
pngread.obj: pngread.c
 | 
					pngread.obj: pngread.c png.h pngconf.h
 | 
				
			||||||
pngrio.obj: pngrio.c
 | 
					pngrio.obj: pngrio.c png.h pngconf.h
 | 
				
			||||||
pngrtran.obj: pngrtran.c
 | 
					pngrtran.obj: pngrtran.c png.h pngconf.h
 | 
				
			||||||
pngrutil.obj: pngrutil.c
 | 
					pngrutil.obj: pngrutil.c png.h pngconf.h
 | 
				
			||||||
pngset.obj: pngset.c
 | 
					pngset.obj: pngset.c png.h pngconf.h
 | 
				
			||||||
pngtrans.obj: pngtrans.c
 | 
					pngtrans.obj: pngtrans.c png.h pngconf.h
 | 
				
			||||||
pngwio.obj: pngwio.c
 | 
					pngwio.obj: pngwio.c png.h pngconf.h
 | 
				
			||||||
pngwrite.obj: pngwrite.c
 | 
					pngwrite.obj: pngwrite.c png.h pngconf.h
 | 
				
			||||||
pngwtran.obj: pngwtran.c
 | 
					pngwtran.obj: pngwtran.c png.h pngconf.h
 | 
				
			||||||
pngwutil.obj: pngwutil.c
 | 
					pngwutil.obj: pngwutil.c png.h pngconf.h
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(LIBNAME): $(OBJS)
 | 
					$(LIBNAME): $(OBJS)
 | 
				
			||||||
	-del $(LIBNAME)
 | 
						-del $(LIBNAME)
 | 
				
			||||||
@ -142,14 +139,12 @@ $(LIBNAME): $(OBJS)
 | 
				
			|||||||
$(LIBOBJS), libpng$(MODEL)
 | 
					$(LIBOBJS), libpng$(MODEL)
 | 
				
			||||||
|
 | 
					|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
pngtest$(MODEL).obj: pngtest.c
 | 
					pngtest$(MODEL).obj: pngtest.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -opngtest$(MODEL) -c pngtest.c
 | 
						$(CC) $(CFLAGS) -opngtest$(MODEL) -c pngtest.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest$(MODEL).exe: pngtest$(MODEL).obj
 | 
					pngtest$(MODEL).exe: pngtest$(MODEL).obj
 | 
				
			||||||
	$(LD) $(LDFLAGS) pngtest$(MODEL).obj $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB)
 | 
						$(LD) $(LDFLAGS) pngtest$(MODEL).obj $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Clean up anything else you want
 | 
					# Clean up anything else you want
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	-del *.obj
 | 
						-del *.obj
 | 
				
			||||||
@ -158,5 +153,4 @@ clean:
 | 
				
			|||||||
	-del *.lst
 | 
						-del *.lst
 | 
				
			||||||
	-del *.map
 | 
						-del *.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
# End of makefile for libpng
 | 
					# End of makefile for libpng
 | 
				
			||||||
 | 
				
			|||||||
@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
 | 
				
			|||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
CYGDLL = 10
 | 
					CYGDLL = 10
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SHAREDLIB=cygpng$(CYGDLL).dll
 | 
					SHAREDLIB=cygpng$(CYGDLL).dll
 | 
				
			||||||
@ -176,7 +176,7 @@ pngtest-stat$(EXE): pngtest.o $(STATLIB)
 | 
				
			|||||||
pngtest.pic.o: pngtest.c
 | 
					pngtest.pic.o: pngtest.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c $< -o $@
 | 
						$(CC) $(CFLAGS) -c $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.o: pngtest.c
 | 
					pngtest.o: pngtest.c png.h pngconf.h
 | 
				
			||||||
	$(CC) $(CFLAGS) -c $< -o $@
 | 
						$(CC) $(CFLAGS) -c $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test: test-static test-shared
 | 
					test: test-static test-shared
 | 
				
			||||||
 | 
				
			|||||||
@ -18,8 +18,8 @@ ZLIBINC=../zlib
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 12
 | 
					PNGMAJ = 10
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -205,10 +205,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
# DJGPP (DOS gcc) makefile for libpng
 | 
					# DJGPP (DOS gcc) makefile for libpng
 | 
				
			||||||
# Copyright (C) 2002 Glenn Randers-Pehrson
 | 
					# Copyright (C) 2002, 2006, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
					# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -47,9 +47,9 @@ pngread.o: png.h pngconf.h
 | 
				
			|||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,10 @@
 | 
				
			|||||||
# makefile for libpng under FreeBSD
 | 
					# makefile for libpng under FreeBSD
 | 
				
			||||||
# Copyright (C) 2002, 2007 Glenn Randers-Pehrson and Andrey A. Chernov
 | 
					# Copyright (C) 2002, 2007, 2009 Glenn Randers-Pehrson and Andrey A. Chernov
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PREFIX?=        /usr/local
 | 
					PREFIX?=        /usr/local
 | 
				
			||||||
SHLIB_VER?=     5
 | 
					%12-%SHLIB_VER?=     5
 | 
				
			||||||
 | 
					%14+%SHLIB_VER?=     %SONUM%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB=		png
 | 
					LIB=		png
 | 
				
			||||||
SHLIB_MAJOR=	${SHLIB_VER}
 | 
					SHLIB_MAJOR=	${SHLIB_VER}
 | 
				
			||||||
@ -25,9 +26,9 @@ LDADD+=         -lm -lz
 | 
				
			|||||||
DPADD+=         ${LIBM} ${LIBZ}
 | 
					DPADD+=         ${LIBM} ${LIBZ}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CFLAGS+= -I.
 | 
					CFLAGS+= -I.
 | 
				
			||||||
.if (${MACHINE_ARCH} != "i386")
 | 
					%12-%.if (${MACHINE_ARCH} != "i386")
 | 
				
			||||||
CFLAGS+= -DPNG_NO_MMX_CODE
 | 
					%12-%CFLAGS+= -DPNG_NO_MMX_CODE
 | 
				
			||||||
.endif
 | 
					%12-%.endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
					SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
				
			||||||
	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
						pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
				
			||||||
 | 
				
			|||||||
@ -31,9 +31,9 @@ A=.a
 | 
				
			|||||||
EXE=
 | 
					EXE=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Variables
 | 
					# Variables
 | 
				
			||||||
OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 | 
					OBJS =  png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 | 
				
			||||||
       pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
 | 
						pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
 | 
				
			||||||
       pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
 | 
						pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Targets
 | 
					# Targets
 | 
				
			||||||
all: static
 | 
					all: static
 | 
				
			||||||
@ -61,20 +61,20 @@ pngtest$(EXE): pngtest$(O) libpng$(A)
 | 
				
			|||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM_F) *$(O) libpng$(A) pngtest$(EXE) pngout.png
 | 
						$(RM_F) *$(O) libpng$(A) pngtest$(EXE) pngout.png
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png$(O): png.h pngconf.h
 | 
					png$(O):      png.h pngconf.h
 | 
				
			||||||
pngerror$(O): png.h pngconf.h
 | 
					pngerror$(O): png.h pngconf.h
 | 
				
			||||||
pngget$(O): png.h pngconf.h
 | 
					pngget$(O):   png.h pngconf.h
 | 
				
			||||||
pngmem$(O): png.h pngconf.h
 | 
					pngmem$(O):   png.h pngconf.h
 | 
				
			||||||
pngpread$(O): png.h pngconf.h
 | 
					pngpread$(O): png.h pngconf.h
 | 
				
			||||||
pngread$(O): png.h pngconf.h
 | 
					pngread$(O):  png.h pngconf.h
 | 
				
			||||||
pngrio$(O): png.h pngconf.h
 | 
					pngrio$(O):   png.h pngconf.h
 | 
				
			||||||
pngrtran$(O): png.h pngconf.h
 | 
					pngrtran$(O): png.h pngconf.h
 | 
				
			||||||
pngrutil$(O): png.h pngconf.h
 | 
					pngrutil$(O): png.h pngconf.h
 | 
				
			||||||
pngset$(O): png.h pngconf.h
 | 
					pngset$(O):   png.h pngconf.h
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O):   png.h pngconf.h
 | 
				
			||||||
pngwrite$(O): png.h pngconf.h
 | 
					pngwrite$(O): png.h pngconf.h
 | 
				
			||||||
pngwtran$(O): png.h pngconf.h
 | 
					pngwtran$(O): png.h pngconf.h
 | 
				
			||||||
pngwutil$(O): png.h pngconf.h
 | 
					pngwutil$(O): png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O):  png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
# makefile for libpng, HPUX (10.20 and 11.00) using the ANSI/C product.
 | 
					# makefile for libpng, HPUX (10.20 and 11.00) using the ANSI/C product.
 | 
				
			||||||
# Copyright (C) 1999-2002 Glenn Randers-Pehrson
 | 
					# Copyright (C) 1999-2002, 2006, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42
 | 
					# Copyright (C) 1995 Guy Eric Schalnat, Group 42
 | 
				
			||||||
# contributed by Jim Rice and updated by Chris Schleicher, Hewlett Packard
 | 
					# contributed by Jim Rice and updated by Chris Schleicher, Hewlett Packard
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -227,9 +227,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -224,9 +224,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
# Makefile for libpng (static)
 | 
					# Makefile for libpng (static)
 | 
				
			||||||
# IBM C version 3.x for Win32 and OS/2
 | 
					# IBM C version 3.x for Win32 and OS/2
 | 
				
			||||||
 | 
					# Copyright (C) 2006 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 2000 Cosmin Truta
 | 
					# Copyright (C) 2000 Cosmin Truta
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
# Notes:
 | 
					# Notes:
 | 
				
			||||||
@ -53,19 +54,20 @@ clean:
 | 
				
			|||||||
	$(RM) pngtest$(E)
 | 
						$(RM) pngtest$(E)
 | 
				
			||||||
	$(RM) pngout.png
 | 
						$(RM) pngout.png
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png$(O): png.h pngconf.h
 | 
					png$(O):      png.h pngconf.h
 | 
				
			||||||
pngerror$(O): png.h pngconf.h
 | 
					pngerror$(O): png.h pngconf.h
 | 
				
			||||||
pngget$(O): png.h pngconf.h
 | 
					pngget$(O):   png.h pngconf.h
 | 
				
			||||||
pngmem$(O): png.h pngconf.h
 | 
					pngmem$(O):   png.h pngconf.h
 | 
				
			||||||
pngpread$(O): png.h pngconf.h
 | 
					pngpread$(O): png.h pngconf.h
 | 
				
			||||||
pngread$(O): png.h pngconf.h
 | 
					pngread$(O):  png.h pngconf.h
 | 
				
			||||||
pngrio$(O): png.h pngconf.h
 | 
					pngrio$(O):   png.h pngconf.h
 | 
				
			||||||
pngrtran$(O): png.h pngconf.h
 | 
					pngrtran$(O): png.h pngconf.h
 | 
				
			||||||
pngrutil$(O): png.h pngconf.h
 | 
					pngrutil$(O): png.h pngconf.h
 | 
				
			||||||
pngset$(O): png.h pngconf.h
 | 
					pngset$(O):   png.h pngconf.h
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O):   png.h pngconf.h
 | 
				
			||||||
pngwrite$(O): png.h pngconf.h
 | 
					pngwrite$(O): png.h pngconf.h
 | 
				
			||||||
pngwtran$(O): png.h pngconf.h
 | 
					pngwtran$(O): png.h pngconf.h
 | 
				
			||||||
pngwutil$(O): png.h pngconf.h
 | 
					pngwutil$(O): png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O):  png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,14 @@
 | 
				
			|||||||
# Makefile for libpng
 | 
					# Makefile for libpng
 | 
				
			||||||
# Microsoft Visual C++ with Intel C/C++ Compiler 4.0 and later
 | 
					# Microsoft Visual C++ with Intel C/C++ Compiler 4.0 and later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (C) 2006 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 2000, Pawel Mrochen, based on makefile.msc which is
 | 
					# Copyright (C) 2000, Pawel Mrochen, based on makefile.msc which is
 | 
				
			||||||
# copyright 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
					# copyright 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# To use, do "nmake /f scripts\makefile.intel"
 | 
					# To use, do "nmake /f scripts\makefile.intel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ------------------- Intel C/C++ Compiler 4.0 and later -------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Where the zlib library and include files are located
 | 
					# Where the zlib library and include files are located
 | 
				
			||||||
ZLIBLIB=..\zlib
 | 
					ZLIBLIB=..\zlib
 | 
				
			||||||
@ -26,7 +28,6 @@ CALLING=r	# __fastcall
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# --------------------------------------------------------------------------
 | 
					# --------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
CC=icl -c
 | 
					CC=icl -c
 | 
				
			||||||
CFLAGS=-O2 -G$(CPU)$(CALLING) -Qip -Qunroll4 -I$(ZLIBINC) -nologo
 | 
					CFLAGS=-O2 -G$(CPU)$(CALLING) -Qip -Qunroll4 -I$(ZLIBINC) -nologo
 | 
				
			||||||
LD=link
 | 
					LD=link
 | 
				
			||||||
@ -73,9 +74,6 @@ pngrio$(O): png.h pngconf.h
 | 
				
			|||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -95,6 +93,9 @@ libpng.lib: $(OBJS)
 | 
				
			|||||||
pngtest.exe: pngtest.obj libpng.lib
 | 
					pngtest.exe: pngtest.obj libpng.lib
 | 
				
			||||||
	$(LD) $(LDFLAGS) /OUT:pngtest.exe pngtest.obj libpng.lib $(ZLIBLIB)\zlib.lib
 | 
						$(LD) $(LDFLAGS) /OUT:pngtest.exe pngtest.obj libpng.lib $(ZLIBLIB)\zlib.lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O): png.h pngconf.h
 | 
				
			||||||
 | 
						$(CC) $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test: pngtest.exe
 | 
					test: pngtest.exe
 | 
				
			||||||
	pngtest.exe
 | 
						pngtest.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
# makefile for libpng
 | 
					# makefile for libpng
 | 
				
			||||||
# Copyright (C) 2002 Glenn Randers-Pehrson
 | 
					# Copyright (C) 2002, 2006, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
					# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -58,7 +58,7 @@ pngtest: pngtest.o libpng.a
 | 
				
			|||||||
test: pngtest
 | 
					test: pngtest
 | 
				
			||||||
	./pngtest
 | 
						./pngtest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install: libpng.a
 | 
					install: libpng.a png.h pngconf.h
 | 
				
			||||||
	-@mkdir $(DESTDIR)$(INCPATH)
 | 
						-@mkdir $(DESTDIR)$(INCPATH)
 | 
				
			||||||
	-@mkdir $(DESTDIR)$(INCPATH)/libpng
 | 
						-@mkdir $(DESTDIR)$(INCPATH)/libpng
 | 
				
			||||||
	-@mkdir $(DESTDIR)$(LIBPATH)
 | 
						-@mkdir $(DESTDIR)$(LIBPATH)
 | 
				
			||||||
@ -92,8 +92,9 @@ pngread.o: png.h pngconf.h
 | 
				
			|||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -74,7 +74,7 @@ DI=$(DESTDIR)$(INCPATH)
 | 
				
			|||||||
DL=$(DESTDIR)$(LIBPATH)
 | 
					DL=$(DESTDIR)$(LIBPATH)
 | 
				
			||||||
DM=$(DESTDIR)$(MANPATH)
 | 
					DM=$(DESTDIR)$(MANPATH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
 | 
					OBJS =  png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
 | 
				
			||||||
	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 | 
						pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 | 
				
			||||||
	pngwtran.o pngmem.o pngerror.o pngpread.o
 | 
						pngwtran.o pngmem.o pngerror.o pngpread.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
 | 
				
			|||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
MINGDLL = 10
 | 
					MINGDLL = 10
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SHAREDLIB=libpng$(MINGDLL).dll
 | 
					SHAREDLIB=libpng$(MINGDLL).dll
 | 
				
			||||||
@ -284,6 +284,3 @@ pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngwutil.c
 | 
				
			|||||||
pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c
 | 
					pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.o pngtest.pic.o:	png.h pngconf.h pngtest.c
 | 
					pngtest.o pngtest.pic.o:	png.h pngconf.h pngtest.c
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -76,8 +76,9 @@ pngread.o: png.h pngconf.h
 | 
				
			|||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
# makefile for libpng
 | 
					# makefile for libpng
 | 
				
			||||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
					# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
 | 
				
			||||||
 | 
					# Copyright (C) 2006, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
					# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,9 +56,6 @@ pngrio$(O): png.h pngconf.h
 | 
				
			|||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -76,6 +74,9 @@ libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3)
 | 
				
			|||||||
	lib libpng $(OBJS2);
 | 
						lib libpng $(OBJS2);
 | 
				
			||||||
	lib libpng $(OBJS3);
 | 
						lib libpng $(OBJS3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O): png.h pngconf.h
 | 
				
			||||||
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.exe: pngtest.obj libpng.lib
 | 
					pngtest.exe: pngtest.obj libpng.lib
 | 
				
			||||||
	$(LD) $(LDFLAGS) pngtest.obj,,,libpng.lib ..\zlib\zlib.lib ;
 | 
						$(LD) $(LDFLAGS) pngtest.obj,,,libpng.lib ..\zlib\zlib.lib ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
# make obj && make depend && make && make test
 | 
					# make obj && make depend && make && make test
 | 
				
			||||||
# make includes && make install
 | 
					# make includes && make install
 | 
				
			||||||
# Copyright (C) 2002 Patrick R.L. Welche
 | 
					# Copyright (C) 2002 Patrick R.L. Welche
 | 
				
			||||||
# Copyright (C) 2007 Glenn Randers-Pehrson
 | 
					# Copyright (C) 2007, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# You should also run makefile.netbsd
 | 
					# You should also run makefile.netbsd
 | 
				
			||||||
@ -12,9 +12,9 @@ LIBDIR=	${LOCALBASE}/lib
 | 
				
			|||||||
MANDIR= ${LOCALBASE}/man
 | 
					MANDIR= ${LOCALBASE}/man
 | 
				
			||||||
INCSDIR=${LOCALBASE}/include/libpng10
 | 
					INCSDIR=${LOCALBASE}/include/libpng10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB=	png12
 | 
					LIB=	png10
 | 
				
			||||||
SHLIB_MAJOR=	0
 | 
					SHLIB_MAJOR=	0
 | 
				
			||||||
SHLIB_MINOR=	1.0.44
 | 
					SHLIB_MINOR=	1.0.45
 | 
				
			||||||
SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
					SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
				
			||||||
	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
						pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
				
			||||||
	pngwtran.c pngmem.c pngerror.c pngpread.c
 | 
						pngwtran.c pngmem.c pngerror.c pngpread.c
 | 
				
			||||||
@ -23,7 +23,8 @@ MAN=	libpng.3 libpngpf.3 png.5
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
CPPFLAGS+=-I${.CURDIR}
 | 
					CPPFLAGS+=-I${.CURDIR}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# something like this for mmx assembler, but it core dumps for me at the moment
 | 
					# We should be able to do something like this instead of the manual
 | 
				
			||||||
 | 
					# uncommenting, but it core dumps for me at the moment:
 | 
				
			||||||
# .if ${MACHINE_ARCH} == "i386"
 | 
					# .if ${MACHINE_ARCH} == "i386"
 | 
				
			||||||
#   CPPFLAGS+=-DPNG_THREAD_UNSAFE_OK
 | 
					#   CPPFLAGS+=-DPNG_THREAD_UNSAFE_OK
 | 
				
			||||||
#   MKLINT= no
 | 
					#   MKLINT= no
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
# make obj && make depend && make && make test
 | 
					# make obj && make depend && make && make test
 | 
				
			||||||
# make includes && make install
 | 
					# make includes && make install
 | 
				
			||||||
# Copyright (C) 2002 Patrick R.L. Welche
 | 
					# Copyright (C) 2002 Patrick R.L. Welche
 | 
				
			||||||
# Copyright (C) 2007 Glenn Randers-Pehrson
 | 
					# Copyright (C) 2007, 2009 Glenn Randers-Pehrson
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# You should also run makefile.ne0bsd
 | 
					# You should also run makefile.ne0bsd
 | 
				
			||||||
@ -14,7 +14,7 @@ INCSDIR=${LOCALBASE}/include/libpng
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIB=	png
 | 
					LIB=	png
 | 
				
			||||||
SHLIB_MAJOR=	3
 | 
					SHLIB_MAJOR=	3
 | 
				
			||||||
SHLIB_MINOR=	1.0.44
 | 
					SHLIB_MINOR=	1.0.45
 | 
				
			||||||
SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
					SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 | 
				
			||||||
	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
						pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 | 
				
			||||||
	pngwtran.c pngmem.c pngerror.c pngpread.c
 | 
						pngwtran.c pngmem.c pngerror.c pngpread.c
 | 
				
			||||||
@ -23,7 +23,8 @@ MAN=	libpng.3 libpngpf.3 png.5
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
CPPFLAGS+=-I${.CURDIR}
 | 
					CPPFLAGS+=-I${.CURDIR}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# something like this for mmx assembler, but it core dumps for me at the moment
 | 
					# We should be able to do something like this instead of the manual
 | 
				
			||||||
 | 
					# uncommenting, but it core dumps for me at the moment:
 | 
				
			||||||
# .if ${MACHINE_ARCH} == "i386"
 | 
					# .if ${MACHINE_ARCH} == "i386"
 | 
				
			||||||
#   CPPFLAGS+=-DPNG_THREAD_UNSAFE_OK
 | 
					#   CPPFLAGS+=-DPNG_THREAD_UNSAFE_OK
 | 
				
			||||||
#   MKLINT= no
 | 
					#   MKLINT= no
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -233,20 +233,20 @@ writelock:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
 | 
					# DO NOT DELETE THIS LINE -- make depend depends on it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
png.o png.pic.o: png.h pngconf.h
 | 
					png.o png.pic.o:		png.h pngconf.h png.c
 | 
				
			||||||
pngerror.o pngerror.pic.o: png.h pngconf.h
 | 
					pngerror.o pngerror.pic.o:	png.h pngconf.h pngerror.c
 | 
				
			||||||
pngrio.o pngrio.pic.o: png.h pngconf.h
 | 
					pngrio.o pngrio.pic.o:		png.h pngconf.h pngrio.c
 | 
				
			||||||
pngwio.o pngwio.pic.o: png.h pngconf.h
 | 
					pngwio.o pngwio.pic.o:		png.h pngconf.h pngwio.c
 | 
				
			||||||
pngmem.o pngmem.pic.o: png.h pngconf.h
 | 
					pngmem.o pngmem.pic.o:		png.h pngconf.h pngmem.c
 | 
				
			||||||
pngset.o pngset.pic.o: png.h pngconf.h
 | 
					pngset.o pngset.pic.o:		png.h pngconf.h pngset.c
 | 
				
			||||||
pngget.o pngget.pic.o: png.h pngconf.h
 | 
					pngget.o pngget.pic.o:		png.h pngconf.h pngget.c
 | 
				
			||||||
pngread.o pngread.pic.o: png.h pngconf.h
 | 
					pngread.o pngread.pic.o:	png.h pngconf.h pngread.c
 | 
				
			||||||
pngrtran.o pngrtran.pic.o: png.h pngconf.h
 | 
					pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngrtran.c
 | 
				
			||||||
pngrutil.o pngrutil.pic.o: png.h pngconf.h
 | 
					pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngrutil.c
 | 
				
			||||||
pngtrans.o pngtrans.pic.o: png.h pngconf.h
 | 
					pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngtrans.c
 | 
				
			||||||
pngwrite.o pngwrite.pic.o: png.h pngconf.h
 | 
					pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngwrite.c
 | 
				
			||||||
pngwtran.o pngwtran.pic.o: png.h pngconf.h
 | 
					pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngwtran.c
 | 
				
			||||||
pngwutil.o pngwutil.pic.o: png.h pngconf.h
 | 
					pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngwutil.c
 | 
				
			||||||
pngpread.o pngpread.pic.o: png.h pngconf.h
 | 
					pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					pngtest.o:			png.h pngconf.h pngtest.c
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ LIBDIR=	${PREFIX}/lib
 | 
				
			|||||||
MANDIR= ${PREFIX}/man/cat
 | 
					MANDIR= ${PREFIX}/man/cat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SHLIB_MAJOR=	0
 | 
					SHLIB_MAJOR=	0
 | 
				
			||||||
SHLIB_MINOR=	1.0.44
 | 
					SHLIB_MINOR=	1.0.45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB=	png
 | 
					LIB=	png
 | 
				
			||||||
SRCS=	png.c pngerror.c pngget.c pngmem.c pngpread.c \
 | 
					SRCS=	png.c pngerror.c pngget.c pngmem.c pngpread.c \
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -212,10 +212,8 @@ test-installed:
 | 
				
			|||||||
	./pngtesti pngtest.png
 | 
						./pngtesti pngtest.png
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM_F) libpng.a pngtest pngtesti pngout.png libpng.pc libpng-config \
 | 
						$(RM_F) libpng.a pngtest pngtesti pngout.png libpng.pc \
 | 
				
			||||||
	$(LIBSO) $(LIBSOMAJ)* \
 | 
					        so_locations libpng-config $(LIBSO) $(LIBSOMAJ)* $(OLDSOVER)
 | 
				
			||||||
	$(OLDSOVER) \
 | 
					 | 
				
			||||||
	so_locations
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 | 
					DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 | 
				
			||||||
writelock:
 | 
					writelock:
 | 
				
			||||||
@ -233,10 +231,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME=libpng10
 | 
					LIBNAME=libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -236,10 +236,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
@ -43,8 +43,7 @@ ZLIBINC=/usr/local/include
 | 
				
			|||||||
WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
 | 
					WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
 | 
				
			||||||
	-Wmissing-declarations -Wtraditional -Wcast-align \
 | 
						-Wmissing-declarations -Wtraditional -Wcast-align \
 | 
				
			||||||
	-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
 | 
						-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
 | 
				
			||||||
CFLAGS=-I$(ZLIBINC) -W -Wall -O \
 | 
					CFLAGS=-I$(ZLIBINC) -W -Wall -O -DPNG_NO_MMX_CODE; \
 | 
				
			||||||
	-DPNG_NO_MMX_CODE; \
 | 
					 | 
				
			||||||
	# $(WARNMORE) -g -DPNG_DEBUG=5
 | 
						# $(WARNMORE) -g -DPNG_DEBUG=5
 | 
				
			||||||
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
 | 
					LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
# Library name:
 | 
					# Library name:
 | 
				
			||||||
LIBNAME = libpng10
 | 
					LIBNAME = libpng10
 | 
				
			||||||
PNGMAJ = 0
 | 
					PNGMAJ = 0
 | 
				
			||||||
PNGMIN = 1.0.44
 | 
					PNGMIN = 1.0.45
 | 
				
			||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
					PNGVER = $(PNGMAJ).$(PNGMIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library names:
 | 
					# Shared library names:
 | 
				
			||||||
 | 
				
			|||||||
@ -83,10 +83,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -88,10 +88,10 @@ pngget.o: png.h pngconf.h
 | 
				
			|||||||
pngread.o: png.h pngconf.h
 | 
					pngread.o: png.h pngconf.h
 | 
				
			||||||
pngrtran.o: png.h pngconf.h
 | 
					pngrtran.o: png.h pngconf.h
 | 
				
			||||||
pngrutil.o: png.h pngconf.h
 | 
					pngrutil.o: png.h pngconf.h
 | 
				
			||||||
pngtest.o: png.h pngconf.h
 | 
					 | 
				
			||||||
pngtrans.o: png.h pngconf.h
 | 
					pngtrans.o: png.h pngconf.h
 | 
				
			||||||
pngwrite.o: png.h pngconf.h
 | 
					pngwrite.o: png.h pngconf.h
 | 
				
			||||||
pngwtran.o: png.h pngconf.h
 | 
					pngwtran.o: png.h pngconf.h
 | 
				
			||||||
pngwutil.o: png.h pngconf.h
 | 
					pngwutil.o: png.h pngconf.h
 | 
				
			||||||
pngpread.o: png.h pngconf.h
 | 
					pngpread.o: png.h pngconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest.o: png.h pngconf.h
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +1,19 @@
 | 
				
			|||||||
# makefile for libpng
 | 
					# makefile for libpng
 | 
				
			||||||
 | 
					# Copyright (C) 2006,2009 Glenn Randers-Pehrson
 | 
				
			||||||
# Copyright (C) 1998 Tim Wegner
 | 
					# Copyright (C) 1998 Tim Wegner
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
					# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
				
			||||||
# To use, do "nmake /f scripts\makefile.vcawin32"
 | 
					# To use, do "nmake /f scripts\makefile.vcawin32"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -------- Microsoft Visual C++ 5.0 and later, uses assembler code --------
 | 
					# -------- Microsoft Visual C++ 2.0 and later, no assembler code --------
 | 
				
			||||||
# If you don't want to use assembler (MMX) code, use makefile.vcwin32 instead.
 | 
					%12-%# If you don't want to use assembler (MMX) code, use makefile.vcwin32 instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Compiler, linker, librarian, and other tools
 | 
					# Compiler, linker, librarian, and other tools
 | 
				
			||||||
CC = cl
 | 
					CC = cl
 | 
				
			||||||
LD = link
 | 
					LD = link
 | 
				
			||||||
AR = lib
 | 
					AR = lib
 | 
				
			||||||
CFLAGS  = -DPNG_USE_PNGVCRD -nologo -MD -O2 -W3 -I..\zlib
 | 
					%12-%CFLAGS  = -nologo -DPNG_USE_PNGVCRD -MD -O2 -W3 -I..\zlib
 | 
				
			||||||
 | 
					%14+%CFLAGS  = -nologo -MD -O2 -W3 -I..\zlib
 | 
				
			||||||
LDFLAGS = -nologo
 | 
					LDFLAGS = -nologo
 | 
				
			||||||
ARFLAGS = -nologo
 | 
					ARFLAGS = -nologo
 | 
				
			||||||
RM = del
 | 
					RM = del
 | 
				
			||||||
@ -64,9 +66,6 @@ pngrio$(O): png.h pngconf.h
 | 
				
			|||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -83,6 +82,9 @@ libpng.lib: $(OBJS)
 | 
				
			|||||||
	-$(RM) $@
 | 
						-$(RM) $@
 | 
				
			||||||
	$(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE)
 | 
						$(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O): png.h pngconf.h
 | 
				
			||||||
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.exe: pngtest$(O) libpng.lib
 | 
					pngtest.exe: pngtest$(O) libpng.lib
 | 
				
			||||||
	$(LD) $(LDFLAGS) -out:$@ pngtest$(O) libpng.lib ..\zlib\zlib.lib $(ERRFILE)
 | 
						$(LD) $(LDFLAGS) -out:$@ pngtest$(O) libpng.lib ..\zlib\zlib.lib $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +1,19 @@
 | 
				
			|||||||
# makefile for libpng
 | 
					# makefile for libpng
 | 
				
			||||||
# Copyright (C) 1998 Tim Wegner
 | 
					# Copyright (C) 1998 Tim Wegner
 | 
				
			||||||
 | 
					# Copyright (C) 2006,2009 Glenn Randers-Pehrson
 | 
				
			||||||
# For conditions of distribution and use, see copyright notice in png.h
 | 
					# For conditions of distribution and use, see copyright notice in png.h
 | 
				
			||||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
					# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
 | 
				
			||||||
# To use, do "nmake /f scripts\makefile.vcwin32"
 | 
					# To use, do "nmake /f scripts\makefile.vcwin32"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -------- Microsoft Visual C++ 2.0 and later, no assembler code --------
 | 
					# -------- Microsoft Visual C++ 2.0 and later, no assembler code --------
 | 
				
			||||||
# If you want to use assembler (MMX) code, use makefile.vcawin32 instead.
 | 
					%12-%# If you want to use assembler (MMX) code, use makefile.vcawin32 instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Compiler, linker, librarian, and other tools
 | 
					# Compiler, linker, librarian, and other tools
 | 
				
			||||||
CC = cl
 | 
					CC = cl
 | 
				
			||||||
LD = link
 | 
					LD = link
 | 
				
			||||||
AR = lib
 | 
					AR = lib
 | 
				
			||||||
CFLAGS  = -nologo -DPNG_NO_MMX_CODE -MD -O2 -W3 -I..\zlib
 | 
					%12-%CFLAGS  = -nologo -DPNG_NO_MMX_CODE -MD -O2 -W3 -I..\zlib
 | 
				
			||||||
 | 
					%14+%CFLAGS  = -nologo -MD -O2 -W3 -I..\zlib
 | 
				
			||||||
LDFLAGS = -nologo
 | 
					LDFLAGS = -nologo
 | 
				
			||||||
ARFLAGS = -nologo
 | 
					ARFLAGS = -nologo
 | 
				
			||||||
RM = del
 | 
					RM = del
 | 
				
			||||||
@ -64,9 +66,6 @@ pngrio$(O): png.h pngconf.h
 | 
				
			|||||||
pngwio$(O): png.h pngconf.h
 | 
					pngwio$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest$(O): png.h pngconf.h
 | 
					 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pngtrans$(O): png.h pngconf.h
 | 
					pngtrans$(O): png.h pngconf.h
 | 
				
			||||||
	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -83,6 +82,9 @@ libpng.lib: $(OBJS)
 | 
				
			|||||||
	-$(RM) $@
 | 
						-$(RM) $@
 | 
				
			||||||
	$(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE)
 | 
						$(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pngtest$(O): png.h pngconf.h
 | 
				
			||||||
 | 
						$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pngtest.exe: pngtest$(O) libpng.lib
 | 
					pngtest.exe: pngtest$(O) libpng.lib
 | 
				
			||||||
	$(LD) $(LDFLAGS) -out:$@ pngtest$(O) libpng.lib ..\zlib\zlib.lib $(ERRFILE)
 | 
						$(LD) $(LDFLAGS) -out:$@ pngtest$(O) libpng.lib ..\zlib\zlib.lib $(ERRFILE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -55,8 +55,6 @@ $  then
 | 
				
			|||||||
$   dele pngtest.obj;*
 | 
					$   dele pngtest.obj;*
 | 
				
			||||||
$   CALL MAKE png.OBJ "cc ''CCOPT' png" -
 | 
					$   CALL MAKE png.OBJ "cc ''CCOPT' png" -
 | 
				
			||||||
	png.c png.h pngconf.h
 | 
						png.c png.h pngconf.h
 | 
				
			||||||
$   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
 | 
					 | 
				
			||||||
					 pngpread.c png.h pngconf.h
 | 
					 | 
				
			||||||
$   CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" -
 | 
					$   CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" -
 | 
				
			||||||
	pngset.c png.h pngconf.h
 | 
						pngset.c png.h pngconf.h
 | 
				
			||||||
$   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" -
 | 
					$   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" -
 | 
				
			||||||
@ -64,7 +62,7 @@ $   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" -
 | 
				
			|||||||
$   CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" -
 | 
					$   CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" -
 | 
				
			||||||
	pngread.c png.h pngconf.h
 | 
						pngread.c png.h pngconf.h
 | 
				
			||||||
$   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
 | 
					$   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
 | 
				
			||||||
					 pngpread.c png.h pngconf.h
 | 
						pngpread.c png.h pngconf.h
 | 
				
			||||||
$   CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" -
 | 
					$   CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" -
 | 
				
			||||||
	pngrtran.c png.h pngconf.h
 | 
						pngrtran.c png.h pngconf.h
 | 
				
			||||||
$   CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" -
 | 
					$   CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" -
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
; PNG.LIB module definition file for OS/2
 | 
					; PNG.LIB module definition file for OS/2
 | 
				
			||||||
;----------------------------------------
 | 
					;----------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; Version 1.0.44
 | 
					; Version 1.0.45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIBRARY		PNG
 | 
					LIBRARY		PNG
 | 
				
			||||||
DESCRIPTION	"PNG image compression library for OS/2"
 | 
					DESCRIPTION	"PNG image compression library for OS/2"
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
LIBRARY
 | 
					LIBRARY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXPORTS
 | 
					EXPORTS
 | 
				
			||||||
;Version 1.0.44
 | 
					;Version 1.0.45
 | 
				
			||||||
  png_build_grayscale_palette  @1
 | 
					  png_build_grayscale_palette  @1
 | 
				
			||||||
  png_check_sig        @2
 | 
					  png_check_sig        @2
 | 
				
			||||||
  png_chunk_error      @3
 | 
					  png_chunk_error      @3
 | 
				
			||||||
@ -189,6 +189,7 @@ EXPORTS
 | 
				
			|||||||
; Added at version 1.0.12
 | 
					; Added at version 1.0.12
 | 
				
			||||||
; For compatibility with 1.0.7-1.0.11
 | 
					; For compatibility with 1.0.7-1.0.11
 | 
				
			||||||
; png_info_init @174
 | 
					; png_info_init @174
 | 
				
			||||||
 | 
					; png_read_init_3, png_info_init_3, and png_write_init_3 are deprecated.
 | 
				
			||||||
  png_read_init_3    @175
 | 
					  png_read_init_3    @175
 | 
				
			||||||
  png_write_init_3    @176
 | 
					  png_write_init_3    @176
 | 
				
			||||||
  png_info_init_3 @177
 | 
					  png_info_init_3 @177
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user