
Libpng 1.2.41beta13 - November 3, 2009

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

   libpng-1.2.41beta13.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.41beta13.tar.gz
   libpng-1.2.41beta13.tar.bz2

Source files with LF line endings (for Unix/Linux) without the
"configure" script

   libpng-1.2.41beta13-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.41beta13-no-config.tar.gz
   libpng-1.2.41beta13-no-config.tar.bz2

Source files with CRLF line endings (for Windows), without the
"configure" script

   lp1241b13.zip
   lp1241b13.7z
   lp1241b13.tar.bz2

Project files

   libpng-1.2.41beta13-project-netware.zip
   libpng-1.2.41beta13-project-wince.zip

Other information:

   libpng-1.2.41beta13-README.txt
   libpng-1.2.41beta13-KNOWNBUGS.txt
   libpng-1.2.41beta13-LICENSE.txt
   libpng-1.2.41beta13-Y2K-compliance.txt
   libpng-1.2.41beta13-[previous version]-diff.txt

Changes since the last public release (1.2.40):

version 1.2.41beta01 [September 25, 2009]
  Moved redundant IHDR checking into new png_check_IHDR() in png.c
    and report all errors found in the IHDR data.
  Eliminated useless call to png_check_cHRM() from pngset.c
  Expanded TAB characters in pngrtran.c

version 1.2.41beta02 [September 30, 2009]
  Revised png_check_IHDR().

version 1.2.41beta03 [October 1, 2009]
  Revised png_check_IHDR() again, to check info_ptr members instead of
    the contents of the returned parameters.

version 1.2.41beta04 [October 7, 2009]
  Added "xcode" project similar one already in libpng-1.4.0beta (Alam Arias).
  Ported some cosmetic changes from libpng-1.4.0beta86.
  Eliminated a shadowed declaration of "pp" in png_handle_sPLT().

version 1.2.41beta05 [October 17, 2009]
  Revised pngconf.h to make it easier to enable iTXt support.  From libpng
    version 1.2.9 through 1.2.40, defining PNG_iTXt_SUPPORTED did not work
    as expected.
  Ported some cosmetic changes from libpng-1.4.0beta87, changing
    many "#if defined(x)" to "#ifdef x".

version 1.2.41beta06 [October 18, 2009]
  Restored PNG_USE_LOCAL_ARRAYS code in pngread.c that was inadvertently
    deleted in libpng-1.2.41beta05.
  Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h
    as in libpng-1.4.0beta78 and later.

version 1.2.41beta07 [October 21, 2009]
  Ported some cosmetic changes from libpng-1.4.0rc01, changing
    many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.

version 1.2.41beta08 [October 30, 2009]
  Ported from libpng-1.4.0rc01: png_calloc(), png_get_io_chunk_name(),
    png_get_io_state(), png_set_user_cache_max(), png_get_user_cache_max(),
    png_set_premultiply_alpha, and png_do_read_premultiply_alpha().
  Relocated png_do_chop() ahead of building gamma tables in pngrtran.c
    This avoids building 16-bit gamma tables unnecessarily.

version 1.2.41beta09 [November 1, 2009]
  Removed a harmless extra png_set_invert_alpha() from pngwrite.c
  More bugfixes and improvements to CMakeLists.txt (Philip Lowman)
  Moved CMakeLists.txt from scripts into the main libpng directory.
  Apply png_user_chunk_cache_max within png_decompress_chunk().
  Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate.

version 1.2.41beta10 [November 1, 2009]
  Enabled iTXt support by default. To ensure binary compatibility with
    previous versions, the "lang" and "lang_key" members will be assumed
    to be omitted from previous versions unless the current libpng
    version was built with PNG_iTXt_SUPPORTED (which is otherwise no
    longer necessary to gain iTXt support), as a signal that the user has
    been building previous versions with PNG_iTXt_SUPPORTED as well.

version 1.2.41beta11 [November 2, 2009]
  Store user's user_png_ver in new png_ptr->user_png_ver element.
  Revised iTXt support. To ensure binary compatibility with
    previous versions, the "lang" and "lang_key" members will be assumed
    to be omitted from versions prior to 1.2.41beta11 whenever there is a
    library mismatch.

version 1.2.41beta12 [November 2, 2009]
  Free png_ptr->user_png_ver when destroying png_ptr.

version 1.2.41beta13 [November 3, 2009]
  Updated scripts/pngw32.def and projects/wince/png32ce.def
  Copied projects/wince/png32ce.def to the scripts directory.
  Added scripts/makefile.wce
  Patched ltmain.sh for wince support.
  Added PNG_CONVERT_tIME_SUPPORTED macro.

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
