Compare commits

...

1512 Commits

Author SHA1 Message Date
Glenn Randers-Pehrson
95dc198c1f [libpng15] Imported from libpng-1.5.13beta02.tar 2012-09-10 11:29:42 -05:00
Glenn Randers-Pehrson
95ea04f925 [libpng15] Folded some long lines; updated manual about removed macros 2012-08-16 00:56:45 -05:00
Glenn Randers-Pehrson
cabfa7d6d9 [libpng15] Use png_memset() consistently (pngmem.c contained some bare "memset"
calls).
2012-08-10 16:56:51 -05:00
Glenn Randers-Pehrson
8cc5341ba2 [libpng15] Corrected handling of the image array and the row_pointers array
in example.c
2012-08-08 22:14:51 -05:00
Glenn Randers-Pehrson
0054b566f4 [libpng15] When png_set_filler is used to strip a filler channel during write,
the code prior to 1.5 would ignore the case where the output required an
alpha channel or when the output was a palettized PNG.  In libpng-1.5 the
ignorance was lost and libpng proceeded to strip the channel resulting
in a bad (potential memory overwrite) failure later.  This reverts
the behavior to the pre-1.5 state but issues a warning. libpng-1.6 is
expected to issue an error on the erroneous png_set_filler call.
2012-08-08 22:13:25 -05:00
Glenn Randers-Pehrson
1a2606069c [libpng15] Bump version to 1.5.13beta02 2012-08-08 19:38:31 -05:00
John Bowler
2cbe15a3e2 [libpng15] Revised PNG_FP_EXPORT and PNG_FIXED_EXPORT macros to avoid
generating lone semicolons (patch ported from libpng-1.6.0beta11).
2012-08-08 18:09:38 -05:00
Glenn Randers-Pehrson
4588e97c73 [libpng15] Added information about png_calloc() to the manual. 2012-08-03 08:48:37 -05:00
Glenn Randers-Pehrson
08c3a838a3 [libpng15] Removed references to png_zalloc() and png_zfree() from
the manual.  They have not been exported to applications since libpng12.
2012-08-03 07:11:50 -05:00
Glenn Randers-Pehrson
77c1d30d14 [libpng15] Updated CHANGES to reflect that new CVE-2012-3425 was fixed
in March 2012, libpng-1.5.10
2012-07-27 21:12:34 -05:00
Glenn Randers-Pehrson
ae44b27606 [libpng15] Bump version to 1.5.13beta01 2012-07-25 08:54:39 -05:00
Glenn Randers-Pehrson
7dc03b1f91 [libpng15 Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when
__GNUC__ < 3.
2012-07-14 15:29:40 -05:00
Glenn Randers-Pehrson
3aebf04909 [libpng15] Bump version to 1.5.12 2012-07-10 21:56:11 -05:00
Glenn Randers-Pehrson
795b564635 [libpng15] Imported from libpng-1.5.12.tar 2012-07-10 20:58:37 -05:00
Glenn Randers-Pehrson
860d8f3f85 [libpng15] Fixed version number (libpng-1.5.12beta01) in CHANGES and ANNOUNCE. 2012-06-25 10:39:48 -05:00
Glenn Randers-Pehrson
9ff5d76fb8 [libpng15] Bump version to 1.5.12beta01 2012-06-25 10:25:13 -05:00
Glenn Randers-Pehrson
e088ce7363 [libpng15] Imported from libpng-1.5.11.tar 2012-06-14 06:33:45 -05:00
Glenn Randers-Pehrson
709db87a32 [libpng15] Updated info in the documentation about time_buffer
being removed from a future version of libpng.
2012-06-13 13:18:35 -05:00
Glenn Randers-Pehrson
af569eb682 [libpng15] Removed obsolete reference to "near_time_buffer"
from documentation; corrected comments in png.h and manual about time_buffer.
2012-06-13 12:38:11 -05:00
Glenn Randers-Pehrson
9ecdaa8d6d [libpng15] Corrected copyright year in several files. 2012-06-12 11:34:41 -05:00
Glenn Randers-Pehrson
87685ab33f [libpng15] Include zlib.h in contrib/gregbook and visupng examples. 2012-06-09 11:39:10 -05:00
Glenn Randers-Pehrson
83b354ac01 [libpng15] Fixed grammar and typos in manual and in scripts/pnglibconf.dfa 2012-06-09 10:42:43 -05:00
Glenn Randers-Pehrson
613dd05c55 [libpng15] Bump version to 1.5.11rc06 2012-06-07 10:03:55 -05:00
Glenn Randers-Pehrson
ff355004dd [libpng15] Don't do the palette-index checking when num_palette is 0. 2012-06-07 09:56:30 -05:00
Glenn Randers-Pehrson
6a169bbe76 [libpng15] Bump version to 1.5.11rc05 2012-06-06 13:27:23 -05:00
Glenn Randers-Pehrson
b705271d85 [libpng15] Updated some "Last changed" dates 2012-06-06 13:10:40 -05:00
Glenn Randers-Pehrson
c924d3dd25 [libpng15] Improved the efficiency of the new png_check_palette_indexes()
function.
2012-06-06 13:04:47 -05:00
Glenn Randers-Pehrson
d5d0bd91d2 [libpng15] Bump version to 1.5.11rc04 2012-06-04 08:03:20 -05:00
Glenn Randers-Pehrson
fd53b86e90 [libpng15] Do not depend upon a GCC feature macro being available for use in
generating the linker mapfile symbol prefix.
2012-06-04 03:07:49 -05:00
Glenn Randers-Pehrson
60370be808 [libpng15] Updated contrib/README.txt with two added files. 2012-05-29 10:35:48 -05:00
Glenn Randers-Pehrson
13266edb47 [libpng15] Bump version to 1.5.11rc03 2012-05-29 06:21:19 -05:00
Glenn Randers-Pehrson
d26920d5a8 [libpng15] Added two images to contrib/pngsuite (1-bit and 2-bit transparent
grayscale), and renamed three whose names were inconsistent with those in
pngsuite/README.txt.
2012-05-29 06:13:37 -05:00
Glenn Randers-Pehrson
0e23e2ad9f [libpng15] Revised CMakeLists.txt to not attempt to make a symlink under mingw. 2012-05-29 05:56:49 -05:00
Glenn Randers-Pehrson
e9a249eee7 [libpng15] Bump version to 1.5.11rc02 2012-05-23 12:24:03 -05:00
Glenn Randers-Pehrson
6e36306728 [libpng15] Imported from libpng-1.5.11rc01.tar 2012-05-22 16:03:01 -05:00
Glenn Randers-Pehrson
6e4c75b2c2 [libpng15] Bump version to 1.5.11beta02 2012-04-28 06:24:59 -05:00
Glenn Randers-Pehrson
6fb8433ecc [libpng15] Imported from libpng-1.5.11beta01.tar 2012-04-28 06:24:51 -05:00
Glenn Randers-Pehrson
2f5fc20ee7 [libpng15] Changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE
in scripts/makefile.freebsd.
2012-04-27 18:16:39 -05:00
Glenn Randers-Pehrson
49607cf603 [libpng15] Moved -lssp_nonshared to a comment in scripts/makefile.freebsd 2012-04-26 09:08:22 -05:00
Glenn Randers-Pehrson
0fd067dd93 [libpng15] Added -lssp_nonshared to scripts/makefile.freebsd 2012-04-26 08:30:27 -05:00
Glenn Randers-Pehrson
8a3b400826 [libpng15] Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around
declaration of png_handle_unknown().
2012-04-23 23:04:32 -05:00
Glenn Randers-Pehrson
c1269a3975 [libpng15] Fixed problem with PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpread.c 2012-04-23 19:52:59 -05:00
Glenn Randers-Pehrson
9bb65df0be [libpng16] Revised makefile.darwin (Toby Thain) 2012-04-13 12:40:27 -05:00
Glenn Randers-Pehrson
8b8e9bfb29 [libpng15] Enable png_set_check_for_invalid_index() for both read and write. 2012-04-13 12:00:45 -05:00
Glenn Randers-Pehrson
b57e9b747f [libpng15] Bump version to 1.5.11beta01 2012-04-12 10:33:00 -05:00
Glenn Randers-Pehrson
38a706f83f [libpng15] Imported from libpng-1.5.10.tar 2012-03-29 06:33:41 -05:00
Glenn Randers-Pehrson
6aad6041aa [libpng15] Imported from libpng-1.5.10rc01.tar 2012-03-19 06:28:10 -05:00
Glenn Randers-Pehrson
2c78d4f676 [libpng15] Revised example.c to put text strings in a temporary character array
instead of directly assigning string constants to png_textp members.
This avoids compiler warnings when -Wwrite-strings is enabled.
2012-03-16 08:49:07 -05:00
Glenn Randers-Pehrson
d4247dd398 [libpng15] Fix an off-by-one error in the palette index checking function. 2012-03-10 20:14:23 -06:00
Glenn Randers-Pehrson
1ca16d92f2 [libng15] Issue a png_benign_error() instead of png_warning() about bad palette
index.
2012-03-10 08:14:49 -06:00
Glenn Randers-Pehrson
0ff5150f91 [libpng15] Reject all iCCP chunks after the first,
even if the first one is invalid.
2012-03-09 22:38:06 -06:00
Glenn Randers-Pehrson
fc9127370c [libpng15] Bump version to 1.5.10beta05 2012-03-09 21:36:02 -06:00
Glenn Randers-Pehrson
adc8042fca [libpng15] Imported from libpng-1.5.10beta04.tar 2012-03-09 21:35:10 -06:00
John Bowler
c4c21f1c87 [libpng15] Fixed CMF optimization of non-IDAT compressed chunks,
which was added at libpng-1.5.4.  It sometimes produced too small of a window.
2012-03-09 21:16:51 -06:00
Glenn Randers-Pehrson
0b8b358b98 [libpng15] Disabled part of the CMF optimization of non-IDAT compressed
chunks, which was added at libpng-1.5.4.  It sometimes produces too small
of a window.  This has been fixed in libpng-1.6.0.
2012-03-09 17:29:31 -06:00
Glenn Randers-Pehrson
8f7fc403e5 [libpng15] Bump version to 1.5.10beta04 2012-03-06 16:02:46 -06:00
Glenn Randers-Pehrson
16dba768df [libpng16] Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition in png.h 2012-03-06 16:00:38 -06:00
Glenn Randers-Pehrson
0054bee2a6 [libpng15] Imported from libpng-1.5.10beta03.tar 2012-03-06 07:54:40 -06:00
Glenn Randers-Pehrson
454e05a63a [libpng15] Added palette-index checking. 2012-03-04 22:30:06 -06:00
Glenn Randers-Pehrson
caae038b69 [libpng15] Removed unused "current_text" members of png_struct
and the png_free() of png_ptr->current_text from pngread.c
2012-02-27 08:07:55 -06:00
Glenn Randers-Pehrson
c11a25973c [libpng15] Bump version to 1.5.10beta03 2012-02-26 21:51:30 -06:00
Glenn Randers-Pehrson
b40411882a [libpng15] Imported from libpng-1.5.10beta02.tar 2012-02-26 21:51:19 -06:00
Glenn Randers-Pehrson
755c39725e [libpng15] Updated Makefile.am
Added information about the new limits in the manual.
2012-02-24 22:13:51 -06:00
Glenn Randers-Pehrson
d9c4484b3e [libpng15] Bump version to 1.5.10beta02 2012-02-24 17:02:39 -06:00
Glenn Randers-Pehrson
b7b42de05f [libpng15] Bump version to 1.5.10beta01 2012-02-24 16:56:30 -06:00
Glenn Randers-Pehrson
65de519c4a [libpng15] Revised the SAFE_LIMITS feature to be the same as the feature in
libpng16.  Added information about the new limits in the manual.
2012-02-24 16:54:12 -06:00
Glenn Randers-Pehrson
b27c862b14 [libpng15] Added information about the new limits in the manual. 2012-02-23 23:35:29 -06:00
Glenn Randers-Pehrson
f97ed91ead [libpng15] Always set the "safe" limits in pngconf.h when SAFE_LIMITS is
even if pnglibconf.h has been edited to remove the limits.
2012-02-23 23:06:07 -06:00
Glenn Randers-Pehrson
97b6ad1c06 [libpng15] Bump version to 1.5.10beta02 2012-02-23 22:53:17 -06:00
Glenn Randers-Pehrson
7746299fbe [libpng15] Imported from libpng-1.5.10beta01.tar 2012-02-23 22:45:49 -06:00
Glenn Randers-Pehrson
8d69281998 [libpng15] Updated scripts/pnglibconf.dfa to enable USER_LIMITS when
SAFE_LIMITS is turned on.
2012-02-23 22:44:06 -06:00
Glenn Randers-Pehrson
4d3d2d9472 [libpng15] Updated scripts/pnglibconf.h.prebuilt 2012-02-23 18:53:38 -06:00
Glenn Randers-Pehrson
8ae616fa97 [libpng15] Added PNG_SAFE_LIMITS feature to pnglibconf.dfa
and code in pngconf.h to reset the user limits to safe ones if
PNG_SAFE_LIMITS is defined.
2012-02-23 17:43:33 -06:00
Glenn Randers-Pehrson
d57dc304c4 [libpng15] Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code 2012-02-22 08:29:19 -06:00
Glenn Randers-Pehrson
8a2033d77f [libpng15] Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from
pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c;
now that png_ptr->buffer is inaccessible to applications, the special
handling is no longer useful.

Fixed bug with png_handle_hIST with odd chunk length (Frank Busse).
2012-02-21 14:22:01 -06:00
Glenn Randers-Pehrson
932d7ac5e9 [libpng15]
Always put the CMAKE_LIBRARY in "lib" (removed special WIN32 case).

  Removed empty vstudio/pngstest directory (Clifford Yapp).
2012-02-21 14:19:52 -06:00
Glenn Randers-Pehrson
f9accb9df2 [libpng15] Bump version to 1.5.10beta01 2012-02-18 23:33:18 -06:00
Glenn Randers-Pehrson
7a4e497b62 [libpng15] Imported from libpng-1.5.9.tar 2012-02-18 23:32:59 -06:00
Glenn Randers-Pehrson
0207529f27 [libpng15] Imported from libpng-1.5.9rc01.tar 2012-02-18 23:32:49 -06:00
Glenn Randers-Pehrson
a08f60352c [libpng15] Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED
from pngstruct.h
2012-02-11 07:27:34 -06:00
Glenn Randers-Pehrson
0bddb27e75 [libpng15] Removed unused macro definition from pngread.c 2012-02-11 07:26:03 -06:00
Glenn Randers-Pehrson
a67ddd4b9f [libpng15] Removed two unused definitions from scripts/pnglibconf.h.prebuilt 2012-02-06 09:10:06 -06:00
Glenn Randers-Pehrson
a7e9d7bfc2 Merge branch 'libpng15' of ssh://libpng.git.sourceforge.net/gitroot/libpng/libpng into libpng15 2012-02-03 16:01:32 -06:00
Glenn Randers-Pehrson
28c3a2f9f9 [libpng15] Imported from libpng-1.5.9beta01.tar 2012-02-03 15:59:42 -06:00
Glenn Randers-Pehrson
df0773c1b9 [libpng15] Rebuilt configure scripts with automake-1.11.2 2012-02-03 15:56:22 -06:00
Glenn Randers-Pehrson
902dbe619e Merge branch 'libpng15' of ssh://libpng.git.sourceforge.net/gitroot/libpng/libpng into libpng15
Conflicts:
	ANNOUNCE
2012-01-31 23:22:09 -06:00
Glenn Randers-Pehrson
0f59bbb5b6 [libpng15] Imported from libpng-1.5.8.tar 2012-01-31 23:12:47 -06:00
Glenn Randers-Pehrson
9ca5f1bdc8 [libpng15] Added missing date to final CHANGES entry. 2012-01-25 16:31:13 -06:00
Glenn Randers-Pehrson
9f01d0d665 [libpng15] Imported from libpng-1.5.8rc02.tar 2012-01-25 16:11:54 -06:00
Glenn Randers-Pehrson
da544d7d3e [libpng15] Conditionalize install rules for MINGW and CYGWIN in CMakeLists.txt 2012-01-25 16:08:04 -06:00
Glenn Randers-Pehrson
ea8d0b9408 [libpng15] Imported from libpng-1.5.8beta01.tar 2012-01-14 20:59:14 -06:00
Glenn Randers-Pehrson
9287447cef [libpng15] Updated some "last changed" dates 2011-12-21 09:03:30 -06:00
Glenn Randers-Pehrson
d35a3a826e [libpng15] Removed '#include config.h"' from contrib/libtests/pngvalid.c.
It's not needed and causes trouble for VPATH building.
2011-12-16 14:19:39 -06:00
Glenn Randers-Pehrson
e23fedc9de Merge branch 'libpng15' of ssh://libpng.git.sourceforge.net/gitroot/libpng/libpng into libpng15 2011-12-15 09:54:00 -06:00
Glenn Randers-Pehrson
cd3f5bb507 [libpng15] Imported from libpng-1.5.7.tar 2011-12-15 09:50:23 -06:00
Glenn Randers-Pehrson
b0270a9e47 Merge branch 'libpng15' of ssh://libpng.git.sourceforge.net/gitroot/libpng/libpng into libpng15 2011-12-08 08:50:29 -06:00
Glenn Randers-Pehrson
52cbf46f30 [libpng15] Imported from libpng-1.5.7rc03.tar 2011-12-08 08:44:15 -06:00
John Bowler
d61b42c81d [libpng15] Updated CMakeLists.txt to account for the relocation of pngvalid.c 2011-12-07 20:35:48 -06:00
Glenn Randers-Pehrson
8fd9c16642 Merge branch 'libpng15' of ssh://www.simplesystems.org/git/libpng into libpng15
Conflicts:
	ANNOUNCE
	CHANGES
2011-12-04 19:31:52 -06:00
Glenn Randers-Pehrson
e22ea758e4 [libpng15] Imported from libpng-1.5.7rc02.tar 2011-12-04 19:29:29 -06:00
Glenn Randers-Pehrson
f22c0ac2a5 [libpng15] Put CRLF line endings in the owatcom project files. 2011-12-03 20:16:12 -06:00
Glenn Randers-Pehrson
4f547b7177 [libpng15] Fixed incorrect character count in projects/owatcom/pngvalid.tgt 2011-12-02 20:14:21 -06:00
Glenn Randers-Pehrson
c4fe32016c [libpng15] Revised pngconf.h to use " __declspec(restrict)" if MSC_VER >= 1400,
as in libpng-1.5.4.
2011-12-01 21:32:15 -06:00
Glenn Randers-Pehrson
1be5c22e5c [libpng15] Bump version to libpng-1.5.7rc02 2011-12-01 19:27:35 -06:00
Glenn Randers-Pehrson
956c0599e6 [libpng15] Revised project files and contrib/pngvalid/pngvalid.c to account for
the relocation of pngvalid into contrib/libtests.
2011-12-01 19:25:46 -06:00
Glenn Randers-Pehrson
97c8fbb949 Merge branch 'libpng15' of ssh://www.simplesystems.org/git/libpng into libpng15 2011-12-01 09:08:30 -06:00
Glenn Randers-Pehrson
a50ce74850 [libpng15] Imported from libpng-1.5.7rc01.tar 2011-12-01 09:06:22 -06:00
Glenn Randers-Pehrson
8973ee17bb [libpng15] Fixed two other instances of "#if PNG_DO_BC" in png.c 2011-11-28 11:05:54 -06:00
Glenn Randers-Pehrson
2e31b96a5a [libpng15] Revised #if PNG_DO_BC block in png.c (use #ifdef and add #else) 2011-11-28 10:51:29 -06:00
Glenn Randers-Pehrson
0222124801 [libpng15] Replaced an "#if" with "ifdef" in pngrtran.c 2011-11-28 10:31:42 -06:00
Glenn Randers-Pehrson
61b23d59b1 [libpng15] Bump version to libpng-1.5.7beta06 2011-11-25 07:02:48 -06:00
Glenn Randers-Pehrson
cc1fa5df3a [libpng15] Imported from libpng-1.5.7beta05.tar 2011-11-25 06:56:01 -06:00
Glenn Randers-Pehrson
cc5664ddad [libpng15] Updated release number in png.h 2011-11-24 14:36:49 -06:00
Glenn Randers-Pehrson
e209df47c4 Relocate pngvalid.c to contrib/libtests 2011-11-24 12:24:45 -06:00
John Bowler
585f8b49b5 [libpng15] Removed some leftover "simple interface" files 2011-11-23 15:45:11 -06:00
John Bowler
4491fa237f [libpng15] Remove simplified interface 2011-11-23 15:41:29 -06:00
Glenn Randers-Pehrson
12fb29f951 [libpng15] Reject invalid compression flag, method when reading the iTXt chunk. 2011-11-22 11:53:49 -06:00
Glenn Randers-Pehrson
8500b7720b [libpng15] Also allow uncompressed iTXt 2011-11-22 11:40:39 -06:00
Glenn Randers-Pehrson
e7ad104ac3 [libpng15] Reject invalid compression flag when reading the iTXt chunk. 2011-11-22 11:03:20 -06:00
Glenn Randers-Pehrson
3b1f03084e [libpng15] Fixed copyright, spelling in contrib/libtest and contrib/sRGBtables 2011-11-21 20:52:21 -06:00
Glenn Randers-Pehrson
680da02ade [libpng15] Updated the documentation of the png_text structure
(clarifying that the "lang" and "lang_key" fields can be NULL pointers
or might not exist).
2011-11-21 17:05:41 -06:00
Glenn Randers-Pehrson
8e83631361 [libpng15] Added MINGW support to CMakeLists.txt 2011-11-21 12:37:13 -06:00
Glenn Randers-Pehrson
8501129c17 [libpng15] Removed some "#if 0" blocks of test code that remained in pngrutil.c 2011-11-21 11:21:29 -06:00
John Bowler
3706d730d1 [libpng15] Allow row_stride==0 to indicate default stride in simplified API 2011-11-21 10:28:06 -06:00
Glenn Randers-Pehrson
925a60278e [libpng15] Revised comment and whitespace in png_convert_to_rfc1123(). 2011-11-19 18:04:01 -06:00
Glenn Randers-Pehrson
29fca795b9 [libpng15] Validate time settings passed to pngset()
and png_convert_to_rfc1123(). (Frank Busse).
2011-11-19 15:08:04 -06:00
Glenn Randers-Pehrson
bd2fa5def6 [libpng15] Removed "zTXt" from warning in generic chunk decompression function.
Bug report by Franke Busse
2011-11-19 13:28:08 -06:00
Glenn Randers-Pehrson
36251d3f76 [libpng15] Bump version to libpng-1.5.7beta05 2011-11-17 21:39:58 -06:00
Glenn Randers-Pehrson
d92c1fcd55 [libpng15] Imported from libpng-1.5.7beta04.tar 2011-11-17 21:39:49 -06:00
Glenn Randers-Pehrson
4af7710f94 [libpng15] Revised Makefile.am to separate out stuff depending on contrib (WIP) 2011-11-17 09:05:18 -06:00
Glenn Randers-Pehrson
7e97c182a8 [libpng15] Bump version to libpng-1.5.7beta04 2011-11-16 23:27:38 -06:00
Glenn Randers-Pehrson
e0bcbfd0fd [libpng15] Imported from libpng-1.5.7beta03.tar 2011-11-16 23:14:06 -06:00
John Bowler
17878c6e65 [libpng15] Work around compilers that don't support declaration of const data.
Some compilers fault 'extern const' data declarations (because the data is
not initialized); this turns on const-ness only for compilers where
this is known to work.
2011-11-16 22:37:46 -06:00
John Bowler
7006dc4c6a [libpng15] Added --noexecstack to assembler file compilation. 2011-11-16 22:25:47 -06:00
Glenn Randers-Pehrson
c4253c4683 [libpng15] Updated CHANGES and ANNOUNCE with latest changes 2011-11-16 22:23:30 -06:00
John Bowler
4fa96a42f7 [libpng15] Fixes for C++ compilation using g++ When libpng source is compiled
using g++. The compiler imposes C++ rules on the C source; thus it
    is desireable to make the source work with either C or C++ rules
    without throwing away useful error information.  This change adds
    png_voidcast to allow C semantic (void*) cases or the corresponding
    C++ static_cast operation, as appropriate.
2011-11-16 16:39:16 -06:00
Glenn Randers-Pehrson
c2d8399581 [libpng15] Bump version to libpng-1.5.7beta03 2011-11-16 14:35:41 -06:00
John Bowler
18c5cfafeb [libpng15] Multiple transform bug fixes plus a work-round for double gamma
correction.
2011-11-16 14:26:34 -06:00
Glenn Randers-Pehrson
36f5884359 [libpng15] Added test-pngstest.sh 2011-11-16 14:22:15 -06:00
Mans Rullgard
e7acc6ac3d [libpng15] Added run-time detection of ARM/NEON support 2011-11-16 13:48:18 -06:00
John Bowler
76b0459fdd [libpng15] Updated contrib/sRGBtables code 2011-11-16 13:44:42 -06:00
Glenn Randers-Pehrson
ae41dc55a2 [libpng15] Added contrib/README.txt 2011-11-16 13:35:16 -06:00
Glenn Randers-Pehrson
45bb9a62ba [libpng15] Changed "PNG_EXTERN" to "extern" in sRGB table declarations
in pngpriv.h
2011-11-16 12:47:33 -06:00
John Bowler
89c2f84287 [libpng15] Fix Windows builds, add pngstest to Visual Studio and OpenWatcom 2011-11-16 12:04:39 -06:00
John Bowler
ed9f84475d [libpng15] Update pngstest to remove compiler warnings, add to libpng tests 2011-11-16 11:52:27 -06:00
John Bowler
1eb188932b [libpng15] Added contrib/pngtests 2011-11-16 11:40:59 -06:00
Glenn Randers-Pehrson
8596468e51 [libpng15] Removed PNG_CONST from the sRGB table declarations
in pngpriv.h and png.c
2011-11-16 08:52:36 -06:00
Glenn Randers-Pehrson
c32de8c64d [libpng15] Bump version to libpng-1.5.7beta03 2011-11-11 20:28:21 -06:00
Glenn Randers-Pehrson
6d8e090419 [libpng15] Imported from libpng-1.5.7beta02.tar 2011-11-11 20:06:18 -06:00
Glenn Randers-Pehrson
816e687de8 [libpng] Added copyright and licensing info to contrib/sRGBtables/*.c 2011-11-11 18:48:04 -06:00
John Bowler
0a521d3785 [libpng15] Installed more accurate linear to sRGB conversion tables.
The slightly modified tables reduce the number of 16-bit values that
convert to an off-by-one 8-bit value.  The "makesRGB.c" code that was used
to generate the tables is now in a contrib/sRGBtables sub-directory.
2011-11-11 18:14:59 -06:00
Glenn Randers-Pehrson
d3feb52955 [libpng15] Ignore unused chunks in the new simplified read API. 2011-11-11 17:20:34 -06:00
Glenn Randers-Pehrson
65f3ac192b [libpng15] Fixed a typo in pngpriv.h 2011-11-10 06:36:34 -06:00
Glenn Randers-Pehrson
4be12aa1e3 [libpng15] Updated commentary 2011-11-10 06:35:48 -06:00
Glenn Randers-Pehrson
84b0da9c94 [libpng15] Updated commentary about new API 2011-11-10 06:32:19 -06:00
John Bowler
e6fb691c49 [libpng15] Fixes to alpha swap on read, simplified write and filler add code 2011-11-08 21:35:16 -06:00
John Bowler
d4973837b2 [libpng15] Change options.awk to use pngconf.h for versioning
instead of ANNOUNCE
2011-11-08 19:34:54 -06:00
John Bowler
dd81915d5b [libpng15] Corrections to the PNG_FORMAT_ values and code cleanup. 2011-11-08 14:29:45 -06:00
John Bowler
3615d03e05 [libpng15] Fix PNG_SIMPLIFIED transformations,
adding alpha and reducing to 8-bit
2011-11-08 10:38:09 -06:00
Glenn Randers-Pehrson
e0a6c06bfd [libpng] Added synopses for new png_image functions to the manual. 2011-11-07 23:50:05 -06:00
Glenn Randers-Pehrson
efc4b69767 [libpng15] Fixed some typos in comments. 2011-11-07 23:31:34 -06:00
John Bowler
7875d534cb [libpng15] Simplified read/write API initial version; basic read/write tested
on a variety of images, limited documentation (in the header file.)
2011-11-07 22:33:49 -06:00
John Bowler
92a1d46c8d [libpng15] Added versioning to pnglibconf.h comments. 2011-11-07 22:19:30 -06:00
Glenn Randers-Pehrson
7de02e722f [libpng15] Changed 8 new leading spaces to TAB in scripts/makefile.std
and pnglibconf.mak
2011-11-07 09:20:27 -06:00
John Bowler
61bd4f76ad [libpng15] Updated scripts/pnglibconf.mak and scripts/makefile.std
to handle the new PNG_JOIN macro.
2011-11-05 12:24:53 -05:00
Glenn Randers-Pehrson
8b67ee5d3d [libpng15] Updated scripts/pnglibconf.mak to handle the new PNG_JOIN macro. 2011-11-05 09:27:55 -05:00
John Bowler
fc45f68623 [libpng15] updated configure files 2011-11-04 21:03:39 -05:00
John Bowler
a004e23a4c [libpng15] Fixed FP division by zero in pngvalid.c; the 'test_pixel' code left
the sBIT fields in the test pixel as 0, which resulted in a floating
point division by zero which was irrelevant but causes systems where
FP exceptions cause a crash. Added code to pngvalid to turn on FP
exceptions if the appropriate glibc support is there to ensure this is
tested in the future.
2011-11-04 20:24:56 -05:00
John Bowler
88bcdc269b [libpng] Check compression_type parameter in png_get_iCCP and remove spurious
casts. The compression_type parameter is always assigned to, so must
be non-NULL. The cast of the profile length potentially truncated the
value unnecessarily on a 16-bit int system, so the cast of the (byte)
compression type to (int) is specified by ANSI-C anyway.
2011-11-04 20:12:03 -05:00
Glenn Randers-Pehrson
aad7c828b2 [libpng15] Removed a stray sentence fragment from CHANGES/ANNOUNCE 2011-11-04 14:12:04 -05:00
Glenn Randers-Pehrson
5a9aca17df [libpng15] Bump version to libpng-1.5.7beta02 2011-11-04 13:47:57 -05:00
Glenn Randers-Pehrson
55e85c24b4 [libpng15] Imported from libpng-1.5.7beta01.tar 2011-11-04 13:47:49 -05:00
John Bowler
fcc0263191 [libpng15] Paeth filter speed improvements from work by Siarhei Siamashka. This
changes the 'Paeth' reconstruction function to improve the GCC code
generation on x86. The changes are only part of the suggested ones;
just the changes that definitely improve speed and remain simple.
The changes also slightly increase the clarity of the code. In a
2011-11-03 18:31:00 -05:00
John Bowler
1d8b75550f [libpng15] Fix for the preprocessor of the Intel C compiler. The preprocessor
adjacent @ signs with a space; this changes the concatentation
from @@@ to PNG_JOIN; that should work with all compiler
preprocessors.
2011-11-03 18:19:53 -05:00
John Bowler
aff44028ba [libpng15] Fixed bug in pngvalid on early allocation failure; fixed type cast
in pngmem.c; pngvalid would attempt to call png_error() if the allocation
of a png_struct or png_info failed. This would probably have led to a
crash.  The pngmem.c implementation of png_malloc() included a cast
to png_size_t which would fail on large allocations on 16-bit systems.
2011-11-03 16:11:08 -05:00
Glenn Randers-Pehrson
6d7705eedf [libpng15] Bump version to libpng-1.5.7beta01 2011-11-03 00:49:07 -05:00
Mans Rullgard
d3a94802d8 [libpng15] Added support for ARM processor (Mans Rullgard) 2011-11-03 00:47:55 -05:00
Glenn Randers-Pehrson
2b7d730e27 [libpng15] Bump version to libpng-1.5.7beta01 2011-11-02 23:14:13 -05:00
Glenn Randers-Pehrson
bc6726bc04 [libpng15] Imported from libpng-1.5.6.tar 2011-11-02 22:48:36 -05:00
Glenn Randers-Pehrson
1876366b17 [libpng15] Fixed a spelling error. 2011-10-27 22:09:22 -05:00
Glenn Randers-Pehrson
c94b996af8 [libpng15] Bump version to libpng-1.5.6rc04 2011-10-27 21:09:08 -05:00
Glenn Randers-Pehrson
0e9f8ced1e [libpng15] Imported from libpng-1.5.6rc03.tar 2011-10-27 21:03:00 -05:00
Glenn Randers-Pehrson
7342fcaf92 [libpng] #define PNG_ALIGN_TYPE PNG_ALIGN_NONE in contrib/pngminim/*/pngusr.h 2011-10-27 19:56:36 -05:00
John Bowler
92ef313c77 [libpng15] Fixed compiler warnings with Intel and MSYS compilers.
The logical shift fix for Microsoft Visual C is required by other compilers,
so this enables that fix for all compilers when using compile-time constants.
Under MSYS 'byte' is a name declared in a system header file, so we
changed the name of a local variable to avoid the warnings that result.
2011-10-27 19:53:14 -05:00
Glenn Randers-Pehrson
cb75699dff [libpng15] Renamed the LSR() macro to PNG_LSR() and added PNG_LSL() macro. 2011-10-27 16:59:03 -05:00
Glenn Randers-Pehrson
122a525c83 [libpng15] Bump version to libpng-1.5.6rc03 2011-10-27 16:51:52 -05:00
Glenn Randers-Pehrson
5e823c1fd5 [libpng15] Imported from libpng-1.5.6rc02.tar 2011-10-27 16:19:17 -05:00
Glenn Randers-Pehrson
8db19980fa [libpng15] Add leading zero to some 1-digit hex constants (0xf -> 0x0f). 2011-10-27 16:17:24 -05:00
Glenn Randers-Pehrson
ef02d563a3 [libpng15] Added LSR() macro to defend against buggy compilers that evaluate
non-taken code branches and complain about out-of-range shifts.
2011-10-27 12:05:58 -05:00
Glenn Randers-Pehrson
b2068640d1 [libpng15] Bump version to libpng-1.5.6rc02 2011-10-26 08:48:35 -05:00
Glenn Randers-Pehrson
93254f66fc [libpng15] Imported from libpng-1.5.6rc01.tar 2011-10-26 08:48:23 -05:00
Glenn Randers-Pehrson
52093f1776 [libpng15] Corrected recent ANNOUNCE and CHANGES entry 2011-10-21 12:57:01 -05:00
Glenn Randers-Pehrson
0654d63196 [libpng15] Bump version to libpng-1.5.6beta08 2011-10-21 07:39:45 -05:00
Glenn Randers-Pehrson
4e8aa822dc [libpng15] Imported from libpng-1.5.6beta07.tar 2011-10-21 07:39:34 -05:00
Mans Rullgard
1c42276a39 [libpng15] New png_struct member png_ptr->old_prev_row 2011-10-17 16:52:19 -05:00
Mans Rullgard
c9e27d026d [libpng15] Made png_ptr->prev_row an aligned pointer into png_ptr->big_prev_row
and removed a redundant assignment (Mans Rullgard).
2011-10-17 15:25:03 -05:00
Glenn Randers-Pehrson
e7db181e5d [libpng15] Bump version to libpng-1.5.6beta07 2011-10-17 08:08:16 -05:00
Glenn Randers-Pehrson
f5c5e53bf5 [libpng15] Imported from libpng-1.5.6beta06.tar 2011-10-17 08:08:08 -05:00
John Bowler
ecb3ad035a [libpng15] Updated ANNOUNCE and CHANGES 2011-10-16 22:55:44 -05:00
John Bowler
fb5b3ac013 [libpng15] Prevent libpng overwriting unused bits at the end of the image when
is not byte aligned, while reading. Prior to libpng-1.5.6 libpng would
overwrite the end of the image if the row width is not an exact multiple
of 8 bits and the image is not interlaced.
2011-10-16 22:52:56 -05:00
John Bowler
5b84901c55 [libpng15] Turned on multiple png_read_update_info in pngvalid transform tests. 2011-10-16 22:42:46 -05:00
John Bowler
57cbcf6b8f [libpng15] Add ability to call png_read_update_info multiple times to pngvalid.c 2011-10-14 19:43:53 -05:00
John Bowler
07772cba07 [libpng15] Fixes for multiple calls to png_read_update_info.
These fixes attend to most of the errors revealed in pngvalid, however doing
the gamma work twice results in inaccuracies that can't be easily fixed.
There is now a warning in the code if this is going to happen.
2011-10-14 18:19:47 -05:00
John Bowler
5c1905caae [libpng15] Fixed a relatively harmless memory overwrite
in compressed text writing
2011-10-14 12:33:52 -05:00
Glenn Randers-Pehrson
d58251b47e [libpng15] Reverted previous change; removed png_get_compression_buffer() API.
It is too risky. Exactly how png_ptr->zbuf is used is under control of the
individual chunk implementation and there could easily be significant changes
within a major release.
2011-10-13 20:30:02 -05:00
Glenn Randers-Pehrson
d3dcb463d6 [libpng15] Added png_get_compression_buffer() API. 2011-10-13 17:51:31 -05:00
Glenn Randers-Pehrson
3dbfd300ff [libpng15] Removed two redundant tests for unitialized row. 2011-10-13 17:24:36 -05:00
Glenn Randers-Pehrson
ff36991ca2 [libpng15] Bump version to libpng-1.5.6beta06 2011-10-12 06:54:55 -05:00
Glenn Randers-Pehrson
5b3b54e3f6 [libpng15] Imported from libpng-1.5.6beta05.tar 2011-10-12 06:47:31 -05:00
Glenn Randers-Pehrson
ba55c0770b [libpng15] Use PNG_CSTRING_FROM_CHUNK macro with png_debug2() in pngwutil.c 2011-10-11 21:21:37 -05:00
John Bowler
4e68aa7e40 [libpng15] Further optimization of png_combine_row() in the interlaced case. 2011-10-11 16:01:33 -05:00
Glenn Randers-Pehrson
76b62317b5 [libpng15] Fixed bug in png_write_chunk_header() debug print,
introduced in 1.5.6bet01.
2011-10-11 13:54:27 -05:00
Glenn Randers-Pehrson
4dd0dc6399 [libpng15] Fix small typo in CHANGES and ANNOUNCE 2011-10-07 18:48:10 -05:00
John Bowler
8be28e3eb6 [libpng15] Optimized png_combine_row() when rows are aligned This gains a
small percentage for 16-bit and 32-bit pixels in the typical case where the
output row buffers are appropriately aligned. The optimization was not
previously possible because the png_struct buffer was always misaligned.
2011-10-07 18:36:37 -05:00
John Bowler
ac8375d000 [libpng15] Align png_struct::row_buf - previously it was always unaligned,
caused by a bug in the code that attempted to align it; the code needs to
subtract one from the pointer to take account of the filter byte prepended to
each row.
2011-10-06 22:27:16 -05:00
Glenn Randers-Pehrson
65c0339b5c [libpng15] Speed up png_combine_row() for interlaced images. This reduces the
generality of the code, allowing it to be optimized for Adam7 interlace.  The
masks passed to png_combine_row() are now generated internally, avoiding
some code duplication and localizing the interlace handling somewhat.
2011-10-06 21:54:17 -05:00
Glenn Randers-Pehrson
4daae30174 [libpng15] #ifdef out png_progressive_combine_row() when interlacing is
not supported.
2011-10-06 21:37:47 -05:00
Glenn Randers-Pehrson
d5bc89ef11 [libpng15] Updated CHANGES and ANNOUNCE 2011-10-05 21:11:46 -05:00
Glenn Randers-Pehrson
fa7d7934f6 [libpng15] Replaced a short but frequently-used memcpy() in png_combine_row()
with a loop.
2011-10-05 21:09:22 -05:00
Glenn Randers-Pehrson
a92a212925 [libpng15] Bump version to libpng-1.5.6beta05 2011-10-05 16:49:14 -05:00
Glenn Randers-Pehrson
435cf87469 [libpng15] Bump version to libpng-1.5.6beta04 2011-10-05 16:42:16 -05:00
Glenn Randers-Pehrson
e51916c0f9 [libpng15] Bump version to libpng-1.5.6beta04 2011-09-28 07:34:53 -05:00
Glenn Randers-Pehrson
997b193f63 [libpng15] Imported from libpng-1.5.6beta03.tar 2011-09-28 07:24:28 -05:00
Glenn Randers-Pehrson
e29c4b9b93 [libpng15] Revised CMakeLists.txt to work with mingw and removed some material
from CMakeLists.txt that is no longer useful in libpng-1.5.
2011-09-27 19:01:58 -05:00
Glenn Randers-Pehrson
8e25a61277 [libpng15]` Revised test-pngtest.sh to report FAIL when pngtest fails.
Added "--strict" option to pngtest, to report FAIL when the failure is
only because the resulting valid files are different.
2011-09-26 20:57:33 -05:00
Glenn Randers-Pehrson
f573ff7792 [libpng15] Bump version to libpng-1.5.6beta03 2011-09-26 16:53:11 -05:00
Glenn Randers-Pehrson
1a16735ce7 [libpng15] Imported from libpng-1.5.6beta02.tar 2011-09-26 16:44:31 -05:00
Glenn Randers-Pehrson
d02d6a1c7d [libpng15] Fixed a typo in the definition of the new PNG_STRING_FROM_CHUNK(s,c)
macro.
2011-09-26 16:43:08 -05:00
Glenn Randers-Pehrson
968c231cc8 [libpng15] Added a note in the manual the png_read_update_info() must be
called only once with a particular info_ptr.
2011-09-26 16:35:22 -05:00
Glenn Randers-Pehrson
bb5cb1476b [libpng15] Bump version to libpng-1.5.6beta02 2011-09-22 12:48:19 -05:00
Glenn Randers-Pehrson
115020d985 [libpng15] Imported from libpng-1.5.6beta01.tar 2011-09-22 09:51:23 -05:00
Glenn Randers-Pehrson
3e2263abf2 [libpng15] Imported from libpng-1.5.5.tar 2011-09-22 08:45:04 -05:00
Glenn Randers-Pehrson
d71f09df4d [libpng15] Bump version to libpng-1.5.5rc02 2011-09-15 08:39:02 -05:00
Glenn Randers-Pehrson
0a456b5d16 [libpng15] Fix grammar in ANNOUNCE and CHANGES 2011-09-15 08:32:07 -05:00
Glenn Randers-Pehrson
d3261115a8 [libpng15] Imported from libpng-1.5.5rc01.tar 2011-09-15 08:27:01 -05:00
Glenn Randers-Pehrson
673a1166fe [libpng15] Updated ANNOUNCE and CHANGES with new CVE number. 2011-09-12 08:40:07 -05:00
Glenn Randers-Pehrson
853afe631c [libpng15] Bump version to libpng-1.5.5beta09 2011-09-09 22:33:48 -05:00
Glenn Randers-Pehrson
fe85bafedf [libpng15] Bump version to libpng-1.5.5beta08 2011-09-09 21:54:58 -05:00
John Bowler
751561218f [libpng15] Constant changes for 64-bit compatibility (removal of L suffixes).
The 16-bit cases still use "L" as we don't have a 16-bit test system.
2011-09-09 17:21:44 -05:00
Glenn Randers-Pehrson
f0c19e6455 [libpng15] Fix typo in ANNOUNCE and CHANGES 2011-09-09 08:16:53 -05:00
Glenn Randers-Pehrson
ccff383d44 [libpng15] Relocated new HAVE_SOLARIS_LD definition in configure.ac 2011-09-09 07:55:25 -05:00
John Bowler
f3f7e14727 [libpng15] Fixed 64-bit compilation errors (gcc). The errors fixed relate
to conditions where types that are 32 bits in the GCC 32-bit
world (uLong and png_size_t) become 64 bits in the 64-bit
world.  This produces potential truncation errors which the
compiler correctly flags.
2011-09-09 07:32:37 -05:00
Glenn Randers-Pehrson
3c2ae60f46 [libpng15] Bump version to libpng-1.5.5beta08 2011-09-09 06:10:21 -05:00
Glenn Randers-Pehrson
95ba417c82 [libpng15] Imported from libpng-1.5.5beta07.tar 2011-09-08 12:28:05 -05:00
Glenn Randers-Pehrson
b6e4d58e4b [libpng15] Changed png_chunk_benign_error() to png_warning() in png.c, in
png_XYZ_from_xy_checked
2011-09-08 12:25:52 -05:00
Glenn Randers-Pehrson
ef43c17bfe [devel] Changed "// ..." comments to "/* .. */" in the visupng project. 2011-09-03 09:53:07 -05:00
Glenn Randers-Pehrson
ad8b7b71b4 [devel] Add SunOS support to configure and Makefile.am 2011-09-01 19:38:08 -05:00
Glenn Randers-Pehrson
83bd94f1f4 [devel] Added SunOS support to configure.ac and Makefile.am 2011-09-01 14:06:49 -05:00
Glenn Randers-Pehrson
63071acbd9 [devel] Zapped "zap" (changed "zap" to "remove") 2011-08-29 16:16:26 -05:00
Glenn Randers-Pehrson
44271398bd [devel] Revise makefile.darwin to support both i386 and 64-bit architecture
by default.
2011-08-29 12:26:24 -05:00
Glenn Randers-Pehrson
90cd362a87 [devel] Added some blank lines to projects/vstudio/zlib.props for clarity. 2011-08-29 10:12:00 -05:00
Glenn Randers-Pehrson
b293334e7a [devel] Added "$(ARCH)" option to makefile.darwin 2011-08-29 07:22:13 -05:00
Glenn Randers-Pehrson
4ae297867d [devel] Bump version to libpng-1.5.5beta07 2011-08-26 06:07:33 -05:00
Glenn Randers-Pehrson
ec3ff78f70 [devel] Imported from libpng-1.5.5beta06.tar 2011-08-26 05:58:36 -05:00
Glenn Randers-Pehrson
6d62ef108a [devel] Spell "behavior" consistently. 2011-08-25 18:17:50 -05:00
Glenn Randers-Pehrson
b6874f8062 [devel] Use "gray" spelling consistently. 2011-08-25 18:11:32 -05:00
Glenn Randers-Pehrson
8b8aacde83 [devel] Use "color" spelling consistently. 2011-08-25 18:10:50 -05:00
John Bowler
bbd17bd7c4 [devel] Describe the new XYZ APIs in the manual. 2011-08-25 17:48:18 -05:00
John Bowler
b5cebba675 [devel] Updated symbols.def which was supposed to be part of previous patch. 2011-08-25 17:40:38 -05:00
John Bowler
736f40f459 [devel] Fixes to rgb_to_gray and cHRM XYZ APIs 2011-08-25 16:19:44 -05:00
Glenn Randers-Pehrson
0c03fc6f75 [devel] Expanded TAB characters in CMakeLists.txt 2011-08-17 09:46:29 -05:00
Glenn Randers-Pehrson
e61e403d20 [devel] Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set in CMakeLists.txt
(Clifford Yap)
2011-08-17 09:02:07 -05:00
Glenn Randers-Pehrson
9d824eb166 [devel] Bump version to libpng-1.5.5beta06 2011-08-17 07:57:02 -05:00
Glenn Randers-Pehrson
75d5bfda5b [devel] Imported from libpng-1.5.5beta05.tar 2011-08-17 07:47:04 -05:00
John Bowler
9b979b177b [devel] Added new types and internal functions for CIE RGB end point handling
to pngpriv.h (functions yet to be implemented).
2011-08-16 22:58:33 -05:00
John Bowler
7b9796539d [devel] Prevent unexpected API exports from non-libpng DLLs on Windows.
The "_DLL" is removed from the test of whether a DLL is being built.
2011-08-16 22:57:27 -05:00
Glenn Randers-Pehrson
0bc79772c8 [devel] Revised commentary about png_rgb_to_gray coefficents
and fixed spelling (truely -> truly) in comments.
2011-08-11 15:11:11 -05:00
Glenn Randers-Pehrson
a45ffbefb9 [devel] Bump version to libpng-1.5.5beta05 2011-07-29 12:41:45 -05:00
Glenn Randers-Pehrson
99ffac0838 [devel] Imported from libpng-1.5.5beta04.tar 2011-07-29 12:35:41 -05:00
Glenn Randers-Pehrson
6c98897a64 [devel] Updated commentary about the png_rgb_to_gray() default coefficients 2011-07-29 12:31:16 -05:00
Glenn Randers-Pehrson
b17c75b222 [devel] Revised CMakeLists.txt (Clifford Yapp) 2011-07-27 20:47:13 -05:00
Glenn Randers-Pehrson
d4e1ddb631 [devel] Fix typo in manual: "was" was "was was". 2011-07-27 20:09:57 -05:00
Glenn Randers-Pehrson
aab2aa196d [devel] Bump version to libpng-1.5.5beta04 2011-07-27 12:41:23 -05:00
Glenn Randers-Pehrson
03d6b482b5 [devel] Imported from libpng-1.5.5beta03.tar 2011-07-27 12:41:15 -05:00
Glenn Randers-Pehrson
4dcce66295 [devel] Updated CHANGES to reshow addition of new compression API
in libpng-1.5.4 and to mention recent CVE reports.
2011-07-26 14:08:35 -05:00
Glenn Randers-Pehrson
7a28724e6b [devel] Minor documentation editing. 2011-07-26 14:08:17 -05:00
John Bowler
a5bcab7854 [devel] Enabled compilation with g++ compiler. This compiler does not
recognize the file extension, so it always compiles with C++ rules.  Made minor
changes to pngrutil.c to cast results where C++ expects it but C does not.
2011-07-14 23:02:11 -05:00
Glenn Randers-Pehrson
0a007b743e [devel] Added recent CVE numbers at relevant places in the CHANGES file. 2011-07-14 09:47:26 -05:00
Glenn Randers-Pehrson
e9ef47f69e [devel] Bump version to libpng-1.5.5beta03 2011-07-14 08:22:36 -05:00
Glenn Randers-Pehrson
0532aca928 [devel] Imported from libpng-1.5.5beta02.tar 2011-07-14 08:16:59 -05:00
John Bowler
5a77e672e1 [devel] Revised Makefile.am and Makefile.in to look in the right directory for
pnglibconf.h.prebuilt
2011-07-14 07:42:11 -05:00
Glenn Randers-Pehrson
c2891d0011 [devel] Reverted Makefile.am and Makefile.in to 1.5.4 status. 2011-07-13 21:13:36 -05:00
Glenn Randers-Pehrson
25e0f55586 [devel] Bump version to libpng-1.5.5beta02 2011-07-13 07:18:07 -05:00
Glenn Randers-Pehrson
ce775cc851 [devel] Imported from libpng-1.5.5beta01.tar 2011-07-13 07:00:25 -05:00
Glenn Randers-Pehrson
d0797f5b53 [devel] Revised manual paragraph about use of 'NO' macros. 2011-07-12 10:28:02 -05:00
Glenn Randers-Pehrson
a5e5547679 [devel] Minor editing of the manual. 2011-07-12 10:13:32 -05:00
Glenn Randers-Pehrson
4164c6f949 [devel] Reverted non-portable GNU syntax in makefile (?=, +=) 2011-07-12 06:11:42 -05:00
Glenn Randers-Pehrson
4b2237a6a4 [devel] Updated contrib/pngminus/makefile.std 2011-07-11 17:52:05 -05:00
Glenn Randers-Pehrson
cb47e20509 [devel] Reverted type of "my_background" to png_color_16 in the manual. 2011-07-10 06:55:14 -05:00
Glenn Randers-Pehrson
d3a0b23c1b [devel] png_set_background does not take an info_ptr argument. 2011-07-09 19:51:16 -05:00
Glenn Randers-Pehrson
ab38979670 [devel] Fixed some typos in the manual. 2011-07-09 19:35:22 -05:00
Glenn Randers-Pehrson
628b632419 [devel] Bump version to libpng-1.5.5beta01 2011-07-08 13:22:11 -05:00
Glenn Randers-Pehrson
d404b6d488 [devel] Imported from libpng-1.5.4.tar 2011-07-07 06:26:30 -05:00
Glenn Randers-Pehrson
38404a5996 [devel] Relocated a single quote from the beginning of a line in the manual
It interfered with nroff processing.
2011-07-03 13:07:41 -05:00
Glenn Randers-Pehrson
05fc4ccd30 [devel] Added references to CVE-2011-2501 and -0408 to the CHANGES file. 2011-07-01 09:30:38 -05:00
Glenn Randers-Pehrson
78bb9dafe1 [devel] Imported from libpng-1.5.4rc01.tar 2011-06-30 19:04:47 -05:00
Glenn Randers-Pehrson
4fca25504e [devel] Define PNG_ALLOCATED to "restrict" only if MSC_VER >= 1400. 2011-06-27 12:01:01 -05:00
Glenn Randers-Pehrson
9daf91ed5c [devel] Imported from libpng-1.5.4beta08.tar 2011-06-22 23:15:30 -05:00
John Bowler
fcd7c13ffd [devel] Fix pngvalid.c with ACCURATE_SCALE
and update scripts/pnglibconf.h.prebuilt
2011-06-22 23:13:01 -05:00
Glenn Randers-Pehrson
5bcd0a8c14 [devel] Imported from libpng-1.5.4beta07.tar 2011-06-19 07:10:26 -05:00
John Bowler
8d261262d9 [devel] Fixed pngvalid, simplified macros, added checking for 0 in sCAL. 2011-06-18 13:37:11 -05:00
Glenn Randers-Pehrson
c4a8214b77 [devel] Delete chop_16 synopses and add one for png_set_scale_16_to_8() 2011-06-18 00:44:08 -05:00
Glenn Randers-Pehrson
4e47be74e9 [devel] Bump version to libpng-1.5.4beta07 2011-06-18 00:30:16 -05:00
Glenn Randers-Pehrson
314ef3e72b [devel] Imported from libpng-1.5.4beta06.tar 2011-06-18 00:27:49 -05:00
Glenn Randers-Pehrson
aee83b43d6 [devel] Fixed buffer bug (both the strip_16 and scale_16 transforms were
being applied.
2011-06-18 00:19:54 -05:00
Glenn Randers-Pehrson
9a1e2232ba [devel] Fix pngvalid.c to compile when SCALE_16 is disabled. 2011-06-17 23:40:12 -05:00
Glenn Randers-Pehrson
6da2f2d92a [devel] Fix more inconsistencies from the swap of 16_TO_8 APIs.
pngvalid still fails.
2011-06-17 23:07:16 -05:00
Glenn Randers-Pehrson
24145c8869 [devel] Still trying to fix row buffer problem but pngvalid still fails 2011-06-17 22:45:03 -05:00
Glenn Randers-Pehrson
e6a8060a71 [devel] Fixed some errors with 16_TO_8 macros
pngvalid still fails two tests, problem with row buffer.
2011-06-17 22:28:23 -05:00
Glenn Randers-Pehrson
98f053edbd [devel] Fix new bugs in pngvalid.c; it failed to compile. 2011-06-17 21:57:49 -05:00
Glenn Randers-Pehrson
581d29d4c9 [devel] Removed redundant directives from pngminim/*/*dfa. 2011-06-17 21:44:10 -05:00
Glenn Randers-Pehrson
66b942ce16 [devel] Changed a dependence in scripts/pnglibconf.dfa 2011-06-17 21:17:16 -05:00
Glenn Randers-Pehrson
86cf9b2e89 [devel] Bump version to libpng-1.5.4beta06 2011-06-17 21:13:51 -05:00
Glenn Randers-Pehrson
fb29e51dbd [devel] Imported from libpng-1.5.4beta05.tar 2011-06-17 20:42:19 -05:00
Glenn Randers-Pehrson
ab63dd0892 [devel] Renamed png_set_chop_16() to png_set_strip_16(). 2011-06-17 20:41:19 -05:00
Glenn Randers-Pehrson
a7428d443c [devel] Renamed png_set_strip_16() to png_set_scale_16(). 2011-06-17 19:07:04 -05:00
Glenn Randers-Pehrson
857dbbe7cc [devel] Revised example.c to demonstrate png_set_chop_16(). 2011-06-16 09:39:40 -05:00
Glenn Randers-Pehrson
3fb7c07ea5 [devel] Bump version to libpng-1.5.4beta05 2011-06-16 09:32:36 -05:00
Glenn Randers-Pehrson
60d7c022e5 [devel] Imported from libpng-1.5.4beta04.tar 2011-06-16 09:10:57 -05:00
Glenn Randers-Pehrson
850769f787 [devel] Revised contrib/visupng, gregbook, and pngminim
to demonstrate chop_16_to_8
2011-06-16 09:08:53 -05:00
Glenn Randers-Pehrson
5f0b9276ec [devel] Made PNG_READ_16_TO_8_ACCURATE_SCALE configurable again.
If this is not enabled, png_set_strip_16() and png_do_scale_16_to_8()
aren't built.
2011-06-16 09:05:40 -05:00
Glenn Randers-Pehrson
733b131545 [devel] Added information about "chop_16" to the manual. 2011-06-15 13:21:01 -05:00
Glenn Randers-Pehrson
ef217b76a3 [devel] Updated comments that mention 1.5.3; changed them to 1.5.4. 2011-06-15 12:58:27 -05:00
Glenn Randers-Pehrson
b0791f75ad [devel] Added PNG_TRANSFORM_CHOP_16 to the high-level read transforms. 2011-06-15 12:07:20 -05:00
Glenn Randers-Pehrson
039ad872fe [devel] Bump version to libpng-1.5.4beta04 2011-06-15 11:51:55 -05:00
Glenn Randers-Pehrson
903c64dce8 [devel] Added "#ifdef PNG_READ_BACKGROUND_SUPPORTED/#endif" in pngrtran.c 2011-06-15 11:50:23 -05:00
Glenn Randers-Pehrson
8f4edd07be [devel] Imported from libpng-1.5.4beta03.tar 2011-06-15 08:21:56 -05:00
Glenn Randers-Pehrson
be720edba7 [devel] Correction to the expand_16 code; removed extra instance of
png_set_scale_16_to_8 from pngpriv.h
2011-06-15 08:20:37 -05:00
Glenn Randers-Pehrson
140504b11a [devel] Add synopsis for png_set_chop_16() to manual
and fix some other small typos.
2011-06-15 08:10:13 -05:00
John Bowler
cd3b0cc4d9 [devel] Fixed a problem in png_do_expand_palette() exposed by optimization in
1.5.3beta06
  Also removed a spurious (totally unused and confusing) member from png_info.
  The palette expand optimization prevented expansion to an intermediate RGBA
    form if tRNS was present but alpha was marked to be stripped; this exposed
    a check for tRNS in png_do_expand_palette() which is inconsistent with the
    code elsewhere in libpng.
2011-06-14 23:01:07 -05:00
Glenn Randers-Pehrson
06a9684cfa [devel] Bump version to libpng-1.5.4beta03 2011-06-14 11:06:42 -05:00
Glenn Randers-Pehrson
45599ad00f [devel] Imported from libpng-1.5.4beta02.tar 2011-06-14 07:17:29 -05:00
Glenn Randers-Pehrson
677819fe66 [devel] Check for READ_CHOP_16_TO_8 support in pngvalid,
not libpng version for presence of png_set_chop_16_to_8(), in pngvalid.c
2011-06-14 07:10:47 -05:00
Glenn Randers-Pehrson
2232baa41b [devel] Made png_set_chop_16() API removeable
by disabling PNG_CHOP_16_TO_8_SUPPORTED
2011-06-14 06:59:46 -05:00
Glenn Randers-Pehrson
7dffa41643 [devel] Use the old scaling method for background if png_set_chop_16() was
called.
2011-06-14 06:30:12 -05:00
John Bowler
550bab03fb [devel] Removed the ACCURATE and LEGACY options (they are no longer useable)
Fixed some compiliation problems with scaling options.
2011-06-14 06:17:26 -05:00
Glenn Randers-Pehrson
413138a5ca [devel] Added png_set_chop_16() API. 2011-06-13 22:07:37 -05:00
John Bowler
74945f2f04 [devel] Fix and clarify LEGACY 16-to-8 scaling. 2011-06-13 20:50:42 -05:00
Glenn Randers-Pehrson
97039baa88 [devel] Imported from libpng-1.5.4beta01.tar 2011-06-13 20:09:22 -05:00
Glenn Randers-Pehrson
fd73d04515 [devel] Moved definitions of PNG_HAVE_IHDR, PNG_AFTER_IDAT, and PNG_HAVE_PLTE
outside of an unknown-chunk block in png.h because they are also
needed for other uses.
2011-06-13 13:25:21 -05:00
Glenn Randers-Pehrson
141d9e3c20 [devel] Made it possible to undefine PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
to get the same (inaccurate) output as libpng-1.5.2 and earlier.
2011-06-13 11:47:00 -05:00
Glenn Randers-Pehrson
0cb906d804 [devel] Imported from libpng-1.5.3beta11.tar 2011-06-11 14:23:33 -05:00
Glenn Randers-Pehrson
b704036531 [devel] Allow png_set_user_limits() to increase limits as well as reduce them. 2011-06-11 14:20:22 -05:00
John Bowler
6f55ee2ec5 [devel] Added log option to pngvalid.c and attempted to improve gamma messages. 2011-06-11 07:28:06 -05:00
John Bowler
6a1dc2329a [devel] Removed string/memory macros that are no longer used
and are not necessarily fully supportable, particularly png_strncpy and
png_snprintf.
2011-06-11 06:58:46 -05:00
John Bowler
59a6c379dd [devel] Revised pngvalid.c to test PNG_ALPHA_MODE_SUPPORTED correctly.
This allows pngvalid to build when ALPHA_MODE is not supported, which is
required if it is to build on libpng 1.4.
2011-06-11 06:51:06 -05:00
John Bowler
d2f0bc2d13 [devel] Improved gamma range checks and other things OpenWatcom warns about. 2011-06-11 06:42:06 -05:00
John Bowler
b011fe1c12 [devel] Remove testing cruft from projects/owatcom. 2011-06-11 06:36:51 -05:00
John Bowler
0eadc27cd6 [devel] Added projects/owatcom, an IDE project for OpenWatcom to replace
scripts/makefile.watcom.  This project works with OpenWatcom 1.9. The
    IDE autogenerates appropriate makefiles (libpng.mk) for batch processing.
    The project is configurable, unlike the Visual Studio project, so long
    as the developer has an awk.
2011-06-11 06:31:28 -05:00
Glenn Randers-Pehrson
700c55036c [devel] Added "_SUPPORTED" to the PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION macro. 2011-06-10 23:26:03 -05:00
John Bowler
b2bee3374c [devel] Make the 16-to-8 scaling accurate. Dividing by 256 with no rounding is
wrong (high by one) 25% of the time. Dividing by 257 with rounding is
    wrong in 128 out of 65536 cases. Getting the right answer all the time
    without division is easy.
2011-06-10 23:24:58 -05:00
Glenn Randers-Pehrson
cc2770850a [devel] Revised documentation about png_set_user_limits() to say that it can
only be used to reduce the defined limit, and that it also affects
png writing.
2011-06-10 21:17:34 -05:00
Glenn Randers-Pehrson
fb27873021 [devel] Bump version to libpng-1.5.3beta11 2011-06-10 20:46:53 -05:00
Glenn Randers-Pehrson
590fb8c481 [devel] Removed #ifdef in png.c that caused sCAL handler to leak memory. 2011-06-10 20:25:49 -05:00
John Bowler
4e8d7ec5fc [devel] Added sCAL chunk to pngtest.png 2011-06-10 17:47:09 -05:00
Glenn Randers-Pehrson
254a513fd1 [devel] Fixed png_handle_sCAL which is broken in 1.5 2011-06-10 17:45:48 -05:00
Glenn Randers-Pehrson
ab1a573768 [devel] Imported from libpng-1.5.3rc03.tar 2011-06-07 19:56:51 -05:00
Glenn Randers-Pehrson
38a9d2763c [devel] Imported from libpng-1.5.3rc02.tar 2011-06-07 14:36:45 -05:00
Glenn Randers-Pehrson
07e1d34a84 [devel] Fixed 1-byte uninitialized memory reference in png_format_buffer()
(Bug report by Frank Busse, related to CVE-2004-0421).
2011-06-07 14:35:30 -05:00
Glenn Randers-Pehrson
36edbb5eee [devel] Imported from libpng-1.5.3rc01.tar 2011-06-03 07:18:14 -05:00
Glenn Randers-Pehrson
3fceee058f [devel] Fix typo in pngwutil.c comment. 2011-05-23 06:31:33 -05:00
Glenn Randers-Pehrson
0640cc3d3a [devel] Bump to version libpng-1.5.3beta11 2011-05-20 09:31:08 -05:00
Glenn Randers-Pehrson
3f68453d4a [devel] Imported from libpng-1.5.3beta10.tar 2011-05-20 09:30:08 -05:00
Glenn Randers-Pehrson
0a048923ae [devel] Update CHANGES and ANNOUNCE 2011-05-18 21:44:37 -05:00
John Bowler
5441e18988 [devel] Add tests for expand16, more fixes for palette image tests
Changes only pngvalid and test-pngvalid-full.sh - no libpng changes -
 corrects the code for palette image tests, disables attempts to validate
 palette colors.
2011-05-18 18:57:12 -05:00
John Bowler
db0ed3e62d [devel] png_set_background+png_expand_16 did not interwork correctly.
This problem is present in 1.5.2; if png_set_background is called with
 need_expand false and the matching 16 bit color libpng erroneously just treats
 it as an 8-bit color because of where png_do_expand_16 is in the transform
 list.  This simple fix reduces the supplied colour to 8 bits, so it gets
 smashed, but this is better than the current behavior.
2011-05-18 18:51:24 -05:00
Glenn Randers-Pehrson
8a7ec52c8b [devel] Consistently use "n-bit", not "n bit" in png.c 2011-05-17 07:14:30 -05:00
Glenn Randers-Pehrson
66e1b3abba [devel] Bump to version libpng-1.5.3beta10 2011-05-17 07:03:21 -05:00
Glenn Randers-Pehrson
cd116fa248 [devel] Fix spelling of "conversion" in manual. 2011-05-17 06:56:50 -05:00
Glenn Randers-Pehrson
c261077788 [devel] Consistently use "n-bit", not "n bit" in CHANGES and ANNOUNCE. 2011-05-17 06:52:54 -05:00
Glenn Randers-Pehrson
55fbff358a [devel] Consistently use "n-bit", not "n bit" in comments. 2011-05-17 06:49:32 -05:00
John Bowler
1921e6db90 [devel] Reversed earlier change of transformation order; move
png_expand_16 back where it was before libpng-1.5.3beta07.
The change doesn't work because it requires 16 bit gamma tables when the code
only generates 8 bit ones.  This fails silently; the libpng code just doesn't
do any gamma correction.  Moving the tests back leaves the old, inaccurate, 8
bit gamma calculations, but these are clearly better than none!
2011-05-16 20:57:54 -05:00
Glenn Randers-Pehrson
bb4f77cd95 [devel] Bump to version libpng-1.5.3beta09 2011-05-16 20:42:11 -05:00
Glenn Randers-Pehrson
5ca62c9f35 [devel] Bump to version libpng-1.5.3rc01 2011-05-16 09:14:42 -05:00
Glenn Randers-Pehrson
1591a4c9dc [devel] Imported from libpng-1.5.3beta08.tar 2011-05-16 09:10:37 -05:00
Glenn Randers-Pehrson
c36074e85a [devel] Removed reference to non-existent png_set_rgb_to_Y from the manual. 2011-05-16 09:08:51 -05:00
Glenn Randers-Pehrson
73904f52b4 [devel] Minor revisions to comments on pngstruct.h and pngvalid.c 2011-05-15 19:38:06 -05:00
Glenn Randers-Pehrson
0e128dfa2f [devel] Update CHANGES and ANNOUNCE; fix some new typos in comments. 2011-05-15 19:09:24 -05:00
John Bowler
9994f25733 [devel] pngvalid: add memory overwrite and palette image checks
also minor cleanup in the libpng code itself (pngrtran.c and pngrutil.c) and some
extra checking there.
2011-05-15 18:52:39 -05:00
Glenn Randers-Pehrson
593fc04096 [devel] Fix typos and indentation in new material in the documentation. 2011-05-12 22:18:23 -05:00
John Bowler
cb0b29631f [devel] Documented png_set_alpha_mode(), other changes in libpng.3 and
libpng-manual.txt.
  The cHRM chunk now sets the defaults for png_set_rgb_to_gray() (when negative
    parameters are supplied by the caller), while in the absence of cHRM
    sRGB/Rec 709 values are still used.
  The bKGD chunk no longer overwrites the background value set by
    png_set_background(), allowing the latter to be used before the file
    header is read. It never performed any useful function to override
    the default anyway.

Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit
2011-05-12 21:48:29 -05:00
John Bowler
ed4d32baa4 [devel] Improve "pngvalid --speed" to exclude more of pngvalid from the time. 2011-05-11 23:02:28 -05:00
Glenn Randers-Pehrson
d83530f45d [devel] Bump to version libpng-1.5.3beta08 2011-05-11 14:39:11 -05:00
Glenn Randers-Pehrson
cb3f42123f [devel] Imported from libpng-1.5.3beta07.tar 2011-05-11 14:36:14 -05:00
Glenn Randers-Pehrson
36fa2a0abd [devel] Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
before IDAT.
2011-05-11 06:52:37 -05:00
Glenn Randers-Pehrson
2d3fc1ca3b [devel] Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and
PNG_AFTER_IDAT from pngpriv.h to png.h because they must be visible to
applications that call png_set_unknown_chunks().
2011-05-10 23:48:00 -05:00
John Bowler
f70c7d02e9 [devel] Added named value and 'flag' gamma support to png_set_gamma. Made a
minor change from the previous (unreleased) ABI/API to hide the exact value
used for Macs - it's not a good idea to embed this in the ABI!
2011-05-10 22:54:37 -05:00
Glenn Randers-Pehrson
d768d103cf [devel] Minor revision of commentary about png_set_alpha_mode(). 2011-05-08 23:26:19 -05:00
Glenn Randers-Pehrson
44e26d4149 [devel] Revised commentary about png_set_alpha_mode() to make it clearer
that this only affects how composited pixels are returned to the calling
application; they don't affect the pixels that are written to a PNG file.
2011-05-08 22:56:42 -05:00
John Bowler
96cec0e1a3 [devel] Added expand_16 suppport to the high level interface. 2011-05-08 22:48:12 -05:00
John Bowler
a9b34191ae [devel] Added expand_16 suppport to the high level interface. 2011-05-08 19:46:51 -05:00
Glenn Randers-Pehrson
e9eeb743cb [devel] Reverted recent change of errors to warnings. 2011-05-08 19:39:17 -05:00
Glenn Randers-Pehrson
8ba34667a1 [devel] Changed some errors to warnings, added missing "png_ptr" arg in
some currently dead code in pngrtran.c that will be enabled in libpng-1.6
2011-05-08 06:02:18 -05:00
Glenn Randers-Pehrson
87952f0623 [devel] Fix spelling of "implemented" in CHANGES and ANNOUNCE 2011-05-07 22:36:47 -05:00
Glenn Randers-Pehrson
d12c02f020 [devel] Bump to version libpng-1.5.3beta07 2011-05-07 22:07:33 -05:00
Glenn Randers-Pehrson
f3d737dad1 [devel] Imported from libpng-1.5.3beta06.tar 2011-05-07 22:04:26 -05:00
Glenn Randers-Pehrson
492ef9c964 [devel] Apply new PNG_WARNING_PARAMETERS macro in pngwutil.c 2011-05-07 21:42:25 -05:00
Glenn Randers-Pehrson
c7822514cc [devel] Fix typos in comments, add new API synopses to libpng.3 2011-05-07 21:23:43 -05:00
John Bowler
d273ad2d0f [devel] Implementation of premultiplied alpha support: png_set_alpha_mode
(libpng-manual.txt still to be updated, see png.h for documentation.)
2011-05-07 21:00:28 -05:00
Glenn Randers-Pehrson
af855e415d [devel] Remove some trailing blanks. 2011-05-07 10:54:28 -05:00
Glenn Randers-Pehrson
6ee0edf880 [devel] Removed the -D_ALL_SOURCE from definitions for AIX in CMakeLists.txt 2011-05-05 22:13:18 -05:00
Glenn Randers-Pehrson
00015a81dd [devel] Bump to version libpng-1.5.3beta06 2011-05-05 21:11:56 -05:00
Glenn Randers-Pehrson
e1018a5bbb [devel] Imported from libpng-1.5.3beta05.tar 2011-05-05 21:06:51 -05:00
John Bowler
c5bef946b1 [devel] IDAT compression failed if preceded by a compressed text chunk
This was because the attempt to reset the zlib stream in png_write_IDAT
happened after the first IDAT chunk had been deflated - much too late.
In this change internal functions are added to claim/release the z_stream
and, hopefully, make the code more robust.  Also deflateEnd checking is
added - previously libpng would ignore an error at the end of the stream.
2011-05-05 17:35:39 -05:00
Glenn Randers-Pehrson
c559bb58ed [devel] Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make zlib "CMF"
optimization configureable.
2011-05-05 16:55:20 -05:00
Glenn Randers-Pehrson
4753906826 [devel] Update "last changed" dates and added CHANGES entry. 2011-05-05 07:32:30 -05:00
John Bowler
88b77cc6f3 [devel] Remove png_snprintf, add formatted warning messages.
This change adds internal APIs to allow png_warning messages to have parameters
 without requiring the host OS to implelment snprintf.  As a side effect the
 dependency of the RFC1132 code on stdio is removed and PNG_NO_WARNINGS does
 actually work now.
2011-05-05 06:49:55 -05:00
Glenn Randers-Pehrson
b3b7168077 [devel] Added appropriate feature test macros (_POSIX_SOURCE, _ISOC99_SOURCE)
to ensure libpng sees the correct API.
2011-05-03 22:30:19 -05:00
Glenn Randers-Pehrson
1384c048e4 [devel] Added comments in png.h about relocation of the png_struct
and png_info definitions.
2011-04-28 23:22:18 -05:00
Glenn Randers-Pehrson
24fde6e00f [devel] Bump to version libpng-1.5.3beta05 2011-04-28 23:20:24 -05:00
Glenn Randers-Pehrson
33ced44f9e [devel] Bump to version libpng-1.5.3beta04 2011-04-27 15:38:15 -05:00
John Bowler
e6dc85bb0b [devel] Changed png_struct jmp_buf member name to avoid clash with macro 2011-04-27 14:47:15 -05:00
Glenn Randers-Pehrson
20786be695 [devel] Added more about creating and destroying the optional "end_info"
structure in the libpng documentation.
2011-04-20 22:20:40 -05:00
Glenn Randers-Pehrson
99778e17af [devel] Mention the reason to call png_read_end() in the libpng documentation. 2011-04-20 17:43:52 -05:00
Glenn Randers-Pehrson
cf78aee1c4 [devel] Removed an obsolete statement from libpngpf.3 2011-04-17 19:26:56 -05:00
Glenn Randers-Pehrson
6cd31bbfce [devel] Give credit for recent bug report to Andrew Church. 2011-04-17 19:02:00 -05:00
Glenn Randers-Pehrson
4bc9f8472c [devel] Updated CHANGES, ANNOUNCE, and pngtest.png to reflect recent changes. 2011-04-17 18:58:38 -05:00
John Bowler
4a12f4a22a [devel] Cleanup of conditional compilation code and of background/gamma
handling. Internal changes only except for a new option to avoid compiling
in the png_build_grayscale_palette API (which is not used at all internally.)
The main change is to move the transform tests (READ_TRANSFORMS,
WRITE_TRANSFORMS) up one level to the caller of the APIs.
2011-04-17 18:34:22 -05:00
Glenn Randers-Pehrson
a1f9426399 [devel] Bump to version libpng-1.5.3beta04 2011-04-16 21:48:23 -05:00
Glenn Randers-Pehrson
9f1cd70774 [devel] Imported from libpng-1.5.3beta03.tar 2011-04-16 21:39:11 -05:00
Glenn Randers-Pehrson
d2795b7909 [devel] Revised a comment about png_do_strip_channel(). 2011-04-16 19:41:23 -05:00
Glenn Randers-Pehrson
b75b24103d [devel] Added some whitespace in comments. 2011-04-16 19:35:05 -05:00
Glenn Randers-Pehrson
cb1aee2506 [devel] Fixed bug with stripping the filler or alpha channel when writing,
that was introduced in libpng-1.5.2beta01.
2011-04-16 19:27:34 -05:00
John Bowler
8d4ce1fed5 [devel] Fixed 64-bit builds where png_uint_32 is smaller than png_size_t 2011-04-15 06:54:30 -05:00
John Bowler
7abc130a81 [devel] Updated the vstudio project to zlib-1.2.5 2011-04-15 06:39:30 -05:00
John Bowler
5adc5a2ff8 [devel] Removed the now-unused PNG_DEPSTRUCT macro 2011-04-15 06:38:29 -05:00
John Bowler
b302c4721a [devel] Removed the PNG_PTR_NORETURN attribute 2011-04-15 06:37:34 -05:00
John Bowler
537c146082 [devel] Fixed gcc -ansi -pedantic compile, using __STRICT_ANSI__ 2011-04-15 06:36:21 -05:00
Glenn Randers-Pehrson
b6743ea08e [devel] Updated zlib.props to zlib-1.2.5 2011-04-04 15:40:59 -05:00
Glenn Randers-Pehrson
61365b6d15 [devel] Removed "#if 1" and the matching "#endif" 2011-04-03 19:49:37 -05:00
Glenn Randers-Pehrson
1b491cbda0 [devel] Bump to version libpng-1.5.3beta03 2011-04-03 06:51:53 -05:00
Glenn Randers-Pehrson
8abcf141fa [devel] Imported from libpng-1.5.3beta02.tar 2011-04-03 06:36:34 -05:00
Glenn Randers-Pehrson
b8e314072f [devel] Replaced pngtest.png with one that has the zTXt CMF optimized. 2011-04-02 08:28:31 -05:00
Glenn Randers-Pehrson
6785856858 [devel] Optimize the zlib CMF byte in non-IDAT compressed chunks 2011-04-02 08:26:42 -05:00
Glenn Randers-Pehrson
e99107b1aa [devel] Moved misplaced declarations 2011-04-02 05:49:03 -05:00
Glenn Randers-Pehrson
f30f0e04e3 [devel] Fixed typo in scripts/symbols.def
(compression_level -> compression_method)
2011-04-01 22:17:55 -05:00
Glenn Randers-Pehrson
c3b3240a03 [devel] Improved the optimization of the zlib CMF byte
(see libpng-1.2.6beta03).
2011-04-01 22:10:41 -05:00
Glenn Randers-Pehrson
65a24d0638 [devel] Add comment in pngtest.c about setting zlib strategy for text
compression
2011-04-01 20:41:53 -05:00
Glenn Randers-Pehrson
a45f47c225 [devel] Updated documentation on setting non-IDAT zlib compression parameters 2011-04-01 15:31:26 -05:00
Glenn Randers-Pehrson
c683100e31 [devel] zlib text compression parameters fall back on non-IDAT parameters
except for strategy which defaults to the zlib default.
2011-04-01 15:24:18 -05:00
Glenn Randers-Pehrson
ec8296ab81 [devel] Relocated some comment lines in pngwutil.c 2011-04-01 15:09:05 -05:00
Glenn Randers-Pehrson
bdb0130aea [devel] Remove "sPLT" from list of chunks that require compressed text 2011-04-01 14:55:01 -05:00
Glenn Randers-Pehrson
5975f31ff0 [devel] Added PNG_READ_COMPRESSED_TEXT_SUPPORTED macro. 2011-04-01 13:15:36 -05:00
Glenn Randers-Pehrson
205483d592 [devel] Added PNG_WRITE_COMPRESSED_TEXT_SUPPORTED macro. 2011-04-01 12:33:42 -05:00
Glenn Randers-Pehrson
3bb8683a79 [devel] Only compile the new zlib re-initializing code when text or iCCP
is supported.
2011-04-01 08:12:24 -05:00
Glenn Randers-Pehrson
bef60dc624 [devel] Updated scripts/symbols.def with new API functions. 2011-04-01 00:28:59 -05:00
Glenn Randers-Pehrson
8eb8833b74 [devel] Updated manual about the new API additions 2011-04-01 00:16:50 -05:00
Glenn Randers-Pehrson
b0525f83e1 [devel] Bump to version libpng-1.5.3beta02 2011-03-31 23:50:46 -05:00
Glenn Randers-Pehrson
ee1369b853 [devel] Imported from libpng-1.5.3beta01.tar 2011-03-31 23:50:36 -05:00
Glenn Randers-Pehrson
ea0c7b699e [devel] Update LAST_ORDINAL to 226 in png.h, to account for new API. 2011-03-31 23:25:29 -05:00
Glenn Randers-Pehrson
f83783115f [devel] Use a mode bit to avoid reopening the zstream except when necessary. 2011-03-31 22:06:04 -05:00
Glenn Randers-Pehrson
ed8aab4d85 [devel] Free zstream memory with deflateEnd before reinitializing it. 2011-03-31 21:33:39 -05:00
Glenn Randers-Pehrson
6bdea98992 [devel] Revised pngtest.c to set the zlib strategy, and restored pngtest.png 2011-03-31 21:14:55 -05:00
Glenn Randers-Pehrson
4a392c74cf [devel] Replace pngtest.png with one compressed with libpng-1.5.3beta01.
The zTXt chunk is 4 bytes larger than before.
2011-03-31 20:56:05 -05:00
Glenn Randers-Pehrson
1ecd786d95 [devel] Enable API for setting zlib non-IDAT parameters. 2011-03-31 20:53:47 -05:00
Glenn Randers-Pehrson
1345cbeea8 [devel] Update change comments (1.5.2 -> 1.5.3) 2011-03-31 20:33:04 -05:00
Glenn Randers-Pehrson
ab23d34dd9 [devel] Update change date 2011-03-31 20:19:28 -05:00
Glenn Randers-Pehrson
907333884f [devel] Bump to version libpng-1.5.3beta01 2011-03-31 20:16:03 -05:00
Glenn Randers-Pehrson
6b3d50b2cd [devel] Re-initialize the zlib compressor before compressing non-IDAT chunks. 2011-03-31 20:14:29 -05:00
Glenn Randers-Pehrson
dcc3505c7b [devel] Imported from libpng-1.5.2.tar 2011-03-31 11:29:05 -05:00
Glenn Randers-Pehrson
0d00d83ef0 [devel] Removed unused "6" and "8" from the key to the transformation matrix 2011-03-30 17:18:32 -05:00
Glenn Randers-Pehrson
47dc5f7b54 [devel] Fix spelling in a comment. 2011-03-30 09:59:02 -05:00
Glenn Randers-Pehrson
f2598a8b60 [devel] Imported from libpng-1.5.2rc03.tar 2011-03-24 23:08:31 -05:00
Glenn Randers-Pehrson
80de04e560 [devel] Don't include standard header files in png.h while building the symbol
table, to avoid cpp failure on SunOS (introduced PNG_BUILDING_SYMBOL_TABLE
macro).
2011-03-24 23:06:26 -05:00
Glenn Randers-Pehrson
77fd083041 [devel] Bump to version libpng-1.5.2rc03 2011-03-24 09:01:33 -05:00
Glenn Randers-Pehrson
22b9a84314 [devel] Imported from libpng-1.5.2rc02.tar 2011-03-22 06:32:08 -05:00
Glenn Randers-Pehrson
f27592a0cd [devel] Fixed a long-standing bug in png_handle_sPLT() when
PNG_NO_POINTER_INDEXING is defined.
2011-03-21 18:05:40 -05:00
Glenn Randers-Pehrson
3f2339b551 [devel] removed "strip" from contrib/pngminim/*/makefile 2011-03-19 22:32:38 -05:00
Glenn Randers-Pehrson
eceff8b3c3 [devel] Added a hint to try CPP=/bin/cpp if "cpp -E" fails in
scripts/pnglibconf.mak and in contrib/pngminim/*/makefile and to try
"STRIP=touch" if strip is missing, eg., on SunOS 5.10
2011-03-19 14:49:03 -05:00
Glenn Randers-Pehrson
f3dd1cc51e [devel] Imported from libpng-1.5.2rc01.tar 2011-03-18 22:03:48 -05:00
Glenn Randers-Pehrson
d32a671dff [devel] Define remaining attributes to blank when MSC_VER<1300. 2011-03-06 16:49:10 -06:00
Glenn Randers-Pehrson
ffc9e9503d [devel] Bump to version libpng-1.5.2beta04 2011-03-03 06:41:16 -06:00
Glenn Randers-Pehrson
38734eeb45 [devel] Imported from libpng-1.5.2beta03.tar 2011-03-03 06:37:45 -06:00
Glenn Randers-Pehrson
41b1ffdf36 [devel] Make PNG_ALLOCATED blank when _MSC_VER<1300 in pngconf.h 2011-03-03 06:24:32 -06:00
Glenn Randers-Pehrson
eb7d7955e5 Updated contrib/pngsuite/README to add the word "modify". 2011-02-27 21:19:23 -06:00
Glenn Randers-Pehrson
4411742328 [devel] Fixed scripts/makefile.vcwin32 2011-02-20 06:17:22 -06:00
Glenn Randers-Pehrson
7c969f347f [devel] Bump to version libpng-1.5.2beta03 2011-02-19 15:59:14 -06:00
Glenn Randers-Pehrson
d08b6bdbf7 [devel] Imported from libpng-1.5.2beta02.tar 2011-02-19 15:51:57 -06:00
Glenn Randers-Pehrson
0b5b4b456c [devel] Updated ANNOUNCE and CHANGES. 2011-02-16 06:41:18 -06:00
Glenn Randers-Pehrson
1faed9c234 [devel] Removed extra png_set_expand_16 from libpng.3 synopses 2011-02-16 06:40:16 -06:00
John Bowler
59010e53f4 [devel] Fix the read/write row callback documentation. 2011-02-16 06:16:31 -06:00
John Bowler
cd11345693 [devel] Correct png_get_current_row_number documentation 2011-02-16 06:15:13 -06:00
John Bowler
9616ad9828 [devel] Revert png_get_current_row_number() to previous (1.5.2beta01) behavior. 2011-02-16 06:13:46 -06:00
John Bowler
8ea598b1d1 [devel] 2011-02-16 06:09:57 -06:00
Glenn Randers-Pehrson
93215674db [devel] Fixed mistake in the descriptions of user read_transform and
write_transform function prototypes in the manual.
The row_info struct should be of type png_row_infop.
2011-02-13 19:42:19 -06:00
Glenn Randers-Pehrson
67703b11fe [devel] Imported from libpng-1.5.2beta01.tar 2011-02-13 07:02:55 -06:00
Glenn Randers-Pehrson
a3791aabaa [devel] Updated CHANGES and ANNOUNCE 2011-02-13 06:59:37 -06:00
Glenn Randers-Pehrson
cad6798a8c [devel] Imported from libpng-1.5.2beta01.tar 2011-02-13 06:13:39 -06:00
Glenn Randers-Pehrson
c85f5f6db0 [master] Add synopsis for png_set_16() to the manual. 2011-02-13 05:56:07 -06:00
Glenn Randers-Pehrson
c36bb79352 [devel] Trim trailing blanks from sources and manual 2011-02-12 09:49:07 -06:00
John Bowler
63d059ab0b [devel] Document png_set_expand_16, correct transformation table. 2011-02-12 09:03:44 -06:00
John Bowler
3aa94d69fb [devel] Sort scripts/pnglibconf.h.prebuilt, plus better comment 2011-02-12 09:02:29 -06:00
John Bowler
4d56296443 [devel] Implement expansion to 16 bits 2011-02-12 09:01:20 -06:00
John Bowler
9b872f4cf9 [devel] Clean up ALPHA flags and transformations 2011-02-12 09:00:16 -06:00
John Bowler
5432c01ffd [devel] Fix png_get_current_row_number in the interlaced case. 2011-02-12 08:59:17 -06:00
John Bowler
9c69360e97 [devel] Fix gcc -pendantic warnings, handle Cygwin longjmp fix png_read_png 2011-02-12 08:58:21 -06:00
John Bowler
6a6d79fc00 [devel] turn on interlace handling in png_read_png 2011-02-12 08:56:40 -06:00
Glenn Randers-Pehrson
c83d421d9e Revert "[devel] Changed empty parameter to PNG_BLANK in PNG_EXPORTA definition to"
This reverts commit 2438825d77.
2011-02-12 08:54:42 -06:00
Glenn Randers-Pehrson
2438825d77 [devel] Changed empty parameter to PNG_BLANK in PNG_EXPORTA definition to
accommodate the old VisualC++ preprocessor.
Defined PNG_ALLOCATED to empty for MSC_VER < 1300.
2011-02-12 07:49:28 -06:00
Glenn Randers-Pehrson
a257f80d95 [devel] Reverted the "__clang__" special case in pngconf.h 2011-02-06 06:20:51 -06:00
Glenn Randers-Pehrson
973c493e1b [devel] Add __clang__ special case in pngconf.h 2011-02-04 18:51:00 -06:00
Glenn Randers-Pehrson
58bd925acc [devel] Add CHANGES entry about shadow warnings fix 2011-02-03 21:54:53 -06:00
Glenn Randers-Pehrson
8625b394b5 [devel] Changed some names of formal parameters to avoid Shadow warnings 2011-02-03 21:43:38 -06:00
Glenn Randers-Pehrson
47a007a945 --amend [devel] Imported from libpng-1.5.2beta01.tar 2011-02-03 21:31:34 -06:00
Glenn Randers-Pehrson
3d3aae1697 --amend [devel] Imported from libpng-1.5.1.tar 2011-02-02 23:00:03 -06:00
Glenn Randers-Pehrson
2506e53400 --amend [devel] Imported from libpng-1.5.1rc02.tar 2011-01-31 10:26:55 -06:00
Glenn Randers-Pehrson
25d2d47f86 [devel] updated the commentary in pngpriv.h about PNG_UNUSED(). 2011-01-31 10:25:10 -06:00
Glenn Randers-Pehrson
4c0eaee5c6 [devel] Changed PNG_UNUSED to "(void)param;" 2011-01-30 11:55:35 -06:00
Glenn Randers-Pehrson
cbbe9a5c01 [devel] Added a request in the manual that applications do not use "png_" or
"PNG_" to begin any of their own symbols.
2011-01-29 16:12:11 -06:00
Glenn Randers-Pehrson
7ccc2daf09 --amend [devel] Imported from libpng-1.5.1rc01.tar.gz 2011-01-28 23:12:23 -06:00
Glenn Randers-Pehrson
ef123cc005 [devel] Imported from libpng-1.5.1beta11.tar 2011-01-28 15:30:05 -06:00
Glenn Randers-Pehrson
254670338e [devel] Imported from libpng-1.5.1beta11.tar 2011-01-28 15:16:05 -06:00
Glenn Randers-Pehrson
bf3293a3cb [devel] Fixed comments around PNG_UNUSED macro definition in pngpriv.h 2011-01-28 15:14:43 -06:00
Glenn Randers-Pehrson
4e7c47fb73 [devel] Updated CHANGES and ANNOUNCE. 2011-01-28 07:05:53 -06:00
John Bowler
afea7d19e0 [devel] Add-transform-tests-to-pngvalid-simplify-arguments 2011-01-28 06:38:14 -06:00
John Bowler
fca50dfab3 [devel] Correct-local-variable-type-in-new-API-png_process 2011-01-28 06:34:02 -06:00
Glenn Randers-Pehrson
4e2e14addf [devel] Changed PNG_UNUSED from "param=param;" to "{if(param){}}". 2011-01-27 13:23:08 -06:00
Glenn Randers-Pehrson
0e15da5b94 [devel] Simplified the PNG_UNUSED macro. 2011-01-27 12:45:56 -06:00
Glenn Randers-Pehrson
2774238722 [devel] Trying a different PNG_UNUSED macro. 2011-01-27 09:37:34 -06:00
Glenn Randers-Pehrson
0012e9cd54 [devel] Imported from libpng-1.5.1beta10.tar 2011-01-26 22:05:32 -06:00
Glenn Randers-Pehrson
8d0bc0f026 [devel] Made the manual, synopses, and function prototypes use the function
argument names file_gamma, int_file_gamma, and srgb_intent consistently.
2011-01-25 22:15:58 -06:00
Glenn Randers-Pehrson
81ce889435 [devel] Fixed incorrect examples of callback prototypes in the manual.
"png_ptr ptr" should be "png_structp png_ptr"
2011-01-24 08:04:37 -06:00
Glenn Randers-Pehrson
135d17ce3e [devel] Bump to version libpng-1.5.1beta10 2011-01-24 00:18:05 -06:00
Glenn Randers-Pehrson
9962b84659 [devel] Imported from libpng-1.5.1beta09.tar 2011-01-24 00:14:22 -06:00
Glenn Randers-Pehrson
b0b058b767 [devel] Updated CHANGDES and ANNOUNCE files about John's checkin. 2011-01-24 00:13:36 -06:00
John Bowler
f21a0d0eee [devel] Enhance pngvalid, correct an error in gray_to_rgb, correct doc error. 2011-01-23 23:55:19 -06:00
Glenn Randers-Pehrson
d52cd11ed2 [devel] Bump to version libpng-1.5.1beta09 2011-01-22 20:23:07 -06:00
Glenn Randers-Pehrson
3bd489d315 [devel] Imported from libpng-1.5.1beta08.tar 2011-01-22 20:19:10 -06:00
Glenn Randers-Pehrson
cbabd9c7e1 [devel] Updated CHANGES and ANNOUNCE. 2011-01-22 18:37:17 -06:00
John Bowler
f19abd6725 [devel] Added four new convenience functions (John Bowler) 2011-01-22 18:29:24 -06:00
John Bowler
0a5c9c02fa [devel] Corrected const_png_ in png.h to png_const_ to avoid polluting
the namespace.  Added png_get_current_row_number and
 png_get_current_pass_number for the
 benefit of the user transform callback.
 Added png_process_data_pause and png_process_data_skip for the benefit of
 progressive readers that need to stop data processing or want to optimize
 skipping of unread data (e.g. if the reader marks a chunk to be skipped.)
2011-01-22 17:36:34 -06:00
Glenn Randers-Pehrson
155ce40218 [devel] Rebuilt Makefile.in and configure from the new sources. 2011-01-22 17:12:32 -06:00
John Bowler
71a10f2ca1 [devel] Attempted to fix cpp on Solaris with S. Studio 12 cc, fix build
Added a make macro DFNCPP that is a CPP that will accept the tokens in
    a .dfn file and adds configure stuff to test for such a CPP.  ./configure
    should fail if one is not available.
2011-01-22 17:03:33 -06:00
Glenn Randers-Pehrson
a861ed971e [devel] Added synopses for the IO_STATE functions and other missing synopses
to the manual. Removed the synopses from libpngpf.3 because they
    were out of date and no longer useful.  Better information can be
    obtained by reading the prototypes and comments in pngpriv.h
2011-01-22 16:46:37 -06:00
Glenn Randers-Pehrson
bb98bcba91 [manual] Updated libpng.3 synopses to agree with scripts/symbols.def 2011-01-22 16:27:39 -06:00
John Bowler
adaffe7761 [devel] Add png_get_io_chunk_type to scripts/symbols.def 2011-01-22 14:35:36 -06:00
Glenn Randers-Pehrson
cf7cce6da5 [devel] Corrected (again) the ordinal of png_get_io_chunk_type(). 2011-01-22 12:42:43 -06:00
Glenn Randers-Pehrson
aa23159209 [devel] Bump to version libpng-1.5.1beta08 2011-01-22 12:37:40 -06:00
Glenn Randers-Pehrson
c63409b078 [devel] Corrected the ordinal for the new function in png.h 2011-01-22 09:42:19 -06:00
Glenn Randers-Pehrson
eac893b60b [devel] Added synopses for the IO_STATE functions to the manual. 2011-01-22 09:06:38 -06:00
Glenn Randers-Pehrson
a63dbedead [devel] Added png_get_io_chunk_type() and deprecated png_get_io_chunk_name() 2011-01-22 08:51:19 -06:00
Glenn Randers-Pehrson
5c5db5a55f [devel] Imported from libpng-1.5.1beta07.tar 2011-01-21 23:32:11 -06:00
Glenn Randers-Pehrson
7bc25013f0 [devel] Updated manual synopses, fixed several typos,
put paramter descriptions in proper order, applied libpng indentation
style in code snippets.
2011-01-21 23:29:09 -06:00
Glenn Randers-Pehrson
b86b4928d6 [devel] Added const_png_structp and const_png_infop types, and used them in
prototypes for most png_get_*() functions.
2011-01-21 23:12:51 -06:00
Glenn Randers-Pehrson
2cb633b915 [devel] In the manual, describe the png_get_IHDR() arguments in the right order. 2011-01-21 08:31:29 -06:00
Glenn Randers-Pehrson
47457a01f7 [devel] Bump to version libpng-1.5.1rc01 2011-01-21 08:25:26 -06:00
Glenn Randers-Pehrson
77c3bf17ca [devel] Imported from libpng-1.5.1beta06.tar 2011-01-20 16:02:05 -06:00
John Bowler
168a433352 [devel] Eliminate more GCC shadow warnings 2011-01-16 19:32:22 -06:00
Glenn Randers-Pehrson
1408c2afeb [devel] Prevent png_push_crc_skip() from hanging while reading an unknown chunk
or an over-large compressed zTXt chunk with the progressive reader.
2011-01-16 14:16:28 -06:00
Glenn Randers-Pehrson
c9ae31c23a [devel] Bump to version libpng-1.5.1beta06 2011-01-16 13:40:05 -06:00
Glenn Randers-Pehrson
2ca8490a32 [devel] Imported from libpng-1.5.1beta05.tar 2011-01-16 13:36:02 -06:00
Glenn Randers-Pehrson
2368a92b2d [devel] Changed variable names png_index, png_div, png_exp, and png_gamma to
char_index, divisor, exp_b10, and gamma_val, respectively, and
changed exp() back to png_exp().
2011-01-16 13:32:05 -06:00
Glenn Randers-Pehrson
498d19243c [devel] Bump to version libpng-1.5.1beta05 2011-01-16 00:42:57 -06:00
Glenn Randers-Pehrson
27bf8986f9 [devel] Imported from libpng-1.5.1beta04.tar 2011-01-16 00:40:17 -06:00
Glenn Randers-Pehrson
e03dd5bd64 [devel] Prefixed variable names index, div, exp, gamma with "png_"
to avoid "shadow" warnings.  Revised png_fixed() in png.c to avoid compiler
warning about reaching the end without returning anything.
2011-01-16 00:38:30 -06:00
Glenn Randers-Pehrson
5acd8fe9cb [devel] Add CHANGES entry about fixing pngvalid "sample" function. 2011-01-15 22:41:42 -06:00
John Bowler
e2062f9fa0 [devel] Correct pngvalid gamma test to check each color sample, not just red. 2011-01-15 22:36:33 -06:00
Glenn Randers-Pehrson
9f45c8e6e1 [devel] Updated copyright year in LICENSE, CMakeLists.txt, and manual 2011-01-15 19:35:03 -06:00
Glenn Randers-Pehrson
00879b155a [devel] Mentioned in the documentation that applications must #include "zlib.h"
if they need access to anything in zlib.h, and that a number of
macros such as png_memset() are no longer accessible by applications.
2011-01-15 19:25:34 -06:00
Glenn Randers-Pehrson
366eb49f99 [devel] Bump to version libpng-1.5.1beta04 2011-01-15 11:45:19 -06:00
Glenn Randers-Pehrson
4a5a1ec0b4 [devel] Updated documentation of png_set_iCCP(). 2011-01-15 11:43:28 -06:00
Glenn Randers-Pehrson
f3c51e4a28 [devel] Updated documentation of png_set|get_tRNS(). 2011-01-15 10:25:25 -06:00
Glenn Randers-Pehrson
b764c60a12 [devel] Imported from libpng-1.5.1beta03.tar 2011-01-14 21:20:20 -06:00
Glenn Randers-Pehrson
62e956e1dd [devel] Imported from libpng-1.5.1beta02.tar 2011-01-14 17:10:38 -06:00
Glenn Randers-Pehrson
d3edb3f27c [devel] Updated CMakeLists.txt (Clifford Yapp) 2011-01-14 17:08:28 -06:00
Glenn Randers-Pehrson
e15a96b333 [devel] Fixed a bug in handling of interlaced images (bero at arklinux.org). 2011-01-14 15:47:37 -06:00
Glenn Randers-Pehrson
3200e1e088 [devel] Bump to version libpng-1.5.1beta02 2011-01-08 21:02:22 -06:00
Glenn Randers-Pehrson
033155ca21 [devel] Imported from libpng-1.5.1beta01.tar 2011-01-08 15:50:00 -06:00
Glenn Randers-Pehrson
e8edb5a809 [devel] Update ANNOUNCE and CHANGES to reflect the recent bugfixes. 2011-01-08 14:56:49 -06:00
John Bowler
4e230b087e [devel] Proper fix for the failure to handle palette mapped images correctly. 2011-01-08 14:49:25 -06:00
John Bowler
a96117f52c [devel] Ensure that png_rgb_to_gray ignores palette mapped images. 2011-01-08 14:41:25 -06:00
Glenn Randers-Pehrson
fff1093227 [devel] Same situation with png_set_iCCP(). 2011-01-08 11:05:47 -06:00
Glenn Randers-Pehrson
9d23b40c24 [devel] Added a note in the manual that the type of the iCCP profile changed
from png_charpp to png_bytepp in png_get_iCCP().  This change happened
in version 1.5.0beta36 but is not noted in the CHANGES.  Also, revised
the "synopsis" for png_get_iCCP() in libpng.3 accordingly.
2011-01-08 10:42:01 -06:00
Glenn Randers-Pehrson
5c92dec542 [devel] The wrong pngrutil.c (version 1.4.1) was checked in. 2011-01-07 18:28:47 -06:00
Glenn Randers-Pehrson
9dd1cdff66 [devel] Added description of png_set_crc_action() to the manual. 2011-01-06 21:42:36 -06:00
Glenn Randers-Pehrson
20788d3b90 [devel] Add typecasts to stifle compiler warnings in pngrutil.c 2011-01-06 09:01:04 -06:00
Glenn Randers-Pehrson
512cbf8ade [devel] Bump to version libpng-1.5.1beta01 2011-01-06 08:11:22 -06:00
Glenn Randers-Pehrson
59fa3e920c [devel] Fixed a small typo in the manual. 2011-01-06 07:07:06 -06:00
Glenn Randers-Pehrson
f5ea1b7095 [devel] Imported from libpng-1.5.0.tar 2011-01-06 06:45:07 -06:00
Glenn Randers-Pehrson
64b863cd2a [devel] Update copyright year and bump to version libpng-1.5.0rc07 2011-01-04 09:58:33 -06:00
Glenn Randers-Pehrson
a7d604e681 [devel] Imported from libpng-1.5.0rc06.tar 2011-01-04 09:09:27 -06:00
Glenn Randers-Pehrson
977f6eba3d [devel] Changed new configure option "zprefix=string" to "zlib-prefix=string" 2011-01-04 09:07:45 -06:00
Glenn Randers-Pehrson
8f8061adba [devel] Imported from libpng-1.5.0rc05.tar 2010-12-31 09:15:08 -06:00
Glenn Randers-Pehrson
8409b8f6db [devel] Fixed typo in a comment in CMakeLists.txt
(libpng14 => libpng15) (Cosmin)
2010-12-31 09:14:01 -06:00
Glenn Randers-Pehrson
f2e2833f28 [devel] Fixed bug in background transformation handling in pngrtran.c
(it was looking for the flag in png_ptr->transformations instead of in
png_ptr->flags).
2010-12-28 21:48:43 -06:00
Glenn Randers-Pehrson
332594dd06 [devel] Bump to version libpng-1.5.0rc04 2010-12-27 22:18:05 -06:00
Glenn Randers-Pehrson
7de3260017 [devel] Imported from libpng-1.5.0rc03.tar 2010-12-27 22:15:18 -06:00
John Bowler
e06092a24e Removed scripts/pngwin.def and pngwin.dfn, added def.dfn, revised Makefile.am 2010-12-27 22:10:19 -06:00
Glenn Randers-Pehrson
57731529dc [devel] Bump to version libpng-1.5.0rc03 2010-12-27 21:35:41 -06:00
Glenn Randers-Pehrson
9830f98ff9 [devel] Imported from libpng-1.5.0rc02.tar 2010-12-27 21:31:30 -06:00
Glenn Randers-Pehrson
5aff745c15 [devel] Eliminated references to the scripts/*.def files in project/visualc71. 2010-12-27 21:29:17 -06:00
Glenn Randers-Pehrson
3af77feaa3 [devel] Bump to version libpng-1.5.0rc02 2010-12-27 09:21:50 -06:00
Glenn Randers-Pehrson
fd20a5ae9b [devel] Imported from libpng-1.5.0rc01.tar 2010-12-27 08:55:13 -06:00
Glenn Randers-Pehrson
d3b76572c7 [devel] Bump to version libpng-1.5.0beta59 2010-12-19 17:06:32 -06:00
Glenn Randers-Pehrson
6e97410f66 [devel] Imported from libpng-1.5.0beta58.tar 2010-12-19 16:47:04 -06:00
John Bowler
b2888db940 [devel] Updated CHANGES and ANNOUNCE with recent changes 2010-12-19 16:45:38 -06:00
John Bowler
56a739bf4e [devel] Minor changes to work round warnings in gcc 3.4 2010-12-19 16:33:20 -06:00
John Bowler
8f6628ed9f [devel] Fix the clean rule to remove pngtest-log.txt 2010-12-19 16:31:47 -06:00
John Bowler
660c6e4d70 [devel] Fixed interlace image handling and add test cases (John Bowler) 2010-12-19 06:22:23 -06:00
Glenn Randers-Pehrson
4c93a7cb6f [devel] Bump to version libpng-1.5.0beta58 2010-12-09 06:11:18 -06:00
Glenn Randers-Pehrson
9a462393e4 [devel] Imported from libpng-1.5.0beta57.tar 2010-12-09 06:08:04 -06:00
Glenn Randers-Pehrson
138142583e [devel] Updated the prebuilt configuration files to autoconf version 2.68 2010-12-09 06:06:48 -06:00
Glenn Randers-Pehrson
571db950d1 [devel] Added "--with-zprefix=<string>" to configure.ac 2010-12-09 06:03:03 -06:00
John Bowler
15c9be10b3 [devel] Merge standard error with standard output from test scripts 2010-12-08 20:33:39 -06:00
Glenn Randers-Pehrson
d5e3590df7 [devel] Don't display test results (except PASS/FAIL) when running "make test".
Instead put them in pngtest-log.txt
2010-12-08 17:26:50 -06:00
John Bowler
b54498edea [devel] Enable the strip16 tests in pngvalid 2010-12-08 16:26:21 -06:00
Glenn Randers-Pehrson
ba851ccd9f [devel] Changed pngvalid options in test-pngvalid-*.sh scripts 2010-12-08 09:55:57 -06:00
Glenn Randers-Pehrson
6f1af78401 [devel] Revised "make test" to only print PASS or FAIL for pngvalid tests. 2010-12-07 22:33:17 -06:00
Glenn Randers-Pehrson
798b1613ab [devel] Removed references to pngvcrd.c and pnggccrd.c from the vstudio project. 2010-12-07 22:31:09 -06:00
Glenn Randers-Pehrson
9fa9ebebc0 [devel] Updated "libpng14" to "libpng15" in the visualc71 project. 2010-12-07 22:28:53 -06:00
Glenn Randers-Pehrson
6735058024 [devel] Added some white space in pngvalid.c 2010-12-07 16:13:22 -06:00
Glenn Randers-Pehrson
9f044c17fa [devel] Added some whitespace in png.h and pngpriv.h, revised a comment
in pngvalid.c
2010-12-07 14:59:43 -06:00
Glenn Randers-Pehrson
d02f246887 [devel] Improved missing symbol handling in checksym.awk; symbols missing in
both the old and new files can now be optionally ignored, treated as errors
or warnings.
2010-12-07 14:42:04 -06:00
Glenn Randers-Pehrson
f1cf90238b [devel] Documented the pngvalid gamma error summary with additional comments
and print statements.
2010-12-07 14:40:33 -06:00
Glenn Randers-Pehrson
845b74e6d4 [devel] Bump to version libpng-1.5.0beta57 2010-12-06 20:25:05 -06:00
Glenn Randers-Pehrson
e24196eeeb [devel] Imported from libpng-1.5.0beta56.tar 2010-12-06 20:24:57 -06:00
Glenn Randers-Pehrson
234e543afb [devel] Make PNG_EXPORT not user definable (leaving only PNG_EXPORTA definable) 2010-12-06 20:18:51 -06:00
Glenn Randers-Pehrson
49a56e7688 [devel] Included documentation of changes in 1.5.0 from 1.4.x
in libpng-manual.txt and libpng.3
2010-12-06 20:06:01 -06:00
Glenn Randers-Pehrson
5f59c87604 [devel] Fixed some incorrect "=" macro names in pnglibconf.dfa 2010-12-06 18:45:59 -06:00
Glenn Randers-Pehrson
23d3970929 [devel] Revised PNG_EXPORT() macro and added PNG_EXPORTA() macro, with the
objective of simplifying and improving the cosmetic appearance of png.h.
2010-12-06 18:28:02 -06:00
Glenn Randers-Pehrson
27df3a44eb [devel] Added PNG_EXPORTX() and PNG_EXPORTA() macros for testing,
with the objective of improving the cosmetic appearance of png.h.
2010-12-06 12:38:42 -06:00
Glenn Randers-Pehrson
a451725242 [devel]
Added some commentary about PNG_EXPORT in png.h and pngconf.h
2010-12-06 08:54:55 -06:00
Glenn Randers-Pehrson
d546f4399f [devel] Added the private PNG_UNUSED() macro definition in pngpriv.h.
(adapted from the UNUSED() macro in pngvalid.c by John Bowler)
2010-12-04 20:41:36 -06:00
Glenn Randers-Pehrson
38ef3a592c [devel] Added whitespace and fixed typos in pngvalid.c comments. 2010-12-03 11:22:31 -06:00
Glenn Randers-Pehrson
caed8f30ee [devel] Bump to version 1.5.0beta56 2010-11-27 18:09:36 -06:00
Glenn Randers-Pehrson
2fe7f06a55 [devel] Removed some markup (%10%) from libpng-manual.txt and libpng.3 2010-11-25 07:31:36 -06:00
Glenn Randers-Pehrson
5b40b01319 [devel] Added a remark about png_get_uint_16 in the libpng-manual.txt
and libpng.3
2010-11-25 07:16:29 -06:00
Glenn Randers-Pehrson
b93e0326d2 [devel] Comment about 1.4.0 through 1.4.4 versions of png_get_uint_16 macro
which returned the wrong type (png_uint_32 instead of png_uint_16).
2010-11-25 06:56:20 -06:00
Glenn Randers-Pehrson
2776d5e9e6 [devel] Bump to version libpng-1.5.0beta56 2010-11-21 15:19:55 -06:00
Glenn Randers-Pehrson
c3ed437d9e [devel] Imported from libpng-1.5.0beta55.tar 2010-11-21 15:05:20 -06:00
Glenn Randers-Pehrson
b3edc73afa [devel] Changes to remove gcc warnings (John Bowler)
Certain optional gcc warning flags resulted in warnings in libpng code.
With these changes only -Wconversion and -Wcast-qual cannot be turned on.
Changes are trivial rearrangements of code.  -Wconversion is not possible
for pngrutil.c (because of the widespread use of += et al on variables
smaller than (int) or (unsigned int)) and -Wcast-qual is not possible
with pngwio.c and pngwutil.c because the 'write' callback and zlib
compression both fail to declare their input buffers with 'const'.
2010-11-21 14:06:41 -06:00
Glenn Randers-Pehrson
105c416007 [devel] Added comment in pngrutil.c about some extra parentheses. 2010-11-20 22:59:47 -06:00
Glenn Randers-Pehrson
a581556b17 [master] Revised png_get_uint_32, png_get_int_32, png_get_uint_16 (Cosmin)
Moved reading of file signature into png_read_sig (Cosmin)
Fixed atomicity of chunk header serialization (Cosmin)
Added test for io_state in pngtest.c (Cosmin)
Added "#!/bin/sh" at the top of contrib/pngminim/*/gather.sh scripts.
2010-11-20 21:48:29 -06:00
Glenn Randers-Pehrson
d801b3882c [devel] Bump to version libpng-1.5.0beta55 2010-11-11 07:19:19 -06:00
Glenn Randers-Pehrson
ed3dfbd25a [devel] Imported from libpng-1.5.0beta54.tar 2010-11-10 07:05:07 -06:00
Glenn Randers-Pehrson
ccadcae40b [devel] Added whitespace in pngrutil.c, pngwtran.c, and pngwutil.c 2010-10-23 17:29:13 -05:00
Glenn Randers-Pehrson
33893095b5 [devel] Used a consistent structure for the pngget.c functions.
added some whitespace in pngrio.c and pngrutil.c
2010-10-23 13:20:18 -05:00
Glenn Randers-Pehrson
5c5f593ffb [devel] Standardized the structure of some pngget.c functions. 2010-10-23 10:14:42 -05:00
Glenn Randers-Pehrson
62333ba0cb [devel] Adjusted some whitespace in pngset.c 2010-10-23 08:48:51 -05:00
Glenn Randers-Pehrson
c508081afc [devel] Require 48 bytes, not 64 bytes, for big_row_buf in overflow checks.
Also removed two obsolete comments from png.c
2010-10-23 08:26:26 -05:00
Glenn Randers-Pehrson
71c0dd6c4a [devel] Bump to version libpng-1.5.0beta54 2010-10-17 20:37:37 -05:00
Glenn Randers-Pehrson
63495a4ba4 [devel] Imported from libpng-1.5.0beta53.tar 2010-10-17 20:36:57 -05:00
Glenn Randers-Pehrson
475074dfb5 [devel] Changed mention of libpng.txt to libpng-manual.txt in CMakeLists.txt 2010-10-17 13:07:38 -05:00
Glenn Randers-Pehrson
557b256b32 [devel] Changed "libpng.txt" to "libpng-manual.txt" in libpng.3 2010-10-17 12:55:04 -05:00
Glenn Randers-Pehrson
48854aec52 [devel] Rename libpng.txt to libpng-manual.txt 2010-10-17 12:52:29 -05:00
Glenn Randers-Pehrson
f3abb2c352 [devel] Rename libpng.txt to libpng-manual.txt 2010-10-17 12:51:53 -05:00
Glenn Randers-Pehrson
88910f5b9d [devel] Revised and renamed the typedef in png.h and png.c that was designed
to catch library and header mismatch, also found at the end of pngtest.c.
2010-10-16 20:38:45 -05:00
Glenn Randers-Pehrson
a60f8a9c1f [devel] libpng-version.txt -> libpng.txt in Makefile.am,.in 2010-10-16 20:15:44 -05:00
Glenn Randers-Pehrson
10973a581f [devel] Removed obsolete remarks about setjmp handling from INSTALL. 2010-10-16 19:40:09 -05:00
Glenn Randers-Pehrson
a655407f1b [devel] Use document name "libpng.txt" instead of "libpng-version.txt"
as it was prior to libpng-1.2.16beta2, to simplify version differences.
2010-10-16 19:32:44 -05:00
Glenn Randers-Pehrson
a9b4f16b04 [devel] Disabled "color-tests" by default in Makefile.am
so it will work with automake versions earlier than 1.11.1
2010-10-16 08:04:15 -05:00
Glenn Randers-Pehrson
6612114f86 [devel] Updated INSTALL
(omitted autogen.sh, ../configure should be ./configure)
2010-10-16 07:22:19 -05:00
Glenn Randers-Pehrson
66676016f6 [devel] Updated INSTALL to mention using "make maintainer-clean" and
to remove obsolete statement about a custom ltmain.sh
2010-10-16 07:18:09 -05:00
Glenn Randers-Pehrson
e5900f1bc9 [devel] Removed "betaNN" from pnglibconf.dfa and pnglibconf.h.prebuilt 2010-10-15 20:05:41 -05:00
Glenn Randers-Pehrson
85497d7a4b [devel] Changed embedded dates in some scripts to "(PENDING RELEASE)" 2010-10-15 19:58:56 -05:00
Glenn Randers-Pehrson
5393915bf6 [devel] Bump to version libpng-1.5.0beta53 2010-10-15 19:28:31 -05:00
Glenn Randers-Pehrson
f197d6d0f6 [devel] Imported from libpng-1.5.0beta52.tar 2010-10-15 19:28:22 -05:00
Glenn Randers-Pehrson
4fa1816cf6 [devel] Restored some of the embedded dates 2010-10-15 19:14:36 -05:00
Glenn Randers-Pehrson
1c91ab2586 [devel] Bump to version libpng-1.5.0beta52 2010-10-15 15:13:31 -05:00
Glenn Randers-Pehrson
f0eda4e8d7 [devel] Imported from libpng-1.5.0beta51.tar 2010-10-15 15:08:42 -05:00
Glenn Randers-Pehrson
a0de64f3c3 [devel] Bump to version 1.5.0beta51 2010-10-14 07:35:54 -05:00
Glenn Randers-Pehrson
7e1fabe2f7 [devel] Imported from libpng-1.5.0beta50.tar 2010-10-14 07:35:45 -05:00
Glenn Randers-Pehrson
79b2d64a67 [devel] also check for negative out-of-range text compression mode 2010-10-13 07:31:14 -05:00
Glenn Randers-Pehrson
e34f80e5aa [devel] Check for out-of-range text compression mode in png_set_text(). 2010-10-13 06:55:30 -05:00
Glenn Randers-Pehrson
bc363eca41 [devel] Removed some unwanted spaces 2010-10-12 21:17:00 -05:00
Glenn Randers-Pehrson
d233287325 [devel] Removed space after (type cast). 2010-10-12 19:19:28 -05:00
Glenn Randers-Pehrson
c127057f7d [devel] Suppressed a compiler warning in png_handle_sPLT(). 2010-10-12 12:47:48 -05:00
Glenn Randers-Pehrson
9a75d99438 [devel] changed "(unsigned int)" to "(unsigned long)" typecasts
in printf statements in pngvalid.c, and changed %ud to %lu.
2010-10-08 16:27:14 -05:00
Glenn Randers-Pehrson
e9c395a3bf [devel] Added some "(unsigned int)" typecasts in pngvalid.c printf statements. 2010-10-08 13:35:02 -05:00
Glenn Randers-Pehrson
4f5b846bb4 [devel] Revised Makefile.in to account for mkinstalldirs being removed
and re-removed mkinstalldirs.
2010-10-07 22:49:40 -05:00
Glenn Randers-Pehrson
79bdad205f [devel] Restored mkinstalldirs which was removed from version 1.5.0beta48. 2010-10-07 22:35:37 -05:00
Glenn Randers-Pehrson
94b582e45e [devel] Bump to version 1.5.0beta50 2010-10-07 22:34:33 -05:00
Glenn Randers-Pehrson
1b49a71df4 [devel] Imported from libpng-1.5.0beta49.tar 2010-10-07 21:01:17 -05:00
Glenn Randers-Pehrson
209eee579a [devel] Bump to version libpng-1.5.0beta49 2010-10-04 23:06:17 -05:00
Glenn Randers-Pehrson
83b4fc4af4 [devel] Imported from libpng-1.5.0beta48.tar 2010-10-04 23:06:09 -05:00
Glenn Randers-Pehrson
b0876110ca [devel] Fixed problem with symbols creation in Makefile.am which was assuming
that CCP writes to standard output by default (Martin Banky).
2010-10-04 22:24:14 -05:00
Glenn Randers-Pehrson
110c9367bd [devel] Revert autoconf scripts to autoconf-2.65 and automake-1.11.1 2010-10-04 17:42:14 -05:00
Glenn Randers-Pehrson
bab8df881a [devel] Rebuilt configure scripts with autoconf-2.68 instead of autoconf-2.65 2010-10-04 10:07:18 -05:00
Glenn Randers-Pehrson
e89d33ab3d [devel] Fixed long lines and indentation in CMakeLists.txt 2010-10-02 21:36:02 -05:00
Glenn Randers-Pehrson
0c3fea306a [devel] Revised CMakeLists.txt to work with libpng-1.5.0 2010-10-02 21:25:01 -05:00
Glenn Randers-Pehrson
a2218a4b6d [devel] Revised autogen.sh to recognize and use $AUTOCONF, $AUTOMAKE,
$AUTOHEADER, $AUTOPOINT, $ACLOCAL and $LIBTOOLIZE
2010-09-14 16:06:08 -05:00
Glenn Randers-Pehrson
4f8e7e5f41 [devel] Bump to version libpng-1.5.0beta48 2010-09-10 22:16:59 -05:00
Glenn Randers-Pehrson
e197cded79 [devel] Imported from libpng-1.5.0beta47.tar 2010-09-10 22:16:51 -05:00
Glenn Randers-Pehrson
bcb3aac3c5 [devel] Fixed a number of problems with 64-bit compilation reported by Visual
Studio 2010 (John Bowler).
2010-09-10 22:05:27 -05:00
Glenn Randers-Pehrson
9a5c1c180f [devel] Bump to version libpng-1.5.0beta47 2010-08-28 06:25:37 -05:00
Glenn Randers-Pehrson
39515c9ee0 [devel] Imported from libpng-1.5.0beta46.tar 2010-08-28 06:25:21 -05:00
Glenn Randers-Pehrson
8ca1700976 [devel] Expanded commentary in scripts/pnglibconf.dfa 2010-08-27 14:31:19 -05:00
Glenn Randers-Pehrson
fded04fbf6 [devel] Revised pngvalid.c 16-to-8-big conversion tests 2010-08-27 14:21:21 -05:00
Glenn Randers-Pehrson
9c69091c9d [devel] Fix typo in pngtrans.c (ifndef should be ifdef) 2010-08-27 11:39:38 -05:00
Glenn Randers-Pehrson
4554a54a6c [devel] Don't force 1, 2, and 4-bit depths to 8 when PNG_NO_16BIT is defined. 2010-08-27 10:48:45 -05:00
Glenn Randers-Pehrson
8c69d7bc63 [devel] Added reference to scripts/pnglibconf.h.prebuilt in the visualc71 project. 2010-08-27 10:13:15 -05:00
Glenn Randers-Pehrson
0c57414490 [devel] Added "option READ_16_TO_8 on" to contrib/pngminim/decoder/pnglibconf.dfa
and contrib/pngminim/preader/pnglibconf.dfa
2010-08-27 09:37:06 -05:00
Glenn Randers-Pehrson
2f70282295 [devel] Revised pngvalid.c to test 16-to-8 bit-depth reduction. 2010-08-27 06:39:23 -05:00
Glenn Randers-Pehrson
55f71781d8 [devel] Made PNG_READ_16_TO_8 depend on PNG_NO_16BIT in scripts/pnglibconf.dfa 2010-08-26 22:47:59 -05:00
Glenn Randers-Pehrson
925d23b32a [devel] Conditionally compile parts of pngrtran.c and pngtrans.c
depending on PNG_16BIT_SUPPORTED
2010-08-26 21:43:18 -05:00
Glenn Randers-Pehrson
4e4876104d [devel] conditionally compile parts of png.c depending on PNG_16BIT_SUPPORTED 2010-08-26 21:41:04 -05:00
Glenn Randers-Pehrson
0717029581 [devel] Update CHANGES and ANNOUNCE 2010-08-26 19:42:01 -05:00
Glenn Randers-Pehrson
a774c5de84 [devel] Updated scripts/pnglibconf.h.prebuilt
and fixed a spelling error
2010-08-26 19:37:55 -05:00
Glenn Randers-Pehrson
a041ae4cde [devel] Updated TODO, about conditional 16BIT support and extending pngvalid.c 2010-08-26 17:20:00 -05:00
Glenn Randers-Pehrson
7d3e6732fb [devel] Added PNG_WRITE_16BIT_SUPPORTED option. 2010-08-26 17:14:07 -05:00
Glenn Randers-Pehrson
07d9fc9478 [devel] Added new private header files to libpng_sources in CMakeLists.txt 2010-08-26 17:11:55 -05:00
Glenn Randers-Pehrson
be6f0c2c50 [devel] Bump to version libpng-1.5.0beta46 2010-08-26 07:10:56 -05:00
Glenn Randers-Pehrson
a7119547e2 [devel] Imported from libpng-1.5.0beta45.tar 2010-08-26 07:10:48 -05:00
Glenn Randers-Pehrson
c97cf70bc7 [devel] Remove unnecessary defines from contrib/pngminim/*/pngusr.h 2010-08-24 21:22:27 -05:00
Glenn Randers-Pehrson
4f108d8af6 [devel] Supply default values for PNG_USER_PRIVATEBUILD and PNG_USER_DLLFNAME_POSTFIX
in pngpriv.h in case the user forgot to define them in their pngusr.h.  This
means it is safe for people not building a DLL to omit these defines from pngusr.h.
2010-08-24 21:05:43 -05:00
Glenn Randers-Pehrson
f45a345adb [devel] projects/vstudio: fix typo in pnglibconf.vcxproj 2010-08-24 20:19:28 -05:00
Glenn Randers-Pehrson
54872297d3 [devel] Renamed scripts/pnglibconf.h in Makefile.am and Makefile.in 2010-08-24 16:18:05 -05:00
Glenn Randers-Pehrson
8c66786419 [devel] Renamed scripts/pnglibconf.h to scripts/pnglibconf.h.prebuilt 2010-08-24 16:16:35 -05:00
Glenn Randers-Pehrson
15333cd28d [devel] Changed pngvalid to work when floating point APIs are disabled 2010-08-24 15:29:52 -05:00
Glenn Randers-Pehrson
b5b38edf30 [devel] Added an explicit make step to projects/vstudio for pnglibconf.h
Also corrected zlib.vcxproj into which Visual Studio had introduced
what it calls an "authoring error".  The change to make pnglibconf.h
simply copies the file; in the future it may actually generate the
file from scripts/pnglibconf.dfa as the other build systems do.
2010-08-24 15:28:43 -05:00
Glenn Randers-Pehrson
9b362b1e4f [devel] Bump to version libpng-1.5.0beta45 2010-08-24 09:05:02 -05:00
Glenn Randers-Pehrson
4befef0c18 [devel] Imported from libpng-1.5.0beta44.tar 2010-08-24 08:58:43 -05:00
Glenn Randers-Pehrson
438b3caedb [devel] Fixed VS warnings/errors in vstudio project, tidy up Try/Catch
The Try/Catch blocks were checking that the context had not changed -
unnecessary and cexcept cannot handle separate (potentially interleaved)
contexts anyway.  Changed the code to make the Catch re-instate the context -
this should help the compiler because the context is the png_store and
minimising the need for the compiler to avoid optimizing it away is good.
2010-08-24 08:55:40 -05:00
Glenn Randers-Pehrson
9b780b8add [devel] Turn on progressive reader in pngvalid.c by default and tidy code. 2010-08-24 08:50:01 -05:00
Glenn Randers-Pehrson
0f21161e51 [devel] Implemented progressive read in pngvalid.c gamma tests 2010-08-24 08:46:53 -05:00
Glenn Randers-Pehrson
db712a93b4 [devel] Implemented progressive reader in pngvalid.c for standard tests 2010-08-24 08:44:14 -05:00
Glenn Randers-Pehrson
f18a0ed39b [devel] Simplified the pngvalid error-handling code
now that cexcept.h is in place.
2010-08-24 08:41:00 -05:00
Glenn Randers-Pehrson
92ac4fc237 [devel] Clarified pngusr.h comments in pnglibconf.dfa 2010-08-24 08:37:36 -05:00
Glenn Randers-Pehrson
21af4cc914 [devel] Check interlaced images in pngvalid 2010-08-24 08:33:28 -05:00
Glenn Randers-Pehrson
949d46c7ba [devel] Reformatted/rearranged pngvalid.c to assist use of progressive reader. 2010-08-24 08:29:58 -05:00
Glenn Randers-Pehrson
921d91576a [devel] Implemented memory checks within pngvalid 2010-08-24 08:26:54 -05:00
Glenn Randers-Pehrson
8c037305e4 [devel] Updated CMakeLists.txt to use CMAKE_INSTALL_LIBDIR variable; useful for
installing libpng in /usr/lib64 (Funda Wang).  Also ported other recent
changes from libpng-1.4.4beta07:
  Revised CMakeLists.txt to put the man pages in share/man/man* not man/man*
  Revised CMakeLists.txt to make symlinks instead of copies when installing.
  Changed PNG_LIB_NAME from pngNN to libpngNN in CMakeLists.txt (Philip Lowman)
2010-08-23 17:07:32 -05:00
Glenn Randers-Pehrson
a7866f7b95 [devel] Imported from libpng-1.5.0beta43.tar 2010-08-20 11:15:30 -05:00
Glenn Randers-Pehrson
b5a53da717 [devel] Wrapped a long line and fixed a typo in pngvalid.c comments. 2010-08-20 10:15:47 -05:00
Glenn Randers-Pehrson
c08cae1c22 [devel] Revised pngvalid.c to use cexcept.h for error handling. 2010-08-20 09:55:01 -05:00
Glenn Randers-Pehrson
4aa2cd69ae [devel] pngget.c was omitted from previous checkin. 2010-08-19 16:52:01 -05:00
Glenn Randers-Pehrson
3b5d695583 [devel] Fixed non-GCC fixed point builds. In png.c a declaration was misplaced
in an earlier update.  Fixed to declare the auto variables at the head.
2010-08-19 08:06:12 -05:00
Glenn Randers-Pehrson
67439c4701 [devel] Addressed various issues identified by GCC, mostly signed/unsigned
and shortening problems on assignment but also a few difficult to optimize
(for GCC) loops (John Bowler).
2010-08-19 07:01:09 -05:00
Glenn Randers-Pehrson
a313751258 [devel] Removed spurious tabs, shorten long lines (no source change)
Also added scripts/chkfmt to validate the format of all the files that can
reasonably be validated (it is suggested to run "make distclean" before
checking, because some machine generated files have long lines.)
Reformatted the CHANGES file to be more consistent throughout.
2010-08-18 20:25:36 -05:00
Glenn Randers-Pehrson
11966d9c55 [devel] Bump to version libpng-1.5.0beta43 2010-08-18 08:18:33 -05:00
Glenn Randers-Pehrson
ea2f7e07d7 [devel] Imported from libpng-1.5.0beta42.tar 2010-08-18 08:17:18 -05:00
Glenn Randers-Pehrson
e600c51355 [devel]Made all API functions that have const arguments and constant string
literal pointers declare them (John Bowler).
Many APIs did not change their arguments but were not declared using
PNG_CONST.  This change corrects this.  In a few cases APIs that return
constant string literal pointers have also been changed to declare this.
Unlike the argument change this may require app changes; however the
results could never be written to (the app would crash on some platforms
where strings are not writable), so this seems advisable.
2010-08-18 07:25:46 -05:00
Glenn Randers-Pehrson
21b4b339d9 [devel] Fix spelling 2010-08-18 07:12:38 -05:00
Glenn Randers-Pehrson
7de0534490 [devel] Updated ltmain.sh 2010-08-17 13:33:00 -05:00
Glenn Randers-Pehrson
70c8d32f2e [devel] Updated aclocal.m4 2010-08-17 13:19:56 -05:00
Glenn Randers-Pehrson
08c2e81ac2 [devel] Add .dll.a to extensions to be symlinked by Makefile.am (Yaakov) 2010-08-13 08:21:09 -05:00
Glenn Randers-Pehrson
2a718a3f53 [devel] Bump to version libpng-1.5.0beta42 2010-08-11 09:15:06 -05:00
Glenn Randers-Pehrson
363f96e717 [devel] Imported from libpng-1.5.0beta41.tar 2010-08-11 09:04:31 -05:00
Glenn Randers-Pehrson
9f65059a5b [devel] Don't try to use version-script with cygwin/mingw.
Revised contrib/gregbook to work under cygwin/mingw.
2010-08-11 08:06:11 -05:00
Glenn Randers-Pehrson
b757b1b5ee [devel] Added the cHRM chunk to pngtest.png 2010-08-11 07:29:04 -05:00
Glenn Randers-Pehrson
a85264b1fc [devel] Update CHANGES 2010-08-06 07:11:31 -05:00
Glenn Randers-Pehrson
ad18363852 [devel] Bump to version libpng-1.5.0beta41 2010-08-06 07:01:17 -05:00
Glenn Randers-Pehrson
836fe66e24 [devel] Imported from libpng-1.5.0beta40.tar 2010-08-06 06:57:32 -05:00
Glenn Randers-Pehrson
d4028b4373 [devel] Added the sRGB chunk to pngtest.png 2010-08-04 13:07:09 -05:00
Glenn Randers-Pehrson
d3a726db0d [master] Correct use of _WINDOWS_ in pngconf.h; Removed png_mem_ #defines;
they are no longer used.
2010-08-03 20:26:34 -05:00
Glenn Randers-Pehrson
3e71719502 [devel] Bump to version libpng-1.5.0beta40 2010-08-02 08:02:09 -05:00
Glenn Randers-Pehrson
2c700f970c [devel] Imported from libpng-1.5.0beta39.tar 2010-08-02 08:02:00 -05:00
Glenn Randers-Pehrson
77396b63f9 [devel] VisualC/GCC warning fixes, VisualC build fixes
The changes include support for function attributes in VC in addition to
    those already present in GCC - necessary because without these some
    warnings are unavoidable.  Fixes include signed/unsigned fixes in
    pngvalid and checks with gcc -Wall -Wextra -Wunused.
  VC requires function attributes on function definitions as well as
    declarations, PNG_FUNCTION has been added to enable this and the
    relevant function definitions changed.
2010-08-02 08:00:10 -05:00
Glenn Randers-Pehrson
21c1f06ef9 [devel] Bump to version libpng-1.5.0beta39 2010-07-31 13:58:24 -05:00
Glenn Randers-Pehrson
3df324d845 [devel] Expanded TAB characters, again. 2010-07-31 13:45:04 -05:00
Glenn Randers-Pehrson
c27291d4e3 [devel] Restored projects/visualc71. 2010-07-31 08:05:17 -05:00
Glenn Randers-Pehrson
bdabd8f75b [devel] Bump to version libpng-1.5.0beta38 2010-07-31 07:17:30 -05:00
Glenn Randers-Pehrson
48dc6ebf5c [devel] Revised png_get_int_16() to be similar to png_get_int_32(). 2010-07-31 07:09:58 -05:00
Glenn Randers-Pehrson
4009a76e97 [devel] Implemented remaining "_fixed" functions and corrected warnings
that were recently introduced, mostly resulting from
safe but uncast assignments to shorter integers.  Also added a zlib
VStudio release library project because the latest zlib Official Windows
build does not include such a thing.
2010-07-31 06:34:36 -05:00
Glenn Randers-Pehrson
459432a1b8 [devel] Updated the TODO list. 2010-07-30 14:59:45 -05:00
Glenn Randers-Pehrson
33d8c2a1dd [devel] Bump to version libpng-1.5.0beta38 2010-07-30 14:51:04 -05:00
Glenn Randers-Pehrson
4eb18e9ca2 [devel] Imported from libpng-1.5.0beta37.tar 2010-07-30 14:47:53 -05:00
Glenn Randers-Pehrson
dd80757941 [devel] Added typecasts in png_get_int_32() in png.h to avoid compiler warning. 2010-07-30 14:35:50 -05:00
Glenn Randers-Pehrson
b4e6997999 [devel] New pngtest.png with nonzero offsets
Renamed "png_sucker" to "png_store" in pngvalid.c
2010-07-30 10:35:38 -05:00
Glenn Randers-Pehrson
53c7502663 [devel] Added a typecast in png_get_int_32() to avoid compiler warning. 2010-07-30 09:58:34 -05:00
Glenn Randers-Pehrson
1e7d7d3cbf [devel] Commented out declaration png_set_sCAL_fixed which hasn't been written yet
Also png_set_filter_heuristics_fixed and png_get_aspect_ratio_fixed.
2010-07-30 07:36:50 -05:00
Glenn Randers-Pehrson
7b81e2e747 [devel] Added some whitespace for readability. 2010-07-29 22:54:34 -05:00
Glenn Randers-Pehrson
f3d53796af [devel] Removed the new alternate floor() and modf(). 2010-07-29 22:19:22 -05:00
Glenn Randers-Pehrson
0fb715a904 [devel] Bump to version libpng-1.5.0beta37 2010-07-29 21:56:47 -05:00
Glenn Randers-Pehrson
233357ef0e [devel] Fixed some spelling and indentation. 2010-07-29 21:49:38 -05:00
Glenn Randers-Pehrson
b9109e8254 [devel] Guard "modf()" with PNG_FLOATING_ARITHMETIC_SUPPORTED. 2010-07-29 21:21:03 -05:00
Glenn Randers-Pehrson
6679d7c0b1 [devel] Guard instances of "floor()" with PNG_FLOATING_ARITHMETIC_SUPPORTED 2010-07-29 21:05:45 -05:00
Glenn Randers-Pehrson
dbe0c9d8c7 [devel] Use FIXED_POINT in contrib/pngminim/decoder and encoder 2010-07-29 20:28:36 -05:00
Glenn Randers-Pehrson
f01459fd40 [devel] Removed reference to pngarith from Makefile.am and Makefile.in 2010-07-29 19:42:45 -05:00
Glenn Randers-Pehrson
11a5687b72 [devel] Removed reference to pngarith from contrib/pngminim/preader/makefile. 2010-07-29 19:27:26 -05:00
Glenn Randers-Pehrson
6c47e84d2e [devel] Bump to version libpng-1.5.0beta36 2010-07-29 19:10:27 -05:00
Glenn Randers-Pehrson
2be8b64af2 [devel] Update documentation 2010-07-29 19:09:18 -05:00
Glenn Randers-Pehrson
a7a76a674f [devel] Imported from libpng-1.5.0beta36.tar 2010-07-29 18:02:16 -05:00
Glenn Randers-Pehrson
29034c5076 [devel] Expanded the new TAB characters. 2010-07-29 17:58:49 -05:00
Glenn Randers-Pehrson
31aee0d0c0 [devel]
Fixed point APIs are now supported throughout (no missing APIs).
  Internal fixed point arithmetic support exists for all internal floating
    point operations.
  sCAL validates the floating point strings it is passed.
  Safe, albeit rudimentary, Watcom support is provided by PNG_API_RULE==2
  Two new APIs exist to get the number of passes without turning on the
    PNG_INTERLACE transform and to get the number of rows in the current
    pass.
  A new test program, pngvalid.c, validates the gamma code.
  Errors in the 16 bit gamma correction (overflows) have been corrected.
  cHRM chunk testing is done consistently (previously the floating point
    API bypassed it, because the test really didn't work on FP, now the test
    is performed on the actual values to be stored in the PNG file so it
    works in the FP case too.)
  Most floating point APIs now simply call the fixed point APIs after
    converting the values to the fixed point form used in the PNG file.
  The standard headers no longer include zlib.h, which is currently only
    required for pngstruct.h and can therefore be internal.
  (Patches by John Bowler)
2010-07-29 17:39:14 -05:00
Glenn Randers-Pehrson
d7aa6aa916 [devel] Bump to version libpng-1.5.0beta36 2010-07-24 08:37:11 -05:00
Glenn Randers-Pehrson
915bab5fc7 [devel] Bump to version libpng-1.5.0beta35 2010-07-24 08:25:31 -05:00
Glenn Randers-Pehrson
5fd46fb8f7 [master] Moved the definition of png_snprintf() outside of the enclosing
"#ifdef" blocks in pngconf.h
2010-07-24 08:09:12 -05:00
Glenn Randers-Pehrson
c182d55fc5 [devel] Update copyright year in documentation 2010-07-22 07:42:39 -05:00
Glenn Randers-Pehrson
11a6f58528 [devel] Added -DNO_PNG_SNPRINTF to CFLAGS in scripts/makefile.dj2 2010-07-16 21:07:55 -05:00
Glenn Randers-Pehrson
d9d4cecaad [devel] Removed some newly-added TAB characters. 2010-07-12 07:12:09 -05:00
Glenn Randers-Pehrson
f1202087f8 [devel] Imported from libpng-1.5.0beta35.tar 2010-07-12 06:52:41 -05:00
Glenn Randers-Pehrson
39a8bb71d3 [devel] Imported from libpng-1.5.0beta34.tar 2010-07-12 06:45:23 -05:00
Glenn Randers-Pehrson
0ee51445f6 [devel] Put #ifndef PNG_EXTERN, #endif around #define PNG_EXTERN in pngpriv.h 2010-07-12 06:29:17 -05:00
Glenn Randers-Pehrson
8f9de7acbd [devel] Bump back to version libpng-1.5.0beta34 2010-07-06 07:46:10 -05:00
Glenn Randers-Pehrson
aa4e359f62 [devel] Changed "extern PNG_EXPORT" to "PNG_EXPORT" in png.h (Jan Nijtmans)
Changed "extern" to "PNG_EXTERN" in pngpriv.h (except for the 'extern "C" {')
2010-07-06 07:40:47 -05:00
Glenn Randers-Pehrson
289500ab8d [devel] Imported from libpng-1.5.0beta33.tar 2010-06-28 20:21:22 -05:00
Glenn Randers-Pehrson
73e28ef13d [devel] Reverted changes to call png_longjmp in contrib/gregbook
where it is not appropriate.  If mainprog->jmpbuf is used by setjmp,
then png_longjmp cannot be used.
Reversed patch to remove error handler when the jmp_buf is stored in the
main program structure, not the png_struct.
The error handler is needed because the default handler in libpng will
always use the jmp_buf in the library control structure; this is never
set.  The gregbook code is a useful example because, even though it
uses setjmp/longjmp, it shows how error handling can be implemented
using control mechanisms not directly supported by libpng.  The
technique will work correctly with mechanisms such as Microsoft
Structure Exceptions or C++ exceptions (compiler willing - note that gcc
does not by default support interworking of C and C++ error handling.)
2010-06-28 20:19:57 -05:00
Glenn Randers-Pehrson
6cac43c974 [devel] Changed char *msg to PNG_CONST char *msg in pngrutil.c 2010-06-26 12:33:17 -05:00
Glenn Randers-Pehrson
82980f31d9 [devel] Make png_set_sRGB_gAMA_and_cHRM set values using either the fixed or
floating point APIs, but not both.
2010-06-26 12:31:58 -05:00
Glenn Randers-Pehrson
a691ca0f85 [devel] Changed "#else" to "#endif/#ifdef" in png_set_gAMA_and_cHRM(). 2010-06-25 22:03:21 -05:00
Glenn Randers-Pehrson
a42edec9ef [devel] Imported from libpng-1.5.0beta33.tar 2010-06-25 21:46:45 -05:00
Glenn Randers-Pehrson
a272d8fe3d [devel] Made FIXED and FLOATING options consistent in the APIs they enable
and disable.  Corrected scripts/options.awk to handle both command line
options and options specified in the .dfa files.
2010-06-25 21:45:31 -05:00
Glenn Randers-Pehrson
a81c59a960 [devel] Tag recent releases. 2010-06-25 20:41:42 -05:00
Glenn Randers-Pehrson
4db344230d [devel] Imported from libpng-1.5.0beta32.tar 2010-06-25 20:18:44 -05:00
Glenn Randers-Pehrson
821b7106b2 [devel] Imported from libpng-1.5.0beta31.tar 2010-06-25 20:06:43 -05:00
Glenn Randers-Pehrson
ef3831a1fe [devel] Imported from libpng-1.5.0beta30.tar 2010-06-25 20:06:40 -05:00
Glenn Randers-Pehrson
5feb87cd0e [devel] Imported from libpng-1.5.0beta29.tar 2010-06-25 20:06:38 -05:00
Glenn Randers-Pehrson
57d9617964 [devel] Imported from libpng-1.5.0beta28.tar 2010-06-25 20:06:35 -05:00
Glenn Randers-Pehrson
78d55454aa [devel] Imported from libpng-1.5.0beta27.tar 2010-06-25 20:06:33 -05:00
Glenn Randers-Pehrson
5b3d554e1e [devel] Imported from libpng-1.5.0beta26.tar 2010-06-25 20:06:30 -05:00
Glenn Randers-Pehrson
53c07f5909 [devel] Imported from libpng-1.5.0beta25.tar 2010-06-25 20:06:28 -05:00
Glenn Randers-Pehrson
537c1a5747 [devel] Imported from libpng-1.5.0beta24.tar 2010-05-07 09:55:50 -05:00
Glenn Randers-Pehrson
f24daf23a5 [devel] Added more blank lines for readability. 2010-05-06 09:44:04 -05:00
Glenn Randers-Pehrson
198d836483 [devel] Bump back to version libpng-1.5.0beta24 2010-04-29 11:54:35 -05:00
Glenn Randers-Pehrson
d05f3728de [devel] Bump back to version libpng-1.5.0beta23 2010-04-29 11:52:52 -05:00
Glenn Randers-Pehrson
2b8bef1d15 [devel] make png_reset_zstream prototype in png.h conditional on PNG_READ 2010-04-29 11:50:24 -05:00
Glenn Randers-Pehrson
98914f74bf [devel] Bump back to version libpng-1.5.0beta24 2010-04-29 10:57:18 -05:00
Glenn Randers-Pehrson
aa3143cf6f [devel] Imported from libpng-1.5.0beta23.tar 2010-04-29 10:56:05 -05:00
Glenn Randers-Pehrson
1f1becf87f [devel] Fix a spelling typo in the contrib/pngminim makefiles 2010-04-29 09:47:12 -05:00
Glenn Randers-Pehrson
259f12628e [devel] Deleted no longer used file scripts/def.dfn 2010-04-29 08:43:53 -05:00
Glenn Randers-Pehrson
b621794ed5 [devel] Removed contrib/pngminim/*/gather.sh
Source file gathering is now done in the makefile.
2010-04-29 08:41:33 -05:00
Glenn Randers-Pehrson
a0b0d8b9db [devel] Removed dummy_inflate.c from contrib/pngminim/encoder 2010-04-29 08:40:24 -05:00
Glenn Randers-Pehrson
f10fa3c9f4 [devel] Include png_reset_zstream() in png.c only when PNG_READ_SUPPORTED
is defined.  We are considering removing it entirely.
2010-04-29 08:25:29 -05:00
Glenn Randers-Pehrson
4a4de1899a [devel] Added logunsupported=1 to cause pnglibconf.h to document disabled
options.  This makes the installed pnglibconf.h more readable but causes no
other change.  The intention is that users of libpng will find it
easier to understand if an API they need is missing.
2010-04-28 21:26:57 -05:00
Glenn Randers-Pehrson
cf2fd3b6ca [devel] Corrected protection of png_get_user_transform_ptr.
The API declaration in png.h is removed if both READ and WRITE USER_TRANSFORM
are turned off but was left defined in pngtrans.c
2010-04-28 21:25:18 -05:00
Glenn Randers-Pehrson
1ce8133282 [devel] Corrected PNG_UNKNOWN_CHUNKS_SUPPORTED
to PNG_HANDLE_AS_UNKNOWN_SUPPORTED in gregbook/readpng2.c
2010-04-28 18:44:48 -05:00
Glenn Randers-Pehrson
5905484c75 [devel] Corrected PNG_REMOVED macro to take five arguments.
The macro was documented with two arguments (name,ordinal), however
    the symbol checking .dfn files assumed five arguments.  The five
    argument form seems more useful so it is changed to that.
2010-04-28 13:21:03 -05:00
Glenn Randers-Pehrson
cb096a4f05 [devel] Bump back to version libpng-1.5.0beta23 2010-04-28 13:15:54 -05:00
Glenn Randers-Pehrson
b7e1abe25c [devel] Removed extraneous contrib/pngminim/pngusr.h 2010-04-28 08:08:18 -05:00
Glenn Randers-Pehrson
d24a6b5fd0 [devel] Imported from libpng-1.5.0beta22.tar 2010-04-28 08:03:42 -05:00
Glenn Randers-Pehrson
e3e8f6bf02 [devel] Revised contrib/pngminim to use the "everything off" option
in pngusr.dfa.
2010-04-28 07:54:14 -05:00
Glenn Randers-Pehrson
cd74549840 [devel] Improved the options.awk script; added an "everything off" option. 2010-04-28 07:52:16 -05:00
Glenn Randers-Pehrson
34713ce23c [devel] Fixed dependencies of GET_INT_32 - it doesn't require READ_INT_FUNCTIONS
because it has a macro equivalent.
2010-04-28 07:49:28 -05:00
Glenn Randers-Pehrson
bb317fb0b2 [devel] Bump to libpng-1.5.0beta22 2010-04-28 07:44:23 -05:00
Glenn Randers-Pehrson
deec549d9f [devel] Imported from libpng-1.5.0beta21.tar 2010-04-26 22:51:22 -05:00
Glenn Randers-Pehrson
d026f9cce6 [devel] Set PNG_NO_READ_BGR, PNG_NO_IO_STATE, and PNG_NO_TIME_RFC1123 in
contrib/pngminim/decoder/pngusr.h to make a smaller decoder application.
2010-04-26 22:48:39 -05:00
Glenn Randers-Pehrson
cd01d222fb [devel] Removed some unwanted binary bytes from the new vstudio project files. 2010-04-24 21:35:04 -05:00
Glenn Randers-Pehrson
9c5beb56e3 [devel] Bump back to version libpng-1.5.0beta21 2010-04-24 20:35:28 -05:00
Glenn Randers-Pehrson
810c2e6077 [devel] Trivial editing; changed CRLF to NEWLINE in the new vstudio project files. 2010-04-24 20:33:42 -05:00
Glenn Randers-Pehrson
d35b878b5e [devel] Imported from libpng-1.5.0beta20.tar 2010-04-24 14:21:51 -05:00
Glenn Randers-Pehrson
5a36a3379b [devel] Fix more permissions in version libpng-1.5.0beta20 2010-04-24 13:52:07 -05:00
Glenn Randers-Pehrson
1ebd001fb4 [devel] Bump back to version libpng-1.5.0beta20 2010-04-24 13:05:38 -05:00
Glenn Randers-Pehrson
18b897da9c [devel] Bump back to version libpng-1.5.0beta19 2010-04-24 13:05:26 -05:00
Glenn Randers-Pehrson
d3bb6bb5c1 [devel] Update permissions in libpng-1.5.0beta20 2010-04-24 12:58:54 -05:00
Glenn Randers-Pehrson
25ea204b1b [devel] Relaxed permissions on some files. 2010-04-24 12:54:46 -05:00
Glenn Randers-Pehrson
7b52087998 [devel] Bump to version libpng-1.5.0beta20 2010-04-24 12:23:23 -05:00
Glenn Randers-Pehrson
b56e0d06f9 [devel] Imported from libpng-1.5.0beta19.tar 2010-04-24 12:17:49 -05:00
Glenn Randers-Pehrson
304a1a1754 [devel] Replaced visualc6 and visualc71 projects with new vstudio project 2010-04-24 12:15:51 -05:00
Glenn Randers-Pehrson
9ee577c7f5 [devel] Changed Windows calling convention back to __cdecl for API functions.
For Windows/x86 platforms only:
  __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses
  __cdecl throughout (both API functions and callbacks) on Windows/x86
  platforms.
2010-04-24 09:40:44 -05:00
Glenn Randers-Pehrson
c3d73f4da9 [devel] Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED.
This allows the functions
to read and write ints to be disabled independently of PNG_USE_READ_MACROS,
which allows libpng to be built with the functions even though the default
is to use the macros - this allows applications to choose at app build
time whether or not to use macros (previously impossible because the
functions weren't in the default build.)
2010-04-24 09:18:57 -05:00
Glenn Randers-Pehrson
1ff571914c [devel] Don't force QUANTIZE on in scripts/symbols.dfn
It's now already on by default.
2010-04-24 09:16:03 -05:00
Glenn Randers-Pehrson
40f7bcc3c0 [devel] Update Makefile.in to delete the xcode project. 2010-04-24 08:37:00 -05:00
Glenn Randers-Pehrson
9e023307b9 [devel] Fix 'make distcheck' 2010-04-17 22:50:06 -05:00
Glenn Randers-Pehrson
8b1b1219e5 [devel] Bump to version libpng-1.5.0beta19 2010-04-17 19:15:01 -05:00
Glenn Randers-Pehrson
5623f781bc [devel] Imported from libpng-1.5.0beta18.tar 2010-04-17 19:09:22 -05:00
Glenn Randers-Pehrson
7efdbaf320 [devel] Added some PNG_NO_* defines to contrib/pngminim/*/pngusr.h to
save some space.
2010-04-17 18:50:23 -05:00
Glenn Randers-Pehrson
98eb24c726 [devel] Updated contrib/pngminim project to work with the new pnglibconf.h 2010-04-17 18:07:33 -05:00
Glenn Randers-Pehrson
8bdfb47d8c [devel] Moved replacements for png_error() and png_warning() from the
contrib/pngminim project to pngerror.c, for use when warnings or
    errors are disabled via PNG_NO_WARN or PNG_NO_ERROR_TEXT, to avoid
    storing unneeded error/warning text.
2010-04-17 18:05:01 -05:00
Glenn Randers-Pehrson
aecef098f9 [devel] Restored the ability to include optional pngusr.h 2010-04-17 18:03:02 -05:00
Glenn Randers-Pehrson
8c065ddbe6 [devel] Revised contrib/pngminim/decoder to build and use pnglibconf.h 2010-04-17 12:40:12 -05:00
Glenn Randers-Pehrson
6ff9ec81c5 [devel] Attempt to get contrib/pngminim working with new pnglibconf.h
not quite working yet (pow is undefined)
2010-04-17 11:53:38 -05:00
Glenn Randers-Pehrson
9d976c0ef1 [devel] Change DITHER to QUANTIZE in the pnglibconf.h maintenance scripts 2010-04-17 11:47:58 -05:00
Glenn Randers-Pehrson
8fc3604418 [devel] Note in CHANGES that pngusr.h is unuseable
and fixed a small typo in a comment in pngconf.h
2010-04-17 10:17:46 -05:00
Glenn Randers-Pehrson
bb6d66e8ef [devel] Bump to version libpng-1.5.0beta18 2010-04-17 09:25:02 -05:00
Glenn Randers-Pehrson
114f675bd7 [devel] Update CHANGES and ANNOUNCE 2010-04-17 09:21:40 -05:00
Glenn Randers-Pehrson
c9cd65ad7a [devel] Update README files. 2010-04-17 09:13:37 -05:00
Glenn Randers-Pehrson
8027fed7d1 [devel] Imported from libpng-1.5.0beta17.tar 2010-04-17 08:58:29 -05:00
Glenn Randers-Pehrson
f90165b452 [devel] Removed the xcode project (temporarily until an updated
version that works with libpng-1.5.0 is received)
2010-04-17 08:56:40 -05:00
Glenn Randers-Pehrson
5e69cd2c14 [devel] Revise visualc projects to work with pnglibconf.h 2010-04-17 08:48:25 -05:00
Glenn Randers-Pehrson
5eb5cce173 [devel] Fix bracketing error just introduced in pngrutil.c macro definitions. 2010-04-17 08:45:57 -05:00
Glenn Randers-Pehrson
725314432d [devel] Revise scripts to work with pnglibconf.h 2010-04-17 08:17:51 -05:00
Glenn Randers-Pehrson
98b4f0032b [devel] Renamed pnglconf.h to pnglibconf.h 2010-04-16 22:30:26 -05:00
Glenn Randers-Pehrson
294e380438 [devel] scripts/pnglconf.dfa comment update, correct USER_CONFIG 2010-04-16 22:20:18 -05:00
Glenn Randers-Pehrson
862cb20ea6 [devel] Freeze build-time only configuration in the build.
In all prior versions of libpng most configuration options
    controlled by compiler #defines had to be repeated by the
    application code that used libpng.  This patch changes this
    so that compilation options that can only be changed at build
    time are frozen in the build.  Options that are compiler
    dependent (and those that are system dependent) are evaluated
    each time - pngconf.h holds these.  Options that can be changed
    per-file in the application are in png.h.  Frozen options are
    in the new installed header file pnglconf.h
2010-04-16 22:12:51 -05:00
Glenn Randers-Pehrson
3cd7cffd0c [devel] Imported from libpng-1.5.0beta17.tar 2010-04-16 19:28:42 -05:00
Glenn Randers-Pehrson
0f0a19e9ce [devel] Expanded the CHANGES entry about disabling dithering support. 2010-04-13 22:32:16 -05:00
Glenn Randers-Pehrson
6098807252 [devel] Document the fact that png_set_dither() is no longer supported. 2010-04-13 22:11:06 -05:00
Glenn Randers-Pehrson
54ac9a918e [devel] Slightly expanded the documentation of PNG_ABORT() 2010-04-02 17:06:22 -05:00
Glenn Randers-Pehrson
f136155383 [devel] Bump to version libpng-1.5.0beta17 2010-04-01 07:19:28 -05:00
Glenn Randers-Pehrson
c2fa196d14 [devel] Imported from libpng-1.5.0beta16.tar 2010-04-01 07:19:17 -05:00
Glenn Randers-Pehrson
3e42a99cf5 [devel] Restored the macro definition of png_check_sig(). 2010-03-31 22:16:07 -05:00
Glenn Randers-Pehrson
92a3ef4a14 [devel] Combined multiple png_warning() calls for a single error. 2010-03-31 21:50:21 -05:00
Glenn Randers-Pehrson
946c3f985f [devel] Relocated newly misplaced "else" in pngset.c 2010-03-30 14:50:07 -05:00
Glenn Randers-Pehrson
dd78d526d0 [devel] Make png_text_struct independent of PNG_iTXt_SUPPORTED 2010-03-30 08:34:02 -05:00
Glenn Randers-Pehrson
9ba962665d [devel] Removed references to makefile.mingw from README. 2010-03-25 08:10:11 -05:00
Glenn Randers-Pehrson
844a3c050c [devel] Bump to version libpng-1.5.0beta16 2010-03-17 07:42:04 -05:00
Glenn Randers-Pehrson
b07e8568ee [devel] Fixed typo in CHANGES and ANNOUNCE 2010-03-17 07:39:02 -05:00
Glenn Randers-Pehrson
b2eacd3e1f [devel] Imported from libpng-1.5.0beta15.tar 2010-03-17 07:33:10 -05:00
Glenn Randers-Pehrson
7e597910fd [devel] Eliminated new gnu-specific usage of "@<" in Makefile.am 2010-03-17 07:29:42 -05:00
Glenn Randers-Pehrson
4c8f7269ff [devel] Eliminated PNG_NO_EXTERN and PNG_ALL_EXTERN 2010-03-16 19:30:01 -05:00
Glenn Randers-Pehrson
8069aeb88e [devel] Regenerated Makefile.in and configure; relocated libpng.def
to scripts/symbols.def, added scripts/checksym.*
2010-03-16 08:07:22 -05:00
Glenn Randers-Pehrson
c551c0dbb3 [devel] Added symbols.chk target to Makefile.am to validate symbols in png.h
against the new DEF file scripts/symbols.def.
Changed the default DEF file back to pngwin.def.
Removed makefile.mingw.
2010-03-16 07:52:34 -05:00
Glenn Randers-Pehrson
b92e2f7335 [devel] Expanded TAB characters in contrib/pngminus 2010-03-15 09:48:37 -05:00
Glenn Randers-Pehrson
42928551cf [devel] Expanded TAB character in contrib/gregbook/rpng-x.c and rpng2-x.c 2010-03-15 08:38:06 -05:00
Glenn Randers-Pehrson
53198fb8b1 [devel] Bump to version libpng-1.5.0beta15 2010-03-14 09:46:36 -05:00
Glenn Randers-Pehrson
4a215541e7 [devel] Imported from libpng-1.5.0beta14.tar 2010-03-14 09:42:07 -05:00
Glenn Randers-Pehrson
d00bbb29b8 [devel] Made PNG_BUILD_DLL safe: it can be set whenever a DLL is being built.
Removed the include of sys/types.h - apparently unnecessary now on the
  platforms on which it happened (all but Mac OS and RISC OS).
Moved the Mac OS test into pngpriv.h (the only place it is used.)
2010-03-14 09:15:49 -05:00
Glenn Randers-Pehrson
2bc7abfaca [devel] Remove references to nonexistent files from README. 2010-03-13 21:36:45 -06:00
Glenn Randers-Pehrson
882340c959 [devel] Clean up indentation of comments in pngconf.h 2010-03-13 21:19:51 -06:00
Glenn Randers-Pehrson
c44253fa0c [devel] Fixed indentation in pngconf.h
Removed scripting cruft from scripts/makefile.mingw
Removed mention of now nonexistent files from scripts/README.txt
2010-03-13 20:58:39 -06:00
Glenn Randers-Pehrson
d7da8bb121 [devel] Eliminated scripts/*.def in favor of libpng.def;
updated projects/visualc71 and removed scripts/makefile.cygwin.
2010-03-13 20:30:10 -06:00
Glenn Randers-Pehrson
1a0e1d27e4 [devel] Expand %HEADERS% markup in Makefile.am and Makefile.in 2010-03-13 19:26:34 -06:00
Glenn Randers-Pehrson
a528fba7aa [devel] Enabled 'attribute' warnings that are relevant to library APIs
and callbacks.
Changed rules for generation of the various symbol files and added a new
  rule for a DEF file (which is also added to the distribution).
Updated the symbol file generation to stop it adding spurious spaces
  to EOL (coming from preprocessor macro expansion).  Added a facility
  to join tokens in the output and rewrite *.dfn to use this.
2010-03-12 21:03:18 -06:00
Glenn Randers-Pehrson
eae8e36ec4 [devel] PNG_EXPORT changed to include an 'ordinal' field
for DEF file generation.

    PNG_CALLBACK added to make callback definitions uniform.  PNGAPI split
    into PNGCAPI (base C form), PNGAPI (exports) and PNGCBAPI (callbacks),
    and appropriate changes made to all files.  Cygwin builds re-hinged to
    allow procedure call standard changes and to remove the need for the DEF
    file (fixes build on Cygwin).

Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe) or to glennrp at users.sourceforge.net

Glenn R-P
2010-03-12 17:36:53 -06:00
Glenn Randers-Pehrson
69dd5f56f8 [devel] Added back in export symbols that can be present
in the Windows build but are disabled by default.
2010-03-11 17:38:18 -06:00
Glenn Randers-Pehrson
300c8aea4d [devel] Corrected CE and OS/2 DEF files (scripts/png*def)
for symbols removed and added ordinal numbers to the Windows DEF file,
and corrected the duplicated ordinal numbers on CE symbols that are
commented out.
2010-03-11 06:24:01 -06:00
Glenn Randers-Pehrson glennrp@comcast.net
d0e35cdb53 [devel] Revised Makefile.am to account for recent additions and replacements. 2010-03-11 05:48:32 -06:00
Glenn Randers-Pehrson
526a6ad5f6 [devel] Removed direct access to png_ptr->io_ptr from the pngtest Windows code 2010-03-11 05:42:20 -06:00
Glenn Randers-Pehrson
2f7cbabfda [devel] Bump to version libpng-1.5.0beta14 2010-03-10 09:12:11 -06:00
Glenn Randers-Pehrson
c6fecfbaa5 [devel] Imported from libpng-1.5.0beta13.tar 2010-03-10 09:12:03 -06:00
Glenn Randers-Pehrson
632a84eff7 [devel] Make all png_debug macros into *unterminated* statements
or expressions (i.e. a trailing ';' must always be added) and correct
the format statements in various png_debug messages.
2010-03-09 22:28:33 -06:00
Glenn Randers-Pehrson
31f92b0ffa [devel] Eliminated dependence of pngtest.c on the private pngdebug.h file. 2010-03-09 16:47:59 -06:00
Glenn Randers-Pehrson
f70645c592 [devel] Removed PNGAPI from the png_longjmp_ptr typedef. 2010-03-09 16:46:49 -06:00
Glenn Randers-Pehrson
dc6182a307 [devel] Moved the 'config.h' support from pngconf.h to pngpriv.h 2010-03-09 16:45:06 -06:00
Glenn Randers-Pehrson
f2c99bd5dc [devel] Removed unused png_measure_compressed_chunk() from pngpriv.h
and libpngpf.3
2010-03-09 08:40:52 -06:00
Glenn Randers-Pehrson
afa999d446 [devel] Revise the "#ifdef" blocks in png_inflate()
so it will compile when neither PNG_USER_CHUNK_MALLOC_MAX nor
PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED is defined.
2010-03-09 07:52:30 -06:00
Glenn Randers-Pehrson
3919f23a69 [devel] Protect pngstruct.h pnginfo.h, and pngdebug.h from being included twice 2010-03-08 21:52:28 -06:00
Glenn Randers-Pehrson
c957b6b0a4 [devel] Bump to version libpng-1.5.0beta13 2010-03-08 21:49:31 -06:00
Glenn Randers-Pehrson
86f88ddd53 [devel] Imported from libpng-1.5.0beta12.tar 2010-03-08 21:31:46 -06:00
Glenn Randers-Pehrson
c17c957f95 [devel] Added copyright statement to pngdebug.h
and removed a redundant line from the copyright info in pngconf.h
2010-03-08 21:26:48 -06:00
Glenn Randers-Pehrson
c3cd22b404 [devel] Moved "#include png.h" inside pngpriv.h and removed "#include png.h"
from the source files, along with "#define PNG_EXPOSE_INTERNAL_STRUCTURES"
and "#define PNG_NO_PEDANTIC_WARNINGS" (John Bowler).
Also created new pngdebug.h and moved debug definitions there.
2010-03-08 21:10:25 -06:00
Glenn Randers-Pehrson
b709c4aedc [devel] Updated TODO list now that png_struct and info_struct are hidden
and setjmp usage has been improved.
2010-03-08 11:34:41 -06:00
Glenn Randers-Pehrson
aaf377c874 [devel] Bump to version libpng-1.5.0beta12 2010-03-08 11:21:39 -06:00
Glenn Randers-Pehrson
e4c706af54 [devel] Imported from libpng-1.5.0beta11.tar 2010-03-06 14:53:56 -06:00
Glenn Randers-Pehrson
6f6a91a131 [devel] Fix indentation in png.c, pngmem,c, pngrio.c, and pngwio.c 2010-03-06 13:54:59 -06:00
Glenn Randers-Pehrson
e8b1aa0c5a [devel] Fixed more inconsistent indentation in the header files. 2010-03-06 11:39:29 -06:00
Glenn Randers-Pehrson
d4df36c7f0 [devel] Fixed indentation of CPP directives in the header files
with the help of "cppi".
2010-03-06 10:45:55 -06:00
Glenn Randers-Pehrson
a565f0e234 [devel] Always put whitespace before "?" 2010-03-06 08:24:45 -06:00
Glenn Randers-Pehrson
72cda2db72 [devel] Expand tabs and use consistent whitespace in pngrutil.c 2010-03-06 08:18:03 -06:00
Glenn Randers-Pehrson
16908a1d78 [devel] Make use of whitespace consistent in pngget.c and pngwutil.c 2010-03-06 07:34:28 -06:00
Glenn Randers-Pehrson
da30135c4c [devel] Fix whitespace in pngerror.c and pngset.c 2010-03-06 06:42:48 -06:00
Glenn Randers-Pehrson
45624d6c2c [devel] Fix inconsistent whitespace in pngtrans.c, pngwrite.c, and pngwtran.c 2010-03-03 11:40:43 -06:00
Glenn Randers-Pehrson
4e763f1b30 [devel] Revised the "SEE ALSO" lines in manpages
to look like those in "man man"
2010-03-03 10:45:50 -06:00
Glenn Randers-Pehrson
7fb32a8621 [devel] Fixed formatting of the "See also" line in man pages. 2010-03-03 09:47:49 -06:00
Glenn Randers-Pehrson
3ea36758ef [devel] Fix inconsistent whitespace and indentation. 2010-03-03 09:35:31 -06:00
Glenn Randers-Pehrson
262d0ff047 [devel] Tidied up some inconsistent indentation. 2010-03-03 07:06:54 -06:00
Glenn Randers-Pehrson
65a223794a [devel] Bump to version libpng-1.5.0beta11 2010-03-03 05:39:36 -06:00
Glenn Randers-Pehrson
6c2e919c7e [devel] Removed checking for already-included setjmp.h from pngconf.h 2010-03-03 05:37:04 -06:00
Glenn Randers-Pehrson
d259e6c570 [devel] Revised png_longjmp() calls in contrib/gregbook to use png_ptr 2010-02-21 23:36:35 -06:00
Glenn Randers-Pehrson
4531ded5c1 [devel] Removed unused gzio.c from contrib/pngminim gather and makefile scripts
This is necessary when libz is upgraded to 1.2.4
2010-02-21 23:07:13 -06:00
Glenn Randers-Pehrson
95ca51b6e2 [devel] Imported from libpng-1.5.0beta09.tar 2010-02-19 14:13:03 -06:00
Glenn Randers-Pehrson
a24fc2e1d3 [devel] Removed -D_ALLSOURCE from configure.ac, makefile.aix,
and CMakeLists.txt, and changed the name of png_ptr->jmpbuf in pngstruct.h
to png_ptr->png_jmpbuf.
2010-02-19 14:11:03 -06:00
Glenn Randers-Pehrson
69e238b098 [devel] Imported from libpng-1.5.0beta08.tar 2010-02-19 12:59:44 -06:00
Glenn Randers-Pehrson
64af5394f5 [devel] Added -D_ALLSOURCE in configure.ac, makefile.aix, and CMakeLists.txt
when building on AIX.
2010-02-19 12:50:45 -06:00
Glenn Randers-Pehrson
1beadafcc7 [devel] Added PNG_NORETURN attribute to the png_longjmp() function. 2010-02-19 11:26:40 -06:00
Glenn Randers-Pehrson
81dab093fc [devel] Added "#ifdef _AIX; #define _ALL_SOURCE 1; #endif" to pngpriv.h,
otherwise AIX reserves "jmpbuf" and renames it to "__jmpbuf".
2010-02-19 11:02:41 -06:00
Glenn Randers-Pehrson
6a9e480512 [devel] Imported from libpng-1.5.0beta07.tar 2010-02-19 09:59:25 -06:00
Glenn Randers-Pehrson
f98726ae98 [devel] Added exported png_longjmp() function. 2010-02-19 09:54:53 -06:00
Glenn Randers-Pehrson
946199e8e4 [devel] Removed obsolete unused MMX-querying support from contrib/gregbook 2010-02-19 07:57:34 -06:00
Glenn Randers-Pehrson
cce6521a9f [devel] Noted in scripts/makefile.mingw that it expects to be run under MSYS. 2010-02-18 23:03:09 -06:00
Glenn Randers-Pehrson
63ee896ab5 [devel] Fix typo in ANNOUNCE and CHANGES 2010-02-14 07:47:39 -06:00
Glenn Randers-Pehrson
9e966cadbd [devel] Bump to version 1.5.0beta07 2010-02-14 07:45:27 -06:00
Glenn Randers-Pehrson
7a5be53631 [devel] Imported from libpng-1.5.0beta06.tar 2010-02-14 07:18:23 -06:00
Glenn Randers-Pehrson
6e283234c9 [devel] Imported from libpng-1.5.0beta05.tar 2010-02-12 21:28:31 -06:00
Glenn Randers-Pehrson
288ea702f2 [devel] Update png_compress_chunk() rewrite. 2010-02-12 21:20:37 -06:00
Glenn Randers-Pehrson
ee4eb9a910 [devel] Added several (png_bytep) typecasts in calls to png_inflate(). 2010-02-12 20:30:45 -06:00
Glenn Randers-Pehrson
9d51afcacb [devel] Complete rewrite of png_decompress_chunk() by John Bowler 2010-02-12 20:12:56 -06:00
Glenn Randers-Pehrson
389c1f20ad [devel] Revised png_measure_compressed_chunk()
too break from "while" and issue a png_warning on over limit.
2010-02-12 14:14:15 -06:00
Glenn Randers-Pehrson
4748a3346e [devel] Reset zlib datastream after detecting oversized compressed chunk 2010-02-12 13:55:01 -06:00
Glenn Randers-Pehrson
9b0956fed1 [devel] Reverted to original png_decompress_chunk() plus counting pass. 2010-02-12 11:17:22 -06:00
Glenn Randers-Pehrson
7d1f5914e5 [devel] Relocated misplaced closing curley bracket in png_decompress_chunk().
Removed unused "buffer_size" variable from png_decompress_chunk().
2010-02-11 23:03:26 -06:00
Glenn Randers-Pehrson
2f84504413 [devel] Removed the cbuilder5 project, which has not been updated to 1.4.0. 2010-02-09 02:01:22 -06:00
Glenn Randers-Pehrson
42f93fb706 [devel] Changed PNG_INTERNAL to PNG_EXPOSE_INTERNAL_STRUCTURES 2010-02-09 01:58:47 -06:00
Glenn Randers-Pehrson
f97953181a [devel] Changed PNG_INTERNAL to PNG_EXPOSE_INTERNAL_STRUCTURES
and updated the "last change" comments to 1.5.0
2010-02-09 01:16:48 -06:00
Glenn Randers-Pehrson
3f506b788e [devel] Removed PNG_DEPSTRUCT markup in pngstruct.h and pnginfo.h
and undid the linewrapping that it required.
Revised comments in pngstruct.h and pnginfo.h and added pointers to
the libpng license.
2010-02-09 00:36:08 -06:00
Glenn Randers-Pehrson
db5f4307ca [devel] Bump to version libpng-1.5.0beta05 2010-02-08 23:34:43 -06:00
Glenn Randers-Pehrson
b9a78bedee [devel] Imported from libpng-1.5.0beta04.tar 2010-02-08 23:34:32 -06:00
Glenn Randers-Pehrson
f0cdbe7e03 [devel] Removed malformed "incomplete struct declaration" of png_info
from png.h
2010-02-08 23:18:15 -06:00
Glenn Randers-Pehrson
42c4ebbea6 [devel] Bump to version libpng-1.5.0beta04 2010-02-08 15:48:07 -06:00
Glenn Randers-Pehrson
f1eb918dc8 [devel] Imported from libpng-1.5.0beta03.tar 2010-02-08 15:42:16 -06:00
Glenn Randers-Pehrson
3c6df196b5 [devel] Updated configure script to use SO number 15. 2010-02-08 15:40:53 -06:00
Glenn Randers-Pehrson
0014f3de55 [devel] Removed two new incorrect typedefs in png.h 2010-02-08 05:41:30 -06:00
Glenn Randers-Pehrson
e00ed36d71 [devel] Imported from libpng-1.5.0beta02.tar 2010-02-07 22:52:08 -06:00
Glenn Randers-Pehrson
c40df89cef [devel] Fixed incorrect test in new png_push_save_buffer() code. 2010-02-07 19:49:07 -06:00
Glenn Randers-Pehrson
e3f3c4ea0b [devel] Imported from libpng-1.5.0beta01.tar 2010-02-07 18:10:43 -06:00
Glenn Randers-Pehrson
67a83db98d [devel] Imported from libpng-1.4.0rc08.tar 2010-01-01 18:32:13 -06:00
Glenn Randers-Pehrson
a0e0c6c8e7 [devel] Avoid deprecated references to png_ptr-io_ptr and png_ptr->error_ptr
in pngtest.c
2010-01-01 18:31:26 -06:00
Glenn Randers-Pehrson
a58818a079 [devel] Imported from libpng-1.4.0rc07.tar 2010-01-01 10:31:50 -06:00
Glenn Randers-Pehrson
e69b55d9ac [devel] Update copyright year to 2010 2010-01-01 10:29:06 -06:00
Glenn Randers-Pehrson
a515d3066e [devel] Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c 2010-01-01 10:25:39 -06:00
Glenn Randers-Pehrson
45af819322 [devel] Updated documentation about libpng-1.2 to 1.4 differences. 2009-12-30 08:37:29 -06:00
Glenn Randers-Pehrson
f81b50bf9d [devel] Imported from libpng-1.4.0rc06.tar 2009-12-29 16:51:34 -06:00
Glenn Randers-Pehrson
e52c7ac7a3 [devel] Imported from libpng-1.4.0rc05.tar 2009-12-27 16:39:14 -06:00
Glenn Randers-Pehrson
5ce838be40 [devel] Fix typo in INSTALL 2009-12-26 09:57:02 -06:00
Glenn Randers-Pehrson
a687af1e72 [devel] Changed "libpng-pc.in" to "libpng.pc.in" in configure.ac, configure,
and Makefile.in to be consistent with changes in libpng-1.4.0rc03
2009-12-25 16:17:30 -06:00
Glenn Randers-Pehrson
70529c3b40 [devel] Bump version to 1.4.0rc05 2009-12-25 16:15:50 -06:00
Glenn Randers-Pehrson
dbcfb7151f [devel] Imported from libpng-1.4.0rc04.tar 2009-12-25 14:27:23 -06:00
Glenn Randers-Pehrson
6ba9088de9 [devel] Swapped PNG_UNKNOWN_CHUNKS_SUPPORTED and PNG_HANDLE_AS_UNKNOWN_SUPPORTED
in pngset.c to be consistent with other changes in version 1.2.38.
2009-12-25 14:26:13 -06:00
Glenn Randers-Pehrson
7520224a42 [devel] Bump to version 1.4.0rc04 2009-12-25 14:25:29 -06:00
Glenn Randers-Pehrson
296f64a43e [devel] Imported from libpng-1.4.0rc03.tar 2009-12-22 09:38:19 -06:00
Glenn Randers-Pehrson
d44e05a363 [master] Renamed libpng-pc.in back to libpng.pc.in and revised CMakeLists.txt
(revising the change in 1.4.0beta99)
2009-12-22 09:16:15 -06:00
Glenn Randers-Pehrson
5265c3889c [devel] Bump to version 1.4.0rc03 2009-12-22 09:10:46 -06:00
Glenn Randers-Pehrson
62ca98ef5e [devel] Imported from libpng-1.4.0rc02.tar 2009-12-20 15:16:15 -06:00
Glenn Randers-Pehrson
094340d287 [devel] Bump to version 1.4.0beta110 2009-12-13 15:39:00 -06:00
Glenn Randers-Pehrson
addb84b1bc [devel] Imported from libpng-1.4.0beta109.tar 2009-12-13 08:15:55 -06:00
Glenn Randers-Pehrson
ffa8924330 [devel] Added "bit_depth" parameter to the private png_build_gamma_table()
function.  Pass bit_depth=8 to png_build_gamma_table() when bit_depth is 16
but the PNG_16_TO_8 transform has been set, to avoid unnecessary build of
16-bit tables.
2009-12-13 08:14:40 -06:00
Glenn Randers-Pehrson
0452bbcf84 [devel] Imported from libpng-1.4.0beta108.tar 2009-12-11 18:02:44 -06:00
Glenn Randers-Pehrson
7a59e1eae8 [devel] Relocated png_do_chop() to its original position in pngrtran.c
The change in version 1.2.41beta08 caused transparency to be handled wrong
in some 16-bit datastreams (Yusaku Sugai).
2009-12-11 07:57:36 -06:00
Glenn Randers-Pehrson
3da965ce4b [devel] Removed leftover "-DPNG_CONFIGURE_LIBPNG"
from contrib/pngminim/*/makefile
2009-12-11 07:56:25 -06:00
Glenn Randers-Pehrson
f633e33632 [devel] Fix typo in CHANGES and ANNOUNCE (libpng12 should be libpng14) 2009-12-04 17:06:40 -06:00
Glenn Randers-Pehrson
914a7e3d4f [devel] Bump to version 1.4.0beta108 2009-12-04 17:05:57 -06:00
Glenn Randers-Pehrson
d84af669dc [devel] Imported from libpng-1.4.0beta107.tar 2009-12-04 09:48:05 -06:00
Glenn Randers-Pehrson
451fd6c439 [devel] use PNG_NO_PEDANTIC_WARNINGS instead of PNG_CONFIGURE_LIBPNG
to disable the warnings in pngconf.h
2009-12-04 08:46:31 -06:00
Glenn Randers-Pehrson
316152fe73 [devel] Revised scripts/makefile.netbsd, makefile.openbsd, and makefile.sco
to put png.h and pngconf.h in $prefix/include, like the other scripts,
instead of in $prefix/include/libpng.  Also revised makefile.sco
to put them in $prefix/include/libpng12 instead of in
$prefix/include/libpng/libpng12.
2009-12-04 08:42:32 -06:00
Glenn Randers-Pehrson
03f9b02953 [devel] Removed "-DPNG_CONFIGURE_LIBPNG" from the makefiles and projects.
and added "#define PNG_NO_PEDANTIC_WARNINGS" in the libpng source files.
2009-12-04 08:40:41 -06:00
Glenn Randers-Pehrson
ce96c3e6b7 [devel] Updated README 2009-11-27 16:17:19 -06:00
Glenn Randers-Pehrson
133840ba4b [devel] Bump to version 1.4.0beta107 2009-11-27 06:09:41 -06:00
Glenn Randers-Pehrson
e4b9fc28de [devel] Imported from libpng-1.4.0beta106.tar 2009-11-27 00:28:34 -06:00
Glenn Randers-Pehrson
5876b850b2 [devel] Removed premultiplied alpha feature.
It will be replaced in the future with a function that accounts for gamma.
2009-11-27 00:24:42 -06:00
Glenn Randers-Pehrson
4cfdb3c095 [devel] Add comment about TODO: issue warning if user tries to premultiply
in a nonliner colorspace.
2009-11-26 11:49:37 -06:00
Glenn Randers-Pehrson
b2154ccb2b [devel] Moved the PNG_DIVIDE_* and PNG_*_PREMULTIPLY macros
from png.h to pngpriv.h.
2009-11-26 11:48:15 -06:00
Glenn Randers-Pehrson
5a2015e146 [devel] Bump to version 1.4.0beta106 2009-11-26 11:46:24 -06:00
Glenn Randers-Pehrson
d23f2b2845 [devel] Imported from libpng-1.4.0beta105.tar 2009-11-24 22:14:21 -06:00
Glenn Randers-Pehrson
9d172423df [devel] Added missing "(" in new PNG_DIVIDE macro. 2009-11-24 20:17:58 -06:00
Glenn Randers-Pehrson
ec29c6507b [devel] Changed "v" to "(v)" and "65535" to "65535L" in the new macros. 2009-11-24 08:40:44 -06:00
Glenn Randers-Pehrson
768429bbc1 [devel] Use fast integer PNG_DIVIDE_BY_255() or PNG_DIVIDE_BY_65535()
to accomplish alpha premultiplication when PNG_READ_COMPOSITE_NODIV_SUPPORTED
is defined.  Changed "/255" to "/255.0" in background calculations to make it
clear that the 255 is used as a double (and to prevent anyone from being
tempted to use PNG_DIVIDE_BY_255() there).
2009-11-24 07:26:06 -06:00
Glenn Randers-Pehrson
2a087220dd [devel] Bump to version 1.4.0beta105 2009-11-21 21:54:53 -06:00
Glenn Randers-Pehrson
bbd20f0a74 [devel] Imported from libpng-1.4.0beta104.tar 2009-11-21 21:51:28 -06:00
Glenn Randers-Pehrson
eae2cf0add [devel] Rebuilt configure scripts with autoconf-2.65 2009-11-21 21:50:07 -06:00
Glenn Randers-Pehrson
ae3a70351c [devel] Removed png_longjmp_ptr from scripts/*.def and libpng.3
It is a pointer, not an exported function.
2009-11-21 07:21:06 -06:00
Glenn Randers-Pehrson
52f4f257c9 [devel] Bump to version 1.4.0beta104 2009-11-20 23:01:45 -06:00
Glenn Randers-Pehrson
931400bd04 [devel] Imported from libpng-1.4.0beta103.tar 2009-11-20 22:58:48 -06:00
Glenn Randers-Pehrson
1e6ed7364b [devel] Added png_set_longjmp_fn to scripts/*.def
and moved it from libpngpf.3 to libpng.3 since it is exported.
2009-11-20 22:06:56 -06:00
Glenn Randers-Pehrson
4a72ebfafa [devel] Added png_longjmp_ptr() to libpng.3 synopsis and to scripts/*.def
and png_set_longjmp_fn() to libpngpf.3 synopsis
2009-11-20 21:56:36 -06:00
Glenn Randers-Pehrson
f4ea22480a [devel] Make the 'png_jmpbuf' macro expand to a call that records the correct
longjmp function as well as returning a pointer to the setjmp
    jmp_buf buffer, and marked direct access to jmpbuf 'deprecated'.
    (John Bowler)
2009-11-20 21:38:24 -06:00
Glenn Randers-Pehrson
eddc5af8f5 [devel] Align row_buf on 16-byte boundary in memory. 2009-11-20 21:15:06 -06:00
Glenn Randers-Pehrson
edcd6e14c6 [devel] Restored the PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED guard
around the call to png_flush() after png_write_IEND().  See 1.4.0beta32,
1.4.0beta50 changes above and 1.2.30, 1.2.30rc01 and rc03 in 1.2.41
CHANGES in the libpng_master branch.  Someone needs this feature but
I don't remember who.
2009-11-20 20:28:29 -06:00
Glenn Randers-Pehrson
311c8476f8 [devel] Bump to version 1.4.0beta103 2009-11-20 09:46:59 -06:00
Glenn Randers-Pehrson
e5403da657 [master] Removed obsolete comments about ASM
from projects/visualc71/README_zlib.txt
2009-11-18 15:50:27 -06:00
Glenn Randers-Pehrson
a7eda24870 [devel] Bump to version 1.4.0rc02 2009-11-18 15:49:11 -06:00
Glenn Randers-Pehrson
bda72552bf [devel] Removed comments on ASM from projects/visualc71/README_zlib.txt 2009-11-18 15:34:39 -06:00
Glenn Randers-Pehrson
a02188ae94 [devel] Bump to version libpng-1.4.0beta102 2009-11-18 15:32:35 -06:00
Glenn Randers-Pehrson
5b7d8ff306 [devel] Bump to version 1.4.0rc02 2009-11-18 15:32:33 -06:00
Glenn Randers-Pehrson
cd7d63a805 [devel] Imported from libpng-1.4.0beta102.tar 2009-11-18 10:31:31 -06:00
Glenn Randers-Pehrson
9d27a1becf [devel] Moved descriptions of makefiles and other scripts out of INSTALL
into scripts/README.txt and updated the copyright year in scripts/pngwin.rc
from 2006 to 2009.
2009-11-15 07:59:06 -06:00
Glenn Randers-Pehrson
c00408a4e5 [devel] Fixed two new typos in projects/visualc6/pngtest.dsp 2009-11-15 06:08:29 -06:00
Glenn Randers-Pehrson
bb0f557859 [devel] Added libpng-config.in and libpng-pc.in to the zip and 7z
distributions (they are needed by CMakeList.txt).
2009-11-15 05:49:13 -06:00
Glenn Randers-Pehrson
ac18f8a706 [devel] Bump to version 1.4.0beta102 2009-11-14 21:52:06 -05:00
Glenn Randers-Pehrson
a2aebb551e [devel] Bumped INSTALL back to version beta101. 2009-11-14 17:58:32 -06:00
Glenn Randers-Pehrson
354bdb0d58 [devel] Revised INSTALL file slightly. 2009-11-14 17:45:58 -06:00
Glenn Randers-Pehrson
8e3389e574 [devel] Imported from libpng-1.4.0beta101.tar 2009-11-14 17:05:12 -06:00
Glenn Randers-Pehrson
0dfd8d379b [devel] Bump to version 1.4.0beta101 2009-11-14 14:58:35 -06:00
Glenn Randers-Pehrson
3c38651e8c [devel] Imported from libpng-1.4.0beta100.tar 2009-11-14 13:59:32 -06:00
Glenn Randers-Pehrson
22ad8f0e7a [devel] Updated INSTALL to reflect removal and relocation of files. 2009-11-14 07:25:31 -06:00
Glenn Randers-Pehrson
76a64f4491 [devel] Revised CMakeLists.txt to account for new location of libpng-config.in
and libpng-pc.in
2009-11-14 06:58:16 -06:00
Glenn Randers-Pehrson
5741bac1c6 [devel] Removed scripts/makefile.nommx and makefile.vcawin32 2009-11-14 06:45:48 -06:00
Glenn Randers-Pehrson
8590d46785 [devel] Removed ASM builds from projects/visualc6 and projects/visualc71 2009-11-14 06:26:46 -06:00
Glenn Randers-Pehrson
71cff967a9 [devel] Bump to version 1.4.0beta100 2009-11-14 06:25:31 -06:00
Glenn Randers-Pehrson
b612eee957 [devel] Imported from libpng-1.4.0beta99.tar 2009-11-14 05:45:49 -06:00
Glenn Randers-Pehrson
28d4aae5b9 [devel] Moved libpng-config.in and libpng.pc-configure.in out of the scripts
directory, to libpng-config.in and libpng-pc.in, respectively, and
    modified Makefile.am and configure.ac accordingly.  Now "configure"
    needs nothing from the "scripts" directory.
  Also, avoid redefining PNG_CONST in pngconf.h
2009-11-13 16:29:45 -06:00
Glenn Randers-Pehrson
11313ba8e7 [devel] Imported from libpng-1.4.0beta98.tar 2009-11-13 05:19:59 -06:00
Glenn Randers-Pehrson
d708cb8360 [devel] Bump to version 1.4.0beta98 2009-11-12 22:36:41 -06:00
Glenn Randers-Pehrson
78c419c698 [devel] Imported from libpng-1.4.0beta97.tar 2009-11-12 22:27:19 -06:00
Glenn Randers-Pehrson
3f2b6a67d1 [devel] Bump to version 1.4.0beta97 2009-11-12 21:05:30 -06:00
Glenn Randers-Pehrson
9ef984d168 [devel] Bump to version 1.4.0beta98 2009-11-12 20:29:56 -06:00
Glenn Randers-Pehrson
fa557347ba [devel] Imported from libpng-1.4.0beta97.tar 2009-11-12 20:04:58 -06:00
Glenn Randers-Pehrson
1c6959cfbe [devel] Revised Makefile.am for better shared library names. 2009-11-12 18:10:00 -06:00
Glenn Randers-Pehrson
be199c1304 [devel] Updated INSTALL with new list of files in the projects directory. 2009-11-12 13:57:42 -06:00
Glenn Randers-Pehrson
51633b7bd7 [devel] Removed projects/beos since no one seems to be supporting it.
Also netware.txt
2009-11-12 13:48:02 -06:00
Glenn Randers-Pehrson
0acc99fdcd [devel] Restored pngtest.png to the libpng-1.4.0beta7 version. 2009-11-12 12:23:07 -06:00
Glenn Randers-Pehrson
f210a05c37 [devel] Restored recent documentation changes. 2009-11-12 10:02:24 -06:00
Glenn Randers-Pehrson
9d57241790 [devel] Bump to version 1.4.0beta97 2009-11-12 10:01:25 -06:00
Glenn Randers-Pehrson
30ec56c8d3 [devel] Fixed up some line-wrapping in the documentation. 2009-11-12 09:57:06 -06:00
Glenn Randers-Pehrson
ce00e7de36 [devel] Imported from libpng-1.4.0beta96.tar 2009-11-12 08:53:06 -06:00
Glenn Randers-Pehrson
4e1e199da8 [devel] Added PNG_PRIVATE macro definition in pngconf.h for possible future use.
(ported from the "master" branch)
2009-11-12 08:29:21 -06:00
Glenn Randers-Pehrson
7336dd4a97 [devel] Revised pngtest.png again.... 2009-11-12 08:19:37 -06:00
Glenn Randers-Pehrson
03c1bf96b2 [devel] Revised pngtest.png to put chunks in the same order written by pngtest
(evidently the same change made in libpng-1.0beta54 was lost).
2009-11-12 08:13:25 -06:00
Glenn Randers-Pehrson
ef07ed3bf8 [devel] Removed recently removed function names from scripts/*.def
and removed the deprecated png_check_sig() function.
2009-11-12 07:43:57 -06:00
Glenn Randers-Pehrson
197c2f3244 [devel] Revised Makefile.am to use libpng.sys while building libpng.so
so that only PNG_EXPORT functions are exported.
2009-11-12 07:03:54 -06:00
Glenn Randers-Pehrson
bdbade92a7 [devel] Bump to version 1.4.0beta96 2009-11-12 06:24:42 -06:00
Glenn Randers-Pehrson
b0dd0ad7af [devel] Renamed scripts/makefile.wce to scripts/makefile.cegcc 2009-11-10 10:34:32 -06:00
Glenn Randers-Pehrson
95a15f7a83 [devel] Bump to version libpng-1.4.0rc02 2009-11-10 10:29:18 -06:00
Glenn Randers-Pehrson
fd10753fd8 [devel] Imported from libpng-1.4.0beta95.tar 2009-11-10 06:11:41 -06:00
Glenn Randers-Pehrson
d88da23cbd [devel] Added dependency on pngpriv.h in contrib/pngminim/*/makefile 2009-11-09 13:34:10 -06:00
Glenn Randers-Pehrson
d5513a7490 [devel] Changed pngminim/*/gather.sh to stop trying to remove pnggccrd.c and pngvcrd.c 2009-11-09 11:28:15 -06:00
Glenn Randers-Pehrson
3d7e15f353 [devel] Changed pngminim/*/gather.sh to stop trying to remove pnggccrd.c and pngvcrd.c 2009-11-09 11:05:40 -06:00
Glenn Randers-Pehrson
ec3f949874 [devel] Fixed some deprecated usages in the contrib directory. 2009-11-09 10:49:12 -06:00
Glenn Randers-Pehrson
884297323d [devel] Fixed a typo in a comment in CMakeLists.txt 2009-11-09 08:32:53 -06:00
Glenn Randers-Pehrson
015289e21d [devel] Bump to version 1.4.0beta95 2009-11-09 06:58:18 -06:00
Glenn Randers-Pehrson
17ca34034b [devel] Imported from libpng-1.4.0beta94.tar 2009-11-09 06:56:01 -06:00
Glenn Randers-Pehrson
44db6e39c3 [devel] Make PNG_DEPSTRUCT, etc., configurable.
Only #define PNG_DEPSTRUCT, etc. in pngconf.h if not already defined.
2009-11-08 20:36:28 -06:00
Glenn Randers-Pehrson
013d1d68c0 [devel] Removed dependency of pngtest.o on pngpriv.h in the makefiles. 2009-11-08 13:28:18 -06:00
Glenn Randers-Pehrson
69b0bc089a [devel] Updated CMakeLists.txt to add "-DPNG_CONFIGURE_LIBPNG" to definitions. 2009-11-07 12:02:48 -06:00
Glenn Randers-Pehrson
0dd4a43f49 [devel] Removed the obsolete, unused pnggccrd.c and pngvcrd.c files. 2009-11-07 11:52:33 -06:00
Glenn Randers-Pehrson
727d3d7463 [devel] Bump to version bump-to-1.4.0beta94.tar 2009-11-07 11:09:16 -06:00
Glenn Randers-Pehrson
c2fb9ec3fa [devel] Imported from libpng-1.4.0beta93.tar 2009-11-07 11:00:17 -06:00
Glenn Randers-Pehrson
9a4ed98618 [master] Revised projects to account for new deprecated-stuff detection
Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG".
    They should work but still need to be updated to remove
    references to pnggccrd.c or pngvcrd.c and ASM building.
  Added README.txt to the beos, cbuilder5, netware, and xcode projects warning
    that they need to be updated, to remove references to pnggccrd.c and
    pngvcrd.c and to depend on pngpriv.h
2009-11-07 10:55:04 -06:00
Glenn Randers-Pehrson
58c4f6b355 Added -DPNG_CONFIGURE_LIBPNG to the makefile CFLAGS
to prevent warnings about direct access to png structs by libpng functions
while building libpng.  They need to be tested, especially
those using compilers other than gcc.
2009-11-07 10:50:29 -06:00
Glenn Randers-Pehrson
d29033f264 [master] Added macros to detect use of deprecated features.
Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
    PNG_ALLOCATED macros to detect deprecated direct access to the
    png_struct or info_struct members and other deprecated usage in
    applications (John Bowler).
  Added -DPNG_CONFIGURE_LIBPNG to the makefile CFLAGS, to prevent warnings
    about direct access to png structs by libpng functions while building
    libpng.
  Removed three direct references to read_info_ptr members in pngtest.c
    that were detected by the new PNG_DEPSTRUCT macro.
  Moved the png_debug macro definitions and the png_read_destroy(),
    png_write_destroy() and png_far_to_near() prototypes from png.h
    to pngpriv.h (John Bowler)
  Moved the synopsis lines for png_read_destroy(), png_write_destroy()
    png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3.
2009-11-07 10:46:42 -06:00
Glenn Randers-Pehrson
047c34b734 [devel] Bump to version bump-to-1.4.0beta93.tar 2009-11-07 10:44:30 -06:00
Glenn Randers-Pehrson
649f741e71 [devel] Imported from libpng-1.4.0beta92.tar 2009-11-04 19:03:57 -06:00
Glenn Randers-Pehrson
d740c8425e [devel] Show differences between 1.2.40 and 1.4.0
instead of between 1.2.41 and 1.4.0 in documentation.
2009-11-04 19:01:54 -06:00
Glenn Randers-Pehrson
9038c3bc48 [devel] Removed "#define 1_4_X" migration aid from pngconf.h 2009-11-03 19:22:32 -06:00
Glenn Randers-Pehrson
74b5acc35d [devel] Make PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED 2009-11-03 12:27:25 -06:00
Glenn Randers-Pehrson
45b8761bc8 [devel] Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_tIME_SUPPORTED 2009-11-03 11:42:05 -06:00
Glenn Randers-Pehrson
cef4f14470 [devel] Added "pngpriv.h" to include list for makefile.wce 2009-11-03 07:17:50 -06:00
Glenn Randers-Pehrson
53651229b5 [devel] Bump version to 1.4.0beta92 2009-11-03 06:59:45 -06:00
Glenn Randers-Pehrson
555126e06f [devel] Imported from libpng-1.4.0beta91.tar 2009-11-03 06:52:48 -06:00
Glenn Randers-Pehrson
163fd0a3e8 [devel] Added scripts/makefile.wce and scripts/png32ce.def
for supporting WindowsCE.
2009-11-02 21:01:19 -06:00
Glenn Randers-Pehrson
ef9c0e9b19 [devel] Fixed typo in pngrtran.c 2009-11-02 15:42:31 -06:00
Glenn Randers-Pehrson
65d235a5db [devel] Use the new PNG_CONVERT_tIME_SUPPORTED macro in pngwrite.c 2009-11-02 11:32:30 -06:00
Glenn Randers-Pehrson
0cb46e200c [devel] Added PNG_CONVERT_tIME_SUPPORTED macro. 2009-11-02 11:24:33 -06:00
Glenn Randers-Pehrson
3ce2146941 [devel] Added WinCE support to ltmain.sh 2009-11-02 09:21:46 -06:00
Glenn Randers-Pehrson
33023522ba [devel] Bump version to 1.4.0beta91 2009-11-02 07:38:45 -06:00
Glenn Randers-Pehrson
d6ea40a7f0 [devel] Imported from libpng-1.4.0beta90.tar 2009-11-02 07:36:15 -06:00
Glenn Randers-Pehrson
99106deaa2 [devel] Restored WIN32_WCE #ifdefs involving the time.h "tm" structure
WindowsCE does not provide the "tm" structure.
2009-11-01 16:26:14 -06:00
Glenn Randers-Pehrson
34a2ebdc4f [devel] Removed obsolete comments about WindowsCE not having time.h 2009-11-01 06:59:27 -06:00
Glenn Randers-Pehrson
418783e760 [devel] Removed all remaining WIN32_WCE #ifdefs 2009-11-01 06:45:09 -06:00
Glenn Randers-Pehrson
07def6f68b [devel] Bump version to 1.4.0beta90 2009-10-31 21:43:26 -05:00
Glenn Randers-Pehrson
8f5846f86d [devel] Imported from libpng-1.4.0beta89.tar 2009-10-31 21:43:16 -05:00
Glenn Randers-Pehrson
f298db9762 [devel] Fix typo in pngconf.h 2009-10-31 21:32:08 -05:00
Glenn Randers-Pehrson
ef29a5e827 [devel] Apply png_user_chunk_cache_max within png_decompress_chunk()
and merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate.
2009-10-31 19:37:05 -05:00
Glenn Randers-Pehrson
8fe28948ca [devel] Removed a harmless extra png_set_invert_alpha()
from pngwrite.c
2009-10-31 12:31:06 -05:00
Glenn Randers-Pehrson
ee35abbcd0 [devel] More bugfixes and improvements to CMakeLists.txt
(Contributed by Philip Lowman)
2009-10-30 15:42:54 -05:00
Glenn Randers-Pehrson
e108e19daf [devel] Bump version to 1.4.0beta89 2009-10-30 15:35:41 -05:00
Glenn Randers-Pehrson
733da8cc46 [devel] Bump version to 1.4.0beta88 2009-10-30 00:01:48 -05:00
Glenn Randers-Pehrson
5df7edb6af [devel] Imported from libpng-1.4.0beta87.tar 2009-10-29 23:55:21 -05:00
Glenn Randers-Pehrson
4f25bf37c2 [devel] Revised libpng.txt about 1.2.x->1.4.0 differences 2009-10-29 23:34:44 -05:00
Glenn Randers-Pehrson
dfa99afe40 [devel] Fixed some indentation
in pngwutil.c
2009-10-29 23:33:46 -05:00
Glenn Randers-Pehrson
c1a4d64a7b [devel] Bump version to 1.4.0beta87 2009-10-29 23:31:06 -05:00
Glenn Randers-Pehrson
a2567be084 [devel] Imported from libpng-1.4.0rc01.tar 2009-10-19 20:36:57 -05:00
Glenn Randers-Pehrson
614b91ded0 [devel] Cosmetic changes in pngwrite.c
Changed "=" to " = " where needed.
2009-10-17 19:00:18 -05:00
Glenn Randers-Pehrson
bee5836721 [devel] Trivial cosmetic hanges in pngwrite.c
Changed "=" to " = ".
2009-10-17 18:29:52 -05:00
Glenn Randers-Pehrson
2f89d766fc [devel] Fix an incorrect #ifdef in pngerror.c 2009-10-13 18:04:41 -05:00
Glenn Randers-Pehrson
a98aa48e57 [devel] Fixed some incorrect indentation in pngrutil.c 2009-10-13 09:23:39 -05:00
Glenn Randers-Pehrson
fa0281061b [devel] Bump version to 1.4.0beta87 2009-10-10 06:26:55 -05:00
Glenn Randers-Pehrson
ea15ec6aa2 [devel] Imported from libpng-1.4.0beta86.tar 2009-10-10 06:25:39 -05:00
Glenn Randers-Pehrson
90b878c583 [devel] Eliminated a shadowed declaration of "pp"
in png_handle_sPLT().
2009-10-07 12:44:35 -05:00
Glenn Randers-Pehrson
132c7b03f0 [devel] Removed dup entries in xcode project's .gitignore 2009-10-05 12:11:49 -05:00
Glenn Randers-Pehrson
c5e4cd3345 [devel] Added projects/xcode/libpng.xcodeproj/.gitignore 2009-10-04 15:55:00 -05:00
Glenn Randers-Pehrson
aeaae7210f [devel] Updated the "xcode" project (Alam Arias). 2009-10-02 09:58:15 -05:00
Glenn Randers-Pehrson
b69df93ec3 [devel] Bump version to 1.4.0beta86 2009-10-02 09:41:09 -05:00
Glenn Randers-Pehrson
0bfb58ff80 [devel] Imported from libpng-1.4.0beta85.tar 2009-09-30 23:14:01 -05:00
Glenn Randers-Pehrson
b35a745561 [devel] Revised png_check_IHDR() again
to check info_ptr members instead of the contents of the returned parameters.
2009-09-30 23:12:13 -05:00
Glenn Randers-Pehrson
b91c634df1 [devel] Bump version to 1.4.0beta85 2009-09-30 16:02:33 -05:00
Glenn Randers-Pehrson
5ade7edd7e [devel] Imported from libpng-1.4.0beta84.tar 2009-09-30 15:13:12 -05:00
Glenn Randers-Pehrson
dd66f3ed20 [devel] Revised png_check_IHDR()
to add a test for user passing a 16-bit height varible to png_get_IHDR()
which causes an overflow into the high bytes of the width variable.
2009-09-30 14:58:28 -05:00
Glenn Randers-Pehrson
6076da8079 [devel] Fixed some inconsistent indentation in pngconf.h
and mentioned use of 2-space indentation in macro definitions in
the libpng style guide.
2009-09-30 12:28:07 -05:00
Glenn Randers-Pehrson
d237dacd83 [devel] Bump version to 1.4.0beta84 2009-09-25 11:56:46 -05:00
Glenn Randers-Pehrson
398a4138d5 [devel] Imported from libpng-1.4.0beta83.tar 2009-09-25 11:53:42 -05:00
Glenn Randers-Pehrson
7ec330ddeb [devel] Revised png_check_IHDR()
to eliminate bogus complaint about filter_type.
2009-09-25 11:45:42 -05:00
Glenn Randers-Pehrson
6564abbf26 [devel] Bump version to bump_to_1.4.0beta83 2009-09-24 20:10:18 -05:00
Glenn Randers-Pehrson
b4f9901580 [devel] Imported from libpng-1.4.0beta82.tar 2009-09-24 20:09:23 -05:00
Glenn Randers-Pehrson
85b0237adc [devel] Eliminated useless call to png_check_cHRM() from pngset.c
in png_set_gAMA_and_cHRM() where we supply the cHRM constants and
therefore we know they are OK.
2009-09-24 19:49:13 -05:00
Glenn Randers-Pehrson
4071d1ed7e [devel] Add png_check_IHDR() to documentation synopses
also png_check_cHRM_fixed() which was apparently overlooked when it
was created.
2009-09-24 19:33:47 -05:00
Glenn Randers-Pehrson
134bbe416d [devel] Improve IHDR checking and error reporting
Move redundant IHDR checking into new png_check_IHDR() in png.c
and report all errors found in the IHDR data.  Report problems
with width and height separately.
2009-09-24 18:10:49 -05:00
Glenn Randers-Pehrson
3243fea0ac [devel] Remove scripting cruft in contrib/pngminim/*/pngusr.h 2009-09-24 18:05:22 -05:00
Glenn Randers-Pehrson
216c9b00a8 [devel] Bump version to 1.4.0beta82 2009-09-24 18:03:21 -05:00
Glenn Randers-Pehrson
67f3b485c2 [devel] Imported from libpng-1.4.0beta81.tar 2009-09-23 11:49:44 -05:00
Glenn Randers-Pehrson
b2aca215c0 [devel] Changed several "if !defined(X)" to "ifndef X" 2009-09-23 11:32:37 -05:00
Glenn Randers-Pehrson
e26c09529a [devel] Changed some "#if defined(" to "ifdef" 2009-09-23 11:22:08 -05:00
Glenn Randers-Pehrson
212defee0f [devel] Eliminated unused png_ptr->row_buf_size 2009-09-23 10:29:21 -05:00
Glenn Randers-Pehrson
4e6b5e91df [devel] Changed some "#if defined(" to "ifdef"
and revised libpng style to mention not using the TAB character.
2009-09-23 10:24:53 -05:00
Glenn Randers-Pehrson
9bf6083375 [devel] Removed PNG_CONST from all "PNG_CONST PNG_CHNK" declarations
to avoid compiler complaints about doubly declaring things "const".
2009-09-20 13:37:50 -05:00
Glenn Randers-Pehrson
72cbc6ee95 [devel] Expanded TAB characters in pngrtran.c 2009-09-20 07:28:43 -05:00
Glenn Randers-Pehrson
f74c5acf29 [devel] Eliminated unused PNG_FLAG_FREE_* defines from pngpriv.h 2009-09-20 07:27:34 -05:00
Glenn Randers-Pehrson
6bbc336c02 [devel] Bump version to 1.4.0beta81 2009-09-17 13:32:41 -05:00
Glenn Randers-Pehrson
93fc3da348 [devel] Bump version to libpng-1.4.0beta81 2009-09-17 11:08:12 -05:00
Glenn Randers-Pehrson
c7dd196b04 [devel] Update CHANGES and ANNOUNCE
about fixing the "#if def " bug
2009-09-17 11:03:48 -05:00
Glenn Randers-Pehrson
9c1bb203e3 [devel] Fix typo in pngtest.c
("#if def" should be "#ifdef")
2009-09-17 10:55:49 -05:00
Glenn Randers-Pehrson
63a054d7d7 [devel] Imported from libpng-1.4.0beta80.tar 2009-09-17 09:47:47 -05:00
Glenn Randers-Pehrson
495e399865 [devel] Revise ANNOUNCE and CHANGES
to give Dennis Gustafsson credit for noticing the incorrect typecast
of "filler".
2009-09-17 09:43:34 -05:00
Glenn Randers-Pehrson
36ac0b59b0 [devel] Changed (png_byte)filler to (png_uint_16)filler in png_set_filler(). 2009-09-15 19:12:08 -05:00
Glenn Randers-Pehrson
00768a2d76 [devel] Removed scripts/libpng.icc 2009-09-03 13:23:59 -05:00
Glenn Randers-Pehrson
bb9ff29efd [devel] Bump version to libpng-1.4.0beta80 2009-09-01 11:38:15 -05:00
Glenn Randers-Pehrson
5d95de74d3 [devel] Imported from libpng-1.4.0beta79.tar 2009-09-01 11:38:04 -05:00
Glenn Randers-Pehrson
5618e46179 [devel] Eliminated PNG_NO_CALLOC and PNG_CALLOC_SUPPORTED
and always use png_calloc().  The macros were only there for testing,
since libpng-1.4.0beta48 and no problems have been reported.
2009-09-01 10:48:04 -05:00
Glenn Randers-Pehrson
b380515c84 [devel] Removed references to PNG_NO_GLOBAL_ARRAYS
from contrib/visupng and contrib/pngminim sources.
2009-08-31 14:50:08 -05:00
Glenn Randers-Pehrson
9e9788497e [devel] Documented removal of GLOBAL_ARRAY support. 2009-08-31 14:28:33 -05:00
Glenn Randers-Pehrson
8631250eea [devel] Eliminate PNG_USE_GLOBAL_ARRAYS option
Always use local arrays, which has been the default behavior
for a long time.
2009-08-31 14:17:23 -05:00
Glenn Randers-Pehrson
3d893a0804 [devel] Updated documentation about newly deprecated macros. 2009-08-31 13:32:46 -05:00
Glenn Randers-Pehrson
c31d7179e5 [devel] Bump version to libpng-1.4.0beta79 2009-08-31 11:25:46 -05:00
Glenn Randers-Pehrson
77d0cdef02 [devel] Imported from libpng-1.4.0beta78.tar 2009-08-31 11:22:08 -05:00
Glenn Randers-Pehrson
02564cc842 [devel] Revise CHANGES and ANNOUNCE entry for previous commit. 2009-08-31 11:19:20 -05:00
Glenn Randers-Pehrson
d9f21ee796 [devel] Initialize row_pointers to NULL with a loop
instead of memset to zero in png_read_png().
2009-08-31 10:52:38 -05:00
Glenn Randers-Pehrson
0af5378d4d [devel] Eliminated PNG_NO_FREE_ME and PNG_FREE_ME_SUPPORTED macros
They were only useful for obtaining compatibility for old applications
that used libpng-1.0.x versions prior to the implementation of "free_me".
2009-08-31 09:02:37 -05:00
Glenn Randers-Pehrson
dbd4014239 [devel] Replaced all "PNG_NO_FEATURE" tests with "PNG_FEATURE_SUPPORTED" tests
except in pngconf.h where they can be used to request that
PNG_FEATURE_SUPPORTED not be defined.
2009-08-31 08:42:02 -05:00
Glenn Randers-Pehrson
8551d59672 [devel] Reverted previous change (png_memset loop)
It does not seem to promise any benefit to libpng.
2009-08-29 16:25:19 -05:00
Glenn Randers-Pehrson
10ee432860 [devel] Optionally use a loop instead of memset() to initialize memory.
To try this, configure libpng using PNG_USE_MEMSET_LOOP.  Initial testing
with pngcrush was not promising, although it does save a hundred bytes or
so of executable size.
2009-08-29 14:30:36 -05:00
Glenn Randers-Pehrson
194ca9e7bb [devel] Remove reference to KNOWNBUG in ANNOUNCE. 2009-08-28 07:25:42 -05:00
Glenn Randers-Pehrson
2d7767b700 [devel] Bump version to libpng-1.4.0beta78 2009-08-28 07:17:18 -05:00
Glenn Randers-Pehrson
e14f98280b [devel] Imported from libpng-1.4.0beta77.tar 2009-08-27 16:02:21 -05:00
Glenn Randers-Pehrson
38e467edac [devel] Various bugfixes and improvements to CMakeLists.txt (Philip Lowman)
1. Modify project(PNG) to project(PNG C) to avoid search for C++ compiler
2. set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) and fix end conditionals
from ugly else(FOO AND BAR) endif(FOO AND BAR) to else() endif()
3. Add missing include_directories() for ZLIB_INCLUDE_DIR
4. Created CMake options to allow configurable building of STATIC or SHARED
libpng, both default on.
5. Modified PNG_DEBUG to default to false?
6. Fix installation of static/shared libraries so DLL goes in prefix+/bin,
all others in prefix+/lib
2009-08-27 15:59:40 -05:00
Glenn Randers-Pehrson
5b754aac0d [devel] Updated INSTALL
to reflect the new set of files in the distribution.
2009-08-26 12:16:18 -05:00
Glenn Randers-Pehrson
9d2ab7b405 [devel] Moved scripts/CMakeLists.txt to main libpng directory 2009-08-26 12:14:11 -05:00
Glenn Randers-Pehrson
21ab827567 [devel] Removed some files from distribution
lpXYZ.tar.bz2 (with CRLF), KNOWNBUG, libpng-x.y.z-KNOWNBUG.txt,
and the "noconfig" files have been removed from the distribution.
2009-08-26 12:10:02 -05:00
Glenn Randers-Pehrson
b7e4c1c2e2 [devel] Bump version to libpng-1.4.0beta77 2009-08-26 12:04:32 -05:00
Glenn Randers-Pehrson
023841f4fd [devel] Imported from libpng-1.4.0beta76.tar 2009-08-25 15:03:19 -05:00
Glenn Randers-Pehrson
6d75d0c51f [devel] Moved an improperly located if-test in png_read_row()
It had been put inside the png_debug2() statement.
2009-08-22 08:45:09 -05:00
Glenn Randers-Pehrson
3dfe93776f [devel] Trivial changes to commentary in pngwrite.c 2009-08-22 08:44:23 -05:00
Glenn Randers-Pehrson
ec323d3036 [devel] Bump version to libpng-1.4.0beta76 2009-08-20 23:03:26 -05:00
Glenn Randers-Pehrson
f4431031a7 [devel] Imported from libpng-1.4.0beta75.tar 2009-08-20 22:57:28 -05:00
Glenn Randers-Pehrson
0fe929e778 [devel] Fixed incorrect #ifdef in pngset.c
PNG_UNKNOWN_CHUNK_SUPPORTED should be PNG_HANDLE_AS_UNKNOWN_SUPPORTED.
2009-08-20 22:55:49 -05:00
Glenn Randers-Pehrson
626afd6219 [devel] Removed an extra debug statement from pngwutil.c 2009-08-20 22:52:51 -05:00
Glenn Randers-Pehrson
c81bb8a463 [devel] Relocate some png_debug() statements
Putting them ahead of the test for png_ptr==NULL so the debug
statements accuratly reflect the fact that the function was entered.
2009-08-15 22:02:26 -05:00
Glenn Randers-Pehrson
b3ce365d91 [devel] Add some whitespace and relocate some png_debug statements. 2009-08-15 21:47:03 -05:00
Glenn Randers-Pehrson
da00980433 [devel] Made use of whitespace around debug statements consistent. 2009-08-15 13:25:47 -05:00
Glenn Randers-Pehrson
951028949c [devel] Remove extra png_debug() from png_write_find_filter()
in pngwutil.c, that was recently added by mistake.
2009-08-13 18:09:22 -05:00
Glenn Randers-Pehrson
fbd727aa11 [devel] Bump version to libpng-1.4.0beta75
in libpng.3 and png.h
2009-08-13 18:08:26 -05:00
Glenn Randers-Pehrson
3358a9880b [devel] Bump version to libpng-1.4.0beta75 2009-08-13 18:05:36 -05:00
Glenn Randers-Pehrson
3c9c3ea7ae [devel] Imported from libpng-1.4.0beta74.tar 2009-08-08 16:58:26 -05:00
Glenn Randers-Pehrson
6abea7562b [devel] Change "trans" to "trans_alpha" 2009-08-08 16:55:36 -05:00
Glenn Randers-Pehrson
866b62acdc [devel] Bumpt to version libpng-1.4.0beta74 2009-08-08 16:49:46 -05:00
Glenn Randers-Pehrson
3a054e1e96 [devel] Imported from libpng-1.4.0beta73.tar 2009-08-01 08:59:19 -05:00
Glenn Randers-Pehrson
ad81d71ecb [devel] Bump version to libpng-1.4.0beta72 2009-07-30 15:42:11 -05:00
Glenn Randers-Pehrson
faf49916cb [devel] Imported from libpng-1.4.0beta71.tar 2009-07-29 07:20:49 -05:00
Glenn Randers-Pehrson
bb8d8a8a4a [devel] Update configure scripts with autoconf-2.64
Previous log message is wrong, should say update configure scripts
instead of revert...
2009-07-28 17:38:41 -05:00
Glenn Randers-Pehrson
bafb1e27c2 [devel] Revert configure script update (2nd attempt) 2009-07-28 17:35:49 -05:00
Glenn Randers-Pehrson
8568f6e3e9 [devel] Revert configure script update 2009-07-28 17:21:59 -05:00
Glenn Randers-Pehrson
dfabe7d0f8 [devel] Revert configure script update 2009-07-28 17:17:39 -05:00
Glenn Randers-Pehrson
81233967ca [devel] Update configure scripts with autoconf-2.64. 2009-07-28 17:02:38 -05:00
Glenn Randers-Pehrson
922ad083e6 [devel] Revise references to zlib/libpng license 2009-07-28 16:48:28 -05:00
Glenn Randers-Pehrson
0d6ade69e2 [devel] Bump version to libpng-1.4.0beta71 2009-07-28 08:04:56 -05:00
Glenn Randers-Pehrson
416976fffd [devel] Imported from libpng-1.4.0beta70.tar 2009-07-27 22:31:35 -05:00
Glenn Randers-Pehrson
bc438d3671 [devel] Revise CHANGES and ANNOUNCE
with information that the NULL dereference bug first appeared in libpng-0.95.
2009-07-27 22:17:19 -05:00
Glenn Randers-Pehrson
e2a118f81a [devel] Avoid a possible NULL dereference in debug builds
in png_set_text-2().  Bug discovered by Evan Rouault, using cochinelle.
2009-07-27 22:08:25 -05:00
Glenn Randers-Pehrson
78389d8396 [devel] Bump version to libpng-1.4.0beta70 2009-07-27 22:05:20 -05:00
Glenn Randers-Pehrson
1cece74438 [devel] Imported from libpng-1.4.0beta69.tar 2009-07-25 09:26:53 -05:00
Glenn Randers-Pehrson
3f705ba9a5 [devel] Added a prototype for png_64bit_product()
in png.c (suggested by Peter Breitenlohner)
2009-07-23 12:53:06 -05:00
Glenn Randers-Pehrson
8f075be1e2 [devel] Fixed up xcode project (Alam Arias) 2009-07-19 19:33:22 -05:00
Glenn Randers-Pehrson
8cb69f0f2b [devel] Removed extraneous declaration
from the new call to png_read_gray_to_rgb() (bug introduced in
libpng-1.4.0beta67). (Patch contributed by Alam Arias)
2009-07-19 19:24:58 -05:00
Glenn Randers-Pehrson
97a4573885 [devel] Describe new filter-selection test in CHANGES and ANNOUNCE. 2009-07-19 15:10:36 -05:00
Glenn Randers-Pehrson
4ace0e1530 [devel] Revised the new test
to run faster in the usual PNG_ALL_FILTERS case.  The previous, more
accurate test, would save some computation in uncommon cases, but is
probably not worth while in the long run.
2009-07-19 15:04:35 -05:00
Glenn Randers-Pehrson
9d8b41ea6f [devel] Relocated new 'if' test
after the 'png_debug(1, "in png_write_find_filter");' statement.
2009-07-19 14:45:43 -05:00
Glenn Randers-Pehrson
0b1ba8c05e [devel] Bump version to libpng-1.4.0beta69 2009-07-19 14:30:05 -05:00
Glenn Randers-Pehrson
12a11c521b [devel] Imported from libpng-1.4.0beta68.tar 2009-07-19 14:27:36 -05:00
Glenn Randers-Pehrson
9c90d7f4ee [devel] Revised test for avoiding filter selection tests
to obtain the same result as previously when the user asks for
    a filter selection that does not include NONE or SUB, e.g., if
    the user asks for PAETH-only that's what they should get.
2009-07-19 13:11:25 -05:00
Glenn Randers-Pehrson
575d067998 [devel] Revised test for avoiding filter selection tests
to obtain the same result as previously when the user asks for
a filter selection that does not include NONE or SUB, e.g., if
the user asks for PAETH-only that's what they should get.
2009-07-19 12:57:34 -05:00
Glenn Randers-Pehrson
ae4af5600d [devel] Avoid some tests while selecting a filter.
The AVG and PAETH filters will never be selected for the first
row, so we need not test them.
2009-07-18 11:28:33 -05:00
Glenn Randers-Pehrson
ee100094e4 [devel] Bump version to libpng-1.4.0beta68 2009-07-07 13:55:58 -05:00
Glenn Randers-Pehrson
bc7156d089 [devel] Imported from libpng-1.4.0beta67.tar 2009-07-06 09:14:14 -05:00
Glenn Randers-Pehrson
237d1fba11 [devel] add "xcode" project
contributed by Alam Arias
2009-07-05 14:21:54 -05:00
Glenn Randers-Pehrson
99708d560f [devel] Added high-level PNG_TRANSFORM_GRAY_TO_RGB transform. 2009-06-29 17:30:00 -05:00
Glenn Randers-Pehrson
6878eb6899 [devel] Relocate the INVERT_ALPHA function within png_read_png()
and png_write_png().
2009-06-29 16:45:53 -05:00
Glenn Randers-Pehrson
cd2634b3ce [devel] Bump version to libpng-1.4.0beta67 2009-06-29 16:39:03 -05:00
Glenn Randers-Pehrson
bfbf86558c [devel] Imported from libpng-1.4.0beta66.tar 2009-06-26 21:49:39 -05:00
Glenn Randers-Pehrson
c332bbcd34 [devel] Revise references to zlib/libpng license 2009-06-25 13:46:50 -05:00
Glenn Randers-Pehrson
e0dc4c8a1e [devel] Imported from libpng-1.4.0beta65.tar 2009-06-25 12:19:52 -05:00
Glenn Randers-Pehrson
02045b57b1 [devel] Change "zlib-libpng" to "zlib/libpng"
to see if that works better for the auto-license-detectors
2009-06-25 08:12:20 -05:00
Glenn Randers-Pehrson
037023bb31 [devel] Revise references to zlib-libpng license 2009-06-24 10:30:58 -05:00
Glenn Randers-Pehrson
ed82c3bb59 [devel] Add pointer to png.h LICENSE info in pngpriv.h and pngconf.h 2009-06-24 10:03:45 -05:00
Glenn Randers-Pehrson
3e61d7985c [devel] Mention zlib-libpng license in each source file 2009-06-24 09:35:48 -05:00
Glenn Randers-Pehrson
d84748a467 [devel] Bump version to libpng-1.4.0beta65 2009-06-24 08:19:43 -05:00
Glenn Randers-Pehrson
668af4ef48 [devel] Imported from libpng-1.4.0beta64.tar 2009-06-24 07:04:19 -05:00
Glenn Randers-Pehrson
83fb85581d [devel] Fixed some indentation in pngset.c 2009-06-16 17:52:23 -05:00
Glenn Randers-Pehrson
59c39b886d [devel] Changed one PNG_HANDLE_AS_UNKNOWN to PNG_UNKNOWN_CHUNKS_SUPPORTED 2009-06-16 17:23:08 -05:00
Glenn Randers-Pehrson
3b3e09075a [devel] Added an "#ifdef PNG_WRITE_SUPPORTED/#endif" block in pngconf.h 2009-06-16 17:20:43 -05:00
Glenn Randers-Pehrson
658ea4304e [devel] Relocated various UNKNOWN_CHUNK macros
outside of the PNG_READ|WRITE_ANCILLARY_CHUNK_SUPPORTED blocks, where
they did not really belong.  Updated CHANGES and ANNOUNCE.
2009-06-16 16:24:57 -05:00
Glenn Randers-Pehrson
33188acf8f Eliminated PNG_LEGACY_SUPPORTED
It is not of any use in libpng-1.4.0; it was only to support binary
compatibility between some old libpng-1.0.x versions.  It should have
been removed from libpng-1.2.x as well but it is too late for that now.
2009-06-16 14:12:35 -05:00
Glenn Randers-Pehrson
38674ec994 [devel] Added 2 defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) tests in png.h. 2009-06-16 13:33:01 -05:00
Glenn Randers-Pehrson
8d6adb6090 [devel] bump version to libpng-1.4.0beta64 2009-06-16 07:02:00 -05:00
Glenn Randers-Pehrson
d60c886ebc [devel] Imported from libpng-1.4.0beta63.tar 2009-06-16 06:35:35 -05:00
Glenn Randers-Pehrson
6c7a09ab7c [devel] Reformatted some comments. 2009-06-15 21:57:39 -05:00
Glenn Randers-Pehrson
7824a70c1d [devel] Changed several "#ifdef PNG_UNKNOWN_CHUNK_SUPPORTED" to
to "#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED", to make the png_set_keep
    mechanism available for ignoring known chunks even when not saving
    unknown chunks.
2009-06-13 10:07:55 -05:00
Glenn Randers-Pehrson
b5444a1779 [devel] Revise libpng.3
about calling png_set_IHDR() multiple times and about the order
of color samples in the tRNS chunk.
2009-06-08 08:36:19 -05:00
Glenn Randers-Pehrson
9dcde09ac8 [devel] Revise libpng*.txt
about calling png_set_IHDR() multiple times and about the order
of color samples in the tRNS chunk.
2009-06-08 08:31:59 -05:00
Glenn Randers-Pehrson
7aa1834c95 [devel] Bump version to bump-to-libpng-1.4.0beta63 2009-06-05 17:26:31 -05:00
Glenn Randers-Pehrson
424c98547d Imported from libpng-1.4.0beta62.tar 2009-06-04 07:48:17 -05:00
Glenn Randers-Pehrson
37e7e0bd81 [devel] Added a section in documentation
about using png_set_io_ptr() in configure scripts for detecting libpng
2009-06-02 13:46:41 -05:00
Glenn Randers-Pehrson
e0c505cfae Bump version to libpng-1.4.0beta62 2009-05-30 21:22:44 -05:00
Glenn Randers-Pehrson
d8eb62ff15 More cosmetic reformatting
Broke several remaining "if () statement;" and "else statement;" into
two lines.
2009-05-30 20:19:20 -05:00
Glenn Randers-Pehrson
45ae51743b In contrib/pngminim, #define PNG_NO_READ|WRITE_SWAP in pngusr.h 2009-05-28 20:22:38 -05:00
Glenn Randers-Pehrson
4bb4d01681 Imported from libpng-1.4.0beta61.tar 2009-05-20 17:15:20 -05:00
Glenn Randers-Pehrson
b205f291f6 Actually add the renamed makefiles. 2009-05-19 13:10:55 -05:00
Glenn Randers-Pehrson
a24b08a42a Rename contrib/pngminim/*/makefile.std to makefile
since there's only one makefile, so users can just type "make"
instead of "make -f makefile.std".
2009-05-19 13:08:48 -05:00
Glenn Randers-Pehrson
058d6f321a Bump version to libpng-1.4.0beta61 2009-05-19 13:05:39 -05:00
Glenn Randers-Pehrson
dbab08f936 Imported from libpng-1.4.0beta60.tar 2009-05-18 17:02:31 -05:00
Glenn Randers-Pehrson
c996d13ec3 Add contrib/pngminim/preader
based on contrib/gregbook/rpng2-x
2009-05-18 16:01:26 -05:00
Glenn Randers-Pehrson
a31c74f7ef Undo mistakes in porting png_memset() calls from libpng-1.2.37beta02 2009-05-18 15:52:01 -05:00
Glenn Randers-Pehrson
0ab7868d8a Restore png_combine_row() to progressive-read-only builds. 2009-05-18 15:28:44 -05:00
Glenn Randers-Pehrson
5902059c7c Conditionally compile functions only used by sequential readers
png_combine_row() and png_read_finish_row() are not used by progressive
PNG readers.
2009-05-18 10:54:11 -05:00
Glenn Randers-Pehrson
580f4f5561 Revert "Set png_ptr->old_prev_row_size=0 in pngpread.c and pngrutil.c"
This should be handled in the APNG fork instead of in libpng proper.
This reverts commit ee59a9f9f0.
2009-05-18 10:40:33 -05:00
Glenn Randers-Pehrson
ee59a9f9f0 Set png_ptr->old_prev_row_size=0 in pngpread.c and pngrutil.c
This forces the prev_row array to be cleared before the first
row of each image and interlace pass.
2009-05-16 07:32:28 -05:00
Glenn Randers-Pehrson
7654682c25 Bump version to libpng-1.4.0beta60 2009-05-16 07:25:42 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
b1c0d33128 Housecleaning: revise identation and comments to meet libpng coding style. 2009-05-15 20:39:34 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
9a692c0769 Fix typos in libpng*.txt: AVE filter should be AVG filter 2009-05-15 20:38:11 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
11a3c7b50a Bump version to 1.4.0beta59 2009-05-15 20:33:24 -05:00
Glenn Randers-Pehrson
acfe7dc475 Imported from libpng-1.4.0beta58.tar 2009-05-14 05:33:33 -05:00
Glenn Randers-Pehrson
64548deafc Reformatted comments in example.c
Added advice about setting pointers to NULL after png_free(),
capitalized sentences, reformatted long comments in libpng style.
2009-05-13 15:23:03 -05:00
Glenn Randers-Pehrson
640b7d514d Merged example.c with libpng-1.2.37beta01
(from the git master branch)
2009-05-13 07:33:22 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
d603c89397 Revert typo in scripts/makefile.mingw
Should refer to "pngwin.def" instead of "pngw32.def"
2009-05-03 05:47:20 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
cdd4330edc Revert typo in scripts/makefile.mingw
(should refer to pngwin.def not pngw32.def)
2009-05-03 05:44:06 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
389c655a5a Bump internal version to bump-libpng-to-1.4.0beta58 2009-05-03 05:40:08 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
31cafa0a3e Fix typo about autoconf version again
There are too many master directories floating around now...
2009-05-02 16:08:06 -05:00
Glenn Randers-Pehrson
3011945d6f Imported from libpng-1.4.0beta57.tar 2009-05-02 15:58:33 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
7ecf7bdc6b Removed support of pngprefs.h from makefiles.
It is no longer used since the MMX support was removed.
2009-05-02 15:36:08 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
4cd137127f Fix typo in CHANGES and ANNOUNCE (mentioned wrong versions of autoconf). 2009-05-02 15:28:09 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
0a2547e83d Rebuilt configure scripts with autoconf 2.63 2009-05-02 15:25:36 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
d209ec76b2 Remove unused png_freeptr() prototype ... again. 2009-05-02 15:15:46 -05:00
Glenn Randers-Pehrson glennrp@comcast.net
92d9534c1a Bump internal versioning to libpng-1.4.0beta57 2009-05-02 15:12:50 -05:00
Glenn Randers-Pehrson
1d0240500c Imported from libpng-1.4.0beta56.tar 2009-04-25 07:44:20 -05:00
Glenn Randers-Pehrson
4db4affbaf Change two remaining "gamma" to "png_gamma" (Brandon Casey) 2009-04-20 11:49:24 -05:00
Glenn Randers-Pehrson
8764c2595d Changed local variable "gamma" to "png_gamma"
This avoids a "shadowed declaration" variable when compiling with
"gcc -Wshadow ..." due to another use of this name in math.h on
some platforms.
2009-04-19 07:52:22 -05:00
Glenn Randers-Pehrson
4ec05bf614 Change name of local variable "gamma" to "png_gamma"
This avoids a "shadowed declaration" warning from "gcc -Wshadow"
due to math.h using "gamma" on some platforms.
2009-04-19 07:44:37 -05:00
Glenn Randers-Pehrson
871f5cd155 Bump internal versioning to 1.4.0beta56 2009-04-19 07:43:02 -05:00
Glenn Randers-Pehrson
f0a8fe0bf6 Imported from libpng-1.4.0beta55.tar 2009-04-15 07:57:25 -05:00
Glenn Randers-Pehrson
a93c942070 Imported from libpng-1.4.0beta54.tar 2009-04-13 12:02:11 -05:00
Glenn Randers-Pehrson
a6cc627446 Imported from libpng-1.4.0beta53.tar 2009-04-06 16:11:12 -05:00
Glenn Randers-Pehrson
6a9c2cefdd Imported from libpng-1.4.0beta52.tar 2009-04-06 16:11:09 -05:00
Glenn Randers-Pehrson
8fb550cc3e Imported from libpng-1.4.0beta51.tar 2009-04-06 16:11:07 -05:00
Glenn Randers-Pehrson
6917b51660 Imported from libpng-1.4.0beta50.tar 2009-04-06 16:11:04 -05:00
Glenn Randers-Pehrson
0ffb71a6af Imported from libpng-1.4.0beta49.tar 2009-04-06 16:11:02 -05:00
Glenn Randers-Pehrson
79134c69a4 Imported from libpng-1.4.0beta48.tar 2009-04-06 16:11:00 -05:00
Glenn Randers-Pehrson
4a82d69b9f Imported from libpng-1.4.0beta47.tar 2009-04-06 16:10:57 -05:00
Glenn Randers-Pehrson
1eb14e95d3 Imported from libpng-1.4.0beta46.tar 2009-04-06 16:10:55 -05:00
Glenn Randers-Pehrson
65a0992f0d Imported from libpng-1.4.0beta45.tar 2009-04-06 16:10:53 -05:00
Glenn Randers-Pehrson
5ca69e43ec Imported from libpng-1.4.0beta44.tar 2009-04-06 16:10:50 -05:00
Glenn Randers-Pehrson
d6d8075c0a Imported from libpng-1.4.0beta43.tar 2009-04-06 16:10:48 -05:00
Glenn Randers-Pehrson
35f5196386 Imported from libpng-1.4.0beta42.tar 2009-04-06 16:10:46 -05:00
Glenn Randers-Pehrson
71a3c1f821 Imported from libpng-1.4.0beta41.tar 2009-04-06 16:10:44 -05:00
Glenn Randers-Pehrson
02a5e33061 Imported from libpng-1.4.0beta40.tar 2009-04-06 16:10:41 -05:00
Glenn Randers-Pehrson
398b5a31a7 Imported from libpng-1.4.0beta39.tar 2009-04-06 16:10:39 -05:00
Glenn Randers-Pehrson
d0c40591f2 Imported from libpng-1.4.0beta38.tar 2009-04-06 16:10:36 -05:00
Glenn Randers-Pehrson
f783101c88 Imported from libpng-1.4.0beta37.tar 2009-04-06 16:10:34 -05:00
Glenn Randers-Pehrson
97a9b48789 Imported from libpng-1.4.0beta36.tar 2009-04-06 16:10:32 -05:00
Glenn Randers-Pehrson
56f6396137 Imported from libpng-1.4.0beta35.tar 2009-04-06 16:10:29 -05:00
Glenn Randers-Pehrson
a5fa5c9013 Imported from libpng-1.4.0beta34.tar 2009-04-06 16:10:27 -05:00
Glenn Randers-Pehrson
800d1e9a67 Imported from libpng-1.4.0beta33.tar 2009-04-06 16:10:25 -05:00
Glenn Randers-Pehrson
dbed41fde1 Imported from libpng-1.4.0beta32.tar 2009-04-06 16:10:22 -05:00
Glenn Randers-Pehrson
4198360421 Imported from libpng-1.4.0beta31.tar 2009-04-06 16:10:20 -05:00
Glenn Randers-Pehrson
1916f6ae42 Imported from libpng-1.4.0beta30.tar 2009-04-06 16:10:18 -05:00
Glenn Randers-Pehrson
e0784c72f4 Imported from libpng-1.4.0beta29.tar 2009-04-06 16:10:15 -05:00
Glenn Randers-Pehrson
43aaf6eb37 Imported from libpng-1.4.0beta28.tar 2009-04-06 16:10:13 -05:00
Glenn Randers-Pehrson
51650b8a65 Imported from libpng-1.4.0beta27.tar 2009-04-06 16:10:11 -05:00
Glenn Randers-Pehrson
79084216af Imported from libpng-1.4.0beta26.tar 2009-04-06 16:10:08 -05:00
Glenn Randers-Pehrson
eb58091392 Imported from libpng-1.4.0beta25.tar 2009-04-06 16:10:05 -05:00
Glenn Randers-Pehrson
895a9c97e2 Imported from libpng-1.4.0beta24.tar 2009-04-06 16:10:03 -05:00
Glenn Randers-Pehrson
72b633026b Imported from libpng-1.4.0beta23.tar 2009-04-06 16:10:00 -05:00
Glenn Randers-Pehrson
d8d7b949d9 Imported from libpng-1.4.0beta22.tar 2009-04-06 16:09:58 -05:00
Glenn Randers-Pehrson
b3ff968558 Imported from libpng-1.4.0beta21.tar 2009-04-06 16:09:56 -05:00
Glenn Randers-Pehrson
145f5c8164 Imported from libpng-1.4.0beta20.tar 2009-04-06 16:09:54 -05:00
Glenn Randers-Pehrson
a7dbcba1e8 Imported from libpng-1.4.0beta19.tar 2009-04-06 16:09:51 -05:00
Glenn Randers-Pehrson
c3f52f12bb Imported from libpng-1.4.0beta18.tar 2009-04-06 16:09:49 -05:00
Glenn Randers-Pehrson
7edd45814c Imported from libpng-1.4.0beta17.tar 2009-04-06 16:09:47 -05:00
Glenn Randers-Pehrson
701dbaa81e Imported from libpng-1.4.0beta16.tar 2009-04-06 16:09:45 -05:00
Glenn Randers-Pehrson
ae4bd5c2be Imported from libpng-1.4.0beta15.tar 2009-04-06 16:09:42 -05:00
Glenn Randers-Pehrson
6b12c08bfc Imported from libpng-1.4.0beta14.tar 2009-04-06 16:09:40 -05:00
Glenn Randers-Pehrson
3779c69674 Imported from libpng-1.4.0beta13.tar 2009-04-06 16:09:38 -05:00
Glenn Randers-Pehrson
ebd7f9a371 Imported from libpng-1.4.0beta12.tar 2009-04-06 16:09:36 -05:00
Glenn Randers-Pehrson
beb572e616 Imported from libpng-1.4.0beta11.tar 2009-04-06 16:09:34 -05:00
Glenn Randers-Pehrson
3424ee7354 Imported from libpng-1.4.0beta10.tar 2009-04-06 16:09:31 -05:00
Glenn Randers-Pehrson
e826d7e200 Imported from libpng-1.4.0beta9.tar 2009-04-06 16:09:29 -05:00
Glenn Randers-Pehrson
d120996a49 Imported from libpng-1.4.0beta8.tar 2009-04-06 16:09:27 -05:00
Glenn Randers-Pehrson
6bc53be992 Imported from libpng-1.4.0beta7.tar 2009-04-06 16:09:25 -05:00
Glenn Randers-Pehrson
f46918d129 Imported from libpng-1.4.0beta6.tar 2009-04-06 16:09:22 -05:00
Glenn Randers-Pehrson
73b064c2af Imported from libpng-1.4.0beta5.tar 2009-04-06 16:09:20 -05:00
Glenn Randers-Pehrson
b3870ab5f9 Imported from libpng-1.4.0beta4.tar 2009-04-06 16:09:18 -05:00
Glenn Randers-Pehrson
86dc981475 Imported from libpng-1.4.0beta3.tar 2009-04-06 16:09:16 -05:00
Glenn Randers-Pehrson
d60b8fab03 Imported from libpng-1.4.0beta2.tar 2009-04-06 16:09:14 -05:00
Glenn Randers-Pehrson
1721829464 Imported from libpng-1.4.0beta1.tar 2009-04-06 16:09:11 -05:00
Glenn Randers-Pehrson
f628ee2fa4 Imported from libpng-1.2.10rc1.tar 2009-04-06 16:09:08 -05:00
Glenn Randers-Pehrson
ad310547a2 Imported from libpng-1.2.10beta7.tar 2009-04-06 16:09:06 -05:00
Glenn Randers-Pehrson
629330e761 Imported from libpng-1.2.10beta6.tar 2009-04-06 16:09:04 -05:00
Glenn Randers-Pehrson
b511b60aaa Imported from libpng-1.2.10beta5.tar 2009-04-06 16:09:02 -05:00
Glenn Randers-Pehrson
77be22c09a Imported from libpng-1.2.10beta4.tar 2009-04-06 16:09:00 -05:00
Glenn Randers-Pehrson
b0270f77a9 Imported from libpng-1.2.10beta3.tar 2009-04-06 16:08:58 -05:00
Glenn Randers-Pehrson
3a5a759bb7 Imported from libpng-1.2.10beta2.tar 2009-04-06 16:08:55 -05:00
Glenn Randers-Pehrson
d5d63601b9 Imported from libpng-1.2.10beta1.tar 2009-04-06 16:08:53 -05:00
Glenn Randers-Pehrson
a7d0c94169 Imported from libpng-1.2.9.tar 2009-04-06 16:08:51 -05:00
Glenn Randers-Pehrson
3a51203c48 Imported from libpng-1.2.9rc1.tar 2009-04-06 16:08:49 -05:00
Glenn Randers-Pehrson
4deeb795f6 Imported from libpng-1.2.9beta11.tar 2009-04-06 16:08:46 -05:00
Glenn Randers-Pehrson
26e47d9a71 Imported from libpng-1.2.9beta10.tar 2009-04-06 16:08:44 -05:00
Glenn Randers-Pehrson
170b70ce30 Imported from libpng-1.2.9beta9.tar 2009-04-06 16:08:42 -05:00
Glenn Randers-Pehrson
1ce0836b4a Imported from libpng-1.2.9beta8.tar 2009-04-06 16:08:39 -05:00
Glenn Randers-Pehrson
5c60b2367e Imported from libpng-1.2.9beta7.tar 2009-04-06 16:08:37 -05:00
Glenn Randers-Pehrson
b7f9593715 Imported from libpng-1.2.9beta6.tar 2009-04-06 16:08:35 -05:00
Glenn Randers-Pehrson
e64746200b Imported from libpng-1.2.9beta5.tar 2009-04-06 16:08:32 -05:00
Glenn Randers-Pehrson
c3d51c14f2 Imported from libpng-1.2.9beta4.tar 2009-04-06 16:08:30 -05:00
Glenn Randers-Pehrson
7b34df33a5 Imported from libpng-1.2.9beta3.tar 2009-04-06 16:08:27 -05:00
Glenn Randers-Pehrson
ddfebd35be Imported from libpng-1.2.9beta2.tar 2009-04-06 16:08:25 -05:00
Glenn Randers-Pehrson
9c3ab68145 Imported from libpng-1.2.9beta1.tar 2009-04-06 16:08:23 -05:00
Glenn Randers-Pehrson
917648ecb9 Imported from libpng-1.2.8.tar 2009-04-06 16:08:21 -05:00
Glenn Randers-Pehrson
584b96e859 Imported from libpng-1.2.8rc5.tar 2009-04-06 16:08:18 -05:00
Glenn Randers-Pehrson
228c637527 Imported from libpng-1.2.8rc4.tar 2009-04-06 16:08:16 -05:00
Glenn Randers-Pehrson
c3dda6daea Imported from libpng-1.2.8rc3.tar 2009-04-06 16:08:15 -05:00
Glenn Randers-Pehrson
73b029f9d3 Imported from libpng-1.2.8rc2.tar 2009-04-06 16:08:13 -05:00
Glenn Randers-Pehrson
5dd2b8e208 Imported from libpng-1.2.8rc1.tar 2009-04-06 16:08:11 -05:00
Glenn Randers-Pehrson
4093607bc9 Imported from libpng-1.2.8beta5.tar 2009-04-06 16:08:09 -05:00
Glenn Randers-Pehrson
878b31e0b4 Imported from libpng-1.2.8beta4.tar 2009-04-06 16:08:07 -05:00
Glenn Randers-Pehrson
7806777139 Imported from libpng-1.2.8beta3.tar 2009-04-06 16:08:05 -05:00
Glenn Randers-Pehrson
94d9362fc5 Imported from libpng-1.2.8beta2.tar 2009-04-06 16:08:03 -05:00
Glenn Randers-Pehrson
16e11660fe Imported from libpng-1.2.8beta1.tar 2009-04-06 16:08:01 -05:00
Glenn Randers-Pehrson
250dfe1777 Imported from libpng-1.2.7.tar 2009-04-06 16:08:00 -05:00
Glenn Randers-Pehrson
5b77916ecd Imported from libpng-1.2.7rc1.tar 2009-04-06 16:07:57 -05:00
Glenn Randers-Pehrson
67864af957 Imported from libpng-1.2.7beta2.tar 2009-04-06 16:07:56 -05:00
Glenn Randers-Pehrson
a4981d4ded Imported from libpng-1.2.7beta1.tar 2009-04-06 16:07:54 -05:00
Glenn Randers-Pehrson
37f116a900 Imported from libpng-1.2.6.tar 2009-04-06 16:07:52 -05:00
Glenn Randers-Pehrson
8f3dd833d7 Imported from libpng-1.2.6rc5.tar 2009-04-06 16:07:50 -05:00
Glenn Randers-Pehrson
36d7bc7530 Imported from libpng-1.2.6rc4.tar 2009-04-06 16:07:48 -05:00
Glenn Randers-Pehrson
d029a75d4f Imported from libpng-1.2.6rc3.tar 2009-04-06 16:07:46 -05:00
Glenn Randers-Pehrson
dff799ef89 Imported from libpng-1.2.6rc2.tar 2009-04-06 16:07:44 -05:00
Glenn Randers-Pehrson
272489dc69 Imported from libpng-1.2.6rc1.tar 2009-04-06 16:07:42 -05:00
Glenn Randers-Pehrson
5fea36fb00 Imported from libpng-1.2.6beta4.tar 2009-04-06 16:07:40 -05:00
Glenn Randers-Pehrson
5b5dcf8b88 Imported from libpng-1.2.6beta3.tar 2009-04-06 16:07:38 -05:00
Glenn Randers-Pehrson
761bf9f06f Imported from libpng-1.2.6beta2.tar 2009-04-06 16:07:36 -05:00
Glenn Randers-Pehrson
c33ab4e8df Imported from libpng-1.2.6beta1.tar 2009-04-06 16:07:34 -05:00
Glenn Randers-Pehrson
0cc2f95a9d Imported from libpng-1.2.5.tar 2009-04-06 16:07:32 -05:00
Glenn Randers-Pehrson
5ff38d3e16 Imported from libpng-1.2.5rc3.tar 2009-04-06 16:07:30 -05:00
Glenn Randers-Pehrson
865f4f073a Imported from libpng-1.2.5rc2.tar 2009-04-06 16:07:28 -05:00
Glenn Randers-Pehrson
51d9250c88 Imported from libpng-1.2.5rc1.tar 2009-04-06 16:07:27 -05:00
Glenn Randers-Pehrson
8a7df0024b Imported from libpng-1.2.5beta2.tar 2009-04-06 16:07:25 -05:00
Glenn Randers-Pehrson
859665d847 Imported from libpng-1.2.5beta1.tar 2009-04-06 16:07:23 -05:00
Glenn Randers-Pehrson
484a8a10fe Imported from libpng-1.2.4.tar 2009-04-06 16:07:21 -05:00
Glenn Randers-Pehrson
2ae022da7e Imported from libpng-1.2.4rc1.tar 2009-04-06 16:07:18 -05:00
Glenn Randers-Pehrson
d020e9d826 Imported from libpng-1.2.4beta3.tar 2009-04-06 16:07:16 -05:00
Glenn Randers-Pehrson
d1e8c8694d Imported from libpng-1.2.4beta2.tar 2009-04-06 16:07:14 -05:00
Glenn Randers-Pehrson
07748d1b2c Imported from libpng-1.2.4beta1.tar 2009-04-06 16:07:12 -05:00
Glenn Randers-Pehrson
cfbed9bdf2 Imported from libpng-1.2.3.tar 2009-04-06 16:07:10 -05:00
Glenn Randers-Pehrson
22f28966c4 Imported from libpng-1.2.3rc6.tar 2009-04-06 16:07:08 -05:00
Glenn Randers-Pehrson
837a3d1745 Imported from libpng-1.2.3rc5.tar 2009-04-06 16:07:06 -05:00
Glenn Randers-Pehrson
704228f7e7 Imported from libpng-1.2.3rc4.tar 2009-04-06 16:07:04 -05:00
Glenn Randers-Pehrson
299d73503c Imported from libpng-1.2.3rc3.tar 2009-04-06 16:07:02 -05:00
Glenn Randers-Pehrson
25d8224d15 Imported from libpng-1.2.3rc2.tar 2009-04-06 16:07:00 -05:00
Glenn Randers-Pehrson
03008a08d1 Imported from libpng-1.2.3rc1.tar 2009-04-06 16:06:58 -05:00
Glenn Randers-Pehrson
4fb046a52d Imported from libpng-1.2.2.tar 2009-04-06 16:06:56 -05:00
Glenn Randers-Pehrson
fcbd7870e9 Imported from libpng-1.2.2rc1.tar 2009-04-06 16:06:54 -05:00
Glenn Randers-Pehrson
25228abdc1 Imported from libpng-1.2.2beta6.tar 2009-04-06 16:06:52 -05:00
Glenn Randers-Pehrson
73d57cb97b Imported from libpng-1.2.2beta5.tar 2009-04-06 16:06:50 -05:00
Glenn Randers-Pehrson
377657d1d6 Imported from libpng-1.2.2beta4.tar 2009-04-06 16:06:49 -05:00
Glenn Randers-Pehrson
c1bfe686ce Imported from libpng-1.2.2beta3.tar 2009-04-06 16:06:47 -05:00
Glenn Randers-Pehrson
c6de22da1d Imported from libpng-1.2.2beta2.tar 2009-04-06 16:06:45 -05:00
Glenn Randers-Pehrson
9c0f094b21 Imported from libpng-1.2.2beta1.tar 2009-04-06 16:06:43 -05:00
Glenn Randers-Pehrson
f50c91b7bd Imported from libpng-1.2.1.tar 2009-04-06 16:06:41 -05:00
Glenn Randers-Pehrson
db3b88dad2 Imported from libpng-1.2.1rc2.tar 2009-04-06 16:06:39 -05:00
Glenn Randers-Pehrson
ae498dcff3 Imported from libpng-1.2.1rc1.tar 2009-04-06 16:06:37 -05:00
Glenn Randers-Pehrson
5cded0b4b5 Imported from libpng-1.2.1beta4.tar 2009-04-06 16:06:35 -05:00
Glenn Randers-Pehrson
3f549259b2 Imported from libpng-1.2.1beta3.tar 2009-04-06 16:06:33 -05:00
Glenn Randers-Pehrson
6c97ddbffc Imported from libpng-1.2.1beta2.tar 2009-04-06 16:06:32 -05:00
Glenn Randers-Pehrson
5a0be341ba Imported from libpng-1.2.1beta1.tar 2009-04-06 16:06:30 -05:00
Glenn Randers-Pehrson
10781048be Imported from libpng-1.2.0.tar 2009-04-06 16:06:28 -05:00
Glenn Randers-Pehrson
1b8e567237 Imported from libpng-1.2.0rc1.tar 2009-04-06 16:06:26 -05:00
Glenn Randers-Pehrson
1ea0ff34fa Imported from libpng-1.2.0beta5.tar 2009-04-06 16:06:24 -05:00
Glenn Randers-Pehrson
b182893c04 Imported from libpng-1.2.0beta4.tar 2009-04-06 16:06:22 -05:00
Glenn Randers-Pehrson
8b6a889881 Imported from libpng-1.2.0beta3.tar 2009-04-06 16:06:20 -05:00
Glenn Randers-Pehrson
3097f618f2 Imported from libpng-1.2.0beta2.tar 2009-04-06 16:06:18 -05:00
Glenn Randers-Pehrson
1fd5fb33c2 Imported from libpng-1.2.0beta1.tar 2009-04-06 16:06:16 -05:00
Glenn Randers-Pehrson
e68f5a361b Imported from libpng-1.0.12beta1.tar 2009-04-06 16:06:14 -05:00
Glenn Randers-Pehrson
328353990f Imported from libpng-1.0.11.tar 2009-04-06 16:06:12 -05:00
Glenn Randers-Pehrson
82ae383331 Imported from libpng-1.0.11rc1.tar 2009-04-06 16:06:10 -05:00
Glenn Randers-Pehrson
e1eff58f87 Imported from libpng-1.0.11beta3.tar 2009-04-06 16:06:08 -05:00
Glenn Randers-Pehrson
f64a06f5ec Imported from libpng-1.0.11beta2.tar 2009-04-06 16:06:06 -05:00
Glenn Randers-Pehrson
87c6bc984a Imported from libpng-1.0.11beta1.tar 2009-04-06 16:06:04 -05:00
Glenn Randers-Pehrson
13cfbac075 Imported from libpng-1.0.10.tar 2009-04-06 16:06:02 -05:00
Glenn Randers-Pehrson
e164447858 Imported from libpng-1.0.10rc1.tar 2009-04-06 16:06:00 -05:00
Glenn Randers-Pehrson
1909560348 Imported from libpng-1.0.10beta1.tar 2009-04-06 16:05:58 -05:00
Glenn Randers-Pehrson
d4e8109a48 Imported from libpng-1.0.9.tar 2009-04-06 16:05:56 -05:00
Glenn Randers-Pehrson
be9de0f428 Imported from libpng-1.0.9rc2.tar 2009-04-06 16:05:54 -05:00
Glenn Randers-Pehrson
cdf140beec Imported from libpng-1.0.9beta9.tar 2009-04-06 16:05:52 -05:00
Glenn Randers-Pehrson
231e687411 Imported from libpng-1.0.9beta8.tar 2009-04-06 16:05:51 -05:00
Glenn Randers-Pehrson
76e5fd642e Imported from libpng-1.0.9beta7.tar 2009-04-06 16:05:49 -05:00
Glenn Randers-Pehrson
f05f8033b8 Imported from libpng-1.0.9rc1.tar 2009-04-06 16:05:47 -05:00
Glenn Randers-Pehrson
408b421265 Imported from libpng-1.0.9beta6.tar 2009-04-06 16:05:45 -05:00
Glenn Randers-Pehrson
2ad31ae31f Imported from libpng-1.0.9beta5.tar 2009-04-06 16:05:43 -05:00
Glenn Randers-Pehrson
f6b4f45c7e Imported from libpng-1.0.9beta4.tar 2009-04-06 16:05:41 -05:00
Glenn Randers-Pehrson
d56aca7104 Imported from libpng-1.0.9beta3.tar 2009-04-06 16:05:39 -05:00
Glenn Randers-Pehrson
f5ed0e130c Imported from libpng-1.0.9beta2.tar 2009-04-06 16:05:37 -05:00
Glenn Randers-Pehrson
fbbb5ecb52 Imported from libpng-1.0.9beta10.tar 2009-04-06 16:05:35 -05:00
Glenn Randers-Pehrson
5e5c1e1f56 Imported from libpng-1.0.9beta1.tar 2009-04-06 16:05:33 -05:00
Glenn Randers-Pehrson
32fc5ceb91 Imported from libpng-1.0.8.tar 2009-04-06 16:05:31 -05:00
Glenn Randers-Pehrson
4766a244b2 Imported from libpng-1.0.8rc1.tar 2009-04-06 16:05:29 -05:00
Glenn Randers-Pehrson
a4d54bdb4a Imported from libpng-1.0.8beta4.tar 2009-04-06 16:05:28 -05:00
Glenn Randers-Pehrson
ff9c947a1a Imported from libpng-1.0.8beta3.tar 2009-04-06 16:05:26 -05:00
Glenn Randers-Pehrson
15dac0b14e Imported from libpng-1.0.8beta2.tar 2009-04-06 16:05:24 -05:00
Glenn Randers-Pehrson
316f97a063 Imported from libpng-1.0.8beta1.tar 2009-04-06 16:05:23 -05:00
Glenn Randers-Pehrson
3d5a520610 Imported from libpng-1.0.7.tar 2009-04-06 16:05:21 -05:00
Glenn Randers-Pehrson
98b0ff4998 Imported from libpng-1.0.7rc2.tar 2009-04-06 16:05:19 -05:00
Glenn Randers-Pehrson
1394480f4b Imported from libpng-1.0.7beta18.tar 2009-04-06 16:05:18 -05:00
Glenn Randers-Pehrson
1f2d559f70 Imported from libpng-1.0.7rc1.tar 2009-04-06 16:05:16 -05:00
Glenn Randers-Pehrson
db66d44801 Imported from libpng-1.0.7beta17.tar 2009-04-06 16:05:14 -05:00
Glenn Randers-Pehrson
d436672048 Imported from libpng-1.0.7beta16.tar 2009-04-06 16:05:13 -05:00
Glenn Randers-Pehrson
104622bebb Imported from libpng-1.0.7beta15.tar 2009-04-06 16:05:11 -05:00
Glenn Randers-Pehrson
fc4a143ec6 Imported from libpng-1.0.7beta14.tar 2009-04-06 16:05:09 -05:00
Glenn Randers-Pehrson
ec61c23d56 Imported from libpng-1.0.7beta13.tar 2009-04-06 16:05:08 -05:00
Glenn Randers-Pehrson
1ef65b6742 Imported from libpng-1.0.7beta12.tar 2009-04-06 16:05:07 -05:00
Glenn Randers-Pehrson
752945701e Imported from libpng-1.0.7beta11.tar 2009-04-06 16:05:05 -05:00
Glenn Randers-Pehrson
98c9d73605 Imported from libpng-1.0.6j.tar 2009-04-06 16:05:04 -05:00
Glenn Randers-Pehrson
6942d53c25 Imported from libpng-1.0.6i.tar 2009-04-06 16:05:02 -05:00
Glenn Randers-Pehrson
326320e5a9 Imported from libpng-1.0.6h.tar 2009-04-06 16:05:01 -05:00
Glenn Randers-Pehrson
228bd390ac Imported from libpng-1.0.6g.tar 2009-04-06 16:04:59 -05:00
Glenn Randers-Pehrson
4accabb590 Imported from libpng-1.0.6f.tar 2009-04-06 16:04:58 -05:00
Glenn Randers-Pehrson
38e6e77419 Imported from libpng-1.0.6e.tar 2009-04-06 16:04:56 -05:00
Glenn Randers-Pehrson
81fdf8aca1 Imported from libpng-1.0.6d.tar 2009-04-06 16:04:55 -05:00
Glenn Randers-Pehrson
68ea243ca3 Imported from libpng-1.0.6a.tar 2009-04-06 16:04:53 -05:00
Glenn Randers-Pehrson
520a764cd7 Imported from libpng-1.0.6.tar 2009-04-06 16:04:52 -05:00
Glenn Randers-Pehrson
a77ef625a6 Imported from libpng-1.0.5s.tar 2009-04-06 16:04:50 -05:00
Glenn Randers-Pehrson
61c32d9e66 Imported from libpng-1.0.5q.tar 2009-04-06 16:04:49 -05:00
Glenn Randers-Pehrson
166c5a397e Imported from libpng-1.0.5h.tar 2009-04-06 16:04:47 -05:00
Glenn Randers-Pehrson
074af5e9ca Imported from libpng-1.0.5d.tar 2009-04-06 16:04:46 -05:00
Glenn Randers-Pehrson
5379b24536 Imported from libpng-1.0.5c.tar 2009-04-06 16:04:44 -05:00
Glenn Randers-Pehrson
6d8f3b080a Imported from libpng-1.0.5a.tar 2009-04-06 16:04:43 -05:00
Glenn Randers-Pehrson
860ab2b1c0 Imported from libpng-1.0.5.tar 2009-04-06 16:04:42 -05:00
Glenn Randers-Pehrson
ad5dd1f0fb Imported from libpng-1.0.5-pre1.tar 2009-04-06 16:04:41 -05:00
Glenn Randers-Pehrson
33b25bf1a8 Imported from libpng-1.0.4f.tar 2009-04-06 16:04:40 -05:00
Glenn Randers-Pehrson
18c415f5b5 Imported from libpng-1.0.4e.tar 2009-04-06 16:04:38 -05:00
Glenn Randers-Pehrson
310faa8ec9 Imported from libpng-1.0.4d2.tar 2009-04-06 16:04:37 -05:00
Glenn Randers-Pehrson
ab1e583c44 Imported from libpng-1.0.4d.tar 2009-04-06 16:04:37 -05:00
Glenn Randers-Pehrson
bcfd15d9f2 Imported from libpng-1.0.4c.tar 2009-04-06 16:04:36 -05:00
Glenn Randers-Pehrson
54a066a8a9 Imported from libpng-1.0.4.tar 2009-04-06 16:04:35 -05:00
Glenn Randers-Pehrson
352ca6bee0 Imported from libpng-1.0.4-pre3.tar 2009-04-06 16:04:34 -05:00
Glenn Randers-Pehrson
f8b008cd43 Imported from libpng-1.0.4-pre2.tar 2009-04-06 16:04:33 -05:00
Glenn Randers-Pehrson
4393a9ad6b Imported from libpng-1.0.4-pre1.tar 2009-04-06 16:04:32 -05:00
Glenn Randers-Pehrson
87544ac62b Imported from libpng-1.0.3.tar 2009-04-06 16:04:31 -05:00
Glenn Randers-Pehrson
c944229859 Imported from libpng-1.0.2b.tar 2009-04-06 16:04:30 -05:00
Glenn Randers-Pehrson
5c6aeb25c1 Imported from libpng-1.0.2a.tar 2009-04-06 16:04:29 -05:00
Glenn Randers-Pehrson
345bc27e70 Imported from libpng-1.0.2.tar 2009-04-06 16:04:28 -05:00
Glenn Randers-Pehrson
f7d1a17033 Imported from libpng-1.0.1e.tar 2009-04-06 16:04:27 -05:00
Glenn Randers-Pehrson
8686fff347 Imported from libpng-1.0.1d.tar 2009-04-06 16:04:26 -05:00
Glenn Randers-Pehrson
d0dce40075 Imported from libpng-1.0.1c.tar 2009-04-06 16:04:25 -05:00
Glenn Randers-Pehrson
1d96361273 Imported from libpng-1.0.1b.tar 2009-04-06 16:04:25 -05:00
Glenn Randers-Pehrson
896239be20 Imported from libpng-1.0.1a.tar 2009-04-06 16:04:24 -05:00
Glenn Randers-Pehrson
f9f2fe0ce7 Imported from libpng-1.0.1.tar 2009-04-06 16:04:23 -05:00
Glenn Randers-Pehrson
d12aa50322 Imported from libpng-1.0.0b.tar 2009-04-06 16:04:22 -05:00
Glenn Randers-Pehrson
8f8fb6ae7a Imported from libpng-1.0.0a.tar 2009-04-06 16:04:21 -05:00
Glenn Randers-Pehrson
0f7202f074 Imported from libpng-1.0.0.tar 2009-04-06 16:04:20 -05:00
Glenn Randers-Pehrson
397100eb8a Imported from libpng-1.00.tar 2009-04-06 16:04:20 -05:00
Glenn Randers-Pehrson
4922b1b6e9 Imported from libpng-0.99p.tar 2009-04-06 16:04:19 -05:00
Glenn Randers-Pehrson
38d73aff67 Imported from libpng-0.99n.tar 2009-04-06 16:04:18 -05:00
Glenn Randers-Pehrson
7cd899c707 Imported from libpng-0.99m.tar 2009-04-06 16:04:17 -05:00
Glenn Randers-Pehrson
ea3bcd7087 Imported from libpng-0.99k.tar 2009-04-06 16:04:17 -05:00
Glenn Randers-Pehrson
983ec160b4 Imported from libpng-0.99j.tar 2009-04-06 16:04:16 -05:00
Glenn Randers-Pehrson
08a3343e05 Imported from libpng-0.99i.tar 2009-04-06 16:04:16 -05:00
244 changed files with 115379 additions and 14095 deletions

51
ANNOUNCE Normal file
View File

@@ -0,0 +1,51 @@
Libpng 1.5.13beta02 - September 10, 2012
This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version.
Files available for download:
Source files with LF line endings (for Unix/Linux) and with a
"configure" script
1.5.13beta02.tar.xz (LZMA-compressed, recommended)
1.5.13beta02.tar.gz
1.5.13beta02.tar.bz2
Source files with CRLF line endings (for Windows), without the
"configure" script
lp1513b02.7z (LZMA-compressed, recommended)
lp1513b02.zip
Other information:
1.5.13beta02-README.txt
1.5.13beta02-LICENSE.txt
Changes since the last public release (1.5.12):
Version 1.5.13beta01 [August 8, 2012]
Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
Removed references to png_zalloc() and png_zfree() from the manual.
Revised PNG_FP_EXPORT and PNG_FIXED_EXPORT macros to avoid generating
lone semicolons (patch ported from libpng-1.6.0beta11).
Version 1.5.13beta02 [September 10, 2012]
Corrected handling of the image array and the row_pointers array in example.c
When png_set_filler is used to strip a filler channel during write, the
code prior to 1.5 would ignore the case where the output required an
alpha channel or when the output was a palettized PNG. In libpng-1.5 the
ignorance was lost and libpng proceeded to strip the channel resulting
in a bad (potential memory overwrite) failure later. This reverts
the behavior to the pre-1.5 state but issues a warning. libpng-1.6 is
expected to issue an error on the erroneous png_set_filler call.
Use png_memset() consistently (pngmem.c contained some bare "memset" calls).
Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe) or to glennrp at users.sourceforge.net
Glenn R-P

4168
CHANGES

File diff suppressed because it is too large Load Diff

344
CMakeLists.txt Normal file
View File

@@ -0,0 +1,344 @@
# CMakeLists.txt
# Copyright (C) 2007-2011 Glenn Randers-Pehrson
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
cmake_minimum_required(VERSION 2.4.4)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
if(UNIX AND NOT DEFINED CMAKE_BUILD_TYPE)
if(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION EQUAL 4)
# workaround CMake 2.4.x bug
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
"Choose the type of build, options are:
None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used)
Debug
Release
RelWithDebInfo
MinSizeRel.")
else()
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
"Choose the type of build, options are:
None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used)
Debug
Release
RelWithDebInfo
MinSizeRel.")
endif()
endif()
project(libpng C)
enable_testing()
set(PNGLIB_MAJOR 1)
set(PNGLIB_MINOR 5)
set(PNGLIB_RELEASE 13)
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
# needed packages
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIR})
if(NOT WIN32)
find_library(M_LIBRARY
NAMES m
PATHS /usr/lib /usr/local/lib
)
if(NOT M_LIBRARY)
message(STATUS
"math library 'libm' not found - floating point support disabled")
endif()
else()
# not needed on windows
set(M_LIBRARY "")
endif()
# COMMAND LINE OPTIONS
if(DEFINED PNG_SHARED)
option(PNG_SHARED "Build shared lib" ${PNG_SHARED})
else()
option(PNG_SHARED "Build shared lib" ON)
endif()
if(DEFINED PNG_STATIC)
option(PNG_STATIC "Build static lib" ${PNG_STATIC})
else()
option(PNG_STATIC "Build static lib" ON)
endif()
option(PNG_TESTS "Build libpng tests" YES)
# Many more configuration options could be added here
option(PNG_DEBUG "Build with debug output" NO)
option(PNGARG "Disable ANSI-C prototypes" NO)
# SET LIBNAME
set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR})
# to distinguish between debug and release lib
set(CMAKE_DEBUG_POSTFIX "d")
# Use the prebuilt pnglibconf.h file from the scripts folder
# TODO: fix this by building with awk; without this no cmake build can be
# configured directly (to do so indirectly use your local awk to build a
# pnglibconf.h in the build directory.)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt
${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# OUR SOURCES
set(libpng_public_hdrs
png.h
pngconf.h
${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h
)
set(libpng_sources
${libpng_public_hdrs}
pngdebug.h
pnginfo.h
pngpriv.h
pngstruct.h
png.c
pngerror.c
pngget.c
pngmem.c
pngpread.c
pngread.c
pngrio.c
pngrtran.c
pngrutil.c
pngset.c
pngtrans.c
pngwio.c
pngwrite.c
pngwtran.c
pngwutil.c
)
set(pngtest_sources
pngtest.c
)
set(pngvalid_sources
contrib/libtests/pngvalid.c
)
# SOME NEEDED DEFINITIONS
add_definitions(-DPNG_CONFIGURE_LIBPNG)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
endif(MSVC)
if(PNG_DEBUG)
add_definitions(-DPNG_DEBUG)
endif()
# NOW BUILD OUR TARGET
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
if(PNG_SHARED)
add_library(${PNG_LIB_NAME} SHARED ${libpng_sources})
if(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(${PNG_LIB_NAME} PROPERTIES PREFIX "lib")
set_target_properties(${PNG_LIB_NAME} PROPERTIES IMPORT_PREFIX "lib")
endif()
target_link_libraries(${PNG_LIB_NAME} ${ZLIB_LIBRARY} ${M_LIBRARY})
endif()
if(PNG_STATIC)
# does not work without changing name
set(PNG_LIB_NAME_STATIC ${PNG_LIB_NAME}_static)
add_library(${PNG_LIB_NAME_STATIC} STATIC ${libpng_sources})
if(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES PREFIX "lib")
endif()
target_link_libraries(${PNG_LIB_NAME_STATIC} ${ZLIB_LIBRARY} ${M_LIBRARY})
endif()
if(PNG_SHARED AND WIN32)
set_target_properties(${PNG_LIB_NAME} PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL)
endif()
if(PNG_TESTS AND PNG_SHARED)
# does not work with msvc due to png_lib_ver issue
add_executable(pngtest ${pngtest_sources})
target_link_libraries(pngtest ${PNG_LIB_NAME})
add_test(pngtest ./pngtest ${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png)
#
add_executable(pngvalid ${pngvalid_sources})
target_link_libraries(pngvalid ${PNG_LIB_NAME})
add_test(pngvalid ./pngvalid)
endif()
# Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set
IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib")
ENDIF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
# Set a variable with CMake code which:
# Creates a symlink from src to dest (if possible) or alternatively
# copies if different.
macro(CREATE_SYMLINK SRC_FILE DEST_FILE)
FILE(REMOVE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE})
if(WIN32 AND NOT CYGWIN AND NOT MSYS)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${DEST_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${SRC_FILE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${SRC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${DEST_FILE}
DEPENDS ${PNG_LIB_NAME} ${PNG_LIB_NAME_STATIC}
)
ADD_CUSTOM_TARGET(${DEST_FILE}_COPY ALL DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE})
else(WIN32 AND NOT CYGWIN AND NOT MSYS)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${SRC_FILE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${SRC_FILE} ${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif(WIN32 AND NOT CYGWIN AND NOT MSYS)
endmacro()
# libpng is a library so default to 'lib'
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(CMAKE_INSTALL_LIBDIR lib)
endif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
# CREATE PKGCONFIG FILES
# we use the same files like ./configure, so we have to set its vars
# Only do this on Windows for Cygwin - the files don't make much sense outside
# a UNIX look alike
if(NOT WIN32 OR CYGWIN OR MINGW)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
set(includedir ${CMAKE_INSTALL_PREFIX}/include)
set(LIBS "-lz -lm")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY)
CREATE_SYMLINK(${PNGLIB_NAME}.pc libpng.pc)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY)
CREATE_SYMLINK(${PNGLIB_NAME}-config libpng-config)
endif(NOT WIN32 OR CYGWIN OR MINGW)
# SET UP LINKS
if(PNG_SHARED)
set_target_properties(${PNG_LIB_NAME} PROPERTIES
# VERSION 15.${PNGLIB_RELEASE}.1.5.13beta02
VERSION 15.${PNGLIB_RELEASE}.0
SOVERSION 15
CLEAN_DIRECT_OUTPUT 1)
endif()
if(PNG_STATIC)
# MSVC doesn't use a different file extension for shared vs. static
# libs. We are able to change OUTPUT_NAME to remove the _static
# for all other platforms.
if(NOT MSVC)
set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES
OUTPUT_NAME ${PNG_LIB_NAME}
CLEAN_DIRECT_OUTPUT 1)
endif()
endif()
# If CMake > 2.4.x, we set a variable used below to export
# targets to an export file.
# TODO: Use VERSION_GREATER after our cmake_minimum_required >= 2.6.2
if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 4)
set(PNG_EXPORT_RULE EXPORT libpng)
elseif(CMAKE_MAJOR_VERSION GREATER 2) # future proof
set(PNG_EXPORT_RULE EXPORT libpng)
endif()
# INSTALL
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
if(PNG_SHARED)
install(TARGETS ${PNG_LIB_NAME}
${PNG_EXPORT_RULE}
RUNTIME DESTINATION bin
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
# Create a symlink for libpng.dll.a => libpng15.dll.a on Cygwin
if(CYGWIN OR MINGW)
get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME} LOCATION_${CMAKE_BUILD_TYPE})
get_filename_component(BUILD_TARGET_FILE ${BUILD_TARGET_LOCATION} NAME)
CREATE_SYMLINK(${BUILD_TARGET_FILE} libpng${CMAKE_IMPORT_LIBRARY_SUFFIX})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(CYGWIN OR MINGW)
if(NOT WIN32)
get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME} LOCATION_${CMAKE_BUILD_TYPE})
get_filename_component(BUILD_TARGET_FILE ${BUILD_TARGET_LOCATION} NAME)
CREATE_SYMLINK(${BUILD_TARGET_FILE} libpng${CMAKE_SHARED_LIBRARY_SUFFIX})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(NOT WIN32)
endif(PNG_SHARED)
if(PNG_STATIC)
install(TARGETS ${PNG_LIB_NAME_STATIC}
${PNG_EXPORT_RULE}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(NOT WIN32 OR CYGWIN OR MINGW)
get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME_STATIC} LOCATION_${CMAKE_BUILD_TYPE})
get_filename_component(BUILD_TARGET_FILE ${BUILD_TARGET_LOCATION} NAME)
CREATE_SYMLINK(${BUILD_TARGET_FILE} libpng${CMAKE_STATIC_LIBRARY_SUFFIX})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(NOT WIN32 OR CYGWIN OR MINGW)
endif()
endif()
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
install(FILES ${libpng_public_hdrs} DESTINATION include)
install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME})
endif()
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL )
if(NOT WIN32 OR CYGWIN OR MINGW)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config
DESTINATION bin)
endif(NOT WIN32 OR CYGWIN OR MINGW)
endif()
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
# Install man pages
if(NOT PNG_MAN_DIR)
set(PNG_MAN_DIR "share/man")
endif()
install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3)
install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5)
# Install pkg-config files
if(NOT WIN32 OR CYGWIN OR MINGW)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
DESTINATION bin)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config
DESTINATION bin)
endif(NOT WIN32 OR CYGWIN OR MINGW)
endif()
# On versions of CMake that support it, create an export file CMake
# users can include() to import our targets
if(PNG_EXPORT_RULE AND NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL )
install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake)
endif()
# what's with libpng-$VER%.txt and all the extra files?
# UNINSTALL
# do we need this?
# DIST
# do we need this?
# to create msvc import lib for mingw compiled shared lib
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86

155
INSTALL Normal file
View File

@@ -0,0 +1,155 @@
Installing libpng
On Unix/Linux and similar systems, you can simply type
./configure [--prefix=/path]
make check
make install
and ignore the rest of this document.
If configure does not work on your system and you have a reasonably
up-to-date set of tools, running ./autogen.sh before running ./configure
may fix the problem. You can also run the individual commands in
autogen.sh with the --force option, if supported by your version of
the tools. To be really sure that you aren't using any of the included
pre-built scripts, you can do this:
./configure --enable-maintainer-mode
make maintainer-clean
./autogen.sh
./configure [--prefix=/path] [other options]
make
make install
make check
Instead, you can use one of the custom-built makefiles in the
"scripts" directory
cp scripts/makefile.system makefile
make test
make install
The files that are presently available in the scripts directory
are listed and described in scripts/README.txt.
Or you can use one of the "projects" in the "projects" directory.
Before installing libpng, you must first install zlib, if it
is not already on your system. zlib can usually be found
wherever you got libpng. zlib can be placed in another directory,
at the same level as libpng.
If you want to use "cmake" (see www.cmake.org), type
cmake . -DCMAKE_INSTALL_PREFIX=/path
make
make install
If your system already has a preinstalled zlib you will still need
to have access to the zlib.h and zconf.h include files that
correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they
might be called "libpng-x.y.z" or "libpngNN" and "zlib-1.2.5"
or "zlib125") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
.. (the parent directory)
libpng (this directory)
INSTALL (this file)
README
*.h
*.c
CMakeLists.txt => "cmake" script
configuration files:
configure.ac, configure, Makefile.am, Makefile.in,
autogen.sh, config.guess, ltmain.sh, missing, libpng.pc.in,
libpng-config.in, aclocal.m4, config.h.in, config.sub,
depcomp, install-sh, mkinstalldirs, test-pngtest.sh
contrib
gregbook
pngminim
pngminus
pngsuite
visupng
projects
visualc71
vstudio
scripts
makefile.*
*.def (module definition files)
etc.
pngtest.png
etc.
zlib
README
*.h
*.c
contrib
etc.
If the line endings in the files look funny, you may wish to get the other
distribution of libpng. It is available in both tar.gz (UNIX style line
endings) and zip (DOS style line endings) formats.
If you are building libpng with MSVC, you can enter the
libpng projects\visualc6 or visualc71 directory and follow the instructions
in README.txt.
Otherwise enter the zlib directory and follow the instructions in zlib/README,
then come back here and run "configure" or choose the appropriate
makefile.sys in the scripts directory.
Copy the file (or files) that you need from the
scripts directory into this directory, for example
MSDOS example: copy scripts\makefile.msc makefile
UNIX example: cp scripts/makefile.std makefile
Read the makefile to see if you need to change any source or
target directories to match your preferences.
Then read pnglibconf.dfa to see if you want to make any configuration
changes.
Then just run "make" which will create the libpng library in
this directory and "make test" which will run a quick test that reads
the "pngtest.png" file and writes a "pngout.png" file that should be
identical to it. Look for "9782 zero samples" in the output of the
test. For more confidence, you can run another test by typing
"pngtest pngnow.png" and looking for "289 zero samples" in the output.
Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare
your output with the result shown in contrib/pngsuite/README.
Most of the makefiles will allow you to run "make install" to
put the library in its final resting place (if you want to
do that, run "make install" in the zlib directory first if necessary).
Some also allow you to run "make test-installed" after you have
run "make install".
Further information can be found in the README and libpng-manual.txt
files, in the individual makefiles, in png.h, and the manual pages
libpng.3 and png.5.
Using the ./configure script -- 16 December 2002.
=================================================
The ./configure script should work compatibly with what scripts/makefile.*
did, however there are some options you might need to add to configure
explicitly, which previously was done semi-automatically (if you didn't edit
scripts/makefile.* yourself, that is)
CFLAGS="-Wall -O -funroll-loops \
-malign-loops=2 -malign-functions=2" ./configure --prefix=/usr/include \
--with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include
You can alternatively specify --includedir=/usr/include, /usr/local/include,
/usr/include/libpng%NN%, or whatever.
If you find that the configure script is out-of-date or is not supporting
your platform properly, try running autogen.sh to regenerate "configure",
"Makefile.in", and the other configuration files. Then try configure again.

111
LICENSE Normal file
View File

@@ -0,0 +1,111 @@
This copy of the libpng notices is provided for your convenience. In case of
any discrepancy between this copy and the notices in the file png.h that is
included in the libpng distribution, the latter shall prevail.
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following
this sentence.
This code is released under the libpng license.
libpng versions 1.2.6, August 15, 2004, through 1.5.13beta02, September 10, 2012, are
Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
Cosmin Truta
libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.0.6
with the following individuals added to the list of Contributing Authors
Simon-Pierre Cadieux
Eric S. Raymond
Gilles Vollant
and with the following additions to the disclaimer:
There is no warranty against interference with your enjoyment of the
library or against infringement. There is no warranty that our
efforts or the library will fulfill any of your particular purposes
or needs. This library is provided with all faults, and the entire
risk of satisfactory quality, performance, accuracy, and effort is with
the user.
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-0.96,
with the following individuals added to the list of Contributing Authors:
Tom Lane
Glenn Randers-Pehrson
Willem van Schaik
libpng versions 0.89, June 1996, through 0.96, May 1997, are
Copyright (c) 1996, 1997 Andreas Dilger
Distributed according to the same disclaimer and license as libpng-0.88,
with the following individuals added to the list of Contributing Authors:
John Bowler
Kevin Bracey
Sam Bushell
Magnus Holmgren
Greg Roelofs
Tom Tanner
libpng versions 0.5, May 1995, through 0.88, January 1996, are
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
Andreas Dilger
Dave Martindale
Guy Eric Schalnat
Paul Schmidt
Tim Wegner
The PNG Reference Library is supplied "AS IS". The Contributing Authors
and Group 42, Inc. disclaim all warranties, expressed or implied,
including, without limitation, the warranties of merchantability and of
fitness for any purpose. The Contributing Authors and Group 42, Inc.
assume no liability for direct, indirect, incidental, special, exemplary,
or consequential damages, which may result from the use of the PNG
Reference Library, even if advised of the possibility of such damage.
Permission is hereby granted to use, copy, modify, and distribute this
source code, or portions hereof, for any purpose, without fee, subject
to the following restrictions:
1. The origin of this source code must not be misrepresented.
2. Altered versions must be plainly marked as such and must not
be misrepresented as being the original source.
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
The Contributing Authors and Group 42, Inc. specifically permit, without
fee, and encourage the use of this source code as a component to
supporting the PNG file format in commercial products. If you use this
source code in a product, acknowledgment is not required but would be
appreciated.
A "png_get_copyright" function is available, for convenient use in "about"
boxes and the like:
printf("%s",png_get_copyright(NULL));
Also, the PNG logo (in PNG format, of course) is supplied in the
files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
September 10, 2012

228
Makefile.am Normal file
View File

@@ -0,0 +1,228 @@
# Makefile.am:
# Source file for Makefile.in (and hence Makefile)
#
PNGLIB_BASENAME= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
# libpng does not follow GNU file name conventions
# "color-tests" requires automake 1.11.1 or later. Enable it if you like,
# to get red "FAIL" and green "PASS" notations during tests.
# AUTOMAKE_OPTIONS = foreign color-tests
AUTOMAKE_OPTIONS = foreign
# test programs - run on make check, make distcheck
TESTS_ENVIRONMENT= srcdir=$(srcdir)
check_PROGRAMS= pngtest
pngtest_SOURCES = pngtest.c
pngtest_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la
TESTS = test-pngtest.sh
# Only do the following if the contrib directory is present.
check_PROGRAMS+= pngvalid
pngvalid_SOURCES = contrib/libtests/pngvalid.c
pngvalid_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la
TESTS += test-pngvalid-simple.sh test-pngvalid-full.sh
# man pages
dist_man_MANS= libpng.3 libpngpf.3 png.5
# generate the -config scripts if required
binconfigs= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config
EXTRA_SCRIPTS= libpng-config libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config
bin_SCRIPTS= @binconfigs@
# rules to build libpng, only build the old library on request
lib_LTLIBRARIES=libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la
# EXTRA_LTLIBRARIES= libpng.la
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = png.c pngerror.c\
pngget.c pngmem.c pngpread.c pngread.c pngrio.c pngrtran.c pngrutil.c\
pngset.c pngtrans.c pngwio.c pngwrite.c pngwtran.c pngwutil.c\
png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h pngusr.dfa
if PNG_ARM_NEON
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/filter_neon.S
endif
nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_CPPFLAGS = @LIBPNG_DEFINES@
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined -export-dynamic \
-version-number @PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0
if HAVE_LD_VERSION_SCRIPT
# Versioned symbols and restricted exports
if HAVE_SOLARIS_LD
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -Wl,-M -Wl,libpng.vers
else
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -Wl,--version-script=libpng.vers
endif
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.vers
else
# Only restricted exports when possible
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -export-symbols libpng.sym
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym
endif
#distribute headers in /usr/include/libpng/*
pkgincludedir= $(includedir)/$(PNGLIB_BASENAME)
pkginclude_HEADERS= png.h pngconf.h
nodist_pkginclude_HEADERS= pnglibconf.h
# pkg-config stuff, note that libpng.pc is always required in order
# to get the correct library
pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc
#extra source distribution files.
EXTRA_DIST= \
ANNOUNCE CHANGES INSTALL LICENSE README TODO \
pngtest.png pngbar.png pngnow.png pngbar.jpg autogen.sh \
${srcdir}/contrib ${srcdir}/projects ${srcdir}/scripts \
$(TESTS) \
CMakeLists.txt example.c libpng-manual.txt
SCRIPT_CLEANFILES=scripts/*.out scripts/*.chk scripts/pnglibconf.dfn
CLEANFILES= dfn.c dfn?.out pngout.png libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc \
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers libpng.sym \
check.new pnglibconf.* symbols.new pngtest-log.txt \
$(SCRIPT_CLEANFILES)
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \
config.sub configure depcomp install-sh ltmain.sh missing
# DFNCPP is normally just CPP - the C preprocessor - but on Solaris and maybe
# other operating systems (NeXT?) the C preprocessor selected by configure
# checks input tokens for validity - effectively it performs part of the ANSI-C
# parsing - and therefore fails with the .df files. configure.ac has special
# checks for this and sets DFNCPP appropriately.
DFNCPP = @DFNCPP@
SUFFIXES = .chk .dfn .out
$(PNGLIB_BASENAME).pc: libpng.pc
cp libpng.pc $@
$(PNGLIB_BASENAME)-config: libpng-config
cp libpng-config $@
scripts/sym.out scripts/vers.out: png.h pngconf.h pnglibconf.h
scripts/symbols.out: png.h pngconf.h $(srcdir)/scripts/pnglibconf.h.prebuilt
libpng.sym: scripts/sym.out
rm -f $@
cp $? $@
libpng.vers: scripts/vers.out
rm -f $@
cp $? $@
pnglibconf.h: pnglibconf.out
rm -f $@
cp $? $@
$(srcdir)/scripts/pnglibconf.h.prebuilt:
@echo "Attempting to build $@" >&2
@echo "This is a machine generated file, but if you want to make" >&2
@echo "a new one simply make 'scripts/pnglibconf.out' and copy that" >&2
@exit 1
# The following is necessary to ensure that the local pnglibconf.h is used, not
# an installed one (this can happen immediately after on a clean system if
# 'make test' is the first thing the user does.)
contrib/libtests/pngvalid.o pngtest.o: pnglibconf.h
# We must use -DPNG_NO_USE_READ_MACROS here even when the library may actually
# be built with PNG_USE_READ_MACROS; this prevents the read macros from
# interfering with the symbol file format.
SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\
-DPNGLIB_VERSION='@PNGLIB_VERSION@'\
-DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'\
-DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE
.dfn.out:
rm -f $@ dfn.c dfn?.out
test -d scripts || mkdir scripts
echo '#include "$<"' >dfn.c
$(DFNCPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) @LIBPNG_DEFINES@\
$(CPPFLAGS) $(SYMBOL_CFLAGS) dfn.c > dfn1.out
$(SED) -n -e 's|^.*PNG_DEFN_MAGIC *-\(.*\)- *PNG_DEFN_END.*$$|\1|p'\
dfn1.out >dfn2.out
$(SED) -e 's| *PNG_JOIN *||g' -e 's| *$$||' dfn2.out >dfn3.out
rm -f dfn.c dfn[12].out
mv dfn3.out $@
# The .dfn file for pnglibconf.h is machine generated
pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h pngusr.dfa $(DFA_XTRA)
rm -f $@ dfn?.out
$(AWK) -f ${srcdir}/scripts/options.awk out=dfn1.out version=search\
${srcdir}/pngconf.h ${srcdir}/scripts/pnglibconf.dfa\
${srcdir}/pngusr.dfa $(DFA_XTRA) 1>&2
$(AWK) -f ${srcdir}/scripts/options.awk out=dfn2.out dfn1.out 1>&2
rm dfn1.out
mv dfn2.out $@
# Symbol checks (.def and .out files should match)
scripts/symbols.chk: scripts/checksym.awk scripts/symbols.def scripts/symbols.out
.out.chk:
rm -f $@ symbols.new
$(AWK) -f ${srcdir}/scripts/checksym.awk ${srcdir}/scripts/${*F}.def\
$< >&2
mv symbols.new $@
# used on demand to regenerate the standard header, CPPFLAGS should
# be empty - no non-standard defines
scripts/pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h
rm -f $@ dfn?.out
test -z "$(CPPFLAGS)"
echo "com @PNGLIB_VERSION@ STANDARD API DEFINITION" |\
$(AWK) -f ${srcdir}/scripts/options.awk out=dfn1.out logunsupported=1
version=search ${srcdir}/pngconf.h -\
${srcdir}/scripts/pnglibconf.dfa 1>&2
$(AWK) -f ${srcdir}/scripts/options.awk out=dfn2.out dfn1.out 1>&2
rm dfn1.out
mv dfn2.out $@
$(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_OBJECTS): png.h pngconf.h \
pnglibconf.h pngpriv.h pngdebug.h pnginfo.h pngstruct.h
test: check-am
# Extra checks
check: scripts/symbols.chk
# Don't distribute the generated script files
dist-hook:
cd '$(top_distdir)'; rm -f $(SCRIPT_CLEANFILES)
# install the .../include headers as links to the new ones
install-data-hook:
cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pnglibconf.h
cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/png.h png.h
cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pngconf.h \
pngconf.h
cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pnglibconf.h \
pnglibconf.h
cd $(DESTDIR)$(pkgconfigdir); rm -f libpng.pc
cd $(DESTDIR)$(pkgconfigdir); $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc
# do evil things to libpng to cause libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ to be used
install-exec-hook:
cd $(DESTDIR)$(bindir); rm -f libpng-config
cd $(DESTDIR)$(bindir); $(LN_S) $(PNGLIB_BASENAME)-config libpng-config
@set -x;\
cd $(DESTDIR)$(libdir);\
for ext in a la so so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@ sl dylib dll.a; do\
rm -f libpng.$$ext;\
if test -f $(PNGLIB_BASENAME).$$ext; then\
$(LN_S) $(PNGLIB_BASENAME).$$ext libpng.$$ext;\
fi;\
done
uninstall-hook:
cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pnglibconf.h
rm -f $(DESTDIR)$(pkgconfigdir)/libpng.pc
rm -f $(DESTDIR)$(bindir)/libpng-config
rm -f $(DESTDIR)$(libdir)/libpng.a
rm -f $(DESTDIR)$(libdir)/libpng.la
rm -f $(DESTDIR)$(libdir)/libpng.dll.a

1452
Makefile.in Normal file

File diff suppressed because it is too large Load Diff

140
README
View File

@@ -1,15 +1,19 @@
[NOTE: this is still beta version 0.99e; the text below has already
been updated in anticipation of the imminent 1.0 release.]
README for libpng version 1.5.13beta02 - September 10, 2012 (shared library 15.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
README for libpng 1.0
Libpng comes in several distribution formats. Get libpng-*.tar.gz,
libpng-*.tar.xz or libpng-*.tar.bz2 if you want UNIX-style line endings
in the text files, or lpng*.zip if you want DOS-style line endings.
This is the first official release of libpng. Don't let the fact that
it's the first release fool you. The libpng library has been in
extensive use and testing for about two and a half years. However, it's
finally gotten to the stage where there haven't been significant
Version 0.89 was the first official release of libpng. Don't let the
fact that it's the first release fool you. The libpng library has been in
extensive use and testing since mid-1995. By late 1997 it had
finally gotten to the stage where there hadn't been significant
changes to the API in some time, and people have a bad feeling about
libraries with versions < 1.0.
libraries with versions < 1.0. Version 1.0.0 was released in
March 1998.
****
Note that some of the changes to the png_info structure render this
@@ -29,8 +33,8 @@ directly, to avoid such problems in the future.
It is important to note that the APIs do not make current programs
that access the info struct directly incompatible with the new
library. However, it is strongly suggested that new programs use
the new APIs (as shown in example.c), and older programs be converted
to the new format, to facilitate upgrades in the future.
the new APIs (as shown in example.c and pngtest.c), and older programs
be converted to the new format, to facilitate upgrades in the future.
****
Additions since 0.90 include the ability to compile libpng as a
@@ -50,10 +54,11 @@ to set different actions based on whether the CRC error occurred in a
critical or an ancillary chunk.
The changes made to the library, and bugs fixed are based on discussions
on the PNG implementation mailing list <png-implement@dworking.wustl.edu>
and not on material submitted to Guy.
on the PNG-implement mailing list and not on material submitted
privately to Guy, Andreas, or Glenn. They will forward any good
suggestions to the list.
For a detailed description on using libpng, read libpng.txt. For
For a detailed description on using libpng, read libpng-manual.txt. For
examples of libpng in a program, see example.c and pngtest.c. For usage
information and restrictions (what little they are) on libpng, see
png.h. For a description on using zlib (the compression library used by
@@ -72,16 +77,15 @@ compression library that is useful for more things than just PNG files.
You can use zlib as a drop-in replacement for fread() and fwrite() if
you are so inclined.
zlib should be available at the same place that libpng is.
If not, it should be at ftp.uu.net in /graphics/png
Eventually, it will be at ftp.uu.net in /pub/archiving/zip/zlib
zlib should be available at the same place that libpng is, or at.
ftp://ftp.info-zip.org/pub/infozip/zlib
You may also want a copy of the PNG specification. It is available
as an RFC and a W3C Recommendation. Failing
these resources you can try ftp.uu.net in the /graphics/png directory.
as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find
these at http://www.libpng.org/pub/png/documents/
This code is currently being archived at ftp.uu.net in the
/graphics/png directory, and on CompuServe, Lib 20 (PNG SUPPORT)
This code is currently being archived at libpng.sf.net in the
[DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT)
at GO GRAPHSUP. If you can't find it in any of those places,
e-mail me, and I'll help you find it.
@@ -97,66 +101,59 @@ Finally, if you get any warning messages when compiling libpng
fix. Please mention "libpng" somewhere in the subject line. Thanks.
This release was created and will be supported by myself (of course
based in a large way on Guy's and Andreas' earlier work), and the PNG group.
based in a large way on Guy's and Andreas' earlier work), and the PNG
development group.
randeg@alumni.rpi.edu
png-implement@dworkin.wustl.edu
Send comments/corrections/commendations to png-mng-implement at
lists.sourceforge.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe) or to glennrp at users.sourceforge.net
You can't reach Guy, the original libpng author, at the addresses
given in previous versions of this document. He and Andreas will read mail
addressed to the png-implement list, however.
given in previous versions of this document. He and Andreas will
read mail addressed to the png-implement list, however.
Please do not send general questions about PNG. Send them to
the address in the specification (png-group@w3.org). At the same
time, please do not send libpng questions to that address, send them to me
or to png-implement@dworkin.wustl.edu. I'll
get them in the end anyway. If you have a question about something
png-mng-misc at lists.sf.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-misc to
subscribe). If you have a question about something
in the PNG specification that is related to using libpng, send it
to me. Send me any questions that start with "I was using libpng,
and ...". If in doubt, send questions to me. I'll bounce them
to others, if necessary.
Please do not send suggestions on how to change PNG. We have
been discussing PNG for a couple years now, and it is official and
been discussing PNG for sixteen years now, and it is official and
finished. If you have suggestions for libpng, however, I'll
gladly listen. Even if your suggestion is not used for version
1.0, it may be used later.
gladly listen. Even if your suggestion is not used immediately,
it may be used later.
Files in this distribution:
ANNOUNCE => Announcement of this version, with recent changes
CHANGES => Description of changes between libpng versions
KNOWNBUG => List of known bugs and deficiencies
LICENSE => License to use and redistribute libpng
README => This file
TODO => Things not implemented in the current library
ansi2knr.1 => Manual page for ansi2knr
ansi2knr.c => Converts files to K&R style function declarations
build.bat => MS-DOS batch file for Borland compiler
descrip.mms => VMS project file
Y2KINFO => Statement of Y2K compliance
example.c => Example code for using libpng functions
libpng.3 => manual page for libpng
libpng.txt => Description of libpng and its functions
libpng.3 => manual page for libpng (includes libpng-manual.txt)
libpng-manual.txt => Description of libpng and its functions
libpngpf.3 => manual page for libpng's private functions
makefile.aco => ACORN makefile
makefile.ama => Amiga makefile
makefile.atr => Atari makefile
makefile.bor => Borland makefile
makefile.dec => DEC makefile
makefile.dj2 => DJGPP 2 makefile
makefile.knr => Makefile which calls ansi2knr to convert files
makefile.lnx => Unix Linux/ELF makefile
makefile.mip => MIPS makefile
makefile.msc => Microsoft C makefile
makefile.sgi => Silicon Graphics Irix makefile
makefile.std => Standard Unix makefile
makefile.sun => SUN makefile
makefile.tc3 => Turbo C 3.0 makefile
makevms.com => VMS make program
png.5 => manual page for the PNG format
png.c => Basic interface functions common to library
png.h => Library function and interface declarations
pngconf.h => System specific library configuration
png.h => Library function and interface declarations (public)
pngpriv.h => Library function and interface declarations (private)
pngconf.h => System specific library configuration (public)
pngstruct.h => png_struct declaration (private)
pnginfo.h => png_info struct declaration (private)
pngdebug.h => debugging macros (private)
pngerror.c => Error/warning message I/O functions
pngget.c => Functions for retrieving info from struct
pngmem.c => Memory handling functions
pngbar.png => PNG logo, 88x31
pngnow.png => PNG logo, 98x31
pngpread.c => Progressive reading functions
pngread.c => Read data/helper high-level functions
pngrio.c => Lowest-level data read I/O functions
@@ -170,17 +167,36 @@ Files in this distribution:
pngwrite.c => High-level write functions
pngwtran.c => Write data transformations
pngwutil.c => Write utility functions
contrib => Contributions
gregbook => source code for PNG reading and writing, from
Greg Roelofs' "PNG: The Definitive Guide",
O'Reilly, 1999
msvctest => Builds and runs pngtest using a MSVC workspace
pngminus => Simple pnm2png and png2pnm programs
pngsuite => Test images
visupng => Contains a MSVC workspace for VisualPng
projects => Contains project files and workspaces for
building a DLL
cbuilder5 => Contains a Borland workspace for building
libpng and zlib
visualc6 => Contains a Microsoft Visual C++ (MSVC)
workspace for building libpng and zlib
visualc71 => Contains a Microsoft Visual C++ (MSVC)
workspace for building libpng and zlib
xcode => Contains an Apple xcode
workspace for building libpng and zlib
scripts => Directory containing scripts for building libpng:
(see scripts/README.txt for the list of scripts)
Good luck, and happy coding.
-Glenn Randers-Pehrson
Internet: randeg@alumni.rpi.edu
Web: http://www.rpi.edu/~randeg/index.html
-Glenn Randers-Pehrson (current maintainer, since 1998)
Internet: glennrp at users.sourceforge.net
-Andreas Eric Dilger
Internet: adilger@enel.ucalgary.ca
-Andreas Eric Dilger (former maintainer, 1996-1997)
Internet: adilger at enel.ucalgary.ca
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
-Guy Eric Schalnat
-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc)
Internet: gschal@infinet.com
Internet: gschal at infinet.com

45
TODO
View File

@@ -1,20 +1,27 @@
pngtodo.txt - list of things to do for libpng
/*
TODO - list of things to do for libpng:
add "grayscale->palette" transformation and "palette->grayscale" detection
improved dithering
multi-lingual error and warning message support
sPLT chunk handling
cHRM transformation
complete sRGB transformation (presently it simply uses gamma=0.45)
man pages for function calls
high-level API for reading images
final bug fixes
better documentation
better filter selection
(counting huffman bits/precompression? filter inertia? filter costs?)
optional palette creation
histogram creation
support for application-defined chunk handlers
keep up with public chunks
better C++ wrapper/full C++ implementation?
text conversion between different code pages (Latin-1 -> Mac and DOS)
Final bug fixes.
Better C++ wrapper/full C++ implementation?
Fix problem with C++ and EXTERN "C".
cHRM transformation.
Remove setjmp/longjmp usage in favor of returning error codes.
Add "grayscale->palette" transformation and "palette->grayscale" detection.
Improved dithering.
Multi-lingual error and warning message support.
Complete sRGB transformation (presently it simply uses gamma=0.45455).
Man pages for function calls.
Better documentation.
Better filter selection
(counting huffman bits/precompression? filter inertia? filter costs?).
Histogram creation.
Text conversion between different code pages (Latin-1 -> Mac and DOS).
Avoid building gamma tables whenever possible.
Use greater precision when changing to linear gamma for compositing against
background and doing rgb-to-gray transformation.
Investigate pre-incremented loop counters and other loop constructions.
Add interpolated method of handling interlacing.
Switch to the simpler zlib (zlib/libpng) license if legally possible.
Extend pngvalid.c to validate more of the libpng transformations.
*/

9631
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
.TH ANSI2KNR 1 "19 Jan 1996"
.SH NAME
ansi2knr \- convert ANSI C to Kernighan & Ritchie C
.SH SYNOPSIS
.I ansi2knr
[--varargs] input_file [output_file]
.SH DESCRIPTION
If no output_file is supplied, output goes to stdout.
.br
There are no error messages.
.sp
.I ansi2knr
recognizes function definitions by seeing a non-keyword identifier at the left
margin, followed by a left parenthesis, with a right parenthesis as the last
character on the line, and with a left brace as the first token on the
following line (ignoring possible intervening comments). It will recognize a
multi-line header provided that no intervening line ends with a left or right
brace or a semicolon. These algorithms ignore whitespace and comments, except
that the function name must be the first thing on the line.
.sp
The following constructs will confuse it:
.br
- Any other construct that starts at the left margin and follows the
above syntax (such as a macro or function call).
.br
- Some macros that tinker with the syntax of the function header.
.sp
The --varargs switch is obsolete, and is recognized only for
backwards compatibility. The present version of
.I ansi2knr
will always attempt to convert a ... argument to va_alist and va_dcl.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
continues to maintain the current version; most of the code in the current
version is his work. ansi2knr also includes contributions by Francois
Pinard <pinard@iro.umontreal.ca> and Jim Avera <jima@netcom.com>.

View File

@@ -1,488 +0,0 @@
/* Copyright (C) 1989, 1991, 1993 Aladdin Enterprises. All rights reserved. */
/* ansi2knr.c */
/* Convert ANSI function declarations to K&R syntax */
/*
ansi2knr is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
to anyone for the consequences of using it or for whether it serves any
particular purpose or works at all, unless he says so in writing. Refer
to the GNU General Public License for full details.
Everyone is granted permission to copy, modify and redistribute
ansi2knr, but only under the conditions described in the GNU
General Public License. A copy of this license is supposed to have been
given to you along with ansi2knr so you can know your rights and
responsibilities. It should be in a file named COPYING. Among other
things, the copyright notice and this notice must be preserved on all
copies.
*/
/*
---------- Here is the GNU GPL file COPYING, referred to above ----------
----- These terms do NOT apply to the JPEG software itself; see README ------
GHOSTSCRIPT GENERAL PUBLIC LICENSE
(Clarified 11 Feb 1988)
Copyright (C) 1988 Richard M. Stallman
Everyone is permitted to copy and distribute verbatim copies of this
license, but changing it is not allowed. You can also use this wording
to make the terms for other programs.
The license agreements of most software companies keep you at the
mercy of those companies. By contrast, our general public license is
intended to give everyone the right to share Ghostscript. To make sure
that you get the rights we want you to have, we need to make
restrictions that forbid anyone to deny you these rights or to ask you
to surrender the rights. Hence this license agreement.
Specifically, we want to make sure that you have the right to give
away copies of Ghostscript, that you receive source code or else can get
it if you want it, that you can change Ghostscript or use pieces of it
in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to
deprive anyone else of these rights. For example, if you distribute
copies of Ghostscript, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds
out that there is no warranty for Ghostscript. If Ghostscript is
modified by someone else and passed on, we want its recipients to know
that what they have is not what we distributed, so that any problems
introduced by others will not reflect on our reputation.
Therefore we (Richard M. Stallman and the Free Software Foundation,
Inc.) make the following terms which say what you must do to be allowed
to distribute or change Ghostscript.
COPYING POLICIES
1. You may copy and distribute verbatim copies of Ghostscript source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy a valid copyright and license
notice "Copyright (C) 1989 Aladdin Enterprises. All rights reserved.
Distributed by Free Software Foundation, Inc." (or with whatever year is
appropriate); keep intact the notices on all files that refer to this
License Agreement and to the absence of any warranty; and give any other
recipients of the Ghostscript program a copy of this License Agreement
along with the program. You may charge a distribution fee for the
physical act of transferring a copy.
2. You may modify your copy or copies of Ghostscript or any portion of
it, and copy and distribute such modifications under the terms of
Paragraph 1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating
that you changed the files and the date of any change; and
b) cause the whole of any work that you distribute or publish,
that in whole or in part contains or is a derivative of Ghostscript
or any part thereof, to be licensed at no charge to all third
parties on terms identical to those contained in this License
Agreement (except that you may choose to grant more extensive
warranty protection to some or all third parties, at your option).
c) You may charge a distribution fee for the physical act of
transferring a copy, and you may at your option offer warranty
protection in exchange for a fee.
Mere aggregation of another unrelated program with this program (or its
derivative) on a volume of a storage or distribution medium does not bring
the other program under the scope of these terms.
3. You may copy and distribute Ghostscript (or a portion or derivative
of it, under Paragraph 2) in object code or executable form under the
terms of Paragraphs 1 and 2 above provided that you also do one of the
following:
a) accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Paragraphs 1 and 2 above; or,
b) accompany it with a written offer, valid for at least three
years, to give any third party free (except for a nominal
shipping charge) a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of
Paragraphs 1 and 2 above; or,
c) accompany it with the information you received as to where the
corresponding source code may be obtained. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form alone.)
For an executable file, complete source code means all the source code for
all modules it contains; but, as a special exception, it need not include
source code for modules which are standard libraries that accompany the
operating system on which the executable file runs.
4. You may not copy, sublicense, distribute or transfer Ghostscript
except as expressly provided under this License Agreement. Any attempt
otherwise to copy, sublicense, distribute or transfer Ghostscript is
void and your rights to use the program under this License agreement
shall be automatically terminated. However, parties who have received
computer software programs from you with this License Agreement will not
have their licenses terminated so long as such parties remain in full
compliance.
5. If you wish to incorporate parts of Ghostscript into other free
programs whose distribution conditions are different, write to the Free
Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not
yet worked out a simple rule that can be stated here, but we will often
permit this. We will be guided by the two goals of preserving the free
status of all derivatives of our free software and of promoting the
sharing and reuse of software.
Your comments and suggestions about our licensing policies and our
software are welcome! Please contact the Free Software Foundation,
Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296.
NO WARRANTY
BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD
M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES
PROVIDE GHOSTSCRIPT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF GHOSTSCRIPT IS WITH
YOU. SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN
ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE
GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM
BY ANY OTHER PARTY.
-------------------- End of file COPYING ------------------------------
*/
#include <stdio.h>
#include <ctype.h>
#ifdef BSD
#include <strings.h>
#else
#ifdef VMS
extern int strlen(), strncmp();
#else
#include <string.h>
#endif
#endif
/* malloc and free should be declared in stdlib.h, */
/* but if you've got a K&R compiler, they probably aren't. */
#ifdef MSDOS
#include <malloc.h>
#else
#ifdef VMS
extern char *malloc();
extern void free();
#else
extern char *malloc();
extern int free();
#endif
#endif
/* Usage:
ansi2knr input_file [output_file]
* If no output_file is supplied, output goes to stdout.
* There are no error messages.
*
* ansi2knr recognizes functions by seeing a non-keyword identifier
* at the left margin, followed by a left parenthesis,
* with a right parenthesis as the last character on the line.
* It will recognize a multi-line header provided that the last character
* of the last line of the header is a right parenthesis,
* and no intervening line ends with a left brace or a semicolon.
* These algorithms ignore whitespace and comments, except that
* the function name must be the first thing on the line.
* The following constructs will confuse it:
* - Any other construct that starts at the left margin and
* follows the above syntax (such as a macro or function call).
* - Macros that tinker with the syntax of the function header.
*/
/* Scanning macros */
#define isidchar(ch) (isalnum(ch) || (ch) == '_')
#define isidfirstchar(ch) (isalpha(ch) || (ch) == '_')
/* Forward references */
char *skipspace();
int writeblanks();
int test1();
int convert1();
/* The main program */
main(argc, argv)
int argc;
char *argv[];
{ FILE *in, *out;
#define bufsize 5000 /* arbitrary size */
char *buf;
char *line;
switch ( argc )
{
default:
printf("Usage: ansi2knr input_file [output_file]\n");
exit(0);
case 2:
out = stdout; break;
case 3:
out = fopen(argv[2], "w");
if ( out == NULL )
{ fprintf(stderr, "Cannot open %s\n", argv[2]);
exit(1);
}
}
in = fopen(argv[1], "r");
if ( in == NULL )
{ fprintf(stderr, "Cannot open %s\n", argv[1]);
exit(1);
}
fprintf(out, "#line 1 \"%s\"\n", argv[1]);
buf = malloc(bufsize);
line = buf;
while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
{ switch ( test1(buf) )
{
case 1: /* a function */
convert1(buf, out);
break;
case -1: /* maybe the start of a function */
line = buf + strlen(buf);
if ( line != buf + (bufsize - 1) ) /* overflow check */
continue;
/* falls through */
default: /* not a function */
fputs(buf, out);
break;
}
line = buf;
}
if ( line != buf ) fputs(buf, out);
free(buf);
fclose(out);
fclose(in);
return 0;
}
/* Skip over space and comments, in either direction. */
char *
skipspace(p, dir)
register char *p;
register int dir; /* 1 for forward, -1 for backward */
{ for ( ; ; )
{ while ( isspace(*p) ) p += dir;
if ( !(*p == '/' && p[dir] == '*') ) break;
p += dir; p += dir;
while ( !(*p == '*' && p[dir] == '/') )
{ if ( *p == 0 ) return p; /* multi-line comment?? */
p += dir;
}
p += dir; p += dir;
}
return p;
}
/*
* Write blanks over part of a string.
*/
int
writeblanks(start, end)
char *start;
char *end;
{ char *p;
for ( p = start; p < end; p++ ) *p = ' ';
return 0;
}
/*
* Test whether the string in buf is a function definition.
* The string may contain and/or end with a newline.
* Return as follows:
* 0 - definitely not a function definition;
* 1 - definitely a function definition;
* -1 - may be the beginning of a function definition,
* append another line and look again.
*/
int
test1(buf)
char *buf;
{ register char *p = buf;
char *bend;
char *endfn;
int contin;
if ( !isidfirstchar(*p) )
return 0; /* no name at left margin */
bend = skipspace(buf + strlen(buf) - 1, -1);
switch ( *bend )
{
case ')': contin = 1; break;
case '{':
case ';': return 0; /* not a function */
default: contin = -1;
}
while ( isidchar(*p) ) p++;
endfn = p;
p = skipspace(p, 1);
if ( *p++ != '(' )
return 0; /* not a function */
p = skipspace(p, 1);
if ( *p == ')' )
return 0; /* no parameters */
/* Check that the apparent function name isn't a keyword. */
/* We only need to check for keywords that could be followed */
/* by a left parenthesis (which, unfortunately, is most of them). */
{ static char *words[] =
{ "asm", "auto", "case", "char", "const", "double",
"extern", "float", "for", "if", "int", "long",
"register", "return", "short", "signed", "sizeof",
"static", "switch", "typedef", "unsigned",
"void", "volatile", "while", 0
};
char **key = words;
char *kp;
int len = endfn - buf;
while ( (kp = *key) != 0 )
{ if ( strlen(kp) == len && !strncmp(kp, buf, len) )
return 0; /* name is a keyword */
key++;
}
}
return contin;
}
int
convert1(buf, out)
char *buf;
FILE *out;
{ char *endfn;
register char *p;
char **breaks;
unsigned num_breaks = 2; /* for testing */
char **btop;
char **bp;
char **ap;
/* Pre-ANSI implementations don't agree on whether strchr */
/* is called strchr or index, so we open-code it here. */
for ( endfn = buf; *(endfn++) != '('; ) ;
top: p = endfn;
breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
if ( breaks == 0 )
{ /* Couldn't allocate break table, give up */
fprintf(stderr, "Unable to allocate break table!\n");
fputs(buf, out);
return -1;
}
btop = breaks + num_breaks * 2 - 2;
bp = breaks;
/* Parse the argument list */
do
{ int level = 0;
char *end = NULL;
if ( bp >= btop )
{ /* Filled up break table. */
/* Allocate a bigger one and start over. */
free((char *)breaks);
num_breaks <<= 1;
goto top;
}
*bp++ = p;
/* Find the end of the argument */
for ( ; end == NULL; p++ )
{ switch(*p)
{
case ',': if ( !level ) end = p; break;
case '(': level++; break;
case ')': if ( --level < 0 ) end = p; break;
case '/': p = skipspace(p, 1) - 1; break;
default: ;
}
}
p--; /* back up over terminator */
/* Find the name being declared. */
/* This is complicated because of procedure and */
/* array modifiers. */
for ( ; ; )
{ p = skipspace(p - 1, -1);
switch ( *p )
{
case ']': /* skip array dimension(s) */
case ')': /* skip procedure args OR name */
{ int level = 1;
while ( level )
switch ( *--p )
{
case ']': case ')': level++; break;
case '[': case '(': level--; break;
case '/': p = skipspace(p, -1) + 1; break;
default: ;
}
}
if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
{ /* We found the name being declared */
while ( !isidfirstchar(*p) )
p = skipspace(p, 1) + 1;
goto found;
}
break;
default: goto found;
}
}
found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
{ p++;
if ( bp == breaks + 1 ) /* sole argument */
writeblanks(breaks[0], p);
else
writeblanks(bp[-1] - 1, p);
bp--;
}
else
{ while ( isidchar(*p) ) p--;
*bp++ = p+1;
}
p = end;
}
while ( *p++ == ',' );
*bp = p;
/* Make a special check for 'void' arglist */
if ( bp == breaks+2 )
{ p = skipspace(breaks[0], 1);
if ( !strncmp(p, "void", 4) )
{ p = skipspace(p+4, 1);
if ( p == breaks[2] - 1 )
{ bp = breaks; /* yup, pretend arglist is empty */
writeblanks(breaks[0], p + 1);
}
}
}
/* Put out the function name */
p = buf;
while ( p != endfn ) putc(*p, out), p++;
/* Put out the declaration */
for ( ap = breaks+1; ap < bp; ap += 2 )
{ p = *ap;
while ( isidchar(*p) ) putc(*p, out), p++;
if ( ap < bp - 1 ) fputs(", ", out);
}
fputs(") ", out);
/* Put out the argument declarations */
for ( ap = breaks+2; ap <= bp; ap += 2 ) (*ap)[-1] = ';';
fputs(breaks[0], out);
free((char *)breaks);
return 0;
}

225
arm/filter_neon.S Normal file
View File

@@ -0,0 +1,225 @@
/* filter_neon.S - NEON optimised filter functions
*
* Copyright (c) 2011 Glenn Randers-Pehrson
* Written by Mans Rullgard, 2011.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */
#endif
#ifdef __ELF__
# define ELF
#else
# define ELF @
#endif
.arch armv7-a
.fpu neon
.macro func name, export=0
.macro endfunc
ELF .size \name, . - \name
.endfunc
.purgem endfunc
.endm
.text
.if \export
.global \name
.endif
ELF .type \name, STT_FUNC
.func \name
\name:
.endm
func png_read_filter_row_sub4_neon, export=1
ldr r3, [r0, #4] @ rowbytes
vmov.i8 d3, #0
1:
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
vadd.u8 d0, d3, d4
vadd.u8 d1, d0, d5
vadd.u8 d2, d1, d6
vadd.u8 d3, d2, d7
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
subs r3, r3, #16
bgt 1b
bx lr
endfunc
func png_read_filter_row_sub3_neon, export=1
ldr r3, [r0, #4] @ rowbytes
vmov.i8 d3, #0
mov r0, r1
mov r2, #3
mov r12, #12
vld1.8 {q11}, [r0], r12
1:
vext.8 d5, d22, d23, #3
vadd.u8 d0, d3, d22
vext.8 d6, d22, d23, #6
vadd.u8 d1, d0, d5
vext.8 d7, d23, d23, #1
vld1.8 {q11}, [r0], r12
vst1.32 {d0[0]}, [r1,:32], r2
vadd.u8 d2, d1, d6
vst1.32 {d1[0]}, [r1], r2
vadd.u8 d3, d2, d7
vst1.32 {d2[0]}, [r1], r2
vst1.32 {d3[0]}, [r1], r2
subs r3, r3, #12
bgt 1b
bx lr
endfunc
func png_read_filter_row_up_neon, export=1
ldr r3, [r0, #4] @ rowbytes
1:
vld1.8 {q0}, [r1,:128]
vld1.8 {q1}, [r2,:128]!
vadd.u8 q0, q0, q1
vst1.8 {q0}, [r1,:128]!
subs r3, r3, #16
bgt 1b
bx lr
endfunc
func png_read_filter_row_avg4_neon, export=1
ldr r12, [r0, #4] @ rowbytes
vmov.i8 d3, #0
1:
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]!
vhadd.u8 d0, d3, d16
vadd.u8 d0, d0, d4
vhadd.u8 d1, d0, d17
vadd.u8 d1, d1, d5
vhadd.u8 d2, d1, d18
vadd.u8 d2, d2, d6
vhadd.u8 d3, d2, d19
vadd.u8 d3, d3, d7
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
subs r12, r12, #16
bgt 1b
bx lr
endfunc
func png_read_filter_row_avg3_neon, export=1
push {r4,lr}
ldr r12, [r0, #4] @ rowbytes
vmov.i8 d3, #0
mov r0, r1
mov r4, #3
mov lr, #12
vld1.8 {q11}, [r0], lr
1:
vld1.8 {q10}, [r2], lr
vext.8 d5, d22, d23, #3
vhadd.u8 d0, d3, d20
vext.8 d17, d20, d21, #3
vadd.u8 d0, d0, d22
vext.8 d6, d22, d23, #6
vhadd.u8 d1, d0, d17
vext.8 d18, d20, d21, #6
vadd.u8 d1, d1, d5
vext.8 d7, d23, d23, #1
vld1.8 {q11}, [r0], lr
vst1.32 {d0[0]}, [r1,:32], r4
vhadd.u8 d2, d1, d18
vst1.32 {d1[0]}, [r1], r4
vext.8 d19, d21, d21, #1
vadd.u8 d2, d2, d6
vhadd.u8 d3, d2, d19
vst1.32 {d2[0]}, [r1], r4
vadd.u8 d3, d3, d7
vst1.32 {d3[0]}, [r1], r4
subs r12, r12, #12
bgt 1b
pop {r4,pc}
endfunc
.macro paeth rx, ra, rb, rc
vaddl.u8 q12, \ra, \rb @ a + b
vaddl.u8 q15, \rc, \rc @ 2*c
vabdl.u8 q13, \rb, \rc @ pa
vabdl.u8 q14, \ra, \rc @ pb
vabd.u16 q15, q12, q15 @ pc
vcle.u16 q12, q13, q14 @ pa <= pb
vcle.u16 q13, q13, q15 @ pa <= pc
vcle.u16 q14, q14, q15 @ pb <= pc
vand q12, q12, q13 @ pa <= pb && pa <= pc
vmovn.u16 d28, q14
vmovn.u16 \rx, q12
vbsl d28, \rb, \rc
vbsl \rx, \ra, d28
.endm
func png_read_filter_row_paeth4_neon, export=1
ldr r12, [r0, #4] @ rowbytes
vmov.i8 d3, #0
vmov.i8 d20, #0
1:
vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128]
vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]!
paeth d0, d3, d16, d20
vadd.u8 d0, d0, d4
paeth d1, d0, d17, d16
vadd.u8 d1, d1, d5
paeth d2, d1, d18, d17
vadd.u8 d2, d2, d6
paeth d3, d2, d19, d18
vmov d20, d19
vadd.u8 d3, d3, d7
vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]!
subs r12, r12, #16
bgt 1b
bx lr
endfunc
func png_read_filter_row_paeth3_neon, export=1
push {r4,lr}
ldr r12, [r0, #4] @ rowbytes
vmov.i8 d3, #0
vmov.i8 d4, #0
mov r0, r1
mov r4, #3
mov lr, #12
vld1.8 {q11}, [r0], lr
1:
vld1.8 {q10}, [r2], lr
paeth d0, d3, d20, d4
vext.8 d5, d22, d23, #3
vadd.u8 d0, d0, d22
vext.8 d17, d20, d21, #3
paeth d1, d0, d17, d20
vst1.32 {d0[0]}, [r1,:32], r4
vext.8 d6, d22, d23, #6
vadd.u8 d1, d1, d5
vext.8 d18, d20, d21, #6
paeth d2, d1, d18, d17
vext.8 d7, d23, d23, #1
vld1.8 {q11}, [r0], lr
vst1.32 {d1[0]}, [r1], r4
vadd.u8 d2, d2, d6
vext.8 d19, d21, d21, #1
paeth d3, d2, d19, d18
vst1.32 {d2[0]}, [r1], r4
vmov d4, d19
vadd.u8 d3, d3, d7
vst1.32 {d3[0]}, [r1], r4
subs r12, r12, #12
bgt 1b
pop {r4,pc}
endfunc

34
autogen.sh Executable file
View File

@@ -0,0 +1,34 @@
#! /bin/sh
# a quick hack script to generate necessary files from
# auto* tools.
#
# WARNING: if you run this you will change the versions
# of the tools which are used and, maybe, required!
# You can define your own replacements in your environment.
# $AUTOCONF, $AUTOMAKE, $AUTOHEADER, $AUTOPOINT, $ACLOCAL and $LIBTOOLIZE
touch Makefile.am configure.ac
{
LT=${LIBTOOLIZE-libtoolize}
echo "running $LT" >&2
$LT --force --copy --automake
} && {
AL=${ACLOCAL-aclocal}
echo "running $AL" >&2
$AL
} && {
AH=${AUTOHEADER-autoheader}
echo "running $AH [ignore the warnings]" >&2
$AH
} && {
AM=${AUTOMAKE-automake}
echo "running $AM" >&2
$AM --force-missing --foreign -a -c
} && {
AC=${AUTOCONF-autoconf}
echo "running $AC" >&2
$AC
} &&
echo "autogen complete" >&2 ||
echo "ERROR: autogen.sh failed, autogen is incomplete" >&2

View File

@@ -1,2 +0,0 @@
make -fmakefile.bor -B -DMODEL=m %1 %2 %3 libpng >buildm.out
make -fmakefile.bor -B -DMODEL=l %1 %2 %3 libpng >buildl.out

1522
config.guess vendored Normal file

File diff suppressed because it is too large Load Diff

109
config.h.in Normal file
View File

@@ -0,0 +1,109 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the `feenableexcept' function. */
#undef HAVE_FEENABLEEXCEPT
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ
/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
/* Define to 1 if you have the `pow' function. */
#undef HAVE_POW
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Align row buffers */
#undef PNG_ALIGNED_MEMORY_SUPPORTED
/* Enable ARM NEON optimizations */
#undef PNG_ARM_NEON
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
/* Version number of package */
#undef VERSION
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to the equivalent of the C99 'restrict' keyword, or to
nothing if this is not supported. Do not define if restrict is
supported directly. */
#undef restrict
/* Work around a bug in Sun C++: it does not support _Restrict or
__restrict__, even though the corresponding Sun C compiler ends up with
"#define restrict _Restrict" or "#define restrict __restrict__" in the
previous line. Perhaps some future version of Sun C++ will work with
restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
#if defined __SUNPRO_CC && !defined __RESTRICT
# define _Restrict
# define __restrict__
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

1771
config.sub vendored Normal file

File diff suppressed because it is too large Load Diff

15261
configure vendored Executable file

File diff suppressed because it is too large Load Diff

204
configure.ac Normal file
View File

@@ -0,0 +1,204 @@
# configure.ac
dnl Process this file with autoconf to produce a configure script.
dnl
dnl Minor upgrades (compatible ABI): increment the package version
dnl (third field in two places below) and set the PNGLIB_RELEASE
dnl variable.
dnl
dnl Major upgrades (incompatible ABI): increment the package major
dnl version (second field, or first if desired), set the minor
dnl to 0, set PNGLIB_MAJOR below *and* follow the instructions in
dnl Makefile.am to upgrade the package name.
dnl This is here to prevent earlier autoconf from being used, it
dnl should not be necessary to regenerate configure if the time
dnl stamps are correct
AC_PREREQ(2.59)
dnl Version number stuff here:
AC_INIT([libpng], [1.5.13beta02], [png-mng-implement@lists.sourceforge.net])
AM_INIT_AUTOMAKE
dnl stop configure from automagically running automake
AM_MAINTAINER_MODE
PNGLIB_VERSION=1.5.13beta02
PNGLIB_MAJOR=1
PNGLIB_MINOR=5
PNGLIB_RELEASE=13
dnl End of version number stuff
AC_CONFIG_SRCDIR([pngget.c])
AM_CONFIG_HEADER(config.h)
# Checks for programs.
AC_LANG([C])
AC_PROG_CC
AM_PROG_AS
AC_PROG_LD
AC_PROG_CPP
AC_CHECK_TOOL(SED, sed, :)
AC_CHECK_TOOL(AWK, awk, :)
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
LT_INIT([win32-dll])
# On Solaris 10 and 12 CPP gets set to cc -E, however this still
# does some input parsing. We need strict ANSI-C style tokenization,
# check this:
AC_REQUIRE_CPP
AC_MSG_CHECKING([for a C preprocessor that does not parse its input])
AC_TRY_CPP([1.5.0 16BIT],
[DFNCPP="$CPP"],
[DFNCPP=""
sav_CPP="$CPP"
for CPP in "${CC-cc} -E" "${CC-cc} -E -traditional-cpp" "/lib/cpp" "cpp"; do
AC_TRY_CPP([1.5.0 16BIT],
[DFNCPP="$CPP"]
[break],,)
done
CPP="$sav_CPP"])
if test -n "$DFNCPP"; then
AC_MSG_RESULT([$DFNCPP])
AC_SUBST(DFNCPP)
else
AC_MSG_FAILURE([not found], 1)
fi
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([malloc.h stdlib.h string.h strings.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_STRUCT_TM
AC_C_RESTRICT
# Checks for library functions.
AC_FUNC_STRTOD
AC_CHECK_FUNCS([memset], , AC_ERROR([memset not found in libc]))
AC_CHECK_FUNCS([pow], , AC_CHECK_LIB(m, pow, , AC_ERROR([cannot find pow])) )
AC_ARG_WITH(zlib-prefix,
AC_HELP_STRING([--with-zlib-prefix],
[prefix that may have been used in installed zlib]),
[ZPREFIX=${withval}],
[ZPREFIX='z_'])
AC_CHECK_LIB(z, zlibVersion, ,
AC_CHECK_LIB(z, ${ZPREFIX}zlibVersion, ,
AC_ERROR([zlib not installed])))
# The following is for pngvalid, to ensure it catches FP errors even on
# platforms that don't enable FP exceptions, the function appears in the math
# library (typically), it's not an error if it is not found.
AC_CHECK_LIB([m], [feenableexcept])
AC_CHECK_FUNCS([feenableexcept])
LIBPNG_DEFINES=-DPNG_CONFIGURE_LIBPNG
LIBPNG_DEFINES=$LIBPNG_DEFINES
AC_SUBST(LIBPNG_DEFINES)
AC_MSG_CHECKING([if using Solaris linker])
SLD=`$LD --version 2>&1 | grep Solaris`
if test "$SLD"; then
have_solaris_ld=yes
AC_MSG_RESULT(yes)
else
have_solaris_ld=no
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(HAVE_SOLARIS_LD, test "$have_solaris_ld" = "yes")
AC_MSG_CHECKING([if libraries can be versioned])
# Special case for PE/COFF platforms: ld reports
# support for version-script, but doesn't actually
# DO anything with it.
case $host in
*cygwin* | *mingw32* | *interix* )
have_ld_version_script=no
AC_MSG_RESULT(no)
;;
* )
if test "$have_solaris_ld" = "yes"; then
GLD=`$LD --help < /dev/null 2>&1 | grep 'M mapfile'`
else
GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
fi
if test "$GLD"; then
have_ld_version_script=yes
AC_MSG_RESULT(yes)
else
have_ld_version_script=no
AC_MSG_RESULT(no)
AC_MSG_WARN(*** You have not enabled versioned symbols.)
fi
;;
esac
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
if test "$have_ld_version_script" = "yes"; then
AC_MSG_CHECKING([for symbol prefix])
SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \
| ${CPP-${CC-gcc} -E} - 2>&1 \
| ${EGREP-grep} "^PREFIX=" \
| ${SED-sed} -e "s:^PREFIX=::" -e "s:__USER_LABEL_PREFIX__::"`
AC_SUBST(SYMBOL_PREFIX)
AC_MSG_RESULT($SYMBOL_PREFIX)
fi
# Substitutions for .in files
AC_SUBST(PNGLIB_VERSION)
AC_SUBST(PNGLIB_MAJOR)
AC_SUBST(PNGLIB_MINOR)
AC_SUBST(PNGLIB_RELEASE)
# Additional arguments (and substitutions)
# Allow the pkg-config directory to be set
AC_ARG_WITH(pkgconfigdir,
AC_HELP_STRING([--with-pkgconfigdir],
[Use the specified pkgconfig dir (default is libdir/pkgconfig)]),
[pkgconfigdir=${withval}],
[pkgconfigdir='${libdir}/pkgconfig'])
AC_SUBST([pkgconfigdir])
AC_MSG_NOTICE([pkgconfig directory is ${pkgconfigdir}])
# Make the *-config binary config scripts optional
AC_ARG_WITH(binconfigs,
AC_HELP_STRING([--with-binconfigs],
[Generate shell libpng-config scripts as well as pkg-config data]
[@<:@default=yes@:>@]),
[if test "${withval}" = no; then
binconfigs=
AC_MSG_NOTICE([libpng-config scripts will not be built])
else
binconfigs='${binconfigs}'
fi],
[binconfigs='${binconfigs}'])
AC_SUBST([binconfigs])
# Because GCC by default assembles code with an executable stack, even though it
# compiles C code with a non-executable stack, it is necessary to do a fixup
# here (this may by GCC specific)
AC_SUBST([AM_CCASFLAGS], [-Wa,--noexecstack])
AC_ARG_ENABLE([arm-neon],
AC_HELP_STRING([--enable-arm-neon], [Enable ARM NEON optimizations]),
[if test "${enableval}" = yes; then
AC_DEFINE([PNG_ARM_NEON], [1], [Enable ARM NEON optimizations])
AC_DEFINE([PNG_ALIGNED_MEMORY_SUPPORTED], [1], [Align row buffers])
fi])
AM_CONDITIONAL([PNG_ARM_NEON], [test "${enable_arm_neon:-no}" = yes])
# Config files, substituting as above
AC_CONFIG_FILES([Makefile libpng.pc:libpng.pc.in])
AC_CONFIG_FILES([libpng-config:libpng-config.in],
[chmod +x libpng-config])
AC_OUTPUT

4
contrib/README.txt Normal file
View File

@@ -0,0 +1,4 @@
This "contrib" directory contains contributions which are not necessarily under
the libpng license, although all are open source. They are not part of
libpng proper and are not used for building the library.

340
contrib/gregbook/COPYING Normal file
View File

@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

50
contrib/gregbook/LICENSE Normal file
View File

@@ -0,0 +1,50 @@
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------

View File

@@ -0,0 +1,130 @@
# Sample makefile for rpng-win / rpng2-win / wpng using mingw32-gcc and make.
# Greg Roelofs
# Last modified: 2 June 2007
#
# The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
#
# Invoke this makefile from a DOS-prompt window via:
#
# make -f Makefile.mingw32
#
# This makefile assumes libpng and zlib have already been built or downloaded
# and are in subdirectories at the same level as the current subdirectory
# (as indicated by the PNGDIR and ZDIR macros below). It makes no assumptions
# at all about the mingw32 installation tree (W32DIR). Edit as appropriate.
#
# Note that the names of the dynamic and static libpng and zlib libraries
# used below may change in later releases of the libraries. This makefile
# builds both statically and dynamically linked executables by default.
# (You need only one set, but for testing it can be handy to have both.)
# macros --------------------------------------------------------------------
#PNGDIR = ../..# for libpng-x.y.z/contrib/gregbook builds
PNGDIR = ../libpng-win32
PNGINC = -I$(PNGDIR)
PNGLIBd = $(PNGDIR)/libpng.dll.a # dynamically linked
PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng
#ZDIR = ../../../zlib-win32# for libpng-x.y.z/contrib/gregbook builds
ZDIR = ../zlib-win32
ZINC = -I$(ZDIR)
ZLIBd = $(ZDIR)/libzdll.a
ZLIBs = $(ZDIR)/libz.a
# change this to be the path where mingw32 installs its stuff:
W32DIR =
#W32DIR = /usr/local/cross-tools/i386-mingw32msvc
W32INC = -I$(W32DIR)/include
W32LIB = $(W32DIR)/lib/libuser32.a $(W32DIR)/lib/libgdi32.a
CC = gcc
#CC = i386-mingw32msvc-gcc # e.g., Linux -> Win32 cross-compilation
LD = $(CC)
RM = rm -f
CFLAGS = -O -Wall $(INCS) $(MINGW_CCFLAGS)
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
# [-ansi, -pedantic and -W can also be used]
LDFLAGS = $(MINGW_LDFLAGS)
O = .o
E = .exe
INCS = $(PNGINC) $(ZINC) $(W32INC)
RLIBSd = $(PNGLIBd) $(ZLIBd) $(W32LIB) -lm
RLIBSs = $(PNGLIBs) $(ZLIBs) $(W32LIB) -lm
WLIBSd = $(PNGLIBd) $(ZLIBd)
WLIBSs = $(PNGLIBs) $(ZLIBs)
RPNG = rpng-win
RPNG2 = rpng2-win
WPNG = wpng
ROBJSd = $(RPNG)$(O) readpng.pic$(O)
ROBJS2d = $(RPNG2)$(O) readpng2.pic$(O)
WOBJSd = $(WPNG)$(O) writepng.pic$(O)
RPNGs = $(RPNG)-static
RPNG2s = $(RPNG2)-static
WPNGs = $(WPNG)-static
ROBJSs = $(RPNG)$(O) readpng$(O)
ROBJS2s = $(RPNG2)$(O) readpng2$(O)
WOBJSs = $(WPNG)$(O) writepng$(O)
STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E)
DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
EXES = $(STATIC_EXES) $(DYNAMIC_EXES)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
%.pic$(O): %.c
$(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $<
# dependencies --------------------------------------------------------------
all: $(EXES)
$(RPNGs)$(E): $(ROBJSs)
$(LD) $(LDFLAGS) -o $@ $(ROBJSs) $(RLIBSs)
$(RPNG)$(E): $(ROBJSd)
$(LD) $(LDFLAGS) -o $@ $(ROBJSd) $(RLIBSd)
$(RPNG2s)$(E): $(ROBJS2s)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2s) $(RLIBSs)
$(RPNG2)$(E): $(ROBJS2d)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2d) $(RLIBSd)
$(WPNGs)$(E): $(WOBJSs)
$(LD) $(LDFLAGS) -o $@ $(WOBJSs) $(WLIBSs)
$(WPNG)$(E): $(WOBJSd)
$(LD) $(LDFLAGS) -o $@ $(WOBJSd) $(WLIBSd)
$(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h
$(WPNG)$(O): $(WPNG).c writepng.h
readpng$(O) readpng.pic$(O): readpng.c readpng.h
readpng2$(O) readpng2.pic$(O): readpng2.c readpng2.h
writepng$(O) writepng.pic$(O): writepng.c writepng.h
# maintenance ---------------------------------------------------------------
clean:
$(RM) $(EXES)
$(RM) $(ROBJSs) $(ROBJS2s) $(WOBJSs)
$(RM) $(ROBJSd) $(ROBJS2d) $(WOBJSd)

View File

@@ -0,0 +1,104 @@
# Sample makefile for rpng-x / rpng2-x / wpng for SGI using cc and make.
# Greg Roelofs
# Last modified: 7 March 2002
#
# The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Buy some for friends
# and family, too. (Not that this is a blatant plug or anything.)
#
# Invoke this makefile from a shell prompt in the usual way; for example:
#
# make -f Makefile.sgi
#
# This makefile assumes libpng and zlib have already been built or downloaded
# and are both installed in /usr/local/{include,lib} (as indicated by the
# PNG* and Z* macros below). Edit as appropriate--choose only ONE each of
# the PNGINC, PNGLIB, ZINC and ZLIB lines.
#
# This makefile builds dynamically linked executables (against libpng and zlib,
# that is), but that can be changed by uncommenting the appropriate PNGLIB and
# ZLIB lines.
# macros --------------------------------------------------------------------
PNGINC = -I/usr/local/include/libpng15
PNGLIB = -L/usr/local/lib -lpng15 # dynamically linked against libpng
#PNGLIB = /usr/local/lib/libpng15.a # statically linked against libpng
# or:
#PNGINC = -I../..
#PNGLIB = -L../.. -lpng
#PNGLIB = ../../libpng.a
ZINC = -I/usr/local/include
ZLIB = -L/usr/local/lib -lz # dynamically linked against zlib
#ZLIB = /usr/local/lib/libz.a # statically linked against zlib
#ZINC = -I../zlib
#ZLIB = -L../zlib -lz
#ZLIB = ../../../zlib/libz.a
XINC = -I/usr/include/X11 # old-style, stock X distributions
XLIB = -L/usr/lib/X11 -lX11
#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows)
#XLIB = -L/usr/openwin/lib -lX11
#XINC = -I/usr/X11R6/include # new X distributions (XFree86, etc.)
#XLIB = -L/usr/X11R6/lib -lX11
INCS = $(PNGINC) $(ZINC) $(XINC)
RLIBS = $(PNGLIB) $(ZLIB) $(XLIB) -lm
WLIBS = $(PNGLIB) $(ZLIB)
CC = cc
LD = cc
RM = rm -f
# ABI must be the same as that used to build libpng.
ABI=
CFLAGS = $(ABI) -O -fullwarn $(INCS)
LDFLAGS = $(ABI)
O = .o
E =
RPNG = rpng-x
RPNG2 = rpng2-x
WPNG = wpng
ROBJS = $(RPNG)$(O) readpng$(O)
ROBJS2 = $(RPNG2)$(O) readpng2$(O)
WOBJS = $(WPNG)$(O) writepng$(O)
EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies --------------------------------------------------------------
all: $(EXES)
$(RPNG)$(E): $(ROBJS)
$(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBS)
$(RPNG2)$(E): $(ROBJS2)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBS)
$(WPNG)$(E): $(WOBJS)
$(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBS)
$(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h
$(WPNG)$(O): $(WPNG).c writepng.h
readpng$(O): readpng.c readpng.h
readpng2$(O): readpng2.c readpng2.h
writepng$(O): writepng.c writepng.h
# maintenance ---------------------------------------------------------------
clean:
$(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS)

View File

@@ -0,0 +1,132 @@
# Sample makefile for rpng-x / rpng2-x / wpng using gcc and make.
# Greg Roelofs
# Last modified: 2 June 2007
#
# The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
#
# Invoke this makefile from a shell prompt in the usual way; for example:
#
# make -f Makefile.unx
#
# This makefile assumes libpng and zlib have already been built or downloaded
# and are installed in /usr/local/{include,lib} or as otherwise indicated by
# the PNG* and Z* macros below. Edit as appropriate--choose only ONE each of
# the PNGINC, PNGLIBd, PNGLIBs, ZINC, ZLIBd and ZLIBs lines.
#
# This makefile builds both dynamically and statically linked executables
# (against libpng and zlib, that is), but that can be changed by modifying
# the "EXES =" line. (You need only one set, but for testing it can be handy
# to have both.)
# macros --------------------------------------------------------------------
#PNGDIR = /usr/local/lib
#PNGINC = -I/usr/local/include/libpng15
#PNGLIBd = -L$(PNGDIR) -lpng15 # dynamically linked, installed libpng
#PNGLIBs = $(PNGDIR)/libpng15.a # statically linked, installed libpng
# or:
PNGDIR = ../..# this one is for libpng-x.y.z/contrib/gregbook builds
#PNGDIR = ../libpng
PNGINC = -I$(PNGDIR)
PNGLIBd = -Wl,-rpath,$(PNGDIR) -L$(PNGDIR) -lpng15 # dynamically linked
PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng
ZDIR = /usr/local/lib
#ZDIR = /usr/lib64
ZINC = -I/usr/local/include
ZLIBd = -L$(ZDIR) -lz # dynamically linked against zlib
ZLIBs = $(ZDIR)/libz.a # statically linked against zlib
# or:
#ZDIR = ../zlib
#ZINC = -I$(ZDIR)
#ZLIBd = -Wl,-rpath,$(ZDIR) -L$(ZDIR) -lz # -rpath allows in-place testing
#ZLIBs = $(ZDIR)/libz.a
#XINC = -I/usr/include # old-style, stock X distributions
#XLIB = -L/usr/lib/X11 -lX11 # (including SGI IRIX)
#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows)
#XLIB = -L/usr/openwin/lib -lX11
XINC = -I/usr/X11R6/include # new X distributions (X.org, etc.)
XLIB = -L/usr/X11R6/lib -lX11
#XLIB = -L/usr/X11R6/lib64 -lX11 # e.g., Red Hat on AMD64
INCS = $(PNGINC) $(ZINC) $(XINC)
RLIBSd = $(PNGLIBd) $(ZLIBd) $(XLIB) -lm
RLIBSs = $(PNGLIBs) $(ZLIBs) $(XLIB) -lm
WLIBSd = $(PNGLIBd) $(ZLIBd) -lm
WLIBSs = $(PNGLIBs) $(ZLIBs)
CC = gcc
LD = gcc
RM = rm -f
CFLAGS = -O -Wall $(INCS) -DFEATURE_LOOP
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
# [-ansi, -pedantic and -W can also be used]
LDFLAGS =
O = .o
E =
RPNG = rpng-x
RPNG2 = rpng2-x
WPNG = wpng
RPNGs = $(RPNG)-static
RPNG2s = $(RPNG2)-static
WPNGs = $(WPNG)-static
ROBJS = $(RPNG)$(O) readpng$(O)
ROBJS2 = $(RPNG2)$(O) readpng2$(O)
WOBJS = $(WPNG)$(O) writepng$(O)
STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E)
DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
EXES = $(STATIC_EXES) $(DYNAMIC_EXES)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies --------------------------------------------------------------
all: $(EXES)
$(RPNGs)$(E): $(ROBJS)
$(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSs)
$(RPNG)$(E): $(ROBJS)
$(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSd)
$(RPNG2s)$(E): $(ROBJS2)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSs)
$(RPNG2)$(E): $(ROBJS2)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSd)
$(WPNGs)$(E): $(WOBJS)
$(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSs)
$(WPNG)$(E): $(WOBJS)
$(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSd)
$(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h
$(WPNG)$(O): $(WPNG).c writepng.h
readpng$(O): readpng.c readpng.h
readpng2$(O): readpng2.c readpng2.h
writepng$(O): writepng.c writepng.h
# maintenance ---------------------------------------------------------------
clean:
$(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS)

View File

@@ -0,0 +1,113 @@
# Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE.
# Greg Roelofs
# Last modified: 2 June 2007
#
# The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
#
# Invoke this makefile from a DOS prompt window via:
#
# %devstudio%\vc\bin\vcvars32.bat
# nmake -nologo -f Makefile.w32
#
# where %devstudio% is the installation directory for MSVC / DevStudio. If
# you get "environment out of space" errors, create a desktop shortcut with
# "c:\windows\command.com /e:4096" as the program command line and set the
# working directory to this directory. Then double-click to open the new
# DOS-prompt window with a bigger environment and retry the commands above.
#
# This makefile assumes libpng and zlib have already been built or downloaded
# and are in subdirectories at the same level as the current subdirectory
# (as indicated by the PNGPATH and ZPATH macros below). Edit as appropriate.
#
# Note that the names of the dynamic and static libpng and zlib libraries
# used below may change in later releases of the libraries. This makefile
# builds statically linked executables, but that can be changed by uncom-
# menting the appropriate PNGLIB and ZLIB lines.
!include <ntwin32.mak>
# macros --------------------------------------------------------------------
PNGPATH = ../libpng
PNGINC = -I$(PNGPATH)
#PNGLIB = $(PNGPATH)/pngdll.lib
PNGLIB = $(PNGPATH)/libpng.lib
ZPATH = ../zlib
ZINC = -I$(ZPATH)
#ZLIB = $(ZPATH)/zlibdll.lib
ZLIB = $(ZPATH)/zlibstat.lib
WINLIBS = -defaultlib:user32.lib gdi32.lib
# ["real" apps may also need comctl32.lib, comdlg32.lib, winmm.lib, etc.]
INCS = $(PNGINC) $(ZINC)
RLIBS = $(PNGLIB) $(ZLIB) $(WINLIBS)
WLIBS = $(PNGLIB) $(ZLIB)
CC = cl
LD = link
RM = del
CFLAGS = -nologo -O -W3 $(INCS) $(cvars)
# [note that -W3 is an MSVC-specific compilation flag ("all warnings on")]
# [see %devstudio%\vc\include\win32.mak for cvars macro definition]
O = .obj
E = .exe
RLDFLAGS = -nologo -subsystem:windows
WLDFLAGS = -nologo
RPNG = rpng-win
RPNG2 = rpng2-win
WPNG = wpng
ROBJS = $(RPNG)$(O) readpng$(O)
ROBJS2 = $(RPNG2)$(O) readpng2$(O)
WOBJS = $(WPNG)$(O) writepng$(O)
EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies --------------------------------------------------------------
all: $(EXES)
$(RPNG)$(E): $(ROBJS)
$(LD) $(RLDFLAGS) -out:$@ $(ROBJS) $(RLIBS)
$(RPNG2)$(E): $(ROBJS2)
$(LD) $(RLDFLAGS) -out:$@ $(ROBJS2) $(RLIBS)
$(WPNG)$(E): $(WOBJS)
$(LD) $(WLDFLAGS) -out:$@ $(WOBJS) $(WLIBS)
$(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h
$(WPNG)$(O): $(WPNG).c writepng.h
readpng$(O): readpng.c readpng.h
readpng2$(O): readpng2.c readpng2.h
writepng$(O): writepng.c writepng.h
# maintenance ---------------------------------------------------------------
clean:
# ideally we could just do this:
# $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS)
# ...but the Windows "DEL" command is none too bright, so:
$(RM) r*$(E)
$(RM) w*$(E)
$(RM) r*$(O)
$(RM) w*$(O)

186
contrib/gregbook/README Normal file
View File

@@ -0,0 +1,186 @@
===========================
PNG: The Definitive Guide
===========================
Source Code
Chapters 13, 14 and 15 of "PNG: The Definitive Guide" discuss three free,
cross-platform demo programs that show how to use the libpng reference
library: rpng, rpng2 and wpng. rpng and rpng2 are viewers; the first is
a very simple example that that shows how a standard file-viewer might use
libpng, while the second is designed to process streaming data and shows
how a web browser might be written. wpng is a simple command-line program
that reads binary PGM and PPM files (the ``raw'' grayscale and RGB subsets
of PBMPLUS/NetPBM) and converts them to PNG.
The source code for all three demo programs currently compiles under
Unix, OpenVMS, and 32-bit Windows. (Special thanks to Martin Zinser,
zinser@decus.de, for making the necessary changes for OpenVMS and for
providing an appropriate build script.) Build instructions can be found
below.
Files:
README this file
LICENSE terms of distribution and reuse (BSD-like or GNU GPL)
COPYING GNU General Public License (GPL)
Makefile.unx Unix makefile
Makefile.w32 Windows (MSVC) makefile
makevms.com OpenVMS build script
rpng-win.c Windows front end for the basic viewer
rpng-x.c X Window System (Unix, OpenVMS) front end
readpng.c generic back end for the basic viewer
readpng.h header file for the basic viewer
rpng2-win.c Windows front end for the progressive viewer
rpng2-x.c X front end for the progressive viewer
readpng2.c generic back end for the progressive viewer
readpng2.h header file for the progressive viewer
wpng.c generic (text) front end for the converter
writepng.c generic back end for the converter
writepng.h header file for the converter
toucan.png transparent PNG for testing (by Stefan Schneider)
Note that, although the programs are designed to be functional, their
primary purpose is to illustrate how to use libpng to add PNG support to
other programs. As such, their user interfaces are crude and definitely
are not intended for everyday use.
Please see http://www.libpng.org/pub/png/pngbook.html for further infor-
mation and links to the latest version of the source code, and Chapters
13-15 of the book for detailed discussion of the three programs.
Greg Roelofs
http://pobox.com/~newt/greg_contact.html
16 March 2008
BUILD INSTRUCTIONS
- Prerequisites (in order of compilation):
- zlib http://zlib.net/
- libpng http://www.libpng.org/pub/png/libpng.html
- pngbook http://www.libpng.org/pub/png/book/sources.html
The pngbook demo programs are explicitly designed to demonstrate proper
coding techniques for using the libpng reference library. As a result,
you need to download and build both zlib (on which libpng depends) and
libpng. A common build setup is to place the zlib, libpng and pngbook
subdirectory trees ("folders") in the same parent directory. Then the
libpng build can refer to files in ../zlib (or ..\zlib or [-.zlib]),
and similarly for the pngbook build.
Note that all three packages are designed to be built from a command
line by default; those who wish to use a graphical or other integrated
development environments are on their own.
- Unix:
Unpack the latest pngbook sources (which should correspond to this
README file) into a directory and change into that directory.
Copy Makefile.unx to Makefile and edit the PNG* and Z* variables
appropriately (possibly also the X* variables if necessary).
make
There is no "install" target, so copy the three executables somewhere
in your path or run them from the current directory. All three will
print a basic usage screen when run without any command-line arguments;
see the book for more details.
- Windows:
Unpack the latest pngbook sources (which should correspond to this
README file) into a folder, open a "DOS shell" or "command prompt"
or equivalent command-line window, and cd into the folder where you
unpacked the source code.
For MSVC, set up the necessary environment variables by invoking
%devstudio%\vc\bin\vcvars32.bat
where where %devstudio% is the installation directory for MSVC /
DevStudio. If you get "environment out of space" errors under 95/98,
create a desktop shortcut with "c:\windows\command.com /e:4096" as
the program command line and set the working directory to the pngbook
directory. Then double-click to open the new DOS-prompt window with
a bigger environment and retry the commands above.
Copy Makefile.w32 to Makefile and edit the PNGPATH and ZPATH variables
appropriately (possibly also the "INC" and "LIB" variables if needed).
Note that the names of the dynamic and static libpng and zlib libraries
used in the makefile may change in later releases of the libraries.
Also note that, as of libpng version 1.0.5, MSVC DLL builds do not work.
This makefile therefore builds statically linked executables, but if
the DLL problems ever get fixed, uncommenting the appropriate PNGLIB
and ZLIB lines will build dynamically linked executables instead.
Do the build by typing
nmake
The result should be three executables: rpng-win.exe, rpng2-win.exe,
and wpng.exe. Copy them somewhere in your PATH or run them from the
current folder. Like the Unix versions, the two windowed programs
(rpng and rpng2) now display a usage screen in a console window when
invoked without command-line arguments; this is new behavior as of
the June 2001 release. Note that the programs use the Unix-style "-"
character to specify options, instead of the more common DOS/Windows
"/" character. (For example: "rpng2-win -bgpat 4 foo.png", not
"rpng2-win /bgpat 4 foo.png")
- OpenVMS:
Unpack the pngbook sources into a subdirectory and change into that
subdirectory.
Edit makevms.com appropriately, specifically the zpath and pngpath
variables.
@makevms
To run the programs, they probably first need to be set up as "foreign
symbols," with "disk" and "dir" set appropriately:
$ rpng == "$disk:[dir]rpng-x.exe"
$ rpng2 == "$disk:[dir]rpng2-x.exe"
$ wpng == "$disk:[dir]wpng.exe"
All three will print a basic usage screen when run without any command-
line arguments; see the book for more details. Note that the options
style is Unix-like, i.e., preceded by "-" rather than "/".
RUNNING THE PROGRAMS: (VERY) BRIEF INTRO
rpng is a simple PNG viewer that can display transparent PNGs with a
specified background color; for example,
rpng -bgcolor \#ff0000 toucan.png
would display the image with a red background. rpng2 is a progressive
viewer that simulates a web browser in some respects; it can display
images against either a background color or a dynamically generated
background image. For example:
rpng2 -bgpat 16 toucan.png
wpng is a purely command-line image converter from binary PBMPLUS/NetPBM
format (.pgm or .ppm) to PNG; for example,
wpng -time < toucan-notrans.ppm > toucan-notrans.png
would convert the specified PPM file (using redirection) to PNG, auto-
matically setting the PNG modification-time chunk.
All options can be abbreviated to the shortest unique value; for example,
"-bgc" for -bgcolor (versus "-bgp" for -bgpat), or "-g" for -gamma.

View File

@@ -0,0 +1,132 @@
$!------------------------------------------------------------------------------
$! make "PNG: The Definitive Guide" demo programs (for X) under OpenVMS
$!
$! Script created by Martin Zinser for libpng; modified by Greg Roelofs
$! for standalone pngbook source distribution.
$!
$!
$! Set locations where zlib and libpng sources live.
$!
$ zpath = ""
$ pngpath = ""
$!
$ if f$search("[---.zlib]zlib.h").nes."" then zpath = "[---.zlib]"
$ if f$search("[--]png.h").nes."" then pngpath = "[--]"
$!
$ if f$search("[-.zlib]zlib.h").nes."" then zpath = "[-.zlib]"
$ if f$search("[-.libpng]png.h").nes."" then pngpath = "[-.libpng]"
$!
$ if zpath .eqs. ""
$ then
$ write sys$output "zlib include not found. Exiting..."
$ exit 2
$ endif
$!
$ if pngpath .eqs. ""
$ then
$ write sys$output "libpng include not found. Exiting..."
$ exit 2
$ endif
$!
$! Look for the compiler used.
$!
$ ccopt="/include=(''zpath',''pngpath')"
$ if f$getsyi("HW_MODEL").ge.1024
$ then
$ ccopt = "/prefix=all"+ccopt
$ comp = "__decc__=1"
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ else
$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
$ then
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs.""
$ then
$ comp = "__gcc__=1"
$ CC :== GCC
$ else
$ comp = "__vaxc__=1"
$ endif
$ else
$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include:
$ ccopt = "/decc/prefix=all"+ccopt
$ comp = "__decc__=1"
$ endif
$ endif
$ open/write lopt lib.opt
$ write lopt "''pngpath'libpng.olb/lib"
$ write lopt "''zpath'libz.olb/lib"
$ close lopt
$ open/write xopt x11.opt
$ write xopt "sys$library:decw$xlibshr.exe/share"
$ close xopt
$!
$! Build 'em.
$!
$ write sys$output "Compiling PNG book programs ..."
$ CALL MAKE readpng.OBJ "cc ''CCOPT' readpng" -
readpng.c readpng.h
$ CALL MAKE readpng2.OBJ "cc ''CCOPT' readpng2" -
readpng2.c readpng2.h
$ CALL MAKE writepng.OBJ "cc ''CCOPT' writepng" -
writepng.c writepng.h
$ write sys$output "Building rpng-x..."
$ CALL MAKE rpng-x.OBJ "cc ''CCOPT' rpng-x" -
rpng-x.c readpng.h
$ call make rpng-x.exe -
"LINK rpng-x,readpng,lib.opt/opt,x11.opt/opt" -
rpng-x.obj readpng.obj
$ write sys$output "Building rpng2-x..."
$ CALL MAKE rpng2-x.OBJ "cc ''CCOPT' rpng2-x" -
rpng2-x.c readpng2.h
$ call make rpng2-x.exe -
"LINK rpng2-x,readpng2,lib.opt/opt,x11.opt/opt" -
rpng2-x.obj readpng2.obj
$ write sys$output "Building wpng..."
$ CALL MAKE wpng.OBJ "cc ''CCOPT' wpng" -
wpng.c writepng.h
$ call make wpng.exe -
"LINK wpng,writepng,lib.opt/opt" -
wpng.obj writepng.obj
$ exit
$!
$!
$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
$ V = 'F$Verify(0)
$! P1 = What we are trying to make
$! P2 = Command to make it
$! P3 - P8 What it depends on
$
$ If F$Search(P1) .Eqs. "" Then Goto Makeit
$ Time = F$CvTime(F$File(P1,"RDT"))
$arg=3
$Loop:
$ Argument = P'arg
$ If Argument .Eqs. "" Then Goto Exit
$ El=0
$Loop2:
$ File = F$Element(El," ",Argument)
$ If File .Eqs. " " Then Goto Endl
$ AFile = ""
$Loop3:
$ OFile = AFile
$ AFile = F$Search(File)
$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
$ Goto Loop3
$NextEL:
$ El = El + 1
$ Goto Loop2
$EndL:
$ arg=arg+1
$ If arg .Le. 8 Then Goto Loop
$ Goto Exit
$
$Makeit:
$ VV=F$VERIFY(0)
$ write sys$output P2
$ 'P2
$ VV='F$Verify(VV)
$Exit:
$ If V Then Set Verify
$ENDSUBROUTINE

312
contrib/gregbook/readpng.c Normal file
View File

@@ -0,0 +1,312 @@
/*---------------------------------------------------------------------------
rpng - simple PNG display program readpng.c
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>
#include "png.h" /* libpng header */
#include "readpng.h" /* typedefs, common macros, public prototypes */
/* future versions of libpng will provide this macro: */
#ifndef png_jmpbuf
# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
#endif
static png_structp png_ptr = NULL;
static png_infop info_ptr = NULL;
png_uint_32 width, height;
int bit_depth, color_type;
uch *image_data = NULL;
void readpng_version_info(void)
{
fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n",
PNG_LIBPNG_VER_STRING, png_libpng_ver);
fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n",
ZLIB_VERSION, zlib_version);
}
/* return value = 0 for success, 1 for bad sig, 2 for bad IHDR, 4 for no mem */
int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight)
{
uch sig[8];
/* first do a quick check that the file really is a PNG image; could
* have used slightly more general png_sig_cmp() function instead */
fread(sig, 1, 8, infile);
if (png_sig_cmp(sig, 0, 8))
return 1; /* bad signature */
/* could pass pointers to user-defined error handlers instead of NULLs: */
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!png_ptr)
return 4; /* out of memory */
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
png_destroy_read_struct(&png_ptr, NULL, NULL);
return 4; /* out of memory */
}
/* we could create a second info struct here (end_info), but it's only
* useful if we want to keep pre- and post-IDAT chunk info separated
* (mainly for PNG-aware image editors and converters) */
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return 2;
}
png_init_io(png_ptr, infile);
png_set_sig_bytes(png_ptr, 8); /* we already read the 8 signature bytes */
png_read_info(png_ptr, info_ptr); /* read all PNG info up to image data */
/* alternatively, could make separate calls to png_get_image_width(),
* etc., but want bit_depth and color_type for later [don't care about
* compression_type and filter_type => NULLs] */
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
NULL, NULL, NULL);
*pWidth = width;
*pHeight = height;
/* OK, that's all we need for now; return happy */
return 0;
}
/* returns 0 if succeeds, 1 if fails due to no bKGD chunk, 2 if libpng error;
* scales values to 8-bit if necessary */
int readpng_get_bgcolor(uch *red, uch *green, uch *blue)
{
png_color_16p pBackground;
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return 2;
}
if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD))
return 1;
/* it is not obvious from the libpng documentation, but this function
* takes a pointer to a pointer, and it always returns valid red, green
* and blue values, regardless of color_type: */
png_get_bKGD(png_ptr, info_ptr, &pBackground);
/* however, it always returns the raw bKGD data, regardless of any
* bit-depth transformations, so check depth and adjust if necessary */
if (bit_depth == 16) {
*red = pBackground->red >> 8;
*green = pBackground->green >> 8;
*blue = pBackground->blue >> 8;
} else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
if (bit_depth == 1)
*red = *green = *blue = pBackground->gray? 255 : 0;
else if (bit_depth == 2)
*red = *green = *blue = (255/3) * pBackground->gray;
else /* bit_depth == 4 */
*red = *green = *blue = (255/15) * pBackground->gray;
} else {
*red = (uch)pBackground->red;
*green = (uch)pBackground->green;
*blue = (uch)pBackground->blue;
}
return 0;
}
/* display_exponent == LUT_exponent * CRT_exponent */
uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes)
{
double gamma;
png_uint_32 i, rowbytes;
png_bytepp row_pointers = NULL;
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return NULL;
}
/* expand palette images to RGB, low-bit-depth grayscale images to 8 bits,
* transparency chunks to full alpha channel; strip 16-bit-per-sample
* images to 8 bits per sample; and convert grayscale to RGB[A] */
if (color_type == PNG_COLOR_TYPE_PALETTE)
png_set_expand(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
png_set_expand(png_ptr);
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
png_set_expand(png_ptr);
#ifdef PNG_READ_16_TO_8_SUPPORTED
if (bit_depth == 16)
# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
png_set_scale_16(png_ptr);
# else
png_set_strip_16(png_ptr);
# endif
#endif
if (color_type == PNG_COLOR_TYPE_GRAY ||
color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb(png_ptr);
/* unlike the example in the libpng documentation, we have *no* idea where
* this file may have come from--so if it doesn't have a file gamma, don't
* do any correction ("do no harm") */
if (png_get_gAMA(png_ptr, info_ptr, &gamma))
png_set_gamma(png_ptr, display_exponent, gamma);
/* all transformations have been registered; now update info_ptr data,
* get rowbytes and channels, and allocate image memory */
png_read_update_info(png_ptr, info_ptr);
*pRowbytes = rowbytes = png_get_rowbytes(png_ptr, info_ptr);
*pChannels = (int)png_get_channels(png_ptr, info_ptr);
if ((image_data = (uch *)malloc(rowbytes*height)) == NULL) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return NULL;
}
if ((row_pointers = (png_bytepp)malloc(height*sizeof(png_bytep))) == NULL) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
free(image_data);
image_data = NULL;
return NULL;
}
Trace((stderr, "readpng_get_image: channels = %d, rowbytes = %ld, height = %ld\n",
*pChannels, rowbytes, height));
/* set the individual row_pointers to point at the correct offsets */
for (i = 0; i < height; ++i)
row_pointers[i] = image_data + i*rowbytes;
/* now we can go ahead and just read the whole image */
png_read_image(png_ptr, row_pointers);
/* and we're done! (png_read_end() can be omitted if no processing of
* post-IDAT text/time/etc. is desired) */
free(row_pointers);
row_pointers = NULL;
png_read_end(png_ptr, NULL);
return image_data;
}
void readpng_cleanup(int free_image_data)
{
if (free_image_data && image_data) {
free(image_data);
image_data = NULL;
}
if (png_ptr && info_ptr) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
png_ptr = NULL;
info_ptr = NULL;
}
}

View File

@@ -0,0 +1,88 @@
/*---------------------------------------------------------------------------
rpng - simple PNG display program readpng.h
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#ifndef TRUE
# define TRUE 1
# define FALSE 0
#endif
#ifndef MAX
# define MAX(a,b) ((a) > (b)? (a) : (b))
# define MIN(a,b) ((a) < (b)? (a) : (b))
#endif
#ifdef DEBUG
# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);}
#else
# define Trace(x) ;
#endif
typedef unsigned char uch;
typedef unsigned short ush;
typedef unsigned long ulg;
/* prototypes for public functions in readpng.c */
void readpng_version_info(void);
int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight);
int readpng_get_bgcolor(uch *bg_red, uch *bg_green, uch *bg_blue);
uch *readpng_get_image(double display_exponent, int *pChannels,
ulg *pRowbytes);
void readpng_cleanup(int free_image_data);

511
contrib/gregbook/readpng2.c Normal file
View File

@@ -0,0 +1,511 @@
/*---------------------------------------------------------------------------
rpng2 - progressive-model PNG display program readpng2.c
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#include <stdlib.h> /* for exit() prototype */
#include <setjmp.h>
#include <zlib.h>
#include "png.h" /* libpng header from the local directory */
#include "readpng2.h" /* typedefs, common macros, public prototypes */
/* local prototypes */
static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr);
static void readpng2_row_callback(png_structp png_ptr, png_bytep new_row,
png_uint_32 row_num, int pass);
static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr);
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg);
void readpng2_version_info(void)
{
fprintf(stderr, " Compiled with libpng %s; using libpng %s\n",
PNG_LIBPNG_VER_STRING, png_libpng_ver);
fprintf(stderr, " and with zlib %s; using zlib %s.\n",
ZLIB_VERSION, zlib_version);
}
int readpng2_check_sig(uch *sig, int num)
{
return !png_sig_cmp(sig, 0, num);
}
/* returns 0 for success, 2 for libpng problem, 4 for out of memory */
int readpng2_init(mainprog_info *mainprog_ptr)
{
png_structp png_ptr; /* note: temporary variables! */
png_infop info_ptr;
/* could also replace libpng warning-handler (final NULL), but no need: */
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr,
readpng2_error_handler, NULL);
if (!png_ptr)
return 4; /* out of memory */
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
png_destroy_read_struct(&png_ptr, NULL, NULL);
return 4; /* out of memory */
}
/* we could create a second info struct here (end_info), but it's only
* useful if we want to keep pre- and post-IDAT chunk info separated
* (mainly for PNG-aware image editors and converters) */
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function, unless an alternate error handler was installed--
* but compatible error handlers must either use longjmp() themselves
* (as in this program) or exit immediately, so here we are: */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return 2;
}
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
/* prepare the reader to ignore all recognized chunks whose data won't be
* used, i.e., all chunks recognized by libpng except for IHDR, PLTE, IDAT,
* IEND, tRNS, bKGD, gAMA, and sRGB (small performance improvement) */
{
/* These byte strings were copied from png.h. If a future libpng
* version recognizes more chunks, add them to this list. If a
* future version of readpng2.c recognizes more chunks, delete them
* from this list. */
static /* const */ png_byte chunks_to_ignore[] = {
99, 72, 82, 77, '\0', /* cHRM */
104, 73, 83, 84, '\0', /* hIST */
105, 67, 67, 80, '\0', /* iCCP */
105, 84, 88, 116, '\0', /* iTXt */
111, 70, 70, 115, '\0', /* oFFs */
112, 67, 65, 76, '\0', /* pCAL */
112, 72, 89, 115, '\0', /* pHYs */
115, 66, 73, 84, '\0', /* sBIT */
115, 67, 65, 76, '\0', /* sCAL */
115, 80, 76, 84, '\0', /* sPLT */
115, 84, 69, 82, '\0', /* sTER */
116, 69, 88, 116, '\0', /* tEXt */
116, 73, 77, 69, '\0', /* tIME */
122, 84, 88, 116, '\0' /* zTXt */
};
png_set_keep_unknown_chunks(png_ptr, 1 /* PNG_HANDLE_CHUNK_NEVER */,
chunks_to_ignore, sizeof(chunks_to_ignore)/5);
}
#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
/* instead of doing png_init_io() here, now we set up our callback
* functions for progressive decoding */
png_set_progressive_read_fn(png_ptr, mainprog_ptr,
readpng2_info_callback, readpng2_row_callback, readpng2_end_callback);
/* make sure we save our pointers for use in readpng2_decode_data() */
mainprog_ptr->png_ptr = png_ptr;
mainprog_ptr->info_ptr = info_ptr;
/* and that's all there is to initialization */
return 0;
}
/* returns 0 for success, 2 for libpng (longjmp) problem */
int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length)
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
mainprog_ptr->png_ptr = NULL;
mainprog_ptr->info_ptr = NULL;
return 2;
}
/* hand off the next chunk of input data to libpng for decoding */
png_process_data(png_ptr, info_ptr, rawbuf, length);
return 0;
}
static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr)
{
mainprog_info *mainprog_ptr;
int color_type, bit_depth;
png_uint_32 width, height;
#ifdef PNG_FLOATING_POINT_SUPPORTED
double gamma;
#else
png_fixed_point gamma;
#endif
/* setjmp() doesn't make sense here, because we'd either have to exit(),
* longjmp() ourselves, or return control to libpng, which doesn't want
* to see us again. By not doing anything here, libpng will instead jump
* to readpng2_decode_data(), which can return an error value to the main
* program. */
/* retrieve the pointer to our special-purpose struct, using the png_ptr
* that libpng passed back to us (i.e., not a global this time--there's
* no real difference for a single image, but for a multithreaded browser
* decoding several PNG images at the same time, one needs to avoid mixing
* up different images' structs) */
mainprog_ptr = png_get_progressive_ptr(png_ptr);
if (mainprog_ptr == NULL) { /* we be hosed */
fprintf(stderr,
"readpng2 error: main struct not recoverable in info_callback.\n");
fflush(stderr);
return;
/*
* Alternatively, we could call our error-handler just like libpng
* does, which would effectively terminate the program. Since this
* can only happen if png_ptr gets redirected somewhere odd or the
* main PNG struct gets wiped, we're probably toast anyway. (If
* png_ptr itself is NULL, we would not have been called.)
*/
}
/* this is just like in the non-progressive case */
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
NULL, NULL, NULL);
mainprog_ptr->width = (ulg)width;
mainprog_ptr->height = (ulg)height;
/* since we know we've read all of the PNG file's "header" (i.e., up
* to IDAT), we can check for a background color here */
if (mainprog_ptr->need_bgcolor &&
png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD))
{
png_color_16p pBackground;
/* it is not obvious from the libpng documentation, but this function
* takes a pointer to a pointer, and it always returns valid red,
* green and blue values, regardless of color_type: */
png_get_bKGD(png_ptr, info_ptr, &pBackground);
/* however, it always returns the raw bKGD data, regardless of any
* bit-depth transformations, so check depth and adjust if necessary */
if (bit_depth == 16) {
mainprog_ptr->bg_red = pBackground->red >> 8;
mainprog_ptr->bg_green = pBackground->green >> 8;
mainprog_ptr->bg_blue = pBackground->blue >> 8;
} else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
if (bit_depth == 1)
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
mainprog_ptr->bg_blue = pBackground->gray? 255 : 0;
else if (bit_depth == 2)
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
mainprog_ptr->bg_blue = (255/3) * pBackground->gray;
else /* bit_depth == 4 */
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
mainprog_ptr->bg_blue = (255/15) * pBackground->gray;
} else {
mainprog_ptr->bg_red = (uch)pBackground->red;
mainprog_ptr->bg_green = (uch)pBackground->green;
mainprog_ptr->bg_blue = (uch)pBackground->blue;
}
}
/* as before, let libpng expand palette images to RGB, low-bit-depth
* grayscale images to 8 bits, transparency chunks to full alpha channel;
* strip 16-bit-per-sample images to 8 bits per sample; and convert
* grayscale to RGB[A] */
if (color_type == PNG_COLOR_TYPE_PALETTE)
png_set_expand(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
png_set_expand(png_ptr);
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
png_set_expand(png_ptr);
#ifdef PNG_READ_16_TO_8_SUPPORTED
if (bit_depth == 16)
# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
png_set_scale_16(png_ptr);
# else
png_set_strip_16(png_ptr);
# endif
#endif
if (color_type == PNG_COLOR_TYPE_GRAY ||
color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb(png_ptr);
/* Unlike the basic viewer, which was designed to operate on local files,
* this program is intended to simulate a web browser--even though we
* actually read from a local file, too. But because we are pretending
* that most of the images originate on the Internet, we follow the recom-
* mendation of the sRGB proposal and treat unlabelled images (no gAMA
* chunk) as existing in the sRGB color space. That is, we assume that
* such images have a file gamma of 0.45455, which corresponds to a PC-like
* display system. This change in assumptions will have no effect on a
* PC-like system, but on a Mac, SGI, NeXT or other system with a non-
* identity lookup table, it will darken unlabelled images, which effec-
* tively favors images from PC-like systems over those originating on
* the local platform. Note that mainprog_ptr->display_exponent is the
* "gamma" value for the entire display system, i.e., the product of
* LUT_exponent and CRT_exponent. */
#ifdef PNG_FLOATING_POINT_SUPPORTED
if (png_get_gAMA(png_ptr, info_ptr, &gamma))
png_set_gamma(png_ptr, mainprog_ptr->display_exponent, gamma);
else
png_set_gamma(png_ptr, mainprog_ptr->display_exponent, 0.45455);
#else
if (png_get_gAMA_fixed(png_ptr, info_ptr, &gamma))
png_set_gamma_fixed(png_ptr,
(png_fixed_point)(100000*mainprog_ptr->display_exponent+.5), gamma);
else
png_set_gamma_fixed(png_ptr,
(png_fixed_point)(100000*mainprog_ptr->display_exponent+.5), 45455);
#endif
/* we'll let libpng expand interlaced images, too */
mainprog_ptr->passes = png_set_interlace_handling(png_ptr);
/* all transformations have been registered; now update info_ptr data and
* then get rowbytes and channels */
png_read_update_info(png_ptr, info_ptr);
mainprog_ptr->rowbytes = (int)png_get_rowbytes(png_ptr, info_ptr);
mainprog_ptr->channels = png_get_channels(png_ptr, info_ptr);
/* Call the main program to allocate memory for the image buffer and
* initialize windows and whatnot. (The old-style function-pointer
* invocation is used for compatibility with a few supposedly ANSI
* compilers that nevertheless barf on "fn_ptr()"-style syntax.) */
(*mainprog_ptr->mainprog_init)();
/* and that takes care of initialization */
return;
}
static void readpng2_row_callback(png_structp png_ptr, png_bytep new_row,
png_uint_32 row_num, int pass)
{
mainprog_info *mainprog_ptr;
/* first check whether the row differs from the previous pass; if not,
* nothing to combine or display */
if (!new_row)
return;
/* retrieve the pointer to our special-purpose struct so we can access
* the old rows and image-display callback function */
mainprog_ptr = png_get_progressive_ptr(png_ptr);
/* save the pass number for optional use by the front end */
mainprog_ptr->pass = pass;
/* have libpng either combine the new row data with the existing row data
* from previous passes (if interlaced) or else just copy the new row
* into the main program's image buffer */
png_progressive_combine_row(png_ptr, mainprog_ptr->row_pointers[row_num],
new_row);
/* finally, call the display routine in the main program with the number
* of the row we just updated */
(*mainprog_ptr->mainprog_display_row)(row_num);
/* and we're ready for more */
return;
}
static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr)
{
mainprog_info *mainprog_ptr;
/* retrieve the pointer to our special-purpose struct */
mainprog_ptr = png_get_progressive_ptr(png_ptr);
/* let the main program know that it should flush any buffered image
* data to the display now and set a "done" flag or whatever, but note
* that it SHOULD NOT DESTROY THE PNG STRUCTS YET--in other words, do
* NOT call readpng2_cleanup() either here or in the finish_display()
* routine; wait until control returns to the main program via
* readpng2_decode_data() */
(*mainprog_ptr->mainprog_finish_display)();
/* all done */
return;
}
void readpng2_cleanup(mainprog_info *mainprog_ptr)
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
if (png_ptr && info_ptr)
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
mainprog_ptr->png_ptr = NULL;
mainprog_ptr->info_ptr = NULL;
}
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg)
{
mainprog_info *mainprog_ptr;
/* This function, aside from the extra step of retrieving the "error
* pointer" (below) and the fact that it exists within the application
* rather than within libpng, is essentially identical to libpng's
* default error handler. The second point is critical: since both
* setjmp() and longjmp() are called from the same code, they are
* guaranteed to have compatible notions of how big a jmp_buf is,
* regardless of whether _BSD_SOURCE or anything else has (or has not)
* been defined. */
fprintf(stderr, "readpng2 libpng error: %s\n", msg);
fflush(stderr);
mainprog_ptr = png_get_error_ptr(png_ptr);
if (mainprog_ptr == NULL) { /* we are completely hosed now */
fprintf(stderr,
"readpng2 severe error: jmpbuf not recoverable; terminating.\n");
fflush(stderr);
exit(99);
}
/* Now we have our data structure we can use the information in it
* to return control to our own higher level code (all the points
* where 'setjmp' is called in this file.) This will work with other
* error handling mechanisms as well - libpng always calls png_error
* when it can proceed no further, thus, so long as the error handler
* is intercepted, application code can do its own error recovery.
*/
longjmp(mainprog_ptr->jmpbuf, 1);
}

116
contrib/gregbook/readpng2.h Normal file
View File

@@ -0,0 +1,116 @@
/*---------------------------------------------------------------------------
rpng2 - progressive-model PNG display program readpng2.h
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#ifndef TRUE
# define TRUE 1
# define FALSE 0
#endif
#ifndef MAX
# define MAX(a,b) ((a) > (b)? (a) : (b))
# define MIN(a,b) ((a) < (b)? (a) : (b))
#endif
#ifdef DEBUG
# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);}
#else
# define Trace(x) ;
#endif
enum rpng2_states {
kPreInit = 0,
kWindowInit,
kDone
};
typedef unsigned char uch;
typedef unsigned short ush;
typedef unsigned long ulg;
typedef struct _mainprog_info {
double display_exponent;
ulg width;
ulg height;
void *png_ptr;
void *info_ptr;
void (*mainprog_init)(void);
void (*mainprog_display_row)(ulg row_num);
void (*mainprog_finish_display)(void);
uch *image_data;
uch **row_pointers;
jmp_buf jmpbuf;
int passes; /* not used */
int pass;
int rowbytes;
int channels;
int need_bgcolor;
int state;
uch bg_red;
uch bg_green;
uch bg_blue;
} mainprog_info;
/* prototypes for public functions in readpng2.c */
void readpng2_version_info(void);
int readpng2_check_sig(uch *sig, int num);
int readpng2_init(mainprog_info *mainprog_ptr);
int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length);
void readpng2_cleanup(mainprog_info *mainprog_ptr);

179
contrib/gregbook/readppm.c Normal file
View File

@@ -0,0 +1,179 @@
/*---------------------------------------------------------------------------
rpng - simple PNG display program readppm.c
---------------------------------------------------------------------------
This is a special-purpose replacement for readpng.c that allows binary
PPM files to be used in place of PNG images.
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include "readpng.h" /* typedefs, common macros, public prototypes */
ulg width, height;
int bit_depth, color_type, channels;
uch *image_data = NULL;
FILE *saved_infile;
void readpng_version_info()
{
fprintf(stderr, " Compiled without libpng, zlib or PBMPLUS/NetPBM.\n");
}
/* return value = 0 for success, 1 for bad sig, 2 for bad IHDR, 4 for no mem */
int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight)
{
static uch ppmline[256];
int maxval;
saved_infile = infile;
fgets(ppmline, 256, infile);
if (ppmline[0] != 'P' || ppmline[1] != '6') {
fprintf(stderr, "ERROR: not a PPM file\n");
return 1;
}
/* possible color types: P5 = grayscale (0), P6 = RGB (2), P8 = RGBA (6) */
if (ppmline[1] == '6') {
color_type = 2;
channels = 3;
} else if (ppmline[1] == '8') {
color_type = 6;
channels = 4;
} else /* if (ppmline[1] == '5') */ {
color_type = 0;
channels = 1;
}
do {
fgets(ppmline, 256, infile);
} while (ppmline[0] == '#');
sscanf(ppmline, "%lu %lu", &width, &height);
do {
fgets(ppmline, 256, infile);
} while (ppmline[0] == '#');
sscanf(ppmline, "%d", &maxval);
if (maxval != 255) {
fprintf(stderr, "ERROR: maxval = %d\n", maxval);
return 2;
}
bit_depth = 8;
*pWidth = width;
*pHeight = height;
return 0;
}
/* returns 0 if succeeds, 1 if fails due to no bKGD chunk, 2 if libpng error;
* scales values to 8-bit if necessary */
int readpng_get_bgcolor(uch *red, uch *green, uch *blue)
{
return 1;
}
/* display_exponent == LUT_exponent * CRT_exponent */
uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes)
{
ulg rowbytes;
/* expand palette images to RGB, low-bit-depth grayscale images to 8 bits,
* transparency chunks to full alpha channel; strip 16-bit-per-sample
* images to 8 bits per sample; and convert grayscale to RGB[A] */
/* GRR WARNING: grayscale needs to be expanded and channels reset! */
*pRowbytes = rowbytes = channels*width;
*pChannels = channels;
if ((image_data = (uch *)malloc(rowbytes*height)) == NULL) {
return NULL;
}
Trace((stderr, "readpng_get_image: rowbytes = %ld, height = %ld\n", rowbytes, height));
/* now we can go ahead and just read the whole image */
fread(image_data, 1L, rowbytes*height, saved_infile);
return image_data;
}
void readpng_cleanup(int free_image_data)
{
if (free_image_data && image_data) {
free(image_data);
image_data = NULL;
}
}

728
contrib/gregbook/rpng-win.c Normal file
View File

@@ -0,0 +1,728 @@
/*---------------------------------------------------------------------------
rpng - simple PNG display program rpng-win.c
This program decodes and displays PNG images, with gamma correction and
optionally with a user-specified background color (in case the image has
transparency). It is very nearly the most basic PNG viewer possible.
This version is for 32-bit Windows; it may compile under 16-bit Windows
with a little tweaking (or maybe not).
to do:
- handle quoted command-line args (especially filenames with spaces)
- have minimum window width: oh well
- use %.1023s to simplify truncation of title-bar string?
---------------------------------------------------------------------------
Changelog:
- 1.00: initial public release
- 1.01: modified to allow abbreviated options; fixed long/ulong mis-
match; switched to png_jmpbuf() macro
- 1.02: added extra set of parentheses to png_jmpbuf() macro; fixed
command-line parsing bug
- 1.10: enabled "message window"/console (thanks to David Geldreich)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#define PROGNAME "rpng-win"
#define LONGNAME "Simple PNG Viewer for Windows"
#define VERSION "2.01 of 16 March 2008"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#ifdef __CYGWIN__
/* getch replacement. Turns out, we don't really need this,
* but leave it here if we ever enable any of the uses of
* _getch in the main code
*/
#include <unistd.h>
#include <termio.h>
#include <sys/ioctl.h>
int repl_getch( void )
{
char ch;
int fd = fileno(stdin);
struct termio old_tty, new_tty;
ioctl(fd, TCGETA, &old_tty);
new_tty = old_tty;
new_tty.c_lflag &= ~(ICANON | ECHO | ISIG);
ioctl(fd, TCSETA, &new_tty);
fread(&ch, 1, sizeof(ch), stdin);
ioctl(fd, TCSETA, &old_tty);
return ch;
}
#define _getch repl_getch
#else
#include <conio.h> /* only for _getch() */
#endif
/* #define DEBUG : this enables the Trace() macros */
#include "readpng.h" /* typedefs, common macros, readpng prototypes */
/* could just include png.h, but this macro is the only thing we need
* (name and typedefs changed to local versions); note that side effects
* only happen with alpha (which could easily be avoided with
* "ush acopy = (alpha);") */
#define alpha_composite(composite, fg, alpha, bg) { \
ush temp = ((ush)(fg)*(ush)(alpha) + \
(ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \
(composite) = (uch)((temp + (temp >> 8)) >> 8); \
}
/* local prototypes */
static int rpng_win_create_window(HINSTANCE hInst, int showmode);
static int rpng_win_display_image(void);
static void rpng_win_cleanup(void);
LRESULT CALLBACK rpng_win_wndproc(HWND, UINT, WPARAM, LPARAM);
static char titlebar[1024];
static char *progname = PROGNAME;
static char *appname = LONGNAME;
static char *filename;
static FILE *infile;
static char *bgstr;
static uch bg_red=0, bg_green=0, bg_blue=0;
static double display_exponent;
static ulg image_width, image_height, image_rowbytes;
static int image_channels;
static uch *image_data;
/* Windows-specific variables */
static ulg wimage_rowbytes;
static uch *dib;
static uch *wimage_data;
static BITMAPINFOHEADER *bmih;
static HWND global_hwnd;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
{
char *args[1024]; /* arbitrary limit, but should suffice */
char *p, *q, **argv = args;
int argc = 0;
int rc, alen, flen;
int error = 0;
int have_bg = FALSE;
double LUT_exponent; /* just the lookup table */
double CRT_exponent = 2.2; /* just the monitor */
double default_display_exponent; /* whole display system */
MSG msg;
filename = (char *)NULL;
#ifndef __CYGWIN__
/* First reenable console output, which normally goes to the bit bucket
* for windowed apps. Closing the console window will terminate the
* app. Thanks to David.Geldreich@realviz.com for supplying the magical
* incantation. */
AllocConsole();
freopen("CONOUT$", "a", stderr);
freopen("CONOUT$", "a", stdout);
#endif
/* Next set the default value for our display-system exponent, i.e.,
* the product of the CRT exponent and the exponent corresponding to
* the frame-buffer's lookup table (LUT), if any. This is not an
* exhaustive list of LUT values (e.g., OpenStep has a lot of weird
* ones), but it should cover 99% of the current possibilities. And
* yes, these ifdefs are completely wasted in a Windows program... */
#if defined(NeXT)
LUT_exponent = 1.0 / 2.2;
/*
if (some_next_function_that_returns_gamma(&next_gamma))
LUT_exponent = 1.0 / next_gamma;
*/
#elif defined(sgi)
LUT_exponent = 1.0 / 1.7;
/* there doesn't seem to be any documented function to get the
* "gamma" value, so we do it the hard way */
infile = fopen("/etc/config/system.glGammaVal", "r");
if (infile) {
double sgi_gamma;
fgets(tmpline, 80, infile);
fclose(infile);
sgi_gamma = atof(tmpline);
if (sgi_gamma > 0.0)
LUT_exponent = 1.0 / sgi_gamma;
}
#elif defined(Macintosh)
LUT_exponent = 1.8 / 2.61;
/*
if (some_mac_function_that_returns_gamma(&mac_gamma))
LUT_exponent = mac_gamma / 2.61;
*/
#else
LUT_exponent = 1.0; /* assume no LUT: most PCs */
#endif
/* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */
default_display_exponent = LUT_exponent * CRT_exponent;
/* If the user has set the SCREEN_GAMMA environment variable as suggested
* (somewhat imprecisely) in the libpng documentation, use that; otherwise
* use the default value we just calculated. Either way, the user may
* override this via a command-line option. */
if ((p = getenv("SCREEN_GAMMA")) != NULL)
display_exponent = atof(p);
else
display_exponent = default_display_exponent;
/* Windows really hates command lines, so we have to set up our own argv.
* Note that we do NOT bother with quoted arguments here, so don't use
* filenames with spaces in 'em! */
argv[argc++] = PROGNAME;
p = cmd;
for (;;) {
if (*p == ' ')
while (*++p == ' ')
;
/* now p points at the first non-space after some spaces */
if (*p == '\0')
break; /* nothing after the spaces: done */
argv[argc++] = q = p;
while (*q && *q != ' ')
++q;
/* now q points at a space or the end of the string */
if (*q == '\0')
break; /* last argv already terminated; quit */
*q = '\0'; /* change space to terminator */
p = q + 1;
}
argv[argc] = NULL; /* terminate the argv array itself */
/* Now parse the command line for options and the PNG filename. */
while (*++argv && !error) {
if (!strncmp(*argv, "-gamma", 2)) {
if (!*++argv)
++error;
else {
display_exponent = atof(*argv);
if (display_exponent <= 0.0)
++error;
}
} else if (!strncmp(*argv, "-bgcolor", 2)) {
if (!*++argv)
++error;
else {
bgstr = *argv;
if (strlen(bgstr) != 7 || bgstr[0] != '#')
++error;
else
have_bg = TRUE;
}
} else {
if (**argv != '-') {
filename = *argv;
if (argv[1]) /* shouldn't be any more args after filename */
++error;
} else
++error; /* not expecting any other options */
}
}
if (!filename)
++error;
/* print usage screen if any errors up to this point */
if (error) {
#ifndef __CYGWIN__
int ch;
#endif
fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-gamma exp] [-bgcolor bg] file.png\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 after image is displayed to quit.\n"
#ifndef __CYGWIN__
"Press Q or Esc to quit this usage screen.\n"
#endif
"\n", PROGNAME, default_display_exponent);
#ifndef __CYGWIN__
do
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
#endif
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) {
switch (rc) {
case 1:
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
break;
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng_init() error\n");
break;
}
++error;
}
if (error)
fclose(infile);
}
if (error) {
#ifndef __CYGWIN__
int ch;
#endif
fprintf(stderr, PROGNAME ": aborting.\n");
#ifndef __CYGWIN__
do
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
#endif
exit(2);
} else {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
#ifndef __CYGWIN__
fprintf(stderr,
"\n [console window: closing this window will terminate %s]\n\n",
PROGNAME);
#endif
}
/* set the title-bar string, but make sure buffer doesn't overflow */
alen = strlen(appname);
flen = strlen(filename);
if (alen + flen + 3 > 1023)
sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023));
else
sprintf(titlebar, "%s: %s", appname, filename);
/* if the user didn't specify a background color on the command line,
* check for one in the PNG file--if not, the initialized values of 0
* (black) will be used */
if (have_bg) {
unsigned r, g, b; /* this approach quiets compiler warnings */
sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b);
bg_red = (uch)r;
bg_green = (uch)g;
bg_blue = (uch)b;
} else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) {
readpng_cleanup(TRUE);
fprintf(stderr, PROGNAME
": libpng error while checking for background color\n");
exit(2);
}
/* do the basic Windows initialization stuff, make the window and fill it
* with the background color */
if (rpng_win_create_window(hInst, showmode))
exit(2);
/* decode the image, all at once */
Trace((stderr, "calling readpng_get_image()\n"))
image_data = readpng_get_image(display_exponent, &image_channels,
&image_rowbytes);
Trace((stderr, "done with readpng_get_image()\n"))
/* done with PNG file, so clean up to minimize memory usage (but do NOT
* nuke image_data!) */
readpng_cleanup(FALSE);
fclose(infile);
if (!image_data) {
fprintf(stderr, PROGNAME ": unable to decode PNG image\n");
exit(3);
}
/* display image (composite with background if requested) */
Trace((stderr, "calling rpng_win_display_image()\n"))
if (rpng_win_display_image()) {
free(image_data);
exit(4);
}
Trace((stderr, "done with rpng_win_display_image()\n"))
/* wait for the user to tell us when to quit */
printf(
#ifndef __CYGWIN__
"Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n"
#else
"Done. Press mouse button 1 (within image window) to quit.\n"
#endif
);
fflush(stdout);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
/* OK, we're done: clean up all image and Windows resources and go away */
rpng_win_cleanup();
return msg.wParam;
}
static int rpng_win_create_window(HINSTANCE hInst, int showmode)
{
uch *dest;
int extra_width, extra_height;
ulg i, j;
WNDCLASSEX wndclass;
/*---------------------------------------------------------------------------
Allocate memory for the display-specific version of the image (round up
to multiple of 4 for Windows DIB).
---------------------------------------------------------------------------*/
wimage_rowbytes = ((3*image_width + 3L) >> 2) << 2;
if (!(dib = (uch *)malloc(sizeof(BITMAPINFOHEADER) +
wimage_rowbytes*image_height)))
{
return 4; /* fail */
}
/*---------------------------------------------------------------------------
Initialize the DIB. Negative height means to use top-down BMP ordering
(must be uncompressed, but that's what we want). Bit count of 1, 4 or 8
implies a colormap of RGBX quads, but 24-bit BMPs just use B,G,R values
directly => wimage_data begins immediately after BMP header.
---------------------------------------------------------------------------*/
memset(dib, 0, sizeof(BITMAPINFOHEADER));
bmih = (BITMAPINFOHEADER *)dib;
bmih->biSize = sizeof(BITMAPINFOHEADER);
bmih->biWidth = image_width;
bmih->biHeight = -((long)image_height);
bmih->biPlanes = 1;
bmih->biBitCount = 24;
bmih->biCompression = 0;
wimage_data = dib + sizeof(BITMAPINFOHEADER);
/*---------------------------------------------------------------------------
Fill in background color (black by default); data are in BGR order.
---------------------------------------------------------------------------*/
for (j = 0; j < image_height; ++j) {
dest = wimage_data + j*wimage_rowbytes;
for (i = image_width; i > 0; --i) {
*dest++ = bg_blue;
*dest++ = bg_green;
*dest++ = bg_red;
}
}
/*---------------------------------------------------------------------------
Set the window parameters.
---------------------------------------------------------------------------*/
memset(&wndclass, 0, sizeof(wndclass));
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = rpng_win_wndproc;
wndclass.hInstance = hInst;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = progname;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wndclass);
/*---------------------------------------------------------------------------
Finally, create the window.
---------------------------------------------------------------------------*/
extra_width = 2*(GetSystemMetrics(SM_CXBORDER) +
GetSystemMetrics(SM_CXDLGFRAME));
extra_height = 2*(GetSystemMetrics(SM_CYBORDER) +
GetSystemMetrics(SM_CYDLGFRAME)) +
GetSystemMetrics(SM_CYCAPTION);
global_hwnd = CreateWindow(progname, titlebar, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, image_width+extra_width,
image_height+extra_height, NULL, NULL, hInst, NULL);
ShowWindow(global_hwnd, showmode);
UpdateWindow(global_hwnd);
return 0;
} /* end function rpng_win_create_window() */
static int rpng_win_display_image()
{
uch *src, *dest;
uch r, g, b, a;
ulg i, row, lastrow;
RECT rect;
Trace((stderr, "beginning display loop (image_channels == %d)\n",
image_channels))
Trace((stderr, "(width = %ld, rowbytes = %ld, wimage_rowbytes = %d)\n",
image_width, image_rowbytes, wimage_rowbytes))
/*---------------------------------------------------------------------------
Blast image data to buffer. This whole routine takes place before the
message loop begins, so there's no real point in any pseudo-progressive
display...
---------------------------------------------------------------------------*/
for (lastrow = row = 0; row < image_height; ++row) {
src = image_data + row*image_rowbytes;
dest = wimage_data + row*wimage_rowbytes;
if (image_channels == 3) {
for (i = image_width; i > 0; --i) {
r = *src++;
g = *src++;
b = *src++;
*dest++ = b;
*dest++ = g; /* note reverse order */
*dest++ = r;
}
} else /* if (image_channels == 4) */ {
for (i = image_width; i > 0; --i) {
r = *src++;
g = *src++;
b = *src++;
a = *src++;
if (a == 255) {
*dest++ = b;
*dest++ = g;
*dest++ = r;
} else if (a == 0) {
*dest++ = bg_blue;
*dest++ = bg_green;
*dest++ = bg_red;
} else {
/* this macro (copied from png.h) composites the
* foreground and background values and puts the
* result into the first argument; there are no
* side effects with the first argument */
alpha_composite(*dest++, b, a, bg_blue);
alpha_composite(*dest++, g, a, bg_green);
alpha_composite(*dest++, r, a, bg_red);
}
}
}
/* display after every 16 lines */
if (((row+1) & 0xf) == 0) {
rect.left = 0L;
rect.top = (LONG)lastrow;
rect.right = (LONG)image_width; /* possibly off by one? */
rect.bottom = (LONG)lastrow + 16L; /* possibly off by one? */
InvalidateRect(global_hwnd, &rect, FALSE);
UpdateWindow(global_hwnd); /* similar to XFlush() */
lastrow = row + 1;
}
}
Trace((stderr, "calling final image-flush routine\n"))
if (lastrow < image_height) {
rect.left = 0L;
rect.top = (LONG)lastrow;
rect.right = (LONG)image_width; /* possibly off by one? */
rect.bottom = (LONG)image_height; /* possibly off by one? */
InvalidateRect(global_hwnd, &rect, FALSE);
UpdateWindow(global_hwnd); /* similar to XFlush() */
}
/*
last param determines whether or not background is wiped before paint
InvalidateRect(global_hwnd, NULL, TRUE);
UpdateWindow(global_hwnd);
*/
return 0;
}
static void rpng_win_cleanup()
{
if (image_data) {
free(image_data);
image_data = NULL;
}
if (dib) {
free(dib);
dib = NULL;
}
}
LRESULT CALLBACK rpng_win_wndproc(HWND hwnd, UINT iMsg, WPARAM wP, LPARAM lP)
{
HDC hdc;
PAINTSTRUCT ps;
int rc;
switch (iMsg) {
case WM_CREATE:
/* one-time processing here, if any */
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
/* dest */
rc = StretchDIBits(hdc, 0, 0, image_width, image_height,
/* source */
0, 0, image_width, image_height,
wimage_data, (BITMAPINFO *)bmih,
/* iUsage: no clue */
0, SRCCOPY);
EndPaint(hwnd, &ps);
return 0;
/* wait for the user to tell us when to quit */
case WM_CHAR:
switch (wP) { /* only need one, so ignore repeat count */
case 'q':
case 'Q':
case 0x1B: /* Esc key */
PostQuitMessage(0);
}
return 0;
case WM_LBUTTONDOWN: /* another way of quitting */
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wP, lP);
}

904
contrib/gregbook/rpng-x.c Normal file
View File

@@ -0,0 +1,904 @@
/*---------------------------------------------------------------------------
rpng - simple PNG display program rpng-x.c
This program decodes and displays PNG images, with gamma correction and
optionally with a user-specified background color (in case the image has
transparency). It is very nearly the most basic PNG viewer possible.
This version is for the X Window System (tested by author under Unix and
by Martin Zinser under OpenVMS; may work under OS/2 with some tweaking).
to do:
- 8-bit (colormapped) X support
- use %.1023s to simplify truncation of title-bar string?
---------------------------------------------------------------------------
Changelog:
- 1.01: initial public release
- 1.02: modified to allow abbreviated options; fixed long/ulong mis-
match; switched to png_jmpbuf() macro
- 1.10: added support for non-default visuals; fixed X pixel-conversion
- 1.11: added extra set of parentheses to png_jmpbuf() macro; fixed
command-line parsing bug
- 1.12: fixed some small X memory leaks (thanks to Fran<61>ois Petitjean)
- 1.13: fixed XFreeGC() crash bug (thanks to Patrick Welche)
- 1.14: added support for X resources (thanks to Gerhard Niklasch)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#define PROGNAME "rpng-x"
#define LONGNAME "Simple PNG Viewer for X"
#define VERSION "2.01 of 16 March 2008"
#define RESNAME "rpng" /* our X resource application name */
#define RESCLASS "Rpng" /* our X resource class name */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/keysym.h>
/* #define DEBUG : this enables the Trace() macros */
#include "readpng.h" /* typedefs, common macros, readpng prototypes */
/* could just include png.h, but this macro is the only thing we need
* (name and typedefs changed to local versions); note that side effects
* only happen with alpha (which could easily be avoided with
* "ush acopy = (alpha);") */
#define alpha_composite(composite, fg, alpha, bg) { \
ush temp = ((ush)(fg)*(ush)(alpha) + \
(ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \
(composite) = (uch)((temp + (temp >> 8)) >> 8); \
}
/* local prototypes */
static int rpng_x_create_window(void);
static int rpng_x_display_image(void);
static void rpng_x_cleanup(void);
static int rpng_x_msb(ulg u32val);
static char titlebar[1024], *window_name = titlebar;
static char *appname = LONGNAME;
static char *icon_name = PROGNAME;
static char *res_name = RESNAME;
static char *res_class = RESCLASS;
static char *filename;
static FILE *infile;
static char *bgstr;
static uch bg_red=0, bg_green=0, bg_blue=0;
static double display_exponent;
static ulg image_width, image_height, image_rowbytes;
static int image_channels;
static uch *image_data;
/* X-specific variables */
static char *displayname;
static XImage *ximage;
static Display *display;
static int depth;
static Visual *visual;
static XVisualInfo *visual_list;
static int RShift, GShift, BShift;
static ulg RMask, GMask, BMask;
static Window window;
static GC gc;
static Colormap colormap;
static int have_nondefault_visual = FALSE;
static int have_colormap = FALSE;
static int have_window = FALSE;
static int have_gc = FALSE;
/*
ulg numcolors=0, pixels[256];
ush reds[256], greens[256], blues[256];
*/
int main(int argc, char **argv)
{
#ifdef sgi
char tmpline[80];
#endif
char *p;
int rc, alen, flen;
int error = 0;
int have_bg = FALSE;
double LUT_exponent; /* just the lookup table */
double CRT_exponent = 2.2; /* just the monitor */
double default_display_exponent; /* whole display system */
XEvent e;
KeySym k;
displayname = (char *)NULL;
filename = (char *)NULL;
/* First set the default value for our display-system exponent, i.e.,
* the product of the CRT exponent and the exponent corresponding to
* the frame-buffer's lookup table (LUT), if any. This is not an
* exhaustive list of LUT values (e.g., OpenStep has a lot of weird
* ones), but it should cover 99% of the current possibilities. */
#if defined(NeXT)
LUT_exponent = 1.0 / 2.2;
/*
if (some_next_function_that_returns_gamma(&next_gamma))
LUT_exponent = 1.0 / next_gamma;
*/
#elif defined(sgi)
LUT_exponent = 1.0 / 1.7;
/* there doesn't seem to be any documented function to get the
* "gamma" value, so we do it the hard way */
infile = fopen("/etc/config/system.glGammaVal", "r");
if (infile) {
double sgi_gamma;
fgets(tmpline, 80, infile);
fclose(infile);
sgi_gamma = atof(tmpline);
if (sgi_gamma > 0.0)
LUT_exponent = 1.0 / sgi_gamma;
}
#elif defined(Macintosh)
LUT_exponent = 1.8 / 2.61;
/*
if (some_mac_function_that_returns_gamma(&mac_gamma))
LUT_exponent = mac_gamma / 2.61;
*/
#else
LUT_exponent = 1.0; /* assume no LUT: most PCs */
#endif
/* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */
default_display_exponent = LUT_exponent * CRT_exponent;
/* If the user has set the SCREEN_GAMMA environment variable as suggested
* (somewhat imprecisely) in the libpng documentation, use that; otherwise
* use the default value we just calculated. Either way, the user may
* override this via a command-line option. */
if ((p = getenv("SCREEN_GAMMA")) != NULL)
display_exponent = atof(p);
else
display_exponent = default_display_exponent;
/* Now parse the command line for options and the PNG filename. */
while (*++argv && !error) {
if (!strncmp(*argv, "-display", 2)) {
if (!*++argv)
++error;
else
displayname = *argv;
} else if (!strncmp(*argv, "-gamma", 2)) {
if (!*++argv)
++error;
else {
display_exponent = atof(*argv);
if (display_exponent <= 0.0)
++error;
}
} else if (!strncmp(*argv, "-bgcolor", 2)) {
if (!*++argv)
++error;
else {
bgstr = *argv;
if (strlen(bgstr) != 7 || bgstr[0] != '#')
++error;
else
have_bg = TRUE;
}
} else {
if (**argv != '-') {
filename = *argv;
if (argv[1]) /* shouldn't be any more args after filename */
++error;
} else
++error; /* not expecting any other options */
}
}
if (!filename)
++error;
/* print usage screen if any errors up to this point */
if (error) {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME, default_display_exponent);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) {
switch (rc) {
case 1:
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
break;
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng_init() error\n");
break;
}
++error;
} else {
display = XOpenDisplay(displayname);
if (!display) {
readpng_cleanup(TRUE);
fprintf(stderr, PROGNAME ": can't open X display [%s]\n",
displayname? displayname : "default");
++error;
}
}
if (error)
fclose(infile);
}
if (error) {
fprintf(stderr, PROGNAME ": aborting.\n");
exit(2);
}
/* set the title-bar string, but make sure buffer doesn't overflow */
alen = strlen(appname);
flen = strlen(filename);
if (alen + flen + 3 > 1023)
sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023));
else
sprintf(titlebar, "%s: %s", appname, filename);
/* if the user didn't specify a background color on the command line,
* check for one in the PNG file--if not, the initialized values of 0
* (black) will be used */
if (have_bg) {
unsigned r, g, b; /* this approach quiets compiler warnings */
sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b);
bg_red = (uch)r;
bg_green = (uch)g;
bg_blue = (uch)b;
} else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) {
readpng_cleanup(TRUE);
fprintf(stderr, PROGNAME
": libpng error while checking for background color\n");
exit(2);
}
/* do the basic X initialization stuff, make the window and fill it
* with the background color */
if (rpng_x_create_window())
exit(2);
/* decode the image, all at once */
Trace((stderr, "calling readpng_get_image()\n"))
image_data = readpng_get_image(display_exponent, &image_channels,
&image_rowbytes);
Trace((stderr, "done with readpng_get_image()\n"))
/* done with PNG file, so clean up to minimize memory usage (but do NOT
* nuke image_data!) */
readpng_cleanup(FALSE);
fclose(infile);
if (!image_data) {
fprintf(stderr, PROGNAME ": unable to decode PNG image\n");
exit(3);
}
/* display image (composite with background if requested) */
Trace((stderr, "calling rpng_x_display_image()\n"))
if (rpng_x_display_image()) {
free(image_data);
exit(4);
}
Trace((stderr, "done with rpng_x_display_image()\n"))
/* wait for the user to tell us when to quit */
printf(
"Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n");
fflush(stdout);
do
XNextEvent(display, &e);
while (!(e.type == ButtonPress && e.xbutton.button == Button1) &&
!(e.type == KeyPress && /* v--- or 1 for shifted keys */
((k = XLookupKeysym(&e.xkey, 0)) == XK_q || k == XK_Escape) ));
/* OK, we're done: clean up all image and X resources and go away */
rpng_x_cleanup();
return 0;
}
static int rpng_x_create_window(void)
{
uch *xdata;
int need_colormap = FALSE;
int screen, pad;
ulg bg_pixel = 0L;
ulg attrmask;
Window root;
XEvent e;
XGCValues gcvalues;
XSetWindowAttributes attr;
XTextProperty windowName, *pWindowName = &windowName;
XTextProperty iconName, *pIconName = &iconName;
XVisualInfo visual_info;
XSizeHints *size_hints;
XWMHints *wm_hints;
XClassHint *class_hints;
screen = DefaultScreen(display);
depth = DisplayPlanes(display, screen);
root = RootWindow(display, screen);
#ifdef DEBUG
XSynchronize(display, True);
#endif
#if 0
/* GRR: add 8-bit support */
if (/* depth != 8 && */ depth != 16 && depth != 24 && depth != 32) {
fprintf(stderr,
"screen depth %d not supported (only 16-, 24- or 32-bit TrueColor)\n",
depth);
return 2;
}
XMatchVisualInfo(display, screen, depth,
(depth == 8)? PseudoColor : TrueColor, &visual_info);
visual = visual_info.visual;
#else
if (depth != 16 && depth != 24 && depth != 32) {
int visuals_matched = 0;
Trace((stderr, "default depth is %d: checking other visuals\n",
depth))
/* 24-bit first */
visual_info.screen = screen;
visual_info.depth = 24;
visual_list = XGetVisualInfo(display,
VisualScreenMask | VisualDepthMask, &visual_info, &visuals_matched);
if (visuals_matched == 0) {
/* GRR: add 15-, 16- and 32-bit TrueColor visuals (also DirectColor?) */
fprintf(stderr, "default screen depth %d not supported, and no"
" 24-bit visuals found\n", depth);
return 2;
}
Trace((stderr, "XGetVisualInfo() returned %d 24-bit visuals\n",
visuals_matched))
visual = visual_list[0].visual;
depth = visual_list[0].depth;
/*
colormap_size = visual_list[0].colormap_size;
visual_class = visual->class;
visualID = XVisualIDFromVisual(visual);
*/
have_nondefault_visual = TRUE;
need_colormap = TRUE;
} else {
XMatchVisualInfo(display, screen, depth, TrueColor, &visual_info);
visual = visual_info.visual;
}
#endif
RMask = visual->red_mask;
GMask = visual->green_mask;
BMask = visual->blue_mask;
/* GRR: add/check 8-bit support */
if (depth == 8 || need_colormap) {
colormap = XCreateColormap(display, root, visual, AllocNone);
if (!colormap) {
fprintf(stderr, "XCreateColormap() failed\n");
return 2;
}
have_colormap = TRUE;
}
if (depth == 15 || depth == 16) {
RShift = 15 - rpng_x_msb(RMask); /* these are right-shifts */
GShift = 15 - rpng_x_msb(GMask);
BShift = 15 - rpng_x_msb(BMask);
} else if (depth > 16) {
#define NO_24BIT_MASKS
#ifdef NO_24BIT_MASKS
RShift = rpng_x_msb(RMask) - 7; /* these are left-shifts */
GShift = rpng_x_msb(GMask) - 7;
BShift = rpng_x_msb(BMask) - 7;
#else
RShift = 7 - rpng_x_msb(RMask); /* these are right-shifts, too */
GShift = 7 - rpng_x_msb(GMask);
BShift = 7 - rpng_x_msb(BMask);
#endif
}
if (depth >= 15 && (RShift < 0 || GShift < 0 || BShift < 0)) {
fprintf(stderr, "rpng internal logic error: negative X shift(s)!\n");
return 2;
}
/*---------------------------------------------------------------------------
Finally, create the window.
---------------------------------------------------------------------------*/
attr.backing_store = Always;
attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask;
attrmask = CWBackingStore | CWEventMask;
if (have_nondefault_visual) {
attr.colormap = colormap;
attr.background_pixel = 0;
attr.border_pixel = 1;
attrmask |= CWColormap | CWBackPixel | CWBorderPixel;
}
window = XCreateWindow(display, root, 0, 0, image_width, image_height, 0,
depth, InputOutput, visual, attrmask, &attr);
if (window == None) {
fprintf(stderr, "XCreateWindow() failed\n");
return 2;
} else
have_window = TRUE;
if (depth == 8)
XSetWindowColormap(display, window, colormap);
if (!XStringListToTextProperty(&window_name, 1, pWindowName))
pWindowName = NULL;
if (!XStringListToTextProperty(&icon_name, 1, pIconName))
pIconName = NULL;
/* OK if any hints allocation fails; XSetWMProperties() allows NULLs */
if ((size_hints = XAllocSizeHints()) != NULL) {
/* window will not be resizable */
size_hints->flags = PMinSize | PMaxSize;
size_hints->min_width = size_hints->max_width = (int)image_width;
size_hints->min_height = size_hints->max_height = (int)image_height;
}
if ((wm_hints = XAllocWMHints()) != NULL) {
wm_hints->initial_state = NormalState;
wm_hints->input = True;
/* wm_hints->icon_pixmap = icon_pixmap; */
wm_hints->flags = StateHint | InputHint /* | IconPixmapHint */ ;
}
if ((class_hints = XAllocClassHint()) != NULL) {
class_hints->res_name = res_name;
class_hints->res_class = res_class;
}
XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0,
size_hints, wm_hints, class_hints);
/* various properties and hints no longer needed; free memory */
if (pWindowName)
XFree(pWindowName->value);
if (pIconName)
XFree(pIconName->value);
if (size_hints)
XFree(size_hints);
if (wm_hints)
XFree(wm_hints);
if (class_hints)
XFree(class_hints);
XMapWindow(display, window);
gc = XCreateGC(display, window, 0, &gcvalues);
have_gc = TRUE;
/*---------------------------------------------------------------------------
Fill window with the specified background color.
---------------------------------------------------------------------------*/
if (depth == 24 || depth == 32) {
bg_pixel = ((ulg)bg_red << RShift) |
((ulg)bg_green << GShift) |
((ulg)bg_blue << BShift);
} else if (depth == 16) {
bg_pixel = ((((ulg)bg_red << 8) >> RShift) & RMask) |
((((ulg)bg_green << 8) >> GShift) & GMask) |
((((ulg)bg_blue << 8) >> BShift) & BMask);
} else /* depth == 8 */ {
/* GRR: add 8-bit support */
}
XSetForeground(display, gc, bg_pixel);
XFillRectangle(display, window, gc, 0, 0, image_width, image_height);
/*---------------------------------------------------------------------------
Wait for first Expose event to do any drawing, then flush.
---------------------------------------------------------------------------*/
do
XNextEvent(display, &e);
while (e.type != Expose || e.xexpose.count);
XFlush(display);
/*---------------------------------------------------------------------------
Allocate memory for the X- and display-specific version of the image.
---------------------------------------------------------------------------*/
if (depth == 24 || depth == 32) {
xdata = (uch *)malloc(4*image_width*image_height);
pad = 32;
} else if (depth == 16) {
xdata = (uch *)malloc(2*image_width*image_height);
pad = 16;
} else /* depth == 8 */ {
xdata = (uch *)malloc(image_width*image_height);
pad = 8;
}
if (!xdata) {
fprintf(stderr, PROGNAME ": unable to allocate image memory\n");
return 4;
}
ximage = XCreateImage(display, visual, depth, ZPixmap, 0,
(char *)xdata, image_width, image_height, pad, 0);
if (!ximage) {
fprintf(stderr, PROGNAME ": XCreateImage() failed\n");
free(xdata);
return 3;
}
/* to avoid testing the byte order every pixel (or doubling the size of
* the drawing routine with a giant if-test), we arbitrarily set the byte
* order to MSBFirst and let Xlib worry about inverting things on little-
* endian machines (like Linux/x86, old VAXen, etc.)--this is not the most
* efficient approach (the giant if-test would be better), but in the
* interest of clarity, we take the easy way out... */
ximage->byte_order = MSBFirst;
return 0;
} /* end function rpng_x_create_window() */
static int rpng_x_display_image(void)
{
uch *src;
char *dest;
uch r, g, b, a;
ulg i, row, lastrow = 0;
ulg pixel;
int ximage_rowbytes = ximage->bytes_per_line;
/* int bpp = ximage->bits_per_pixel; */
Trace((stderr, "beginning display loop (image_channels == %d)\n",
image_channels))
Trace((stderr, " (width = %ld, rowbytes = %ld, ximage_rowbytes = %d)\n",
image_width, image_rowbytes, ximage_rowbytes))
Trace((stderr, " (bpp = %d)\n", ximage->bits_per_pixel))
Trace((stderr, " (byte_order = %s)\n", ximage->byte_order == MSBFirst?
"MSBFirst" : (ximage->byte_order == LSBFirst? "LSBFirst" : "unknown")))
if (depth == 24 || depth == 32) {
ulg red, green, blue;
for (lastrow = row = 0; row < image_height; ++row) {
src = image_data + row*image_rowbytes;
dest = ximage->data + row*ximage_rowbytes;
if (image_channels == 3) {
for (i = image_width; i > 0; --i) {
red = *src++;
green = *src++;
blue = *src++;
#ifdef NO_24BIT_MASKS
pixel = (red << RShift) |
(green << GShift) |
(blue << BShift);
/* recall that we set ximage->byte_order = MSBFirst above */
/* GRR BUG: this assumes bpp == 32, but may be 24: */
*dest++ = (char)((pixel >> 24) & 0xff);
*dest++ = (char)((pixel >> 16) & 0xff);
*dest++ = (char)((pixel >> 8) & 0xff);
*dest++ = (char)( pixel & 0xff);
#else
red = (RShift < 0)? red << (-RShift) : red >> RShift;
green = (GShift < 0)? green << (-GShift) : green >> GShift;
blue = (BShift < 0)? blue << (-BShift) : blue >> BShift;
pixel = (red & RMask) | (green & GMask) | (blue & BMask);
/* recall that we set ximage->byte_order = MSBFirst above */
*dest++ = (char)((pixel >> 24) & 0xff);
*dest++ = (char)((pixel >> 16) & 0xff);
*dest++ = (char)((pixel >> 8) & 0xff);
*dest++ = (char)( pixel & 0xff);
#endif
}
} else /* if (image_channels == 4) */ {
for (i = image_width; i > 0; --i) {
r = *src++;
g = *src++;
b = *src++;
a = *src++;
if (a == 255) {
red = r;
green = g;
blue = b;
} else if (a == 0) {
red = bg_red;
green = bg_green;
blue = bg_blue;
} else {
/* this macro (from png.h) composites the foreground
* and background values and puts the result into the
* first argument */
alpha_composite(red, r, a, bg_red);
alpha_composite(green, g, a, bg_green);
alpha_composite(blue, b, a, bg_blue);
}
pixel = (red << RShift) |
(green << GShift) |
(blue << BShift);
/* recall that we set ximage->byte_order = MSBFirst above */
*dest++ = (char)((pixel >> 24) & 0xff);
*dest++ = (char)((pixel >> 16) & 0xff);
*dest++ = (char)((pixel >> 8) & 0xff);
*dest++ = (char)( pixel & 0xff);
}
}
/* display after every 16 lines */
if (((row+1) & 0xf) == 0) {
XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0,
(int)lastrow, image_width, 16);
XFlush(display);
lastrow = row + 1;
}
}
} else if (depth == 16) {
ush red, green, blue;
for (lastrow = row = 0; row < image_height; ++row) {
src = image_data + row*image_rowbytes;
dest = ximage->data + row*ximage_rowbytes;
if (image_channels == 3) {
for (i = image_width; i > 0; --i) {
red = ((ush)(*src) << 8);
++src;
green = ((ush)(*src) << 8);
++src;
blue = ((ush)(*src) << 8);
++src;
pixel = ((red >> RShift) & RMask) |
((green >> GShift) & GMask) |
((blue >> BShift) & BMask);
/* recall that we set ximage->byte_order = MSBFirst above */
*dest++ = (char)((pixel >> 8) & 0xff);
*dest++ = (char)( pixel & 0xff);
}
} else /* if (image_channels == 4) */ {
for (i = image_width; i > 0; --i) {
r = *src++;
g = *src++;
b = *src++;
a = *src++;
if (a == 255) {
red = ((ush)r << 8);
green = ((ush)g << 8);
blue = ((ush)b << 8);
} else if (a == 0) {
red = ((ush)bg_red << 8);
green = ((ush)bg_green << 8);
blue = ((ush)bg_blue << 8);
} else {
/* this macro (from png.h) composites the foreground
* and background values and puts the result back into
* the first argument (== fg byte here: safe) */
alpha_composite(r, r, a, bg_red);
alpha_composite(g, g, a, bg_green);
alpha_composite(b, b, a, bg_blue);
red = ((ush)r << 8);
green = ((ush)g << 8);
blue = ((ush)b << 8);
}
pixel = ((red >> RShift) & RMask) |
((green >> GShift) & GMask) |
((blue >> BShift) & BMask);
/* recall that we set ximage->byte_order = MSBFirst above */
*dest++ = (char)((pixel >> 8) & 0xff);
*dest++ = (char)( pixel & 0xff);
}
}
/* display after every 16 lines */
if (((row+1) & 0xf) == 0) {
XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0,
(int)lastrow, image_width, 16);
XFlush(display);
lastrow = row + 1;
}
}
} else /* depth == 8 */ {
/* GRR: add 8-bit support */
}
Trace((stderr, "calling final XPutImage()\n"))
if (lastrow < image_height) {
XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0,
(int)lastrow, image_width, image_height-lastrow);
XFlush(display);
}
return 0;
}
static void rpng_x_cleanup(void)
{
if (image_data) {
free(image_data);
image_data = NULL;
}
if (ximage) {
if (ximage->data) {
free(ximage->data); /* we allocated it, so we free it */
ximage->data = (char *)NULL; /* instead of XDestroyImage() */
}
XDestroyImage(ximage);
ximage = NULL;
}
if (have_gc)
XFreeGC(display, gc);
if (have_window)
XDestroyWindow(display, window);
if (have_colormap)
XFreeColormap(display, colormap);
if (have_nondefault_visual)
XFree(visual_list);
}
static int rpng_x_msb(ulg u32val)
{
int i;
for (i = 31; i >= 0; --i) {
if (u32val & 0x80000000L)
break;
u32val <<= 1;
}
return i;
}

1253
contrib/gregbook/rpng2-win.c Normal file

File diff suppressed because it is too large Load Diff

2107
contrib/gregbook/rpng2-x.c Normal file

File diff suppressed because it is too large Load Diff

BIN
contrib/gregbook/toucan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

853
contrib/gregbook/wpng.c Normal file
View File

@@ -0,0 +1,853 @@
/*---------------------------------------------------------------------------
wpng - simple PNG-writing program wpng.c
This program converts certain NetPBM binary files (grayscale and RGB,
maxval = 255) to PNG. Non-interlaced PNGs are written progressively;
interlaced PNGs are read and written in one memory-intensive blast.
Thanks to Jean-loup Gailly for providing the necessary trick to read
interactive text from the keyboard while stdin is redirected. Thanks
to Cosmin Truta for Cygwin fixes.
NOTE: includes provisional support for PNM type "8" (portable alphamap)
images, presumed to be a 32-bit interleaved RGBA format; no pro-
vision for possible interleaved grayscale+alpha (16-bit) format.
THIS IS UNLIKELY TO BECOME AN OFFICIAL NETPBM ALPHA FORMAT!
to do:
- delete output file if quit before calling any writepng routines
- process backspace with -text option under DOS/Win? (currently get ^H)
---------------------------------------------------------------------------
Changelog:
- 1.01: initial public release
- 1.02: modified to allow abbreviated options
- 1.03: removed extraneous character from usage screen; fixed bug in
command-line parsing
- 1.04: fixed DOS/OS2/Win32 detection, including partial Cygwin fix
(see http://home.att.net/~perlspinr/diffs/GregBook_cygwin.diff)
- 2.00: dual-licensed (added GNU GPL)
[REPORTED BUG (win32 only): "contrib/gregbook/wpng.c - cmd line
dose not work! In order to do something useful I needed to redirect
both input and output, with cygwin and with bcc32 as well. Under
Linux, the same wpng appears to work fine. I don't know what is
the problem."]
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#define PROGNAME "wpng"
#define VERSION "2.00 of 2 June 2007"
#define APPNAME "Simple PGM/PPM/PAM to PNG Converter"
#if defined(__MSDOS__) || defined(__OS2__)
# define DOS_OS2_W32
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# ifndef __GNUC__ /* treat Win32 native ports of gcc as Unix environments */
# define DOS_OS2_W32
# endif
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <setjmp.h> /* for jmpbuf declaration in writepng.h */
#include <time.h>
#ifdef DOS_OS2_W32
# include <io.h> /* for isatty(), setmode() prototypes */
# include <fcntl.h> /* O_BINARY for fdopen() without text translation */
# ifdef __EMX__
# ifndef getch
# define getch() _read_kbd(0, 1, 0) /* need getche() */
# endif
# else /* !__EMX__ */
# ifdef __GO32__
# include <pc.h>
# define getch() getkey() /* GRR: need getche() */
# else
# include <conio.h> /* for getche() console input */
# endif
# endif /* ?__EMX__ */
# define FGETS(buf,len,stream) dos_kbd_gets(buf,len)
#else
# include <unistd.h> /* for isatty() prototype */
# define FGETS fgets
#endif
/* #define DEBUG : this enables the Trace() macros */
/* #define FORBID_LATIN1_CTRL : this requires the user to re-enter any
text that includes control characters discouraged by the PNG spec; text
that includes an escape character (27) must be re-entered regardless */
#include "writepng.h" /* typedefs, common macros, writepng prototypes */
/* local prototypes */
static int wpng_isvalid_latin1(uch *p, int len);
static void wpng_cleanup(void);
#ifdef DOS_OS2_W32
static char *dos_kbd_gets(char *buf, int len);
#endif
static mainprog_info wpng_info; /* lone global */
int main(int argc, char **argv)
{
#ifndef DOS_OS2_W32
FILE *keybd;
#endif
#ifdef sgi
FILE *tmpfile; /* or we could just use keybd, since no overlap */
char tmpline[80];
#endif
char *inname = NULL, outname[256];
char *p, pnmchar, pnmline[256];
char *bgstr, *textbuf = NULL;
ulg rowbytes;
int rc, len = 0;
int error = 0;
int text = FALSE;
int maxval;
double LUT_exponent; /* just the lookup table */
double CRT_exponent = 2.2; /* just the monitor */
double default_display_exponent; /* whole display system */
double default_gamma = 0.0;
wpng_info.infile = NULL;
wpng_info.outfile = NULL;
wpng_info.image_data = NULL;
wpng_info.row_pointers = NULL;
wpng_info.filter = FALSE;
wpng_info.interlaced = FALSE;
wpng_info.have_bg = FALSE;
wpng_info.have_time = FALSE;
wpng_info.have_text = 0;
wpng_info.gamma = 0.0;
/* First get the default value for our display-system exponent, i.e.,
* the product of the CRT exponent and the exponent corresponding to
* the frame-buffer's lookup table (LUT), if any. If the PNM image
* looks correct on the user's display system, its file gamma is the
* inverse of this value. (Note that this is not an exhaustive list
* of LUT values--e.g., OpenStep has a lot of weird ones--but it should
* cover 99% of the current possibilities. This section must ensure
* that default_display_exponent is positive.) */
#if defined(NeXT)
/* third-party utilities can modify the default LUT exponent */
LUT_exponent = 1.0 / 2.2;
/*
if (some_next_function_that_returns_gamma(&next_gamma))
LUT_exponent = 1.0 / next_gamma;
*/
#elif defined(sgi)
LUT_exponent = 1.0 / 1.7;
/* there doesn't seem to be any documented function to
* get the "gamma" value, so we do it the hard way */
tmpfile = fopen("/etc/config/system.glGammaVal", "r");
if (tmpfile) {
double sgi_gamma;
fgets(tmpline, 80, tmpfile);
fclose(tmpfile);
sgi_gamma = atof(tmpline);
if (sgi_gamma > 0.0)
LUT_exponent = 1.0 / sgi_gamma;
}
#elif defined(Macintosh)
LUT_exponent = 1.8 / 2.61;
/*
if (some_mac_function_that_returns_gamma(&mac_gamma))
LUT_exponent = mac_gamma / 2.61;
*/
#else
LUT_exponent = 1.0; /* assume no LUT: most PCs */
#endif
/* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */
default_display_exponent = LUT_exponent * CRT_exponent;
/* If the user has set the SCREEN_GAMMA environment variable as suggested
* (somewhat imprecisely) in the libpng documentation, use that; otherwise
* use the default value we just calculated. Either way, the user may
* override this via a command-line option. */
if ((p = getenv("SCREEN_GAMMA")) != NULL) {
double exponent = atof(p);
if (exponent > 0.0)
default_gamma = 1.0 / exponent;
}
if (default_gamma == 0.0)
default_gamma = 1.0 / default_display_exponent;
/* Now parse the command line for options and the PNM filename. */
while (*++argv && !error) {
if (!strncmp(*argv, "-i", 2)) {
wpng_info.interlaced = TRUE;
} else if (!strncmp(*argv, "-time", 3)) {
wpng_info.modtime = time(NULL);
wpng_info.have_time = TRUE;
} else if (!strncmp(*argv, "-text", 3)) {
text = TRUE;
} else if (!strncmp(*argv, "-gamma", 2)) {
if (!*++argv)
++error;
else {
wpng_info.gamma = atof(*argv);
if (wpng_info.gamma <= 0.0)
++error;
else if (wpng_info.gamma > 1.01)
fprintf(stderr, PROGNAME
" warning: file gammas are usually less than 1.0\n");
}
} else if (!strncmp(*argv, "-bgcolor", 4)) {
if (!*++argv)
++error;
else {
bgstr = *argv;
if (strlen(bgstr) != 7 || bgstr[0] != '#')
++error;
else {
unsigned r, g, b; /* this way quiets compiler warnings */
sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b);
wpng_info.bg_red = (uch)r;
wpng_info.bg_green = (uch)g;
wpng_info.bg_blue = (uch)b;
wpng_info.have_bg = TRUE;
}
}
} else {
if (**argv != '-') {
inname = *argv;
if (argv[1]) /* shouldn't be any more args after filename */
++error;
} else
++error; /* not expecting any other options */
}
}
/* open the input and output files, or register an error and abort */
if (!inname) {
if (isatty(0)) {
fprintf(stderr, PROGNAME
": must give input filename or provide image data via stdin\n");
++error;
} else {
#ifdef DOS_OS2_W32
/* some buggy C libraries require BOTH setmode() and fdopen(bin) */
setmode(fileno(stdin), O_BINARY);
setmode(fileno(stdout), O_BINARY);
#endif
if ((wpng_info.infile = fdopen(fileno(stdin), "rb")) == NULL) {
fprintf(stderr, PROGNAME
": unable to reopen stdin in binary mode\n");
++error;
} else
if ((wpng_info.outfile = fdopen(fileno(stdout), "wb")) == NULL) {
fprintf(stderr, PROGNAME
": unable to reopen stdout in binary mode\n");
fclose(wpng_info.infile);
++error;
} else
wpng_info.filter = TRUE;
}
} else if ((len = strlen(inname)) > 250) {
fprintf(stderr, PROGNAME ": input filename is too long [%d chars]\n",
len);
++error;
} else if (!(wpng_info.infile = fopen(inname, "rb"))) {
fprintf(stderr, PROGNAME ": can't open input file [%s]\n", inname);
++error;
}
if (!error) {
fgets(pnmline, 256, wpng_info.infile);
if (pnmline[0] != 'P' || ((pnmchar = pnmline[1]) != '5' &&
pnmchar != '6' && pnmchar != '8'))
{
fprintf(stderr, PROGNAME
": input file [%s] is not a binary PGM, PPM or PAM file\n",
inname);
++error;
} else {
wpng_info.pnmtype = (int)(pnmchar - '0');
if (wpng_info.pnmtype != 8)
wpng_info.have_bg = FALSE; /* no need for bg if opaque */
do {
fgets(pnmline, 256, wpng_info.infile); /* lose any comments */
} while (pnmline[0] == '#');
sscanf(pnmline, "%ld %ld", &wpng_info.width, &wpng_info.height);
do {
fgets(pnmline, 256, wpng_info.infile); /* more comment lines */
} while (pnmline[0] == '#');
sscanf(pnmline, "%d", &maxval);
if (wpng_info.width <= 0L || wpng_info.height <= 0L ||
maxval != 255)
{
fprintf(stderr, PROGNAME
": only positive width/height, maxval == 255 allowed \n");
++error;
}
wpng_info.sample_depth = 8; /* <==> maxval 255 */
if (!wpng_info.filter) {
/* make outname from inname */
if ((p = strrchr(inname, '.')) == NULL ||
(p - inname) != (len - 4))
{
strcpy(outname, inname);
strcpy(outname+len, ".png");
} else {
len -= 4;
strncpy(outname, inname, len);
strcpy(outname+len, ".png");
}
/* check if outname already exists; if not, open */
if ((wpng_info.outfile = fopen(outname, "rb")) != NULL) {
fprintf(stderr, PROGNAME ": output file exists [%s]\n",
outname);
fclose(wpng_info.outfile);
++error;
} else if (!(wpng_info.outfile = fopen(outname, "wb"))) {
fprintf(stderr, PROGNAME ": can't open output file [%s]\n",
outname);
++error;
}
}
}
if (error) {
fclose(wpng_info.infile);
wpng_info.infile = NULL;
if (wpng_info.filter) {
fclose(wpng_info.outfile);
wpng_info.outfile = NULL;
}
}
}
/* if we had any errors, print usage and die horrible death...arrr! */
if (error) {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, APPNAME);
writepng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-gamma exp] [-bgcolor bg] [-text] [-time] [-interlace] pnmfile\n"
"or: ... | %s [-gamma exp] [-bgcolor bg] [-text] [-time] [-interlace] | ...\n"
" exp \ttransfer-function exponent (``gamma'') of the image in\n"
"\t\t floating-point format (e.g., ``%.5f''); if image looks\n"
"\t\t correct on given display system, image gamma is equal to\n"
"\t\t inverse of display-system exponent, i.e., 1 / (LUT * CRT)\n"
"\t\t (where LUT = lookup-table exponent and CRT = CRT exponent;\n"
"\t\t first varies, second is usually 2.2, all are positive)\n"
" bg \tdesired background color for alpha-channel images, in\n"
"\t\t 7-character hex RGB format (e.g., ``#ff7700'' for orange:\n"
"\t\t same as HTML colors)\n"
" -text\tprompt interactively for text info (tEXt chunks)\n"
" -time\tinclude a tIME chunk (last modification time)\n"
" -interlace\twrite interlaced PNG image\n"
"\n"
"pnmfile or stdin must be a binary PGM (`P5'), PPM (`P6') or (extremely\n"
"unofficial and unsupported!) PAM (`P8') file. Currently it is required\n"
"to have maxval == 255 (i.e., no scaling). If pnmfile is specified, it\n"
"is converted to the corresponding PNG file with the same base name but a\n"
"``.png'' extension; files read from stdin are converted and sent to stdout.\n"
"The conversion is progressive (low memory usage) unless interlacing is\n"
"requested; in that case the whole image will be buffered in memory and\n"
"written in one call.\n"
"\n", PROGNAME, PROGNAME, default_gamma);
exit(1);
}
/* prepare the text buffers for libpng's use; note that even though
* PNG's png_text struct includes a length field, we don't have to fill
* it out */
if (text &&
#ifndef DOS_OS2_W32
(keybd = fdopen(fileno(stderr), "r")) != NULL &&
#endif
(textbuf = (char *)malloc((5 + 9)*75)) != NULL)
{
int i, valid, result;
fprintf(stderr,
"Enter text info (no more than 72 characters per line);\n");
fprintf(stderr, "to skip a field, hit the <Enter> key.\n");
/* note: just <Enter> leaves len == 1 */
do {
valid = TRUE;
p = textbuf + TEXT_TITLE_OFFSET;
fprintf(stderr, " Title: ");
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) {
if (p[len-1] == '\n')
p[--len] = '\0';
wpng_info.title = p;
wpng_info.have_text |= TEXT_TITLE;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_TITLE;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_TITLE;
valid = FALSE;
}
#endif
}
}
} while (!valid);
do {
valid = TRUE;
p = textbuf + TEXT_AUTHOR_OFFSET;
fprintf(stderr, " Author: ");
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) {
if (p[len-1] == '\n')
p[--len] = '\0';
wpng_info.author = p;
wpng_info.have_text |= TEXT_AUTHOR;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_AUTHOR;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_AUTHOR;
valid = FALSE;
}
#endif
}
}
} while (!valid);
do {
valid = TRUE;
p = textbuf + TEXT_DESC_OFFSET;
fprintf(stderr, " Description (up to 9 lines):\n");
for (i = 1; i < 10; ++i) {
fprintf(stderr, " [%d] ", i);
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1)
p += len; /* now points at NULL; char before is newline */
else
break;
}
if ((len = p - (textbuf + TEXT_DESC_OFFSET)) > 1) {
if (p[-1] == '\n') {
p[-1] = '\0';
--len;
}
wpng_info.desc = textbuf + TEXT_DESC_OFFSET;
wpng_info.have_text |= TEXT_DESC;
p = textbuf + TEXT_DESC_OFFSET;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_DESC;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_DESC;
valid = FALSE;
}
#endif
}
}
} while (!valid);
do {
valid = TRUE;
p = textbuf + TEXT_COPY_OFFSET;
fprintf(stderr, " Copyright: ");
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) {
if (p[len-1] == '\n')
p[--len] = '\0';
wpng_info.copyright = p;
wpng_info.have_text |= TEXT_COPY;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_COPY;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_COPY;
valid = FALSE;
}
#endif
}
}
} while (!valid);
do {
valid = TRUE;
p = textbuf + TEXT_EMAIL_OFFSET;
fprintf(stderr, " E-mail: ");
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) {
if (p[len-1] == '\n')
p[--len] = '\0';
wpng_info.email = p;
wpng_info.have_text |= TEXT_EMAIL;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_EMAIL;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_EMAIL;
valid = FALSE;
}
#endif
}
}
} while (!valid);
do {
valid = TRUE;
p = textbuf + TEXT_URL_OFFSET;
fprintf(stderr, " URL: ");
fflush(stderr);
if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) {
if (p[len-1] == '\n')
p[--len] = '\0';
wpng_info.url = p;
wpng_info.have_text |= TEXT_URL;
if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) {
fprintf(stderr, " " PROGNAME " warning: character code"
" %u is %sdiscouraged by the PNG\n specification "
"[first occurrence was at character position #%d]\n",
(unsigned)p[result], (p[result] == 27)? "strongly " : "",
result+1);
fflush(stderr);
#ifdef FORBID_LATIN1_CTRL
wpng_info.have_text &= ~TEXT_URL;
valid = FALSE;
#else
if (p[result] == 27) { /* escape character */
wpng_info.have_text &= ~TEXT_URL;
valid = FALSE;
}
#endif
}
}
} while (!valid);
#ifndef DOS_OS2_W32
fclose(keybd);
#endif
} else if (text) {
fprintf(stderr, PROGNAME ": unable to allocate memory for text\n");
text = FALSE;
wpng_info.have_text = 0;
}
/* allocate libpng stuff, initialize transformations, write pre-IDAT data */
if ((rc = writepng_init(&wpng_info)) != 0) {
switch (rc) {
case 2:
fprintf(stderr, PROGNAME
": libpng initialization problem (longjmp)\n");
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
case 11:
fprintf(stderr, PROGNAME
": internal logic error (unexpected PNM type)\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown writepng_init() error\n");
break;
}
exit(rc);
}
/* free textbuf, since it's a completely local variable and all text info
* has just been written to the PNG file */
if (text && textbuf) {
free(textbuf);
textbuf = NULL;
}
/* calculate rowbytes on basis of image type; note that this becomes much
* more complicated if we choose to support PBM type, ASCII PNM types, or
* 16-bit-per-sample binary data [currently not an official NetPBM type] */
if (wpng_info.pnmtype == 5)
rowbytes = wpng_info.width;
else if (wpng_info.pnmtype == 6)
rowbytes = wpng_info.width * 3;
else /* if (wpng_info.pnmtype == 8) */
rowbytes = wpng_info.width * 4;
/* read and write the image, either in its entirety (if writing interlaced
* PNG) or row by row (if non-interlaced) */
fprintf(stderr, "Encoding image data...\n");
fflush(stderr);
if (wpng_info.interlaced) {
long i;
ulg bytes;
ulg image_bytes = rowbytes * wpng_info.height; /* overflow? */
wpng_info.image_data = (uch *)malloc(image_bytes);
wpng_info.row_pointers = (uch **)malloc(wpng_info.height*sizeof(uch *));
if (wpng_info.image_data == NULL || wpng_info.row_pointers == NULL) {
fprintf(stderr, PROGNAME ": insufficient memory for image data\n");
writepng_cleanup(&wpng_info);
wpng_cleanup();
exit(5);
}
for (i = 0; i < wpng_info.height; ++i)
wpng_info.row_pointers[i] = wpng_info.image_data + i*rowbytes;
bytes = fread(wpng_info.image_data, 1, image_bytes, wpng_info.infile);
if (bytes != image_bytes) {
fprintf(stderr, PROGNAME ": expected %lu bytes, got %lu bytes\n",
image_bytes, bytes);
fprintf(stderr, " (continuing anyway)\n");
}
if (writepng_encode_image(&wpng_info) != 0) {
fprintf(stderr, PROGNAME
": libpng problem (longjmp) while writing image data\n");
writepng_cleanup(&wpng_info);
wpng_cleanup();
exit(2);
}
} else /* not interlaced: write progressively (row by row) */ {
long j;
ulg bytes;
wpng_info.image_data = (uch *)malloc(rowbytes);
if (wpng_info.image_data == NULL) {
fprintf(stderr, PROGNAME ": insufficient memory for row data\n");
writepng_cleanup(&wpng_info);
wpng_cleanup();
exit(5);
}
error = 0;
for (j = wpng_info.height; j > 0L; --j) {
bytes = fread(wpng_info.image_data, 1, rowbytes, wpng_info.infile);
if (bytes != rowbytes) {
fprintf(stderr, PROGNAME
": expected %lu bytes, got %lu bytes (row %ld)\n", rowbytes,
bytes, wpng_info.height-j);
++error;
break;
}
if (writepng_encode_row(&wpng_info) != 0) {
fprintf(stderr, PROGNAME
": libpng problem (longjmp) while writing row %ld\n",
wpng_info.height-j);
++error;
break;
}
}
if (error) {
writepng_cleanup(&wpng_info);
wpng_cleanup();
exit(2);
}
if (writepng_encode_finish(&wpng_info) != 0) {
fprintf(stderr, PROGNAME ": error on final libpng call\n");
writepng_cleanup(&wpng_info);
wpng_cleanup();
exit(2);
}
}
/* OK, we're done (successfully): clean up all resources and quit */
fprintf(stderr, "Done.\n");
fflush(stderr);
writepng_cleanup(&wpng_info);
wpng_cleanup();
return 0;
}
static int wpng_isvalid_latin1(uch *p, int len)
{
int i, result = -1;
for (i = 0; i < len; ++i) {
if (p[i] == 10 || (p[i] > 31 && p[i] < 127) || p[i] > 160)
continue; /* character is completely OK */
if (result < 0 || (p[result] != 27 && p[i] == 27))
result = i; /* mark location of first questionable one */
} /* or of first escape character (bad) */
return result;
}
static void wpng_cleanup(void)
{
if (wpng_info.outfile) {
fclose(wpng_info.outfile);
wpng_info.outfile = NULL;
}
if (wpng_info.infile) {
fclose(wpng_info.infile);
wpng_info.infile = NULL;
}
if (wpng_info.image_data) {
free(wpng_info.image_data);
wpng_info.image_data = NULL;
}
if (wpng_info.row_pointers) {
free(wpng_info.row_pointers);
wpng_info.row_pointers = NULL;
}
}
#ifdef DOS_OS2_W32
static char *dos_kbd_gets(char *buf, int len)
{
int ch, count=0;
do {
buf[count++] = ch = getche();
} while (ch != '\r' && count < len-1);
buf[count--] = '\0'; /* terminate string */
if (buf[count] == '\r') /* Enter key makes CR, so change to newline */
buf[count] = '\n';
fprintf(stderr, "\n"); /* Enter key does *not* cause a newline */
fflush(stderr);
return buf;
}
#endif /* DOS_OS2_W32 */

401
contrib/gregbook/writepng.c Normal file
View File

@@ -0,0 +1,401 @@
/*---------------------------------------------------------------------------
wpng - simple PNG-writing program writepng.c
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#include <stdlib.h> /* for exit() prototype */
#include <zlib.h>
#include "png.h" /* libpng header, includes setjmp.h */
#include "writepng.h" /* typedefs, common macros, public prototypes */
/* local prototype */
static void writepng_error_handler(png_structp png_ptr, png_const_charp msg);
void writepng_version_info(void)
{
fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n",
PNG_LIBPNG_VER_STRING, png_libpng_ver);
fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n",
ZLIB_VERSION, zlib_version);
}
/* returns 0 for success, 2 for libpng problem, 4 for out of memory, 11 for
* unexpected pnmtype; note that outfile might be stdout */
int writepng_init(mainprog_info *mainprog_ptr)
{
png_structp png_ptr; /* note: temporary variables! */
png_infop info_ptr;
int color_type, interlace_type;
/* could also replace libpng warning-handler (final NULL), but no need: */
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr,
writepng_error_handler, NULL);
if (!png_ptr)
return 4; /* out of memory */
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
png_destroy_write_struct(&png_ptr, NULL);
return 4; /* out of memory */
}
/* setjmp() must be called in every function that calls a PNG-writing
* libpng function, unless an alternate error handler was installed--
* but compatible error handlers must either use longjmp() themselves
* (as in this program) or some other method to return control to
* application code, so here we go: */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_write_struct(&png_ptr, &info_ptr);
return 2;
}
/* make sure outfile is (re)opened in BINARY mode */
png_init_io(png_ptr, mainprog_ptr->outfile);
/* set the compression levels--in general, always want to leave filtering
* turned on (except for palette images) and allow all of the filters,
* which is the default; want 32K zlib window, unless entire image buffer
* is 16K or smaller (unknown here)--also the default; usually want max
* compression (NOT the default); and remaining compression flags should
* be left alone */
png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
/*
>> this is default for no filtering; Z_FILTERED is default otherwise:
png_set_compression_strategy(png_ptr, Z_DEFAULT_STRATEGY);
>> these are all defaults:
png_set_compression_mem_level(png_ptr, 8);
png_set_compression_window_bits(png_ptr, 15);
png_set_compression_method(png_ptr, 8);
*/
/* set the image parameters appropriately */
if (mainprog_ptr->pnmtype == 5)
color_type = PNG_COLOR_TYPE_GRAY;
else if (mainprog_ptr->pnmtype == 6)
color_type = PNG_COLOR_TYPE_RGB;
else if (mainprog_ptr->pnmtype == 8)
color_type = PNG_COLOR_TYPE_RGB_ALPHA;
else {
png_destroy_write_struct(&png_ptr, &info_ptr);
return 11;
}
interlace_type = mainprog_ptr->interlaced? PNG_INTERLACE_ADAM7 :
PNG_INTERLACE_NONE;
png_set_IHDR(png_ptr, info_ptr, mainprog_ptr->width, mainprog_ptr->height,
mainprog_ptr->sample_depth, color_type, interlace_type,
PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
if (mainprog_ptr->gamma > 0.0)
png_set_gAMA(png_ptr, info_ptr, mainprog_ptr->gamma);
if (mainprog_ptr->have_bg) { /* we know it's RGBA, not gray+alpha */
png_color_16 background;
background.red = mainprog_ptr->bg_red;
background.green = mainprog_ptr->bg_green;
background.blue = mainprog_ptr->bg_blue;
png_set_bKGD(png_ptr, info_ptr, &background);
}
if (mainprog_ptr->have_time) {
png_time modtime;
png_convert_from_time_t(&modtime, mainprog_ptr->modtime);
png_set_tIME(png_ptr, info_ptr, &modtime);
}
if (mainprog_ptr->have_text) {
png_text text[6];
int num_text = 0;
if (mainprog_ptr->have_text & TEXT_TITLE) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "Title";
text[num_text].text = mainprog_ptr->title;
++num_text;
}
if (mainprog_ptr->have_text & TEXT_AUTHOR) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "Author";
text[num_text].text = mainprog_ptr->author;
++num_text;
}
if (mainprog_ptr->have_text & TEXT_DESC) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "Description";
text[num_text].text = mainprog_ptr->desc;
++num_text;
}
if (mainprog_ptr->have_text & TEXT_COPY) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "Copyright";
text[num_text].text = mainprog_ptr->copyright;
++num_text;
}
if (mainprog_ptr->have_text & TEXT_EMAIL) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "E-mail";
text[num_text].text = mainprog_ptr->email;
++num_text;
}
if (mainprog_ptr->have_text & TEXT_URL) {
text[num_text].compression = PNG_TEXT_COMPRESSION_NONE;
text[num_text].key = "URL";
text[num_text].text = mainprog_ptr->url;
++num_text;
}
png_set_text(png_ptr, info_ptr, text, num_text);
}
/* write all chunks up to (but not including) first IDAT */
png_write_info(png_ptr, info_ptr);
/* if we wanted to write any more text info *after* the image data, we
* would set up text struct(s) here and call png_set_text() again, with
* just the new data; png_set_tIME() could also go here, but it would
* have no effect since we already called it above (only one tIME chunk
* allowed) */
/* set up the transformations: for now, just pack low-bit-depth pixels
* into bytes (one, two or four pixels per byte) */
png_set_packing(png_ptr);
/* png_set_shift(png_ptr, &sig_bit); to scale low-bit-depth values */
/* make sure we save our pointers for use in writepng_encode_image() */
mainprog_ptr->png_ptr = png_ptr;
mainprog_ptr->info_ptr = info_ptr;
/* OK, that's all we need to do for now; return happy */
return 0;
}
/* returns 0 for success, 2 for libpng (longjmp) problem */
int writepng_encode_image(mainprog_info *mainprog_ptr)
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_write_struct(&png_ptr, &info_ptr);
mainprog_ptr->png_ptr = NULL;
mainprog_ptr->info_ptr = NULL;
return 2;
}
/* and now we just write the whole image; libpng takes care of interlacing
* for us */
png_write_image(png_ptr, mainprog_ptr->row_pointers);
/* since that's it, we also close out the end of the PNG file now--if we
* had any text or time info to write after the IDATs, second argument
* would be info_ptr, but we optimize slightly by sending NULL pointer: */
png_write_end(png_ptr, NULL);
return 0;
}
/* returns 0 if succeeds, 2 if libpng problem */
int writepng_encode_row(mainprog_info *mainprog_ptr) /* NON-interlaced only! */
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_write_struct(&png_ptr, &info_ptr);
mainprog_ptr->png_ptr = NULL;
mainprog_ptr->info_ptr = NULL;
return 2;
}
/* image_data points at our one row of image data */
png_write_row(png_ptr, mainprog_ptr->image_data);
return 0;
}
/* returns 0 if succeeds, 2 if libpng problem */
int writepng_encode_finish(mainprog_info *mainprog_ptr) /* NON-interlaced! */
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if (setjmp(mainprog_ptr->jmpbuf)) {
png_destroy_write_struct(&png_ptr, &info_ptr);
mainprog_ptr->png_ptr = NULL;
mainprog_ptr->info_ptr = NULL;
return 2;
}
/* close out PNG file; if we had any text or time info to write after
* the IDATs, second argument would be info_ptr: */
png_write_end(png_ptr, NULL);
return 0;
}
void writepng_cleanup(mainprog_info *mainprog_ptr)
{
png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr;
png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr;
if (png_ptr && info_ptr)
png_destroy_write_struct(&png_ptr, &info_ptr);
}
static void writepng_error_handler(png_structp png_ptr, png_const_charp msg)
{
mainprog_info *mainprog_ptr;
/* This function, aside from the extra step of retrieving the "error
* pointer" (below) and the fact that it exists within the application
* rather than within libpng, is essentially identical to libpng's
* default error handler. The second point is critical: since both
* setjmp() and longjmp() are called from the same code, they are
* guaranteed to have compatible notions of how big a jmp_buf is,
* regardless of whether _BSD_SOURCE or anything else has (or has not)
* been defined. */
fprintf(stderr, "writepng libpng error: %s\n", msg);
fflush(stderr);
mainprog_ptr = png_get_error_ptr(png_ptr);
if (mainprog_ptr == NULL) { /* we are completely hosed now */
fprintf(stderr,
"writepng severe error: jmpbuf not recoverable; terminating.\n");
fflush(stderr);
exit(99);
}
/* Now we have our data structure we can use the information in it
* to return control to our own higher level code (all the points
* where 'setjmp' is called in this file.) This will work with other
* error handling mechanisms as well - libpng always calls png_error
* when it can proceed no further, thus, so long as the error handler
* is intercepted, application code can do its own error recovery.
*/
longjmp(mainprog_ptr->jmpbuf, 1);
}

133
contrib/gregbook/writepng.h Normal file
View File

@@ -0,0 +1,133 @@
/*---------------------------------------------------------------------------
wpng - simple PNG-writing program writepng.h
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#ifndef TRUE
# define TRUE 1
# define FALSE 0
#endif
#ifndef MAX
# define MAX(a,b) ((a) > (b)? (a) : (b))
# define MIN(a,b) ((a) < (b)? (a) : (b))
#endif
#ifdef DEBUG
# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);}
#else
# define Trace(x) ;
#endif
#define TEXT_TITLE 0x01
#define TEXT_AUTHOR 0x02
#define TEXT_DESC 0x04
#define TEXT_COPY 0x08
#define TEXT_EMAIL 0x10
#define TEXT_URL 0x20
#define TEXT_TITLE_OFFSET 0
#define TEXT_AUTHOR_OFFSET 72
#define TEXT_COPY_OFFSET (2*72)
#define TEXT_EMAIL_OFFSET (3*72)
#define TEXT_URL_OFFSET (4*72)
#define TEXT_DESC_OFFSET (5*72)
typedef unsigned char uch;
typedef unsigned short ush;
typedef unsigned long ulg;
typedef struct _mainprog_info {
double gamma;
long width;
long height;
time_t modtime;
FILE *infile;
FILE *outfile;
void *png_ptr;
void *info_ptr;
uch *image_data;
uch **row_pointers;
char *title;
char *author;
char *desc;
char *copyright;
char *email;
char *url;
int filter; /* command-line-filter flag, not PNG row filter! */
int pnmtype;
int sample_depth;
int interlaced;
int have_bg;
int have_time;
int have_text;
jmp_buf jmpbuf;
uch bg_red;
uch bg_green;
uch bg_blue;
} mainprog_info;
/* prototypes for public functions in writepng.c */
void writepng_version_info(void);
int writepng_init(mainprog_info *mainprog_ptr);
int writepng_encode_image(mainprog_info *mainprog_ptr);
int writepng_encode_row(mainprog_info *mainprog_ptr);
int writepng_encode_finish(mainprog_info *mainprog_ptr);
void writepng_cleanup(mainprog_info *mainprog_ptr);

9835
contrib/libtests/pngvalid.c Normal file

File diff suppressed because it is too large Load Diff

4
contrib/pngminim/README Normal file
View File

@@ -0,0 +1,4 @@
This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
to build minimal decoder, encoder, and progressive reader applications.
See the individual README and pngusr.dfa files for more explanation.

View File

@@ -0,0 +1,10 @@
This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
The makefile builds a minimal read-only decoder with embedded libpng
and zlib.
Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
on the make command line.
If you prefer to use the shared libraries, go to contrib/pngminus
and build the png2pnm application there.

View File

@@ -0,0 +1,150 @@
# Makefile for PngMinus (pngm2pnm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
# If awk fails try
# make AWK=nawk
# If cpp fails try
# make CPP=/lib/cpp
RM=rm -f
COPY=cp
CFLAGS=-DPNG_USER_CONFIG -DNO_GZCOMPRESS -DNO_GZIP -I. -O1
C=.c
O=.o
L=.a
E=
# Where to find the source code:
PNGSRC =../../..
ZLIBSRC=$(PNGSRC)/../zlib
PROGSRC=$(PNGSRC)/contrib/pngminus
# Zlib (minimal inflate requirements - crc32 is used by libpng)
# zutil can be eliminated if you provide your own zcalloc and zcfree
ZSRCS = adler32$(C) crc32$(C) \
inffast$(C) inflate$(C) inftrees$(C) \
zutil$(C)
# Standard headers
ZH = zlib.h crc32.h inffast.h inffixed.h \
inflate.h inftrees.h zutil.h
# Machine generated headers
ZCONF = zconf.h
# Headers callers use
ZINC = zlib.h $(ZCONF)
# Headers the Zlib source uses
ZHDRS = $(ZH) $(ZCONF)
ZOBJS = adler32$(O) crc32$(O) \
inffast$(O) inflate$(O) inftrees$(O) \
zutil$(O)
# libpng
PNGSRCS=png$(C) pngerror$(C) pngget$(C) pngmem$(C) \
pngread$(C) pngrio$(C) pngrtran$(C) pngrutil$(C) \
pngset$(C) pngtrans$(C)
# Standard headers
PNGH =png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h
# Machine generated headers
PNGCONF=pnglibconf.h
# Headers callers use
PNGINC= png.h pngconf.h pngusr.h $(PNGCONF)
# Headers the PNG library uses
PNGHDRS=$(PNGH) $(PNGCONF) pngusr.h
PNGOBJS=png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \
pngset$(O) pngtrans$(O)
PROGSRCS= pngm2pnm$(C)
PROGHDRS=
PROGDOCS=
PROGOBJS= pngm2pnm$(O)
OBJS = $(PROGOBJS) $(PNGOBJS) $(ZOBJS)
# implicit make rules -------------------------------------------------------
# note: dependencies do not work on implicit rule lines
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies
all: pngm2pnm$(E)
pngm2pnm$(E): $(OBJS)
$(LD) -o pngm2pnm$(E) $(OBJS)
# The DFA_XTRA setting turns all libpng options off then
# turns on those required for this minimal build.
# The CPP_FLAGS setting causes pngusr.h to be included in
# both the build of pnglibconf.h and, subsequently, when
# building libpng itself.
$(PNGCONF): $(PNGSRC)/scripts/pnglibconf.mak\
$(PNGSRC)/scripts/pnglibconf.dfa \
$(PNGSRC)/scripts/options.awk pngusr.h pngusr.dfa
$(RM) pnglibconf.h pnglibconf.dfn
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) CPPFLAGS="-DPNG_USER_CONFIG"\
DFA_XTRA="pngusr.dfa" $@
clean:
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) clean
$(RM) pngm2pnm$(O)
$(RM) pngm2pnm$(E)
$(RM) $(OBJS)
# distclean also removes the copied source and headers
distclean: clean
$(RM) -r scripts # historical reasons
$(RM) $(PNGSRCS) $(PNGH)
$(RM) $(ZSRCS) $(ZH) $(ZCONF)
$(RM) $(PROGSRCS) $(PROGHDRS) $(PROGDOCS)
# Header file dependencies:
$(PROGOBJS): $(PROGHDRS) $(PNGINC) $(ZINC)
$(PNGOBJS): $(PNGHDRS) $(ZINC)
$(ZOBJS): $(ZHDRS)
# Gather the source code from the respective directories
$(PNGSRCS) $(PNGH): $(PNGSRC)/$@
$(RM) $@
$(COPY) $(PNGSRC)/$@ $@
# No dependency on the ZLIBSRC target so that it only needs
# to be specified once.
$(ZSRCS) $(ZH):
$(RM) $@
$(COPY) $(ZLIBSRC)/$@ $@
# The unconfigured zconf.h varies in name according to the
# zlib release
$(ZCONF):
$(RM) $@
@for f in zconf.h.in zconf.in.h zconf.h; do\
test -r $(ZLIBSRC)/$$f &&\
echo $(COPY) $(ZLIBSRC)/$$f $@ &&\
$(COPY) $(ZLIBSRC)/$$f $@ && exit 0;\
done; echo copy: $(ZLIBSRC)/zconf.h not found; exit 1
pngm2pnm.c: $(PROGSRC)/png2pnm.c
$(RM) $@
$(COPY) $(PROGSRC)/png2pnm.c $@
# End of makefile for pngm2pnm

View File

@@ -0,0 +1,39 @@
# pngminim/decoder/pngusr.dfa
#
# Copyright (c) 2010-2011 Glenn Randers-Pehrson
#
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
# First all the build options off:
everything = off
# All that is required is some read code. This example switches
# on the sequential read code (see ../preader for a progressive
# read example).
option SEQUENTIAL_READ on
# You must choose fixed or floating point arithmetic:
# option FLOATING_POINT on
option FIXED_POINT on
# You must chose the internal fixed point implementation or to
# use the system floating point. The latter is considerably
# smaller (by about 1kbyte on an x86 system):
# option FLOATING_ARITHMETIC on
option FLOATING_ARITHMETIC off
# Your program will probably need other options. The example
# program here, pngm2pnm, requires the following. Take a look
# at pnglibconf.h to find out the full set of what has to be
# enabled to make the following work.
option SETJMP on
option STDIO on
option READ_EXPAND on
option READ_STRIP_16_TO_8 on

View File

@@ -0,0 +1,24 @@
/* minrdpngconf.h: headers to make a minimal png-read-only library
*
* Copyright (c) 2007, 2010-2011 Glenn Randers-Pehrson
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINRDPNGCONF_H
#define MINRDPNGCONF_H
/* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
/* List options to turn off features of the build that do not
* affect the API (so are not recorded in pnglibconf.h)
*/
#define PNG_NO_WARNINGS
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
#endif /* MINRDPNGCONF_H */

View File

@@ -0,0 +1,10 @@
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
The makefile builds a minimal write-only decoder with embedded libpng
and zlib.
Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
on the make command line.
If you prefer to use the shared libraries, go to contrib/pngminus
and build the pnm2png application there.

View File

@@ -0,0 +1,149 @@
# Makefile for PngMinus (pnm2pngm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
# If awk fails try
# make AWK=nawk
# If cpp fails try
# make CPP=/lib/cpp
RM=rm -f
COPY=cp
CFLAGS=-DPNG_USER_CONFIG -DNO_GZIP -I. -O1
C=.c
O=.o
L=.a
E=
# Where to find the source code:
PNGSRC =../../..
ZLIBSRC=$(PNGSRC)/../zlib
PROGSRC=$(PNGSRC)/contrib/pngminus
# Zlib
ZSRCS = adler32$(C) compress$(C) crc32$(C) deflate$(C) \
trees$(C) zutil$(C)
# Standard headers
#ZH = zlib.h crc32.h deflate.h trees.h zutil.h
ZH = zlib.h crc32.h deflate.h trees.h zutil.h
# Machine generated headers
ZCONF = zconf.h
# Headers callers use
ZINC = zlib.h $(ZCONF)
# Headers the Zlib source uses
ZHDRS = $(ZH) $(ZCONF)
# compress is not required; it is needed to link the zlib
# code because deflate defines an unused API function deflateBound
# which itself calls compressBound from compress.
ZOBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) \
trees$(O) zutil$(O)
# libpng
PNGSRCS=png$(C) pngerror$(C) pngget$(C) pngmem$(C) \
pngset$(C) pngtrans$(C) pngwio$(C) pngwrite$(C) \
pngwtran$(C) pngwutil$(C)
# Standard headers
PNGH =png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h
# Machine generated headers
PNGCONF=pnglibconf.h
# Headers callers use
PNGINC= png.h pngconf.h pngusr.h $(PNGCONF)
# Headers the PNG library uses
PNGHDRS=$(PNGH) $(PNGCONF) pngusr.h
PNGOBJS=png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngset$(O) pngtrans$(O) pngwio$(O) pngwrite$(O) \
pngwtran$(O) pngwutil$(O)
PROGSRCS= pnm2pngm$(C)
PROGHDRS=
PROGDOCS=
PROGOBJS= pnm2pngm$(O)
OBJS = $(PROGOBJS) $(PNGOBJS) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies
all: pnm2pngm$(E)
pnm2pngm$(E): $(OBJS)
$(LD) -o pnm2pngm$(E) $(OBJS)
# The DFA_XTRA setting turns all libpng options off then
# turns on those required for this minimal build.
# The CPP_FLAGS setting causes pngusr.h to be included in
# both the build of pnglibconf.h and, subsequently, when
# building libpng itself.
$(PNGCONF): $(PNGSRC)/scripts/pnglibconf.mak\
$(PNGSRC)/scripts/pnglibconf.dfa \
$(PNGSRC)/scripts/options.awk pngusr.h pngusr.dfa
$(RM) pnglibconf.h pnglibconf.dfn
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) CPPFLAGS="-DPNG_USER_CONFIG"\
DFA_XTRA="pngusr.dfa" $@
clean:
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) clean
$(RM) pnm2pngm$(O)
$(RM) pnm2pngm$(E)
$(RM) $(OBJS)
# distclean also removes the copied source and headers
distclean: clean
$(RM) -r scripts # historical reasons
$(RM) $(PNGSRCS) $(PNGH)
$(RM) $(ZSRCS) $(ZH) $(ZCONF)
$(RM) $(PROGSRCS) $(PROGHDRS) $(PROGDOCS)
# Header file dependencies:
$(PROGOBJS): $(PROGHDRS) $(PNGINC) $(ZINC)
$(PNGOBJS): $(PNGHDRS) $(ZINC)
$(ZOBJS): $(ZHDRS)
# Gather the source code from the respective directories
$(PNGSRCS) $(PNGH): $(PNGSRC)/$@
$(RM) $@
$(COPY) $(PNGSRC)/$@ $@
# No dependency on the ZLIBSRC target so that it only needs
# to be specified once.
$(ZSRCS) $(ZH):
$(RM) $@
$(COPY) $(ZLIBSRC)/$@ $@
# The unconfigured zconf.h varies in name according to the
# zlib release
$(ZCONF):
$(RM) $@
@for f in zconf.h.in zconf.in.h zconf.h; do\
test -r $(ZLIBSRC)/$$f &&\
echo $(COPY) $(ZLIBSRC)/$$f $@ &&\
$(COPY) $(ZLIBSRC)/$$f $@ && exit 0;\
done; echo copy: $(ZLIBSRC)/zconf.h not found; exit 1
pnm2pngm.c: $(PROGSRC)/pnm2png.c
$(RM) $@
$(COPY) $(PROGSRC)/pnm2png.c $@
# End of makefile for pnm2pngm

View File

@@ -0,0 +1,35 @@
# pngminim/encoder/pngusr.dfa
#
# Copyright (c) 2010-2011 Glenn Randers-Pehrson
#
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
# First all the build options off:
everything = off
# Switch on the write code - this makes a minimalist encoder
option WRITE on
# You must choose fixed or floating point arithmetic:
# option FLOATING_POINT on
option FIXED_POINT on
# You must chose the internal fixed point implementation or to
# use the system floating point. The latter is considerably
# smaller (by about 1kbyte on an x86 system):
# option FLOATING_ARITHMETIC on
option FLOATING_ARITHMETIC off
# Your program will probably need other options. The example
# program here, pnm2pngm, requires the following. Take a look
# at pnglibconf.h to find out the full set of what has to be
# enabled to make the following work.
option SETJMP on
option STDIO on

View File

@@ -0,0 +1,24 @@
/* minwrpngconf.h: headers to make a minimal png-write-only library
*
* Copyright (c) 2007, 2010-2011 Glenn Randers-Pehrson
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINWRPNGCONF_H
#define MINWRPNGCONF_H
/* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
/* List options to turn off features of the build that do not
* affect the API (so are not recorded in pnglibconf.h)
*/
#define PNG_NO_WARNINGS
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
#endif /* MINWRPNGCONF_H */

View File

@@ -0,0 +1,15 @@
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
The makefile builds a minimal read-only progressive decoder with
embedded libpng, zlib and your system's X library.
Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
on the make command line.
Edit makefile if required, to find your X library and include files,
then
make ZLIBSRC=directory
If you prefer to use the shared libraries, go to contrib/gregbook
and build the rpng2-x application there.

View File

@@ -0,0 +1,165 @@
# Makefile for PngMinus (rpng2)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
# If awk fails try
# make AWK=nawk
# If cpp fails try
# make CPP=/lib/cpp
RM=rm -f
COPY=cp
#XINC = -I/usr/include # old-style, stock X distributions
#XLIB = -L/usr/lib/X11 -lX11 # (including SGI IRIX)
#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows)
#XLIB = -L/usr/openwin/lib -lX11
XINC = -I/usr/X11R6/include # new X distributions (X.org, etc.)
XLIB = -L/usr/X11R6/lib -lX11
#XLIB = -L/usr/X11R6/lib64 -lX11 # e.g., Red Hat on AMD64
#XINC = -I/usr/local/include # FreeBSD
#XLIB = -L/usr/local/lib -lX11
#LIBS = $(XLIB)
LIBS = $(XLIB) -lm #platforms that need libm
CFLAGS=-DPNG_USER_CONFIG -DNO_GZCOMPRESS -DNO_GZIP -I. $(XINC) -O1
C=.c
O=.o
L=.a
E=
# Where to find the source code:
PNGSRC =../../..
ZLIBSRC=$(PNGSRC)/../zlib
PROGSRC=$(PNGSRC)/contrib/gregbook
# Zlib (minimal inflate requirements - crc32 is used by libpng)
# zutil can be eliminated if you provide your own zcalloc and zcfree
ZSRCS = adler32$(C) crc32$(C) \
inffast$(C) inflate$(C) inftrees$(C) \
zutil$(C)
# Standard headers
ZH = zlib.h crc32.h inffast.h inffixed.h \
inflate.h inftrees.h zutil.h
# Machine generated headers
ZCONF = zconf.h
# Headers callers use
ZINC = zlib.h $(ZCONF)
# Headers the Zlib source uses
ZHDRS = $(ZH) $(ZCONF)
ZOBJS = adler32$(O) crc32$(O) \
inffast$(O) inflate$(O) inftrees$(O) \
zutil$(O)
# libpng
PNGSRCS=png$(C) pngerror$(C) pngget$(C) pngmem$(C) \
pngpread$(C) pngread$(C) pngrio$(C) pngrtran$(C) pngrutil$(C) \
pngset$(C) pngtrans$(C)
# Standard headers
PNGH =png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h
# Machine generated headers
PNGCONF=pnglibconf.h
# Headers callers use
PNGINC= png.h pngconf.h pngusr.h $(PNGCONF)
# Headers the PNG library uses
PNGHDRS=$(PNGH) $(PNGCONF) pngusr.h
PNGOBJS=png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngpread$(O) pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \
pngset$(O) pngtrans$(O)
PROGSRCS= rpng2-x$(C) readpng2$(C)
PROGHDRS= readpng2.h
PROGDOCS= COPYING LICENSE
PROGOBJS= rpng2-x$(O) readpng2$(O)
OBJS = $(PROGOBJS) $(PNGOBJS) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
# dependencies
all: $(PROGDOCS) rpng2-x$(E)
rpng2-x$(E): $(OBJS)
$(LD) -o rpng2-x$(E) $(OBJS) $(LIBS)
# The DFA_XTRA setting turns all libpng options off then
# turns on those required for this minimal build.
# The CPP_FLAGS setting causes pngusr.h to be included in
# both the build of pnglibconf.h and, subsequently, when
# building libpng itself.
$(PNGCONF): $(PNGSRC)/scripts/pnglibconf.mak\
$(PNGSRC)/scripts/pnglibconf.dfa \
$(PNGSRC)/scripts/options.awk pngusr.h pngusr.dfa
$(RM) pnglibconf.h pnglibconf.dfn
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) CPPFLAGS="-DPNG_USER_CONFIG"\
DFA_XTRA="pngusr.dfa" $@
clean:
$(MAKE) $(MAKEFLAGS) -f $(PNGSRC)/scripts/pnglibconf.mak\
srcdir=$(PNGSRC) clean
$(RM) rpng2-x$(O)
$(RM) rpng2-x$(E)
$(RM) $(OBJS)
# distclean also removes the copied source and headers
distclean: clean
$(RM) -r scripts # historical reasons
$(RM) $(PNGSRCS) $(PNGH)
$(RM) $(ZSRCS) $(ZH) $(ZCONF)
$(RM) $(PROGSRCS) $(PROGHDRS) $(PROGDOCS)
# Header file dependencies:
$(PROGOBJS): $(PROGHDRS) $(PNGINC) $(ZINC)
$(PNGOBJS): $(PNGHDRS) $(ZINC)
$(ZOBJS): $(ZHDRS)
# Gather the source code from the respective directories
$(PNGSRCS) $(PNGH): $(PNGSRC)/$@
$(RM) $@
$(COPY) $(PNGSRC)/$@ $@
# No dependency on the ZLIBSRC target so that it only needs
# to be specified once.
$(ZSRCS) $(ZH):
$(RM) $@
$(COPY) $(ZLIBSRC)/$@ $@
# The unconfigured zconf.h varies in name according to the
# zlib release
$(ZCONF):
$(RM) $@
@for f in zconf.h.in zconf.in.h zconf.h; do\
test -r $(ZLIBSRC)/$$f &&\
echo $(COPY) $(ZLIBSRC)/$$f $@ &&\
$(COPY) $(ZLIBSRC)/$$f $@ && exit 0;\
done; echo copy: $(ZLIBSRC)/zconf.h not found; exit 1
$(PROGSRCS) $(PROGHDRS) $(PROGDOCS): $(PROGSRC)/$@
$(RM) $@
$(COPY) $(PROGSRC)/$@ $@
# End of makefile for rpng2-x

View File

@@ -0,0 +1,40 @@
# pngminim/preader/pngusr.dfa
#
# Copyright (c) 2010-2011 Glenn Randers-Pehrson
#
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
# First all the build options off:
everything = off
# Just switch on the progressive read code
option PROGRESSIVE_READ on
# You may choose fixed or floating point APIs:
# option FLOATING_POINT on
option FIXED_POINT on
# You must chose the internal fixed point implementation or to
# use the system floating point. The latter is considerably
# smaller (by about 1kbyte on an x86 system):
option FLOATING_ARITHMETIC on
# option FLOATING_ARITHMETIC off
# Your program will probably need other options. The example
# program here, rpng2-x, requires the following. Take a look
# at pnglibconf.h to find out the full set of what has to be
# enabled to make the following work.
option SETJMP on
option STDIO on
option READ_bKGD on
option READ_GAMMA on
option READ_EXPAND on
option READ_STRIP_16_TO_8 on
option READ_GRAY_TO_RGB on

View File

@@ -0,0 +1,24 @@
/* minrdpngconf.h: headers to make a minimal png-read-only library
*
* Copyright (c) 2009, 2010-2011 Glenn Randers-Pehrson
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINPRDPNGCONF_H
#define MINPRDPNGCONF_H
/* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
/* List options to turn off features of the build that do not
* affect the API (so are not recorded in pnglibconf.h)
*/
#define PNG_NO_WARNINGS
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
#endif /* MINPRDPNGCONF_H */

153
contrib/pngminus/README Normal file
View File

@@ -0,0 +1,153 @@
PngMinus
--------
(copyright Willem van Schaik, 1999)
License
-------
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and
that both that copyright notice and this permission notice appear in
supporting documentation. This software is provided "as is" without
express or implied warranty.
Some history
------------
Soon after the creation of PNG in 1995, the need was felt for a set of
pnmtopng / pngtopnm utilities. Independantly Alexander Lehmann and I
(Willem van Schaik) started such a project. Luckily we discovered this
and merged the two together into pnmtopng.tar.gz, which is available
from a/o ftp://ftp.simplesystems.org/pub/libpng/png/.
These two utilities have many, many options and make use of most of the
features of PNG, like gamma, alpha, sbit, text-chunks, etc. This makes
the utilities quite complex and by now not anymore very maintainable.
When we wrote these programs, libpng was still in an early stage.
Therefore, lots of the functionality that we put in our software can now
be done using transform-functions in libpng.
Finally, to compile these programs, you need to have installed and
compiled three libraries: libpng, zlib and netpbm. Especially the latter
makes the whole setup a bit bulky. But that's unavoidable given the many
features of pnmtopng.
What now
--------
At this moment libpng is in a very stable state and can do much of the
work done in pnmtopng. Also, pnmtopng needs to be upgraded to the new
interface of libpng. Hence, it is time for a rewrite from the ground up
of pnmtopng and pngtopnm. This will happen in the near future (stay
tuned). The new package will get a different name to distinguish it from
the old one: PngPlus.
To experiment a bit with the new interface of libpng, I started off with
a small prototype that contains only the basic functionality. It doesn't
have any of the options to read or write special chunks and it will do
no gamma correction. But this makes it also a simple program that is
quite easy to understand and can serve well as a template for other
software developments. (By now there are of course a couple of programs,
like Greg Roelofs' rpng/wpng, that can be used just as good.)
Can and can not
---------------
As this is the small brother of the future PngPlus, I called this fellow
PngMinus. Because I started this development in good-old Turbo-C, I
avoided the use the netpbm library, which requires DOS extenders. Again,
another reason to call it PngMinus (minus netpbm :-). So, part of the
program are some elementary routines to read / write pgm- and ppm-files.
It does not read b&w pbm-files.
The downside of this approach is that you can not use them on images
that require blocks of memory bigger than 64k (the DOS version). For
larger images you will get an out-of-memory error.
As said before, PngMinus doesn't correct for gamma. When reading
png-files you can do this just as well by piping the output of png2pnm
to pnmgamma, one of the standard PbmPlus tools. This same scenario will
most probably also be followed in the full-blown future PngPlus, with
the addition of course of the possibility to create gamma-chunks when
writing png-files.
On the other hand it supports alpha-channels. When reading a png-image
you can write the alpha-channel into a pgm-file. And when creating an
RGB+A png-image, you just combine a ppm-file with a corresponding
pgm-file containing the alpha-channel. When reading, transparency chunks
are converted into an alpha-channel and from there on treated the same
way.
Finally you can opt for writing ascii or binary pgm- and ppm-files. When
the bit-depth is 16, the format will always be ascii.
Using it
--------
To distinguish them from pnmtopng and PngPlus, the utilities are named
png2pnm and pnm2png (2 instead of to). The input- and output-files can
be given as parameters or through redirection. Therefore the programs
can be part of a pipe.
To list the options type "png2pnm -h" or "pnm2png -h".
Just like Scandinavian furniture
--------------------------------
You have to put it together yourself. I did test the software under
MS-DOS with Turbo-C 3.0 and under RedHat Linux 4.2 with gcc. In both
cases I used libpng-1.0.4 and zlib-1.1.3. Later versions should be OK,
however some older libpng versions have a bug in pngmem.c when using
Turbo-C 3.0 (see below).
You can build it using one of the two makefiles (make -f makefile.###)
or use the batch/script files pngminus.bat / pngminus.sh. This assumes
that you have built the libraries in ../libpng and ../zlib. Using Linux,
make sure that you have built libpng with makefile.std and not
makefile.linux (also called .lnx in earlier versions of libpng). The
latter creates a .so shared-library, while the PngMinus makefile assumes
a normal .a static library.
If you create a ../pngsuite directory and then store the basn####.png
files from PngSuite (http://www.schaik.com/pngsuite/) in there, you can
test in one go the proper functioning of PngMinus, see png2pnm.bat and
pnm2png.bat (or the .sh versions).
Warranty
-------
Please, remember that this was just a small experiment to learn a few
things. It will have many unforeseen features <vbg>. Who said bugs? Use
it when you are in need for something simple or when you want to start
developing your own stuff.
The Turbo bug
-------------
** pngmem.old
hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);
hptr += 16L;
** pngmem.c
hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);
hptr = hptr + 16L;
**
** pngmem.old
png_ptr->offset_table_ptr[i] = (png_bytep)hptr;
hptr += (png_uint_32)65536L;
** pngmem.c
png_ptr->offset_table_ptr[i] = (png_bytep)hptr;
hptr = hptr + 65536L;
**
The end
-------
Willem van Schaik
mailto:willem@schaik.com
http://www.schaik.com/png/
-------
Oct 1999

View File

@@ -0,0 +1,65 @@
# Makefile for PngMinus (png2pnm and pnm2png)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
RM=rm -f
#PNGPATH = /usr/local
#PNGINC = -I$(PNGPATH)/include/libpng15
#PNGLIB = -L$(PNGPATH)/lib -lpng15
#PNGLIBS = $(PNGPATH)/lib/libpng15.a
PNGINC = -I../..
PNGLIB = -L../.. -lpng
PNGLIBS = ../../libpng.a
#ZPATH = /usr/local
#ZINC = -I$(ZPATH)/include
#ZLIB = -L$(ZPATH)/lib -lz
#ZLIBS = $(ZPATH)/lib/libz.a
ZINC = -I../../../zlib
ZLIB = -L../../../zlib -lz
ZLIBS = ../../../zlib/libz.a
CFLAGS=$(PNGINC) $(ZINC)
LDLIBS=$(PNGLIB) $(ZLIB)
LDLIBSS=$(PNGLIBS) $(ZLIBS)
C=.c
O=.o
L=.a
E=
# dependencies
#all: png2pnm$(E) pnm2png$(E)
all: png2pnm$(E) pnm2png$(E) png2pnm-static$(E) pnm2png-static$(E)
png2pnm$(O): png2pnm$(C)
$(CC) -c $(CFLAGS) png2pnm$(C)
png2pnm$(E): png2pnm$(O)
$(LD) $(LDFLAGS) -o png2pnm$(E) png2pnm$(O) $(LDLIBS) -lm
png2pnm-static$(E): png2pnm$(O)
$(LD) $(LDFLAGS) -o png2pnm-static$(E) png2pnm$(O) $(LDLIBSS) -lm
pnm2png$(O): pnm2png$(C)
$(CC) -c $(CFLAGS) pnm2png$(C)
pnm2png$(E): pnm2png$(O)
$(LD) $(LDFLAGS) -o pnm2png$(E) pnm2png$(O) $(LDLIBS) -lm
pnm2png-static$(E): pnm2png$(O)
$(LD) $(LDFLAGS) -o pnm2png-static$(E) pnm2png$(O) $(LDLIBSS) -lm
clean:
$(RM) png2pnm$(O)
$(RM) pnm2png$(O)
$(RM) png2pnm$(E)
$(RM) pnm2png$(E)
$(RM) png2pnm-static$(E)
$(RM) pnm2png-static$(E)
# End of makefile for png2pnm / pnm2png

View File

@@ -0,0 +1,38 @@
# Makefile for PngMinus (png2pnm and pnm2png)
# TurboC++ 3.0
CC=tcc -Ic:\tc3\inc
LD=tcc -Lc:\tc3\lib
LB=tlib
RM=del
CP=copy
MODEL=l
CCFLAGS=-O -m$(MODEL) -I..\libpng -I..\zlib
LDFLAGS=-m$(MODEL) -L..\libpng -L..\zlib
C=.c
O=.obj
L=.lib
E=.exe
# dependencies
all: png2pnm$(E) pnm2png$(E)
png2pnm$(O): png2pnm$(C)
$(CC) -c $(CCFLAGS) png2pnm$(C)
png2pnm$(E): png2pnm$(O)
$(LD) $(LDFLAGS) png2pnm$(O) libpng$(L) zlib$(L)
pnm2png$(O): pnm2png$(C)
$(CC) -c $(CCFLAGS) pnm2png$(C)
pnm2png$(E): pnm2png$(O)
$(LD) $(LDFLAGS) pnm2png$(O) libpng$(L) zlib$(L)
clean:
$(RM) *$(O)
$(RM) *$(E)
# End of makefile for png2pnm / pnm2png

View File

@@ -0,0 +1,92 @@
$!------------------------------------------------------------------------------
$! make Contrib programs of libpng under OpenVMS
$!
$!
$! Look for the compiler used
$!
$ zlibsrc = "[---.zlib]"
$ ccopt="/include=(''zlibsrc',[--])"
$ if f$getsyi("HW_MODEL").ge.1024
$ then
$ ccopt = "/prefix=all"+ccopt
$ comp = "__decc__=1"
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ else
$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
$ then
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs.""
$ then
$ comp = "__gcc__=1"
$ CC :== GCC
$ else
$ comp = "__vaxc__=1"
$ endif
$ else
$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include:
$ ccopt = "/decc/prefix=all"+ccopt
$ comp = "__decc__=1"
$ endif
$ endif
$ open/write lopt lib.opt
$ write lopt "[--]libpng.olb/lib"
$ write lopt "''zlibsrc'libz.olb/lib"
$ close lopt
$ open/write xopt x11.opt
$ write xopt "sys$library:decw$xlibshr.exe/share"
$ close xopt
$ write sys$output "Compiling PNG contrib programs ..."
$ write sys$output "Building pnm2png..."
$ CALL MAKE pnm2png.OBJ "cc ''CCOPT' pnm2png" -
pnm2png.c
$ call make pnm2png.exe -
"LINK pnm2png,lib.opt/opt" -
pnm2png.obj
$ write sys$output "Building png2pnm..."
$ CALL MAKE png2pnm.OBJ "cc ''CCOPT' png2pnm" -
png2pnm.c
$ call make png2pnm.exe -
"LINK png2pnm,lib.opt/opt" -
png2pnm.obj
$ exit
$!
$!
$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
$ V = 'F$Verify(0)
$! P1 = What we are trying to make
$! P2 = Command to make it
$! P3 - P8 What it depends on
$
$ If F$Search(P1) .Eqs. "" Then Goto Makeit
$ Time = F$CvTime(F$File(P1,"RDT"))
$arg=3
$Loop:
$ Argument = P'arg
$ If Argument .Eqs. "" Then Goto Exit
$ El=0
$Loop2:
$ File = F$Element(El," ",Argument)
$ If File .Eqs. " " Then Goto Endl
$ AFile = ""
$Loop3:
$ OFile = AFile
$ AFile = F$Search(File)
$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
$ Goto Loop3
$NextEL:
$ El = El + 1
$ Goto Loop2
$EndL:
$ arg=arg+1
$ If arg .Le. 8 Then Goto Loop
$ Goto Exit
$
$Makeit:
$ VV=F$VERIFY(0)
$ write sys$output P2
$ 'P2
$ VV='F$Verify(VV)
$Exit:
$ If V Then Set Verify
$ENDSUBROUTINE

View File

@@ -0,0 +1,41 @@
REM -- grayscale
png2pnm.exe -noraw ..\pngsuite\basn0g01.png basn0g01.pgm
png2pnm.exe -noraw ..\pngsuite\basn0g02.png basn0g02.pgm
png2pnm.exe -noraw ..\pngsuite\basn0g04.png basn0g04.pgm
png2pnm.exe -noraw ..\pngsuite\basn0g08.png basn0g08.pgm
png2pnm.exe -noraw ..\pngsuite\basn0g16.png basn0g16.pgm
REM -- full-color
png2pnm.exe -noraw ..\pngsuite\basn2c08.png basn2c08.ppm
png2pnm.exe -noraw ..\pngsuite\basn2c16.png basn2c16.ppm
REM -- palletted
png2pnm.exe -noraw ..\pngsuite\basn3p01.png basn3p01.ppm
png2pnm.exe -noraw ..\pngsuite\basn3p02.png basn3p02.ppm
png2pnm.exe -noraw ..\pngsuite\basn3p04.png basn3p04.ppm
png2pnm.exe -noraw ..\pngsuite\basn3p08.png basn3p08.ppm
REM -- gray with alpha-channel
png2pnm.exe -noraw ..\pngsuite\basn4a08.png basn4a08.pgm
png2pnm.exe -noraw ..\pngsuite\basn4a16.png basn4a16.pgm
REM -- color with alpha-channel
png2pnm.exe -noraw -alpha basn6a08.pgm ..\pngsuite\basn6a08.png basn6a08.ppm
png2pnm.exe -noraw -alpha basn6a16.pgm ..\pngsuite\basn6a16.png basn6a16.ppm
REM -- grayscale
png2pnm.exe -raw ..\pngsuite\basn0g01.png rawn0g01.pgm
png2pnm.exe -raw ..\pngsuite\basn0g02.png rawn0g02.pgm
png2pnm.exe -raw ..\pngsuite\basn0g04.png rawn0g04.pgm
png2pnm.exe -raw ..\pngsuite\basn0g08.png rawn0g08.pgm
png2pnm.exe -raw ..\pngsuite\basn0g16.png rawn0g16.pgm
REM -- full-color
png2pnm.exe -raw ..\pngsuite\basn2c08.png rawn2c08.ppm
png2pnm.exe -raw ..\pngsuite\basn2c16.png rawn2c16.ppm
REM -- palletted
png2pnm.exe -raw ..\pngsuite\basn3p01.png rawn3p01.ppm
png2pnm.exe -raw ..\pngsuite\basn3p02.png rawn3p02.ppm
png2pnm.exe -raw ..\pngsuite\basn3p04.png rawn3p04.ppm
png2pnm.exe -raw ..\pngsuite\basn3p08.png rawn3p08.ppm
REM -- gray with alpha-channel
png2pnm.exe -raw ..\pngsuite\basn4a08.png rawn4a08.pgm
png2pnm.exe -raw ..\pngsuite\basn4a16.png rawn4a16.pgm
REM -- color with alpha-channel
png2pnm.exe -noraw -alpha rawn6a08.pgm ..\pngsuite\basn6a08.png rawn6a08.ppm
png2pnm.exe -noraw -alpha rawn6a16.pgm ..\pngsuite\basn6a16.png rawn6a16.ppm

430
contrib/pngminus/png2pnm.c Normal file
View File

@@ -0,0 +1,430 @@
/*
* png2pnm.c --- conversion from PNG-file to PGM/PPM-file
* copyright (C) 1999 by Willem van Schaik <willem@schaik.com>
*
* version 1.0 - 1999.10.15 - First version.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear in
* supporting documentation. This software is provided "as is" without
* express or implied warranty.
*/
#include <stdio.h>
#include <stdlib.h>
#ifdef __TURBOC__
#include <mem.h>
#include <fcntl.h>
#endif
#ifndef BOOL
#define BOOL unsigned char
#endif
#ifndef TRUE
#define TRUE (BOOL) 1
#endif
#ifndef FALSE
#define FALSE (BOOL) 0
#endif
#ifdef __TURBOC__
#define STDIN 0
#define STDOUT 1
#define STDERR 2
#endif
/* to make png2pnm verbose so we can find problems (needs to be before png.h) */
#ifndef PNG_DEBUG
#define PNG_DEBUG 0
#endif
#include "png.h"
/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */
#ifndef png_jmpbuf
# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
#endif
/* function prototypes */
int main (int argc, char *argv[]);
void usage ();
BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file, BOOL raw, BOOL alpha);
/*
* main
*/
int main(int argc, char *argv[])
{
FILE *fp_rd = stdin;
FILE *fp_wr = stdout;
FILE *fp_al = NULL;
BOOL raw = TRUE;
BOOL alpha = FALSE;
int argi;
for (argi = 1; argi < argc; argi++)
{
if (argv[argi][0] == '-')
{
switch (argv[argi][1])
{
case 'n':
raw = FALSE;
break;
case 'r':
raw = TRUE;
break;
case 'a':
alpha = TRUE;
argi++;
if ((fp_al = fopen (argv[argi], "wb")) == NULL)
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: can not create alpha-channel file %s\n", argv[argi]);
exit (1);
}
break;
case 'h':
case '?':
usage();
exit(0);
break;
default:
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: unknown option %s\n", argv[argi]);
usage();
exit(1);
break;
} /* end switch */
}
else if (fp_rd == stdin)
{
if ((fp_rd = fopen (argv[argi], "rb")) == NULL)
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: file %s does not exist\n", argv[argi]);
exit (1);
}
}
else if (fp_wr == stdout)
{
if ((fp_wr = fopen (argv[argi], "wb")) == NULL)
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: can not create file %s\n", argv[argi]);
exit (1);
}
}
else
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: too many parameters\n");
usage();
exit(1);
}
} /* end for */
#ifdef __TURBOC__
/* set stdin/stdout if required to binary */
if (fp_rd == stdin)
{
setmode (STDIN, O_BINARY);
}
if ((raw) && (fp_wr == stdout))
{
setmode (STDOUT, O_BINARY);
}
#endif
/* call the conversion program itself */
if (png2pnm (fp_rd, fp_wr, fp_al, raw, alpha) == FALSE)
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: unsuccessful conversion of PNG-image\n");
exit(1);
}
/* close input file */
fclose (fp_rd);
/* close output file */
fclose (fp_wr);
/* close alpha file */
if (alpha)
fclose (fp_al);
return 0;
}
/*
* usage
*/
void usage()
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, " by Willem van Schaik, 1999\n");
#ifdef __TURBOC__
fprintf (stderr, " for Turbo-C and Borland-C compilers\n");
#else
fprintf (stderr, " for Linux (and Unix) compilers\n");
#endif
fprintf (stderr, "Usage: png2pnm [options] <file>.png [<file>.pnm]\n");
fprintf (stderr, " or: ... | png2pnm [options]\n");
fprintf (stderr, "Options:\n");
fprintf (stderr, " -r[aw] write pnm-file in binary format (P4/P5/P6) (default)\n");
fprintf (stderr, " -n[oraw] write pnm-file in ascii format (P1/P2/P3)\n");
fprintf (stderr, " -a[lpha] <file>.pgm write PNG alpha channel as pgm-file\n");
fprintf (stderr, " -h | -? print this help-information\n");
}
/*
* png2pnm
*/
BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file, BOOL raw, BOOL alpha)
{
png_struct *png_ptr = NULL;
png_info *info_ptr = NULL;
png_byte buf[8];
png_byte *png_pixels = NULL;
png_byte **row_pointers = NULL;
png_byte *pix_ptr = NULL;
png_uint_32 row_bytes;
png_uint_32 width;
png_uint_32 height;
int bit_depth;
int channels;
int color_type;
int alpha_present;
int row, col;
int ret;
int i;
long dep_16;
/* read and check signature in PNG file */
ret = fread (buf, 1, 8, png_file);
if (ret != 8)
return FALSE;
ret = png_sig_cmp (buf, 0, 8);
if (ret)
return FALSE;
/* create png and info structures */
png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
NULL, NULL, NULL);
if (!png_ptr)
return FALSE; /* out of memory */
info_ptr = png_create_info_struct (png_ptr);
if (!info_ptr)
{
png_destroy_read_struct (&png_ptr, NULL, NULL);
return FALSE; /* out of memory */
}
if (setjmp (png_jmpbuf(png_ptr)))
{
png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
return FALSE;
}
/* set up the input control for C streams */
png_init_io (png_ptr, png_file);
png_set_sig_bytes (png_ptr, 8); /* we already read the 8 signature bytes */
/* read the file information */
png_read_info (png_ptr, info_ptr);
/* get size and bit-depth of the PNG-image */
png_get_IHDR (png_ptr, info_ptr,
&width, &height, &bit_depth, &color_type,
NULL, NULL, NULL);
/* set-up the transformations */
/* transform paletted images into full-color rgb */
if (color_type == PNG_COLOR_TYPE_PALETTE)
png_set_expand (png_ptr);
/* expand images to bit-depth 8 (only applicable for grayscale images) */
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
png_set_expand (png_ptr);
/* transform transparency maps into full alpha-channel */
if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
png_set_expand (png_ptr);
#ifdef NJET
/* downgrade 16-bit images to 8 bit */
if (bit_depth == 16)
png_set_strip_16 (png_ptr);
/* transform grayscale images into full-color */
if (color_type == PNG_COLOR_TYPE_GRAY ||
color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb (png_ptr);
/* only if file has a file gamma, we do a correction */
if (png_get_gAMA (png_ptr, info_ptr, &file_gamma))
png_set_gamma (png_ptr, (double) 2.2, file_gamma);
#endif
/* all transformations have been registered; now update info_ptr data,
* get rowbytes and channels, and allocate image memory */
png_read_update_info (png_ptr, info_ptr);
/* get the new color-type and bit-depth (after expansion/stripping) */
png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
NULL, NULL, NULL);
/* check for 16-bit files */
if (bit_depth == 16)
{
raw = FALSE;
#ifdef __TURBOC__
pnm_file->flags &= ~((unsigned) _F_BIN);
#endif
}
/* calculate new number of channels and store alpha-presence */
if (color_type == PNG_COLOR_TYPE_GRAY)
channels = 1;
else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
channels = 2;
else if (color_type == PNG_COLOR_TYPE_RGB)
channels = 3;
else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
channels = 4;
else
channels = 0; /* should never happen */
alpha_present = (channels - 1) % 2;
/* check if alpha is expected to be present in file */
if (alpha && !alpha_present)
{
fprintf (stderr, "PNG2PNM\n");
fprintf (stderr, "Error: PNG-file doesn't contain alpha channel\n");
exit (1);
}
/* row_bytes is the width x number of channels x (bit-depth / 8) */
row_bytes = png_get_rowbytes (png_ptr, info_ptr);
if ((png_pixels = (png_byte *) malloc (row_bytes * height * sizeof (png_byte))) == NULL) {
png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
return FALSE;
}
if ((row_pointers = (png_byte **) malloc (height * sizeof (png_bytep))) == NULL)
{
png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
free (png_pixels);
png_pixels = NULL;
return FALSE;
}
/* set the individual row_pointers to point at the correct offsets */
for (i = 0; i < (height); i++)
row_pointers[i] = png_pixels + i * row_bytes;
/* now we can go ahead and just read the whole image */
png_read_image (png_ptr, row_pointers);
/* read rest of file, and get additional chunks in info_ptr - REQUIRED */
png_read_end (png_ptr, info_ptr);
/* clean up after the read, and free any memory allocated - REQUIRED */
png_destroy_read_struct (&png_ptr, &info_ptr, (png_infopp) NULL);
/* write header of PNM file */
if ((color_type == PNG_COLOR_TYPE_GRAY) ||
(color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
{
fprintf (pnm_file, "%s\n", (raw) ? "P5" : "P2");
fprintf (pnm_file, "%d %d\n", (int) width, (int) height);
fprintf (pnm_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
}
else if ((color_type == PNG_COLOR_TYPE_RGB) ||
(color_type == PNG_COLOR_TYPE_RGB_ALPHA))
{
fprintf (pnm_file, "%s\n", (raw) ? "P6" : "P3");
fprintf (pnm_file, "%d %d\n", (int) width, (int) height);
fprintf (pnm_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
}
/* write header of PGM file with alpha channel */
if ((alpha) &&
((color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ||
(color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
{
fprintf (alpha_file, "%s\n", (raw) ? "P5" : "P2");
fprintf (alpha_file, "%d %d\n", (int) width, (int) height);
fprintf (alpha_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
}
/* write data to PNM file */
pix_ptr = png_pixels;
for (row = 0; row < height; row++)
{
for (col = 0; col < width; col++)
{
for (i = 0; i < (channels - alpha_present); i++)
{
if (raw)
fputc ((int) *pix_ptr++ , pnm_file);
else
if (bit_depth == 16){
dep_16 = (long) *pix_ptr++;
fprintf (pnm_file, "%ld ", (dep_16 << 8) + ((long) *pix_ptr++));
}
else
fprintf (pnm_file, "%ld ", (long) *pix_ptr++);
}
if (alpha_present)
{
if (!alpha)
{
pix_ptr++; /* alpha */
if (bit_depth == 16)
pix_ptr++;
}
else /* output alpha-channel as pgm file */
{
if (raw)
fputc ((int) *pix_ptr++ , alpha_file);
else
if (bit_depth == 16){
dep_16 = (long) *pix_ptr++;
fprintf (alpha_file, "%ld ", (dep_16 << 8) + (long) *pix_ptr++);
}
else
fprintf (alpha_file, "%ld ", (long) *pix_ptr++);
}
} /* if alpha_present */
if (!raw)
if (col % 4 == 3)
fprintf (pnm_file, "\n");
} /* end for col */
if (!raw)
if (col % 4 != 0)
fprintf (pnm_file, "\n");
} /* end for row */
if (row_pointers != (unsigned char**) NULL)
free (row_pointers);
if (png_pixels != (unsigned char*) NULL)
free (png_pixels);
return TRUE;
} /* end of source */

View File

@@ -0,0 +1,42 @@
#!/bin/sh
# -- grayscale
./png2pnm -noraw ../pngsuite/basn0g01.png basn0g01.pgm
./png2pnm -noraw ../pngsuite/basn0g02.png basn0g02.pgm
./png2pnm -noraw ../pngsuite/basn0g04.png basn0g04.pgm
./png2pnm -noraw ../pngsuite/basn0g08.png basn0g08.pgm
./png2pnm -noraw ../pngsuite/basn0g16.png basn0g16.pgm
# -- full-color
./png2pnm -noraw ../pngsuite/basn2c08.png basn2c08.ppm
./png2pnm -noraw ../pngsuite/basn2c16.png basn2c16.ppm
# -- palletted
./png2pnm -noraw ../pngsuite/basn3p01.png basn3p01.ppm
./png2pnm -noraw ../pngsuite/basn3p02.png basn3p02.ppm
./png2pnm -noraw ../pngsuite/basn3p04.png basn3p04.ppm
./png2pnm -noraw ../pngsuite/basn3p08.png basn3p08.ppm
# -- gray with alpha-channel
./png2pnm -noraw ../pngsuite/basn4a08.png basn4a08.pgm
./png2pnm -noraw ../pngsuite/basn4a16.png basn4a16.pgm
# -- color with alpha-channel
./png2pnm -noraw -alpha basn6a08.pgm ../pngsuite/basn6a08.png basn6a08.ppm
./png2pnm -noraw -alpha basn6a16.pgm ../pngsuite/basn6a16.png basn6a16.ppm
# -- grayscale
./png2pnm -raw ../pngsuite/basn0g01.png rawn0g01.pgm
./png2pnm -raw ../pngsuite/basn0g02.png rawn0g02.pgm
./png2pnm -raw ../pngsuite/basn0g04.png rawn0g04.pgm
./png2pnm -raw ../pngsuite/basn0g08.png rawn0g08.pgm
./png2pnm -raw ../pngsuite/basn0g16.png rawn0g16.pgm
# -- full-color
./png2pnm -raw ../pngsuite/basn2c08.png rawn2c08.ppm
./png2pnm -raw ../pngsuite/basn2c16.png rawn2c16.ppm
# -- palletted
./png2pnm -raw ../pngsuite/basn3p01.png rawn3p01.ppm
./png2pnm -raw ../pngsuite/basn3p02.png rawn3p02.ppm
./png2pnm -raw ../pngsuite/basn3p04.png rawn3p04.ppm
./png2pnm -raw ../pngsuite/basn3p08.png rawn3p08.ppm
# -- gray with alpha-channel
./png2pnm -raw ../pngsuite/basn4a08.png rawn4a08.pgm
./png2pnm -raw ../pngsuite/basn4a16.png rawn4a16.pgm
# -- color with alpha-channel
./png2pnm -noraw -alpha rawn6a08.pgm ../pngsuite/basn6a08.png rawn6a08.ppm
./png2pnm -noraw -alpha rawn6a16.pgm ../pngsuite/basn6a16.png rawn6a16.ppm

View File

@@ -0,0 +1,4 @@
make -f makefile.tc3
call png2pnm.bat
call pnm2png.bat

View File

@@ -0,0 +1,5 @@
#!/bin/sh
make -f makefile.std
sh png2pnm.sh
sh pnm2png.sh

View File

@@ -0,0 +1,41 @@
REM -- grayscale
pnm2png.exe basn0g01.pgm basn0g01.png
pnm2png.exe basn0g02.pgm basn0g02.png
pnm2png.exe basn0g04.pgm basn0g04.png
pnm2png.exe basn0g08.pgm basn0g08.png
pnm2png.exe basn0g16.pgm basn0g16.png
REM -- full-color
pnm2png.exe basn2c08.ppm basn2c08.png
pnm2png.exe basn2c16.ppm basn2c16.png
REM -- palletted
pnm2png.exe basn3p01.ppm basn3p01.png
pnm2png.exe basn3p02.ppm basn3p02.png
pnm2png.exe basn3p04.ppm basn3p04.png
pnm2png.exe basn3p08.ppm basn3p08.png
REM -- gray with alpha-channel
pnm2png.exe -alpha basn6a08.pgm basn4a08.pgm basn4a08.png
pnm2png.exe -alpha basn6a16.pgm basn4a16.pgm basn4a16.png
REM -- color with alpha-channel
pnm2png.exe -alpha basn6a08.pgm basn6a08.ppm basn6a08.png
pnm2png.exe -alpha basn6a16.pgm basn6a16.ppm basn6a16.png
REM -- grayscale
pnm2png.exe rawn0g01.pgm rawn0g01.png
pnm2png.exe rawn0g02.pgm rawn0g02.png
pnm2png.exe rawn0g04.pgm rawn0g04.png
pnm2png.exe rawn0g08.pgm rawn0g08.png
pnm2png.exe rawn0g16.pgm rawn0g16.png
REM -- full-color
pnm2png.exe rawn2c08.ppm rawn2c08.png
pnm2png.exe rawn2c16.ppm rawn2c16.png
REM -- palletted
pnm2png.exe rawn3p01.ppm rawn3p01.png
pnm2png.exe rawn3p02.ppm rawn3p02.png
pnm2png.exe rawn3p04.ppm rawn3p04.png
pnm2png.exe rawn3p08.ppm rawn3p08.png
REM -- gray with alpha-channel
pnm2png.exe -alpha rawn6a08.pgm rawn4a08.pgm rawn4a08.png
pnm2png.exe -alpha rawn6a16.pgm rawn4a16.pgm rawn4a16.png
REM -- color with alpha-channel
pnm2png.exe -alpha rawn6a08.pgm rawn6a08.ppm rawn6a08.png
pnm2png.exe -alpha rawn6a16.pgm rawn6a16.ppm rawn6a16.png

533
contrib/pngminus/pnm2png.c Normal file
View File

@@ -0,0 +1,533 @@
/*
* pnm2png.c --- conversion from PBM/PGM/PPM-file to PNG-file
* copyright (C) 1999 by Willem van Schaik <willem@schaik.com>
*
* version 1.0 - 1999.10.15 - First version.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear in
* supporting documentation. This software is provided "as is" without
* express or implied warranty.
*/
#include <stdio.h>
#include <stdlib.h>
#ifdef __TURBOC__
#include <mem.h>
#include <fcntl.h>
#endif
#ifndef BOOL
#define BOOL unsigned char
#endif
#ifndef TRUE
#define TRUE (BOOL) 1
#endif
#ifndef FALSE
#define FALSE (BOOL) 0
#endif
#define STDIN 0
#define STDOUT 1
#define STDERR 2
/* to make pnm2png verbose so we can find problems (needs to be before png.h) */
#ifndef PNG_DEBUG
#define PNG_DEBUG 0
#endif
#include "png.h"
/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */
#ifndef png_jmpbuf
# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
#endif
/* function prototypes */
int main (int argc, char *argv[]);
void usage ();
BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace, BOOL alpha);
void get_token(FILE *pnm_file, char *token);
png_uint_32 get_data (FILE *pnm_file, int depth);
png_uint_32 get_value (FILE *pnm_file, int depth);
/*
* main
*/
int main(int argc, char *argv[])
{
FILE *fp_rd = stdin;
FILE *fp_al = NULL;
FILE *fp_wr = stdout;
BOOL interlace = FALSE;
BOOL alpha = FALSE;
int argi;
for (argi = 1; argi < argc; argi++)
{
if (argv[argi][0] == '-')
{
switch (argv[argi][1])
{
case 'i':
interlace = TRUE;
break;
case 'a':
alpha = TRUE;
argi++;
if ((fp_al = fopen (argv[argi], "rb")) == NULL)
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: alpha-channel file %s does not exist\n",
argv[argi]);
exit (1);
}
break;
case 'h':
case '?':
usage();
exit(0);
break;
default:
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: unknown option %s\n", argv[argi]);
usage();
exit(1);
break;
} /* end switch */
}
else if (fp_rd == stdin)
{
if ((fp_rd = fopen (argv[argi], "rb")) == NULL)
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: file %s does not exist\n", argv[argi]);
exit (1);
}
}
else if (fp_wr == stdout)
{
if ((fp_wr = fopen (argv[argi], "wb")) == NULL)
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: can not create PNG-file %s\n", argv[argi]);
exit (1);
}
}
else
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: too many parameters\n");
usage();
exit (1);
}
} /* end for */
#ifdef __TURBOC__
/* set stdin/stdout to binary, we're reading the PNM always! in binary format */
if (fp_rd == stdin)
{
setmode (STDIN, O_BINARY);
}
if (fp_wr == stdout)
{
setmode (STDOUT, O_BINARY);
}
#endif
/* call the conversion program itself */
if (pnm2png (fp_rd, fp_wr, fp_al, interlace, alpha) == FALSE)
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, "Error: unsuccessful converting to PNG-image\n");
exit (1);
}
/* close input file */
fclose (fp_rd);
/* close output file */
fclose (fp_wr);
/* close alpha file */
if (alpha)
fclose (fp_al);
return 0;
}
/*
* usage
*/
void usage()
{
fprintf (stderr, "PNM2PNG\n");
fprintf (stderr, " by Willem van Schaik, 1999\n");
#ifdef __TURBOC__
fprintf (stderr, " for Turbo-C and Borland-C compilers\n");
#else
fprintf (stderr, " for Linux (and Unix) compilers\n");
#endif
fprintf (stderr, "Usage: pnm2png [options] <file>.<pnm> [<file>.png]\n");
fprintf (stderr, " or: ... | pnm2png [options]\n");
fprintf (stderr, "Options:\n");
fprintf (stderr, " -i[nterlace] write png-file with interlacing on\n");
fprintf (stderr, " -a[lpha] <file>.pgm read PNG alpha channel as pgm-file\n");
fprintf (stderr, " -h | -? print this help-information\n");
}
/*
* pnm2png
*/
BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace, BOOL alpha)
{
png_struct *png_ptr = NULL;
png_info *info_ptr = NULL;
png_byte *png_pixels = NULL;
png_byte **row_pointers = NULL;
png_byte *pix_ptr = NULL;
png_uint_32 row_bytes;
char type_token[16];
char width_token[16];
char height_token[16];
char maxval_token[16];
int color_type;
png_uint_32 width, alpha_width;
png_uint_32 height, alpha_height;
png_uint_32 maxval;
int bit_depth = 0;
int channels;
int alpha_depth = 0;
int alpha_present;
int row, col;
BOOL raw, alpha_raw = FALSE;
png_uint_32 tmp16;
int i;
/* read header of PNM file */
get_token(pnm_file, type_token);
if (type_token[0] != 'P')
{
return FALSE;
}
else if ((type_token[1] == '1') || (type_token[1] == '4'))
{
raw = (type_token[1] == '4');
color_type = PNG_COLOR_TYPE_GRAY;
bit_depth = 1;
}
else if ((type_token[1] == '2') || (type_token[1] == '5'))
{
raw = (type_token[1] == '5');
color_type = PNG_COLOR_TYPE_GRAY;
get_token(pnm_file, width_token);
sscanf (width_token, "%lu", &width);
get_token(pnm_file, height_token);
sscanf (height_token, "%lu", &height);
get_token(pnm_file, maxval_token);
sscanf (maxval_token, "%lu", &maxval);
if (maxval <= 1)
bit_depth = 1;
else if (maxval <= 3)
bit_depth = 2;
else if (maxval <= 15)
bit_depth = 4;
else if (maxval <= 255)
bit_depth = 8;
else /* if (maxval <= 65535) */
bit_depth = 16;
}
else if ((type_token[1] == '3') || (type_token[1] == '6'))
{
raw = (type_token[1] == '6');
color_type = PNG_COLOR_TYPE_RGB;
get_token(pnm_file, width_token);
sscanf (width_token, "%lu", &width);
get_token(pnm_file, height_token);
sscanf (height_token, "%lu", &height);
get_token(pnm_file, maxval_token);
sscanf (maxval_token, "%lu", &maxval);
if (maxval <= 1)
bit_depth = 1;
else if (maxval <= 3)
bit_depth = 2;
else if (maxval <= 15)
bit_depth = 4;
else if (maxval <= 255)
bit_depth = 8;
else /* if (maxval <= 65535) */
bit_depth = 16;
}
else
{
return FALSE;
}
/* read header of PGM file with alpha channel */
if (alpha)
{
if (color_type == PNG_COLOR_TYPE_GRAY)
color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
if (color_type == PNG_COLOR_TYPE_RGB)
color_type = PNG_COLOR_TYPE_RGB_ALPHA;
get_token(alpha_file, type_token);
if (type_token[0] != 'P')
{
return FALSE;
}
else if ((type_token[1] == '2') || (type_token[1] == '5'))
{
alpha_raw = (type_token[1] == '5');
get_token(alpha_file, width_token);
sscanf (width_token, "%lu", &alpha_width);
if (alpha_width != width)
return FALSE;
get_token(alpha_file, height_token);
sscanf (height_token, "%lu", &alpha_height);
if (alpha_height != height)
return FALSE;
get_token(alpha_file, maxval_token);
sscanf (maxval_token, "%lu", &maxval);
if (maxval <= 1)
alpha_depth = 1;
else if (maxval <= 3)
alpha_depth = 2;
else if (maxval <= 15)
alpha_depth = 4;
else if (maxval <= 255)
alpha_depth = 8;
else /* if (maxval <= 65535) */
alpha_depth = 16;
if (alpha_depth != bit_depth)
return FALSE;
}
else
{
return FALSE;
}
} /* end if alpha */
/* calculate the number of channels and store alpha-presence */
if (color_type == PNG_COLOR_TYPE_GRAY)
channels = 1;
else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
channels = 2;
else if (color_type == PNG_COLOR_TYPE_RGB)
channels = 3;
else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
channels = 4;
else
channels = 0; /* should not happen */
alpha_present = (channels - 1) % 2;
/* row_bytes is the width x number of channels x (bit-depth / 8) */
row_bytes = width * channels * ((bit_depth <= 8) ? 1 : 2);
if ((png_pixels = (png_byte *) malloc (row_bytes * height * sizeof (png_byte))) == NULL)
return FALSE;
/* read data from PNM file */
pix_ptr = png_pixels;
for (row = 0; row < height; row++)
{
for (col = 0; col < width; col++)
{
for (i = 0; i < (channels - alpha_present); i++)
{
if (raw)
*pix_ptr++ = get_data (pnm_file, bit_depth);
else
if (bit_depth <= 8)
*pix_ptr++ = get_value (pnm_file, bit_depth);
else
{
tmp16 = get_value (pnm_file, bit_depth);
*pix_ptr = (png_byte) ((tmp16 >> 8) & 0xFF);
pix_ptr++;
*pix_ptr = (png_byte) (tmp16 & 0xFF);
pix_ptr++;
}
}
if (alpha) /* read alpha-channel from pgm file */
{
if (alpha_raw)
*pix_ptr++ = get_data (alpha_file, alpha_depth);
else
if (alpha_depth <= 8)
*pix_ptr++ = get_value (alpha_file, bit_depth);
else
{
tmp16 = get_value (alpha_file, bit_depth);
*pix_ptr++ = (png_byte) ((tmp16 >> 8) & 0xFF);
*pix_ptr++ = (png_byte) (tmp16 & 0xFF);
}
} /* if alpha */
} /* end for col */
} /* end for row */
/* prepare the standard PNG structures */
png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!png_ptr)
{
return FALSE;
}
info_ptr = png_create_info_struct (png_ptr);
if (!info_ptr)
{
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
return FALSE;
}
/* setjmp() must be called in every function that calls a PNG-reading libpng function */
if (setjmp (png_jmpbuf(png_ptr)))
{
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
return FALSE;
}
/* initialize the png structure */
png_init_io (png_ptr, png_file);
/* we're going to write more or less the same PNG as the input file */
png_set_IHDR (png_ptr, info_ptr, width, height, bit_depth, color_type,
(!interlace) ? PNG_INTERLACE_NONE : PNG_INTERLACE_ADAM7,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
/* write the file header information */
png_write_info (png_ptr, info_ptr);
/* if needed we will allocate memory for an new array of row-pointers */
if (row_pointers == (unsigned char**) NULL)
{
if ((row_pointers = (png_byte **) malloc (height * sizeof (png_bytep))) == NULL)
{
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
return FALSE;
}
}
/* set the individual row_pointers to point at the correct offsets */
for (i = 0; i < (height); i++)
row_pointers[i] = png_pixels + i * row_bytes;
/* write out the entire image data in one call */
png_write_image (png_ptr, row_pointers);
/* write the additional chuncks to the PNG file (not really needed) */
png_write_end (png_ptr, info_ptr);
/* clean up after the write, and free any memory allocated */
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
if (row_pointers != (unsigned char**) NULL)
free (row_pointers);
if (png_pixels != (unsigned char*) NULL)
free (png_pixels);
return TRUE;
} /* end of pnm2png */
/*
* get_token() - gets the first string after whitespace
*/
void get_token(FILE *pnm_file, char *token)
{
int i = 0;
/* remove white-space */
do
{
token[i] = (unsigned char) fgetc (pnm_file);
}
while ((token[i] == '\n') || (token[i] == '\r') || (token[i] == ' '));
/* read string */
do
{
i++;
token[i] = (unsigned char) fgetc (pnm_file);
}
while ((token[i] != '\n') && (token[i] != '\r') && (token[i] != ' '));
token[i] = '\0';
return;
}
/*
* get_data() - takes first byte and converts into next pixel value,
* taking as much bits as defined by bit-depth and
* using the bit-depth to fill up a byte (0Ah -> AAh)
*/
png_uint_32 get_data (FILE *pnm_file, int depth)
{
static int bits_left = 0;
static int old_value = 0;
static int mask = 0;
int i;
png_uint_32 ret_value;
if (mask == 0)
for (i = 0; i < depth; i++)
mask = (mask >> 1) | 0x80;
if (bits_left <= 0)
{
old_value = fgetc (pnm_file);
bits_left = 8;
}
ret_value = old_value & mask;
for (i = 1; i < (8 / depth); i++)
ret_value = ret_value || (ret_value >> depth);
old_value = (old_value << depth) & 0xFF;
bits_left -= depth;
return ret_value;
}
/*
* get_value() - takes first (numeric) string and converts into number,
* using the bit-depth to fill up a byte (0Ah -> AAh)
*/
png_uint_32 get_value (FILE *pnm_file, int depth)
{
static png_uint_32 mask = 0;
png_byte token[16];
png_uint_32 ret_value;
int i = 0;
if (mask == 0)
for (i = 0; i < depth; i++)
mask = (mask << 1) | 0x01;
get_token (pnm_file, (char *) token);
sscanf ((const char *) token, "%lu", &ret_value);
ret_value &= mask;
if (depth < 8)
for (i = 0; i < (8 / depth); i++)
ret_value = (ret_value << depth) || ret_value;
return ret_value;
}
/* end of source */

View File

@@ -0,0 +1,42 @@
#!/bin/sh
# -- grayscale
./pnm2png basn0g01.pgm basn0g01.png
./pnm2png basn0g02.pgm basn0g02.png
./pnm2png basn0g04.pgm basn0g04.png
./pnm2png basn0g08.pgm basn0g08.png
./pnm2png basn0g16.pgm basn0g16.png
# -- full-color
./pnm2png basn2c08.ppm basn2c08.png
./pnm2png basn2c16.ppm basn2c16.png
# -- palletted
./pnm2png basn3p01.ppm basn3p01.png
./pnm2png basn3p02.ppm basn3p02.png
./pnm2png basn3p04.ppm basn3p04.png
./pnm2png basn3p08.ppm basn3p08.png
# -- gray with alpha-channel
./pnm2png -alpha basn6a08.pgm basn4a08.pgm basn4a08.png
./pnm2png -alpha basn6a16.pgm basn4a16.pgm basn4a16.png
# -- color with alpha-channel
./pnm2png -alpha basn6a08.pgm basn6a08.ppm basn6a08.png
./pnm2png -alpha basn6a16.pgm basn6a16.ppm basn6a16.png
# -- grayscale
./pnm2png rawn0g01.pgm rawn0g01.png
./pnm2png rawn0g02.pgm rawn0g02.png
./pnm2png rawn0g04.pgm rawn0g04.png
./pnm2png rawn0g08.pgm rawn0g08.png
./pnm2png rawn0g16.pgm rawn0g16.png
# -- full-color
./pnm2png rawn2c08.ppm rawn2c08.png
./pnm2png rawn2c16.ppm rawn2c16.png
# -- palletted
./pnm2png rawn3p01.ppm rawn3p01.png
./pnm2png rawn3p02.ppm rawn3p02.png
./pnm2png rawn3p04.ppm rawn3p04.png
./pnm2png rawn3p08.ppm rawn3p08.png
# -- gray with alpha-channel
./pnm2png -alpha rawn6a08.pgm rawn4a08.pgm rawn4a08.png
./pnm2png -alpha rawn6a16.pgm rawn4a16.pgm rawn4a16.png
# -- color with alpha-channel
./pnm2png -alpha rawn6a08.pgm rawn6a08.ppm rawn6a08.png
./pnm2png -alpha rawn6a16.pgm rawn6a16.ppm rawn6a16.png

105
contrib/pngsuite/README Normal file
View File

@@ -0,0 +1,105 @@
pngsuite
--------
(c) Willem van Schaik, 1999, 2011, 2012
Two images are by Glenn Randers-Pehrson, 2012
Permission to use, copy, modify, and distribute these images for any
purpose and without fee is hereby granted.
The 15 "bas*.png" images are part of the much larger PngSuite test-set of
images, available for developers of PNG supporting software. The
complete set, available at http:/www.schaik.com/pngsuite/, contains
a variety of images to test interlacing, gamma settings, ancillary
chunks, etc.
The "ft*.png" images are "free/libre" replacements for the transparent
corresponding t*.png images in the PngSuite.
The images in this directory represent the basic PNG color-types:
grayscale (1-16 bit deep), full color (8 or 16 bit), paletted
(1-8 bit) and grayscale or color images with alpha channel. You
can use them to test the proper functioning of PNG software.
filename depth type
------------ ------ --------------
basn0g01.png 1-bit grayscale
basn0g02.png 2-bit grayscale
basn0g04.png 4-bit grayscale
basn0g08.png 8-bit grayscale
basn0g16.png 16-bit grayscale
basn2c08.png 8-bit truecolor
basn2c16.png 16-bit truecolor
basn3p01.png 1-bit paletted
basn3p02.png 2-bit paletted
basn3p04.png 4-bit paletted
basn3p08.png 8-bit paletted
basn4a08.png 8-bit gray with alpha
basn4a16.png 16-bit gray with alpha
basn6a08.png 8-bit RGBA
basn6a16.png 16-bit RGBA
ftbbn0g01.png 1-bit grayscale, black bKGD
ftbbn0g02.png 2-bit grayscale, black bKGD
ftbbn0g04.png 4-bit grayscale, black bKGD
ftbbn2c16.png 16-bit truecolor, black bKGD
ftbbn3p08.png 8-bit paletted, black bKGD
ftbgn2c16.png 16-bit truecolor, gray bKGD
ftbgn3p08.png 8-bit paletted, gray bKGD
ftbrn2c08.png 8-bit truecolor, red bKGD
ftbwn0g16.png 16-bit gray, white bKGD
ftbwn3p08.png 8-bit paletted, white bKGD
ftbyn3p08.png 8-bit paletted, yellow bKGD
ftp0n0g08.png 8-bit grayscale, opaque
ftp0n2c08.png 8-bit truecolor, opaque
ftp0n3p08.png 8-bit paletted, opaque
ftp1n3p08.png 8-bit paletted, no bKGD
Here is the correct result of typing "pngtest -m bas*.png" in
this directory:
Testing basn0g01.png: PASS (524 zero samples)
Filter 0 was used 32 times
Testing basn0g02.png: PASS (448 zero samples)
Filter 0 was used 32 times
Testing basn0g04.png: PASS (520 zero samples)
Filter 0 was used 32 times
Testing basn0g08.png: PASS (3 zero samples)
Filter 1 was used 9 times
Filter 4 was used 23 times
Testing basn0g16.png: PASS (1 zero samples)
Filter 1 was used 1 times
Filter 2 was used 31 times
Testing basn2c08.png: PASS (6 zero samples)
Filter 1 was used 5 times
Filter 4 was used 27 times
Testing basn2c16.png: PASS (592 zero samples)
Filter 1 was used 1 times
Filter 4 was used 31 times
Testing basn3p01.png: PASS (512 zero samples)
Filter 0 was used 32 times
Testing basn3p02.png: PASS (448 zero samples)
Filter 0 was used 32 times
Testing basn3p04.png: PASS (544 zero samples)
Filter 0 was used 32 times
Testing basn3p08.png: PASS (4 zero samples)
Filter 0 was used 32 times
Testing basn4a08.png: PASS (32 zero samples)
Filter 1 was used 1 times
Filter 4 was used 31 times
Testing basn4a16.png: PASS (64 zero samples)
Filter 0 was used 1 times
Filter 1 was used 2 times
Filter 2 was used 1 times
Filter 4 was used 28 times
Testing basn6a08.png: PASS (160 zero samples)
Filter 1 was used 1 times
Filter 4 was used 31 times
Testing basn6a16.png: PASS (1072 zero samples)
Filter 1 was used 4 times
Filter 4 was used 28 times
libpng passes test
Willem van Schaik
<willem@schaik.com>
October 1999

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

451
contrib/visupng/PngFile.c Normal file
View File

@@ -0,0 +1,451 @@
/*-------------------------------------
* PNGFILE.C -- Image File Functions
*-------------------------------------
*
* Copyright 2000, Willem van Schaik.
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
*/
#include <windows.h>
#include <commdlg.h>
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>
#include "png.h"
#include "pngfile.h"
#include "cexcept.h"
define_exception_type(const char *);
extern struct exception_context the_exception_context[1];
struct exception_context the_exception_context[1];
png_const_charp msg;
static OPENFILENAME ofn;
static png_structp png_ptr = NULL;
static png_infop info_ptr = NULL;
/* cexcept interface */
static void
png_cexcept_error(png_structp png_ptr, png_const_charp msg)
{
if(png_ptr)
;
#ifdef PNG_CONSOLE_IO_SUPPORTED
fprintf(stderr, "libpng error: %s\n", msg);
#endif
{
Throw msg;
}
}
/* Windows open-file functions */
void PngFileInitialize (HWND hwnd)
{
static TCHAR szFilter[] = TEXT ("PNG Files (*.PNG)\0*.png\0")
TEXT ("All Files (*.*)\0*.*\0\0");
ofn.lStructSize = sizeof (OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = NULL; /* Set in Open and Close functions */
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL; /* Set in Open and Close functions */
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0; /* Set in Open and Close functions */
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT ("png");
ofn.lCustData = 0;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
}
BOOL PngFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
{
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pstrFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_HIDEREADONLY;
return GetOpenFileName (&ofn);
}
BOOL PngFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
{
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pstrFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
return GetSaveFileName (&ofn);
}
/* PNG image handler functions */
BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData,
int *piWidth, int *piHeight, int *piChannels, png_color *pBkgColor)
{
static FILE *pfFile;
png_byte pbSig[8];
int iBitDepth;
int iColorType;
double dGamma;
png_color_16 *pBackground;
png_uint_32 ulChannels;
png_uint_32 ulRowBytes;
png_byte *pbImageData = *ppbImageData;
static png_byte **ppbRowPointers = NULL;
int i;
/* open the PNG input file */
if (!pstrFileName)
{
*ppbImageData = pbImageData = NULL;
return FALSE;
}
if (!(pfFile = fopen(pstrFileName, "rb")))
{
*ppbImageData = pbImageData = NULL;
return FALSE;
}
/* first check the eight byte PNG signature */
fread(pbSig, 1, 8, pfFile);
if (png_sig_cmp(pbSig, 0, 8))
{
*ppbImageData = pbImageData = NULL;
return FALSE;
}
/* create the two png(-info) structures */
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
(png_error_ptr)png_cexcept_error, (png_error_ptr)NULL);
if (!png_ptr)
{
*ppbImageData = pbImageData = NULL;
return FALSE;
}
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
{
png_destroy_read_struct(&png_ptr, NULL, NULL);
*ppbImageData = pbImageData = NULL;
return FALSE;
}
Try
{
/* initialize the png structure */
#ifdef PNG_STDIO_SUPPORTED
png_init_io(png_ptr, pfFile);
#else
png_set_read_fn(png_ptr, (png_voidp)pfFile, png_read_data);
#endif
png_set_sig_bytes(png_ptr, 8);
/* read all PNG info up to image data */
png_read_info(png_ptr, info_ptr);
/* get width, height, bit-depth and color-type */
png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
&iColorType, NULL, NULL, NULL);
/* expand images of all color-type and bit-depth to 3x8-bit RGB */
/* let the library process alpha, transparency, background, etc. */
#ifdef PNG_READ_16_TO_8_SUPPORTED
if (iBitDepth == 16)
# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
png_set_scale_16(png_ptr);
# else
png_set_strip_16(png_ptr);
# endif
#endif
if (iColorType == PNG_COLOR_TYPE_PALETTE)
png_set_expand(png_ptr);
if (iBitDepth < 8)
png_set_expand(png_ptr);
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
png_set_expand(png_ptr);
if (iColorType == PNG_COLOR_TYPE_GRAY ||
iColorType == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb(png_ptr);
/* set the background color to draw transparent and alpha images over */
if (png_get_bKGD(png_ptr, info_ptr, &pBackground))
{
png_set_background(png_ptr, pBackground, PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
pBkgColor->red = (byte) pBackground->red;
pBkgColor->green = (byte) pBackground->green;
pBkgColor->blue = (byte) pBackground->blue;
}
else
{
pBkgColor = NULL;
}
/* if required set gamma conversion */
if (png_get_gAMA(png_ptr, info_ptr, &dGamma))
png_set_gamma(png_ptr, (double) 2.2, dGamma);
/* after the transformations are registered, update info_ptr data */
png_read_update_info(png_ptr, info_ptr);
/* get again width, height and the new bit-depth and color-type */
png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
&iColorType, NULL, NULL, NULL);
/* row_bytes is the width x number of channels */
ulRowBytes = png_get_rowbytes(png_ptr, info_ptr);
ulChannels = png_get_channels(png_ptr, info_ptr);
*piChannels = ulChannels;
/* now we can allocate memory to store the image */
if (pbImageData)
{
free (pbImageData);
pbImageData = NULL;
}
if ((pbImageData = (png_byte *) malloc(ulRowBytes * (*piHeight)
* sizeof(png_byte))) == NULL)
{
png_error(png_ptr, "Visual PNG: out of memory");
}
*ppbImageData = pbImageData;
/* and allocate memory for an array of row-pointers */
if ((ppbRowPointers = (png_bytepp) malloc((*piHeight)
* sizeof(png_bytep))) == NULL)
{
png_error(png_ptr, "Visual PNG: out of memory");
}
/* set the individual row-pointers to point at the correct offsets */
for (i = 0; i < (*piHeight); i++)
ppbRowPointers[i] = pbImageData + i * ulRowBytes;
/* now we can go ahead and just read the whole image */
png_read_image(png_ptr, ppbRowPointers);
/* read the additional chunks in the PNG file (not really needed) */
png_read_end(png_ptr, NULL);
/* and we're done */
free (ppbRowPointers);
ppbRowPointers = NULL;
/* yepp, done */
}
Catch (msg)
{
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
*ppbImageData = pbImageData = NULL;
if(ppbRowPointers)
free (ppbRowPointers);
fclose(pfFile);
return FALSE;
}
fclose (pfFile);
return TRUE;
}
BOOL PngSaveImage (PTSTR pstrFileName, png_byte *pDiData,
int iWidth, int iHeight, png_color bkgColor)
{
const int ciBitDepth = 8;
const int ciChannels = 3;
static FILE *pfFile;
png_uint_32 ulRowBytes;
static png_byte **ppbRowPointers = NULL;
int i;
/* open the PNG output file */
if (!pstrFileName)
return FALSE;
if (!(pfFile = fopen(pstrFileName, "wb")))
return FALSE;
/* prepare the standard PNG structures */
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
(png_error_ptr)png_cexcept_error, (png_error_ptr)NULL);
if (!png_ptr)
{
fclose(pfFile);
return FALSE;
}
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
fclose(pfFile);
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
return FALSE;
}
Try
{
/* initialize the png structure */
#ifdef PNG_STDIO_SUPPORTED
png_init_io(png_ptr, pfFile);
#else
png_set_write_fn(png_ptr, (png_voidp)pfFile, png_write_data, png_flush);
#endif
/* we're going to write a very simple 3x8-bit RGB image */
png_set_IHDR(png_ptr, info_ptr, iWidth, iHeight, ciBitDepth,
PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE,
PNG_FILTER_TYPE_BASE);
/* write the file header information */
png_write_info(png_ptr, info_ptr);
/* swap the BGR pixels in the DiData structure to RGB */
png_set_bgr(png_ptr);
/* row_bytes is the width x number of channels */
ulRowBytes = iWidth * ciChannels;
/* we can allocate memory for an array of row-pointers */
if ((ppbRowPointers = (png_bytepp) malloc(iHeight * sizeof(png_bytep))) == NULL)
Throw "Visualpng: Out of memory";
/* set the individual row-pointers to point at the correct offsets */
for (i = 0; i < iHeight; i++)
ppbRowPointers[i] = pDiData + i * (((ulRowBytes + 3) >> 2) << 2);
/* write out the entire image data in one call */
png_write_image (png_ptr, ppbRowPointers);
/* write the additional chunks to the PNG file (not really needed) */
png_write_end(png_ptr, info_ptr);
/* and we're done */
free (ppbRowPointers);
ppbRowPointers = NULL;
/* clean up after the write, and free any memory allocated */
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
/* yepp, done */
}
Catch (msg)
{
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
if(ppbRowPointers)
free (ppbRowPointers);
fclose(pfFile);
return FALSE;
}
fclose (pfFile);
return TRUE;
}
#ifndef PNG_STDIO_SUPPORTED
static void
png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
png_size_t check;
/* 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.
*/
check = (png_size_t)fread(data, (png_size_t)1, length,
(FILE *)png_ptr->io_ptr);
if (check != length)
{
png_error(png_ptr, "Read Error");
}
}
static void
png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
png_uint_32 check;
check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
if (check != length)
{
png_error(png_ptr, "Write Error");
}
}
static void
png_flush(png_structp png_ptr)
{
FILE *io_ptr;
io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
if (io_ptr != NULL)
fflush(io_ptr);
}
#endif
/*-----------------
* end of source
*-----------------
*/

Some files were not shown because too many files have changed in this diff Show More