Libpng 1.0.6 - March 21, 2000 This is a public release of libpng, intended for use in production codes. Changes since the last public release (1.0.5): Added contrib/pngsuite and contrib/pngminus (Willem van Schaik) Fixed a typo in the png_set_sRGB() function call in example.c (Jan Nijtmans) Further optimization and bugfix of pngvcrd.c Revised pngset.c so that it does not allocate or free memory in the user's text_ptr structure. Instead, it makes its own copy. Added code in pngwrite.c to free info_ptr->text[i].key to stop a memory leak. Created separate write_end_info_struct in pngtest.c for a more severe test. Moved PNG_FLAG_HAVE_CHUNK_HEADER, PNG_FLAG_BACKGROUND_IS_GRAY and PNG_FLAG_WROTE_tIME from flags to mode. Added png_write_info_before_PLTE() function. Fixed some typecasting in contrib/gregbook/*.c Updated scripts/makevms.com (Martin Zinser) Moved png_get_header_version from png.h to png.c, to accomodate ansi2knr. Removed all global arrays (according to PNG_NO_GLOBAL_ARRAYS macro), to accomodate making DLL's: Moved usr_png_ver from global variable to function png_get_header_ver() in png.c. Moved png_sig to png_sig_bytes in png.c and eliminated use of png_sig in pngwutil.c. Moved the various png_CHNK arrays into local arrays. Eliminated use of global png_pass arrays. Declared the png_CHNK and png_pass arrays to be "const". Made the global arrays available to applications when PNG_NO_GLOBAL_ARRAYS is not defined or when PNG_USE_GLOBAL_ARRAYS is defined. Made available to applications a macro "PNG_USE_LOCAL_ARRAYS". Changed the PNG_sRGB_INTENT macros in png.h to be consistent with PNG-1.2. Change PNG_SRGB_INTENT to PNG_sRGB_INTENT in libpng.txt and libpng.3 Added PNG_EXPORT_VAR macro to accommodate making DLL's. Refactored the inflate/deflate support to make adding new chunks with trailing compressed parts easier in the future (Eric S. Raymond). Added iCCP, iTXt, sCAL, and sPLT support; added "lang", "lang_key", and itxt_length" members to the png_text structure (Eric S. Raymond, Glenn R-P) Changed png_get_oFFs() and png_set_oFFs() to use signed rather than unsigned offsets (Eric S. Raymond). Combined PNG_READ_cHNK_SUPPORTED and PNG_WRITE_cHNK_SUPPORTED macros into PNG_cHNK_SUPPORTED and combined the three types of PNG_text_SUPPORTED macros, leaving the separate macros also available. Removed comments on #endifs at the end of many short, non-nested #if-blocks. Changed makefile.solaris to issue a warning about potential problems when the ucb "ld" is in the path ahead of the ccs "ld". Removed "- [date]" from the "synopsis" line in libpng.3 and libpngpf.3. Added code in pngwrite.c to work around a newly discovered zlib bug. Unknown chunk handling is now supported (Eric S. Raymond). Option to eliminate all floating point support was added. Some new fixed-point functions such as png_set_gAMA_fixed() were added. Added new type "png_fixed_point" for integers that hold float*100000 values Added many parentheses, e.g., "if (a && b & c)" becomes "if (a && (b & c))" Added png_handle_as_unknown() Added chunk_list and num_chunk_list members of png_ptr. Define png_get_int_32 when oFFs chunk is supported as well as when pCAL is. Added functions png_set_read_user_chunk_fn() and png_get_user_chunk_ptr() for setting a callback function to handle unknown chunks and for retrieving the associated user pointer (Glenn). Added png_free_data() function. Added high-level functions png_read_png() and png_write_png() (ESR). Renamed pngdll.mak to makefile.bd32 Cosmetic changes in pngtest.c Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg) Revised makefile.gcmmx Fixed a bug in pngrtran.c that improperly expanded the background color. Return *num_text=0 from png_get_text() when appropriate, and fix documentation of png_get_text() in libpng.txt/libpng.3. Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() and "png_jmpbuf()" macros to pngconf.h, to help people migrate to the new error handler that's planned for the next libpng release, and changed example.c, pngtest.c, and contrib programs to use this macro. Revised some of the DLL-export macros in pngconf.h (Greg Roelofs) Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions in pngget.c Updated makefile.linux and makefile.gccmmx to make directories conditionally. Increased precision of rgb_to_gray calculations from 8 to 15 bits and added png_set_rgb_to_gray_fixed() function. Added makefile.bc32 (32-bit Borland C++, C mode) Updated references to the zlib home page, which has moved to freesoftware.com. Corrected bugs in documentation regarding png_read_row() and png_write_row(). Renamed makefile.borland,turboc3 back to makefile.bor,tc3 as in version 1.0.3, revised borland makefiles; added makefile.ibmvac3 and makefile.gcc (Cosmin) Added makefile.sggcc (SGI IRIX with gcc) Send comments/corrections/commendations to png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu Glenn R-P