Commit 02f408a3 authored by ROOL's avatar ROOL 🤖

Library update

Detail:
  PNG libary updated to 1.6.37 from 1.0.0.
  Makefile now produces 6 library variants, 2 as before, plus readonly and writeonly (and their module equivalents)
  Update ImageLib/png.c to account for change in libpng's use of jmpbuf.
Admin:
  Tested in a build with Browse-2_17.
  Submission for PNG bounty.

Version 0.10. Tagged as 'ImageLib-0_10'
parent 31bc45f4
......@@ -60,6 +60,11 @@ ROMCSTUBS = RISCOSLIB:o.romcstubs
ABSSYM = RISC_OSLib:o.AbsSym
PNGLIB = PNG.o.libpng-lib
PNGLIBZ = PNG.o.libpng-lzm
PNGLIBRO = PNG.o.libpng-ro
PNGLIBWO = PNG.o.libpng-wo
PNGLIBROZ = PNG.o.libpng-roz
PNGLIBWOZ = PNG.o.libpng-woz
PNGHDRS = PNG.h.png PNG.h.pngconf PNG.h.pnginfo PNG.h.pnglibconf PNG.h.pngpriv PNG.h.pngstruct
ZLIB = C:zlib.o.zlib
ZLIBZ = C:zlib.o.zlibzm
JPEGLIB = JPEG.o.libjpeg
......@@ -140,6 +145,26 @@ ${PNGLIBZ}:
amu ${MFLAGS} ${MAKECMDGOALS}
back
${PNGLIBRO}:
dir PNG
amu ${MFLAGS} ${MAKECMDGOALS}
back
${PNGLIBROZ}:
dir PNG
amu ${MFLAGS} ${MAKECMDGOALS}
back
${PNGLIBWO}:
dir PNG
amu ${MFLAGS} ${MAKECMDGOALS}
back
${PNGLIBWOZ}:
dir PNG
amu ${MFLAGS} ${MAKECMDGOALS}
back
${JPEGLIB}:
dir JPEG
amu ${MFLAGS} ${MAKECMDGOALS}
......@@ -168,6 +193,8 @@ clean_all:
export_hdrs: h.imagetrans ${PNGHDRS} o.dirs
${CP} h.imagetrans ${LIBDIR}.ImageLib.h.imagetrans ~CFLNR~V
${MKDIR} ${LIBDIR}.ImageLib.libpng.h
${CP} PNG.h ${LIBDIR}.ImageLib.libpng.h ~CFLNR~V
@echo ${COMPONENT}: export complete (hdrs)
export_libs: ${TARGET} ${TARGETZ} o.dirs
......@@ -175,6 +202,10 @@ export_libs: ${TARGET} ${TARGETZ} o.dirs
${CP} ${TARGETZ} ${LIBDIR}.ImageLib.${TARGETZ} ~CFLNR~V
${CP} ${PNGLIB} ${LIBDIR}.ImageLib.o.libpng-lib ~CFLNR~V
${CP} ${PNGLIBZ} ${LIBDIR}.ImageLib.o.libpng-lzm ~CFLNR~V
${CP} ${PNGLIBRO} ${LIBDIR}.ImageLib.o.libpng-ro ~CFLNR~V
${CP} ${PNGLIBROZ} ${LIBDIR}.ImageLib.o.libpng-roz ~CFLNR~V
${CP} ${PNGLIBWO} ${LIBDIR}.ImageLib.o.libpng-wo ~CFLNR~V
${CP} ${PNGLIBWOZ} ${LIBDIR}.ImageLib.o.libpng-woz ~CFLNR~V
${CP} ${JPEGLIB} ${LIBDIR}.ImageLib.o.libjpeg ~CFLNR~V
@echo ${COMPONENT}: export complete (libs)
......
libpng 1.6.37 - April 14, 2019
==============================
This is a public release of libpng, intended for use in production code.
Files available for download
----------------------------
Source files with LF line endings (for Unix/Linux):
* libpng-1.6.37.tar.xz (LZMA-compressed, recommended)
* libpng-1.6.37.tar.gz
Source files with CRLF line endings (for Windows):
* lp1637.7z (LZMA-compressed, recommended)
* lp1637.zip
Other information:
* README.md
* LICENSE.md
* AUTHORS.md
* TRADEMARK.md
Changes since the previous public release (version 1.6.36)
----------------------------------------------------------
* Fixed a use-after-free vulnerability (CVE-2019-7317) in png_image_free.
* Fixed a memory leak in the ARM NEON implementation of png_do_expand_palette.
* Fixed a memory leak in pngtest.c.
* Fixed two vulnerabilities (CVE-2018-14048, CVE-2018-14550) in
contrib/pngminus; refactor.
* Changed the license of contrib/pngminus to MIT; refresh makefile and docs.
(Contributed by Willem van Schaik)
* Fixed a typo in the libpng license v2.
(Contributed by Miguel Ojeda)
* Added makefiles for AddressSanitizer-enabled builds.
* Cleaned up various makefiles.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
Subscription is required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe.
PNG REFERENCE LIBRARY AUTHORS
=============================
This is the list of PNG Reference Library ("libpng") Contributing
Authors, for copyright and licensing purposes.
* Andreas Dilger
* Cosmin Truta
* Dave Martindale
* Eric S. Raymond
* Gilles Vollant
* Glenn Randers-Pehrson
* Greg Roelofs
* Guy Eric Schalnat
* James Yu
* John Bowler
* Kevin Bracey
* Magnus Holmgren
* Mandar Sahastrabuddhe
* Mans Rullgard
* Matt Sarett
* Mike Klein
* Paul Schmidt
* Sam Bushell
* Samuel Williams
* Simon-Pierre Cadieux
* Tim Wegner
* Tom Lane
* Tom Tanner
* Vadim Barkov
* Willem van Schaik
* Zhijie Liang
* Arm Holdings
- Richard Townsend
* Google Inc.
- Matt Sarett
- Mike Klein
The build projects, the build scripts, the test scripts, and other
files in the "projects", "scripts" and "tests" directories, have other
copyright owners, but are released under the libpng license.
Some files in the "contrib" directory, and some tools-generated files
that are distributed with libpng, have other copyright owners, and are
released under other open source licenses.
This diff is collapsed.
This diff is collapsed.
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
=========================================
PNG Reference Library License version 2
---------------------------------------
* Copyright (c) 1995-2019 The PNG Reference Library Authors.
* Copyright (c) 2018-2019 Cosmin Truta.
* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
* Copyright (c) 1996-1997 Andreas Dilger.
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
The software is supplied "as is", without warranty of any kind,
express or implied, including, without limitation, the warranties
of merchantability, fitness for a particular purpose, title, and
non-infringement. In no event shall the Copyright owners, or
anyone distributing the software, be liable for any damages or
other liability, whether in contract, tort or otherwise, arising
from, out of, or in connection with the software, or the use or
other dealings in the software, even if advised of the possibility
of such damage.
Permission is hereby granted to use, copy, modify, and distribute
this software, or portions hereof, for any purpose, without fee,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you
must not claim that you wrote the original software. If you
use this software in a product, an acknowledgment in the product
documentation would be appreciated, but is not required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This Copyright notice may not be removed or altered from any
source or altered source distribution.
PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35)
-----------------------------------------------------------------------
libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
derived from libpng-1.0.6, and are distributed according to the same
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
Mans Rullgard
Cosmin Truta
Gilles Vollant
James Yu
Mandar Sahastrabuddhe
Google Inc.
Vadim Barkov
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.
Some files in the "contrib" directory and some configure-generated
files that are distributed with libpng have other copyright owners, and
are released under other open source licenses.
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
libpng-0.96, 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, are derived from libpng-0.88,
and are 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
Some files in the "scripts" directory have other copyright owners,
but are released under this license.
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.
......@@ -42,117 +42,82 @@ LD = link
LB = libfile
WIPE = x wipe
CCFLAGS = -c -depend !Depend -ffa -throwback ${INCLUDES} ${DFLAGS}
ASFLAGS = -depend !Depend -Stamp -quit
CCFLAGS = -c -depend !Depend -ffa -IC:zlib ${THROWBACK} -DPNG_ARM_NEON_IMPLEMENTATION=0 -DRISCOS
CPFLAGS = ~cfr~v
LBFLAGS = -c
WFLAGS = ~CFR~V
#
# Libraries
#
CLIB = CLIB:o.stubs
RLIB = RISCOSLIB:o.risc_oslib
RSTUBS = RISCOSLIB:o.rstubs
ROMSTUBS = RISCOSLIB:o.romstubs
ROMCSTUBS = RISCOSLIB:o.romcstubs
ABSSYM = RISC_OSLib:o.AbsSym
#
# Include files
# Rule patterns
#
INCLUDES = -IC:,C:zlib
.SUFFIXES: .o_ro .o_wo .o_roz .o_woz .oz .c
#
# Symbols to predefine. Everything after the first
# line simply strips down pnglib to the bare
# minimum required for ImageLib. Pngtest won't
# work with these defined...
#
DFLAGS = -DRISCOS -DPNG_DEBUG=0 -DPNG_NO_STDIO\
-DPNG_READ_TRANSFORMS_NOT_SUPPORTED\
-DPNG_READ_EXPAND_SUPPORTED\
-DPNG_READ_PACK_SUPPORTED\
-DPNG_READ_PACKSWAP_SUPPORTED\
-DPNG_READ_16_TO_8_SUPPORTED\
-DPNG_READ_FILLER_SUPPORTED\
-DPNG_READ_GAMMA_SUPPORTED\
-DPNG_READ_USER_TRANSFORM_SUPPORTED\
-DPNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED\
-DPNG_READ_bKGD_SUPPORTED\
-DPNG_READ_gAMA_SUPPORTED\
-DPNG_READ_sBIT_SUPPORTED\
-DPNG_READ_sRGB_SUPPORTED\
-DPNG_READ_tRNS_SUPPORTED\
-DPNG_WRITE_TRANSFORMS_NOT_SUPPORTED\
-DPNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
.c.o_ro:; ${CC} $(CCFLAGS) -o $@ $< -DPNG_NO_WRITE_SUPPORTED
.c.o_wo:; ${CC} $(CCFLAGS) -o $@ $< -DPNG_NO_READ_SUPPORTED
.c.o_roz:; ${CC} $(CCFLAGS) -zM -o $@ $< -DPNG_NO_WRITE_SUPPORTED
.c.o_woz:; ${CC} $(CCFLAGS) -zM -o $@ $< -DPNG_NO_READ_SUPPORTED
.c.oz:; ${CC} $(CCFLAGS) -zM -o $@ $<
.c.o:; ${CC} $(CCFLAGS) -o $@ $<
#
# Program specific options:
#
COMPONENT = o.libpng-lib
COMPONENTZ = o.libpng-lzm
SOURCE = ...
TARGET = ${COMPONENT}
TARGETZ = ${COMPONENTZ}
EXPORTS = ${EXP_HDR}.${COMPONENT}
OBJS =\
o.png\
o.pngerror\
o.pngget\
o.pngmem\
o.pngpread\
o.pngread\
o.pngrio\
o.pngrtran\
o.pngrutil\
o.pngset\
o.pngtrans\
o.pngwio\
o.pngwrite\
o.pngwtran\
o.pngwutil
OBJSZ =\
z.png\
z.pngerror\
z.pngget\
z.pngmem\
z.pngpread\
z.pngread\
z.pngrio\
z.pngrtran\
z.pngrutil\
z.pngset\
z.pngtrans\
z.pngwio\
z.pngwrite\
z.pngwtran\
z.pngwutil
COMPONENT = PNG
o.libpng-ro: @.o_ro.png @.o_ro.pngerror @.o_ro.pngget @.o_ro.pngmem @.o_ro.pngpread \
@.o_ro.pngread @.o_ro.pngrio @.o_ro.pngrtran @.o_ro.pngrutil @.o_ro.pngset @.o_ro.pngtrans local_dirs
${LB} $(LBFLAGS) -o $@ @.o_ro.png @.o_ro.pngerror @.o_ro.pngget @.o_ro.pngmem \
@.o_ro.pngpread @.o_ro.pngread @.o_ro.pngrio @.o_ro.pngrtran @.o_ro.pngrutil @.o_ro.pngset @.o_ro.pngtrans
o.libpng-wo: @.o_wo.pngwio @.o_wo.pngwrite @.o_wo.pngwtran @.o_wo.pngwutil @.o_wo.png @.o_wo.pngerror @.o_wo.pngget @.o_wo.pngmem \
@.o_wo.pngset @.o_wo.pngtrans \
@.o_wo.pngwio @.o_wo.pngwrite @.o_wo.pngwtran @.o_wo.pngwutil local_dirs
${LB} $(LBFLAGS) -o $@ @.o_wo.png @.o_wo.pngerror @.o_wo.pngget @.o_wo.pngmem \
@.o_wo.pngset @.o_wo.pngtrans \
@.o_wo.pngwio @.o_wo.pngwrite @.o_wo.pngwtran @.o_wo.pngwutil
o.libpng-roz: @.o_roz.png @.o_roz.pngerror @.o_roz.pngget @.o_roz.pngmem @.o_roz.pngpread \
@.o_roz.pngread @.o_roz.pngrio @.o_roz.pngrtran @.o_roz.pngrutil @.o_roz.pngset @.o_roz.pngtrans local_dirs
${LB} $(LBFLAGS) -o $@ @.o_roz.png @.o_roz.pngerror @.o_roz.pngget @.o_roz.pngmem \
@.o_roz.pngpread @.o_roz.pngread @.o_roz.pngrio @.o_roz.pngrtran @.o_roz.pngrutil @.o_roz.pngset @.o_roz.pngtrans
o.libpng-woz: @.o_woz.pngwio @.o_woz.pngwrite @.o_woz.pngwtran @.o_woz.pngwutil @.o_woz.png @.o_woz.pngerror @.o_woz.pngget @.o_woz.pngmem \
@.o_woz.pngset @.o_woz.pngtrans \
@.o_woz.pngwio @.o_woz.pngwrite @.o_woz.pngwtran @.o_woz.pngwutil local_dirs
${LB} $(LBFLAGS) -o $@ @.o_woz.png @.o_woz.pngerror @.o_woz.pngget @.o_woz.pngmem \
@.o_woz.pngset @.o_woz.pngtrans \
@.o_woz.pngwio @.o_woz.pngwrite @.o_woz.pngwtran @.o_woz.pngwutil
o.libpng-lib: @.o.pngwio @.o.pngwrite @.o.pngwtran @.o.pngwutil @.o.png @.o.pngerror @.o.pngget @.o.pngmem \
@.o.pngset @.o.pngtrans @.o.pngpread \
@.o.pngread @.o.pngrio @.o.pngrtran @.o.pngrutil \
@.o.pngwio @.o.pngwrite @.o.pngwtran @.o.pngwutil local_dirs
${LB} $(LBFLAGS) -o $@ @.o.pngwio @.o.pngwrite @.o.pngwtran @.o.pngwutil @.o.png @.o.pngerror @.o.pngget @.o.pngmem \
@.o.pngset @.o.pngtrans @.o.pngpread \
@.o.pngread @.o.pngrio @.o.pngrtran @.o.pngrutil
o.libpng-lzm: @.oz.pngwio @.oz.pngwrite @.oz.pngwtran @.oz.pngwutil @.oz.png @.oz.pngerror @.oz.pngget @.oz.pngmem \
@.oz.pngset @.oz.pngtrans @.oz.pngpread \
@.oz.pngread @.oz.pngrio @.oz.pngrtran @.oz.pngrutil \
@.oz.pngwio @.oz.pngwrite @.oz.pngwtran @.oz.pngwutil local_dirs
${LB} $(LBFLAGS) -o $@ @.oz.pngwio @.oz.pngwrite @.oz.pngwtran @.oz.pngwutil @.oz.png @.oz.pngerror @.oz.pngget @.oz.pngmem \
@.oz.pngset @.oz.pngtrans @.oz.pngpread \
@.oz.pngread @.oz.pngrio @.oz.pngrtran @.oz.pngrutil
#
# build the library:
#
all install export_libs: o.libpng-lzm o.libpng-lib o.libpng-ro o.libpng-wo o.libpng-roz o.libpng-woz
@| Done
#
# Rule patterns
#
.SUFFIXES: .o .s .h .cmhg .c .z
.c.o:; ${CC} ${CCFLAGS} -o $@ $<
.c.z:; ${CC} ${CCFLAGS} -zM -o $@ $<
.s.o:; ${AS} ${ASFLAGS} -o $@ $<
.cmhg.o:; ${CM} ${CMFLAGS} -o $@ $<
.cmhg.h:; ${CM} ${CMFLAGS} -d $@ $<
#
# build a the library:
#
all install export_libs: ${COMPONENT} ${COMPONENTZ}
#
# RISC OS ROM build rules:
#
clean:
${WIPE} o ${WFLAGS}
${WIPE} z ${WFLAGS}
@echo ${COMPONENT}: cleaned
${WIPE} o ${WFLAGS}
${WIPE} oz ${WFLAGS}
${WIPE} o_ro ${WFLAGS}
${WIPE} o_wo ${WFLAGS}
${WIPE} o_roz ${WFLAGS}
${WIPE} o_woz ${WFLAGS}
@echo ${COMPONENT}: cleaned
export: export_libs export_hdrs
......@@ -161,19 +126,10 @@ export_hdrs:
local_dirs:
${MKDIR} o
${MKDIR} z
#
# Final link
#
${TARGET}: ${OBJS} local_dirs
${LB} ${LBFLAGS} -o ${COMPONENT} ${OBJS}
${TARGETZ}: ${OBJSZ} local_dirs
${LB} ${LBFLAGS} -o ${COMPONENTZ} ${OBJSZ}
pngtest: o.pngtest ${TARGET} ${CLIB} C:zlib.o.zlib
${LD} -o pngtest o.pngtest ${TARGET} ${CLIB} C:zlib.o.zlib
${MKDIR} oz
${MKDIR} o_ro
${MKDIR} o_wo
${MKDIR} o_roz
${MKDIR} o_woz
# Dynamic dependencies:
README for libpng 1.0.0 (shared library 2.1)
See the note about version numbers near the top of png.h
README for libpng version 1.6.37 - April 14, 2019
=================================================
See the note about version numbers near the top of png.h.
See INSTALL for instructions on how to install libpng.
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
Libpng comes in several distribution formats. Get libpng-*.tar.gz or
libpng-*.tar.xz or if you want UNIX-style line endings in the text
files, or lpng*.7z or lpng*.zip if you want DOS-style line endings.
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
......@@ -18,18 +24,25 @@ earlier versions if you are using a shared library. The type of the
png_uint_32, which will affect shared-library applications that use
this function.
To avoid problems with changes to the internals of png_info_struct,
To avoid problems with changes to the internals of the png info_struct,
new APIs have been made available in 0.95 to avoid direct application
access to info_ptr. These functions are the png_set_<chunk> and
png_get_<chunk> functions. These functions should be used when
accessing/storing the info_struct data, rather than manipulating it
directly, to avoid such problems in the future.
It is important to note that the APIs do not make current programs
It is important to note that the APIs did 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.
library, through libpng-1.2.x. In libpng-1.4.x, which was meant to
be a transitional release, members of the png_struct and the
info_struct can still be accessed, but the compiler will issue a
warning about deprecated usage. Since libpng-1.5.0, direct access
to these structs is not allowed, and the definitions of the structs
reside in private pngstruct.h and pnginfo.h header files that are not
accessible to applications. It is strongly suggested that new
programs use 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
......@@ -48,99 +61,76 @@ the library action on the detection of chunk CRC errors. It is possible
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.
For a detailed description on using libpng, read libpng.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
libpng) and zlib's restrictions, see zlib.h
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 libpng) and zlib's restrictions, see zlib.h
I have included a general makefile, as well as several machine and
compiler specific ones, but you may have to modify one for your own needs.
compiler specific ones, but you may have to modify one for your own
needs.
You should use zlib 1.0.4 or later to run this, but it MAY work with
versions as old as zlib 0.95. Even so, there are bugs in older zlib
versions which can cause the output of invalid compression streams for
some images. You will definitely need zlib 1.0.4 or later if you are
taking advantage of the MS-DOS "far" structure allocation for the small
and medium memory models. You should also note that zlib is a
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.
some images.
You should also note that zlib is a 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
https://zlib.net.
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.
This code is currently being archived at ftp.uu.net in the
/graphics/png directory, 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.
If you have any code changes, requests, problems, etc., please e-mail
them to me. Also, I'd appreciate any make files or project files,
and any modifications you needed to make to get libpng to compile,
along with a #define variable to tell what compiler/system you are on.
If you needed to add transformations to libpng, or wish libpng would
provide the image in a different way, drop me a note (and code, if
possible), so I can consider supporting the transformation.
Finally, if you get any warning messages when compiling libpng
(note: not zlib), and they are easy to fix, I'd appreciate the
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.
randeg@alumni.rpi.edu
png-implement@dworkin.wustl.edu
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.
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
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 three 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.
as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find
these at http://www.libpng.org/pub/png/pngdocs.html .
This code is currently being archived at libpng.sourceforge.io in the
[DOWNLOAD] area, and at http://libpng.download/src .
This release, based in a large way on Glenn's, Guy's and Andreas'
earlier work, was created and will be supported by myself and the PNG
development group.
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).
Send general questions about the PNG specification to png-mng-misc
at lists.sourceforge.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-misc to
subscribe).
Files in this distribution:
ANNOUNCE => Announcement of this version, with recent changes
AUTHORS => List of contributing authors
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
TRADEMARK => Trademark information
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
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
......@@ -154,41 +144,40 @@ Files in this distribution:
pngwrite.c => High-level write functions
pngwtran.c => Write data transformations
pngwutil.c => Write utility functions
arm => Contains optimized code for the ARM platform
powerpc => Contains optimized code for the PowerPC platform
contrib => Contributions
arm-neon => Optimized code for ARM-NEON platform
powerpc-vsx => Optimized code for POWERPC-VSX platform
examples => Example programs
gregbook => source code for PNG reading and writing, from
Greg Roelofs' "PNG: The Definitive Guide",
O'Reilly, 1999
libtests => Test programs
mips-msa => Optimized code for MIPS-MSA platform
pngminim => Minimal decoder, encoder, and progressive decoder
programs demonstrating use of pngusr.dfa
pngminus => Simple pnm2png and png2pnm programs
pngsuite => Test images
testpngs
tools => Various tools
visupng => Contains a MSVC workspace for VisualPng
intel => Optimized code for INTEL-SSE2 platform
mips => Optimized code for MIPS platform
projects => Contains project files and workspaces for
building a DLL
owatcom => Contains a WATCOM project for building libpng
visualc71 => Contains a Microsoft Visual C++ (MSVC)
workspace for building libpng and zlib
vstudio => Contains a Microsoft Visual C++ (MSVC)
workspace for building libpng and zlib
scripts => Directory containing scripts for building libpng:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile
makefile.knr => Archaic UNIX Makefile that converts files with ansi2knr
makefile.dec => DEC Alpha UNIX makefile
makefile.sgi => Silicon Graphics IRIX makefile
makefile.sun => Sun makefile
makefile.s2x => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0)
makefile.lnx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0)
makefile.mip => MIPS makefile
makefile.aco => Acorn makefile
makefile.ama => Amiga makefile
smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
(Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc)
makefile.atr => Atari makefile
makefile.bor => Borland makefile
build.bat => MS-DOS batch file for Borland compiler
makefile.dj2 => DJGPP 2 makefile
makefile.msc => Microsoft C makefile
makefile.tc3 => Turbo C 3.0 makefile
makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def)
makefile.wat => Watcom 10a+ Makefile, 32-bit flat memory model
pngos2.def => OS/2 module definition file used by makefile.os2
makevms.com => VMS build script
Good luck, and happy coding.