提交 c3dda6da 编写于 作者: G Glenn Randers-Pehrson

Imported from libpng-1.2.8rc3.tar

上级 73b029f9
Libpng 1.2.8rc2 - November 26, 2004
Libpng 1.2.8rc3 - November 28, 2004
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.
......@@ -31,6 +31,7 @@ version 1.2.8beta5 [November 20, 2004]
Revised handling of SPECIALBUILD, PRIVATEBUILD,
PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING.
version 1.2.8rc1 [Novermber 24, 2004]
Inadvertently installed a supposedly faster test version of pngrutil.c
Moved handling of BUILD macros from pngconf.h to png.h
Added definition of PNG_LIBPNG_BASE_TYPE in png.h, inadvertently
omitted from beta5.
......@@ -38,6 +39,13 @@ version 1.2.8rc1 [Novermber 24, 2004]
Despammed mailing addresses by masking "@" with "at".
version 1.2.8rc2 [November 26, 2004]
Added two missing "\" in png.h
Change tests in pngread.c and pngpread.c to
if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
png_do_read_transformations(png_ptr);
version 1.2.8rc3 [November 28, 2004]
Reverted pngrutil.c to version libpng-1.2.8beta5.
Added scripts/makefile.elf with supporting code in pngconf.h for symbol
versioning (John Bowler).
Send comments/corrections/commendations to
png-implement at ccrc.wustl.edu (subscription required; write to
......
......@@ -1394,12 +1394,16 @@ version 1.2.8rc1 [November 24, 2004]
omitted from beta5.
Revised scripts/pngw32.rc
Despammed mailing addresses by masking "@" with "at".
Inadvertently installed a supposedly faster test version of pngrutil.c
version 1.2.8rc2 [November 26, 2004]
Added two missing "\" in png.h
Change tests in pngread.c and pngpread.c to
if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
png_do_read_transformations(png_ptr);
version 1.2.8rc3 [November 28, 2004]
Reverted pngrutil.c to version libpng-1.2.8beta5.
Added scripts/makefile.elf with supporting code in pngconf.h for symbol
versioning (John Bowler).
Send comments/corrections/commendations to
png-implement at ccrc.wustl.edu (subscription required; write to
......
Installing libpng version 1.2.8rc2 - November 26, 2004
Installing libpng version 1.2.8rc3 - November 28, 2004
Before installing libpng, you must first install zlib. zlib
can usually be found wherever you got libpng. zlib can be
......@@ -10,7 +10,7 @@ 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-1.2.8rc2" or "lpng109" and "zlib-1.2.1"
might be called "libpng-1.2.8rc3" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
......@@ -66,10 +66,12 @@ The files that are presently available in the scripts directory
include
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.8rc3)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.8rc2)
(gcc, creates libpng12.so.0.1.2.8rc3)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.8rc2,
(gcc, creates libpng12.so.0.1.2.8rc3,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
......@@ -92,12 +94,12 @@ include
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc,
creates libpng12.so.0.1.2.8rc2)
creates libpng12.so.0.1.2.8rc3)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc,
creates libpng12.so.0.1.2.8rc2)
creates libpng12.so.0.1.2.8rc3)
makefile.so9 => Solaris 9 makefile (gcc,
creates libpng12.so.0.1.2.8rc2)
creates libpng12.so.0.1.2.8rc3)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
......
Known bugs in libpng version 1.2.8rc2
Known bugs in libpng version 1.2.8rc3
1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when
reading interlaced PNG files, when assembler code is enabled but running
......
......@@ -8,7 +8,7 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following
this sentence.
libpng version 1.2.6, November 26, 2004, is
libpng version 1.2.6, November 28, 2004, is
Copyright (c) 2004 Glenn Randers-Pehrson, and is
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
......@@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
November 26, 2004
November 28, 2004
README for libpng version 1.2.8rc2 - November 26, 2004 (shared library 12.0)
README for libpng version 1.2.8rc3 - November 28, 2004 (shared library 12.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
......@@ -188,10 +188,12 @@ Files in this distribution:
scripts => Directory containing scripts for building libpng:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.8rc3)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.8rc2)
(gcc, creates libpng12.so.0.1.2.8rc3)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.8rc2,
(gcc, creates libpng12.so.0.1.2.8rc3,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
......@@ -213,12 +215,12 @@ Files in this distribution:
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics
(gcc, creates libpng12.so.0.1.2.8rc2)
(gcc, creates libpng12.so.0.1.2.8rc3)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng12.so.0.1.2.8rc2)
(gcc, creates libpng12.so.0.1.2.8rc3)
makefile.so9 => Solaris 9 makefile
(gcc, creates libpng12.so.0.1.2.8rc2)
(gcc, creates libpng12.so.0.1.2.8rc3)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
......
Y2K compliance in libpng:
=========================
November 26, 2004
November 28, 2004
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.8rc2 are Y2K compliant. It is my belief that earlier
upward through 1.2.8rc3 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer
......
#!/bin/sh
echo "
There is no \"configure\" script in this distribution of
libpng-1.2.8rc2.
libpng-1.2.8rc3.
Instead, please copy the appropriate makefile for your system from the
\"scripts\" directory. Read the INSTALL file for more details.
Update, July 2004: you can get a "configure" based distribution
from the libpng distribution sites. Download the file
libpng-1.2.8rc2-config.tar.gz
libpng-1.2.8rc3-config.tar.gz
"
.TH LIBPNG 3 "November 26, 2004"
.TH LIBPNG 3 "November 28, 2004"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.8rc2
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.8rc3
.SH SYNOPSIS
\fI\fB
......@@ -781,7 +781,7 @@ Following is a copy of the libpng.txt file that accompanies libpng.
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.8rc2 - November 26, 2004
libpng version 1.2.8rc3 - November 28, 2004
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2004 Glenn Randers-Pehrson
......@@ -3685,13 +3685,13 @@ application:
.SH IX. Y2K Compliance in libpng
November 26, 2004
November 28, 2004
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.8rc2 are Y2K compliant. It is my belief that earlier
upward through 1.2.8rc3 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
......@@ -3840,8 +3840,8 @@ the first widely used release:
1.0.17 10 10017 12.so.0.1.0.17
1.2.7 13 10207 12.so.0.1.2.7
1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
1.0.18rc1-2 10 10018 12.so.0.1.0.18rc1-2
1.2.8rc1-2 13 10208 12.so.0.1.2.8rc1-2
1.0.18rc1-3 10 10018 12.so.0.1.0.18rc1-3
1.2.8rc1-3 13 10208 12.so.0.1.2.8rc1-3
Henceforth the source version will match the shared-library minor
and patch numbers; the shared-library major version number will be
......@@ -3897,7 +3897,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.2.8rc2 - November 26, 2004:
Libpng version 1.2.8rc3 - November 28, 2004:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
......@@ -3915,7 +3915,7 @@ included in the libpng distribution, the latter shall prevail.)
If you modify libpng you may insert additional notices immediately following
this sentence.
libpng version 1.2.6, November 26, 2004, is
libpng version 1.2.6, November 28, 2004, is
Copyright (c) 2004 Glenn Randers-Pehrson, and is
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
......@@ -4014,7 +4014,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
November 26, 2004
November 28, 2004
.\" end of man page
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.8rc2 - November 26, 2004
libpng version 1.2.8rc3 - November 28, 2004
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2004 Glenn Randers-Pehrson
......@@ -2904,13 +2904,13 @@ application:
IX. Y2K Compliance in libpng
November 26, 2004
November 28, 2004
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.8rc2 are Y2K compliant. It is my belief that earlier
upward through 1.2.8rc3 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
......
.TH LIBPNGPF 3 "November 26, 2004"
.TH LIBPNGPF 3 "November 28, 2004"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.8rc2
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.8rc3
(private functions)
.SH SYNOPSIS
\fB\fB#include <png.h>\fP\fP
......
.TH PNG 5 "November 26, 2004"
.TH PNG 5 "November 28, 2004"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
......
/* png.c - location for general purpose libpng functions
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......@@ -13,7 +13,7 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_2_8rc2 Your_png_h_is_not_version_1_2_8rc2;
typedef version_1_2_8rc3 Your_png_h_is_not_version_1_2_8rc3;
/* Version information for C files. This had better match the version
* string defined in png.h. */
......@@ -680,7 +680,7 @@ png_charp PNGAPI
png_get_copyright(png_structp png_ptr)
{
if (&png_ptr != NULL) /* silence compiler warning about unused png_ptr */
return ((png_charp) "\n libpng version 1.2.8rc2 - November 26, 2004\n\
return ((png_charp) "\n libpng version 1.2.8rc3 - November 28, 2004\n\
Copyright (c) 1998-2004 Glenn Randers-Pehrson\n\
Copyright (c) 1996-1997 Andreas Dilger\n\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
......
/* png.h - header file for PNG reference library
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
......@@ -8,7 +8,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.2.8rc2 - November 26, 2004: Glenn
* libpng versions 0.97, January 1998, through 1.2.8rc3 - November 28, 2004: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
......@@ -107,8 +107,8 @@
* 1.0.17 10 10017 12.so.0.1.0.17
* 1.2.7 13 10207 12.so.0.1.2.7
* 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
* 1.0.18rc1-2 10 10018 12.so.0.1.0.18rc1-2
* 1.2.8rc1-2 13 10208 12.so.0.1.2.8rc1-2
* 1.0.18rc1-3 10 10018 12.so.0.1.0.18rc1-3
* 1.2.8rc1-3 13 10208 12.so.0.1.2.8rc1-3
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
......@@ -138,7 +138,7 @@
* If you modify libpng you may insert additional notices immediately following
* this sentence.
*
* libpng versions 1.2.6, August 15, 2004, through 1.2.8rc2, November 26, 2004, are
* libpng versions 1.2.6, August 15, 2004, through 1.2.8rc3, November 28, 2004, are
* Copyright (c) 2004 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:
......@@ -250,13 +250,13 @@
* Y2K compliance in libpng:
* =========================
*
* November 26, 2004
* November 28, 2004
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
* upward through 1.2.8rc2 are Y2K compliant. It is my belief that earlier
* upward through 1.2.8rc3 are Y2K compliant. It is my belief that earlier
* versions were also Y2K compliant.
*
* Libpng only has three year fields. One is a 2-byte unsigned integer
......@@ -312,9 +312,9 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.2.8rc2"
#define PNG_LIBPNG_VER_STRING "1.2.8rc3"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.2.8rc2 - November 26, 2004 (header)\n"
" libpng version 1.2.8rc3 - November 28, 2004 (header)\n"
#define PNG_LIBPNG_VER_SONUM 0
#define PNG_LIBPNG_VER_DLLNUM 13
......@@ -326,7 +326,7 @@
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
#define PNG_LIBPNG_VER_BUILD 2
#define PNG_LIBPNG_VER_BUILD 3
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
......@@ -1354,7 +1354,7 @@ struct png_struct_def
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
typedef png_structp version_1_2_8rc2;
typedef png_structp version_1_2_8rc3;
typedef png_struct FAR * FAR * png_structpp;
......
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......@@ -1322,6 +1322,17 @@ typedef z_stream FAR * png_zstreamp;
# define PNG_IMPEXP
#endif
#ifdef PNG_BUILDSYMS
# ifndef PNG_EXPORT
# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END
# endif
# ifdef PNG_USE_GLOBAL_ARRAYS
# ifndef PNG_EXPORT_VAR
# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT
# endif
# endif
#endif
#ifndef PNG_EXPORT
# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
#endif
......
/* pngerror.c - stub functions for i/o and memory allocation
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
......@@ -6,7 +6,7 @@
* and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
* for Intel's performance analysis of the MMX vs. non-MMX code.
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* Copyright (c) 1998, Intel Corporation
......
/* pngget.c - retrieval of values from info struct
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngmem.c - stub functions for memory allocation
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngpread.c - read a png file in push mode
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngread.c - read a PNG file
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......@@ -806,7 +806,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
* not called png_set_interlace_handling(), the display_row buffer will
* be ignored, so pass NULL to it.
*
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.8rc2
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.8rc3
*/
void PNGAPI
......@@ -856,7 +856,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
* only call this function once. If you desire to have an image for
* each pass of a interlaced image, use png_read_rows() instead.
*
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.8rc2
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.8rc3
*/
void PNGAPI
png_read_image(png_structp png_ptr, png_bytepp image)
......
/* pngrio.c - functions for data input
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngrtran.c - transforms the data in a row for PNG readers
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngrutil.c - utilities to read a PNG file
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......@@ -2260,46 +2260,59 @@ png_combine_row(png_structp png_ptr, png_bytep row, int mask)
}
else
{
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
static const png_byte bitrev[16] =
{0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E,
0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F};
static const png_byte lastbyte_mask_norm[8] =
{0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE};
static const png_byte lastbyte_mask_swap[8] =
{0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F};
const png_byte *lastbyte_mask =
(png_ptr->transformations & PNG_PACKSWAP) ?
lastbyte_mask_swap : lastbyte_mask_norm;
#else
static const png_byte lastbyte_mask[8] =
{0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE};
#endif
switch (png_ptr->row_info.pixel_depth)
{
case 1:
{
png_bytep sp = png_ptr->row_buf + 1;
png_bytep dp = row;
int s_inc, s_start, s_end;
int m = 0x80;
int shift;
png_uint_32 i;
png_byte pixel_mask;
png_uint_32 row_width = png_ptr->width;
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (png_ptr->transformations & PNG_PACKSWAP)
mask = (bitrev[mask & 0x0F] << 4) | bitrev[(mask >> 4) & 0x0F];
{
s_start = 0;
s_end = 7;
s_inc = 1;
}
else
#endif
pixel_mask = (png_byte)mask;
{
s_start = 7;
s_end = 0;
s_inc = -1;
}
for (i = png_ptr->width; i >= 8; i -= 8)
shift = s_start;
for (i = 0; i < row_width; i++)
{
if (m & mask)
{
*dp = (*sp & pixel_mask) | (*dp & ~pixel_mask);
int value;
value = (*sp >> shift) & 0x01;
*dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
*dp |= (png_byte)(value << shift);
}
if (shift == s_end)
{
shift = s_start;
sp++;
dp++;
}
if (i > 0)
{
pixel_mask &= lastbyte_mask[i];
*dp = (*sp & pixel_mask) | (*dp & ~pixel_mask);
else
shift += s_inc;
if (m == 1)
m = 0x80;
else
m >>= 1;
}
break;
}
......@@ -2307,40 +2320,51 @@ png_combine_row(png_structp png_ptr, png_bytep row, int mask)
{
png_bytep sp = png_ptr->row_buf + 1;
png_bytep dp = row;
png_uint_32 i;
png_byte pixel_mask[2];
int s_start, s_end, s_inc;
int m = 0x80;
int j;
int shift;
png_uint_32 i;
png_uint_32 row_width = png_ptr->width;
int value;
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (png_ptr->transformations & PNG_PACKSWAP)
mask = bitrev[mask & 0x0F] | (bitrev[(mask >> 4) & 0x0F] << 4);
{
s_start = 0;
s_end = 6;
s_inc = 2;
}
else
#endif
for (j = 0; j < 2; j++)
{
pixel_mask[j] = 0;
for (i = 4; i > 0; i--)
s_start = 6;
s_end = 0;
s_inc = -2;
}
shift = s_start;
for (i = 0; i < row_width; i++)
{
pixel_mask[j] <<= 2;
if (m & mask)
pixel_mask[j] |= 0x03;
m >>= 1;
}
{
value = (*sp >> shift) & 0x03;
*dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
*dp |= (png_byte)(value << shift);
}
j = 0;
for (i = png_ptr->width; i >= 4; i -= 4)
if (shift == s_end)
{
if (pixel_mask[j] != 0)
*dp = (*sp & pixel_mask[j]) | (*dp & ~pixel_mask[j]);
shift = s_start;
sp++;
dp++;
j ^= 1;
}
if (i > 0)
{
pixel_mask[j] &= lastbyte_mask[i * 2];
if (pixel_mask[j] != 0)
*dp = (*sp & pixel_mask[j]) | (*dp & ~pixel_mask[j]);
else
shift += s_inc;
if (m == 1)
m = 0x80;
else
m >>= 1;
}
break;
}
......@@ -2348,41 +2372,50 @@ png_combine_row(png_structp png_ptr, png_bytep row, int mask)
{
png_bytep sp = png_ptr->row_buf + 1;
png_bytep dp = row;
png_uint_32 i;
png_byte pixel_mask[4];
int s_start, s_end, s_inc;
int m = 0x80;
int j;
int shift;
png_uint_32 i;
png_uint_32 row_width = png_ptr->width;
int value;
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (png_ptr->transformations & PNG_PACKSWAP)
mask = ((mask & 0x55) << 1) | ((mask & 0xAA) >> 1);
{
s_start = 0;
s_end = 4;
s_inc = 4;
}
else
#endif
for (j = 0; j < 4; j++)
{
pixel_mask[j] = 0;
for (i = 2; i > 0; i--)
s_start = 4;
s_end = 0;
s_inc = -4;
}
shift = s_start;
for (i = 0; i < row_width; i++)
{
pixel_mask[j] <<= 4;
if (m & mask)
pixel_mask[j] |= 0x0F;
m >>= 1;
}
{
value = (*sp >> shift) & 0xf;
*dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
*dp |= (png_byte)(value << shift);
}
j = 0;
for (i = png_ptr->width; i >= 2; i -= 2)
if (shift == s_end)
{
if (pixel_mask[j] != 0)
*dp = (*sp & pixel_mask[j]) | (*dp & ~pixel_mask[j]);
shift = s_start;
sp++;
dp++;
j += 1;
j &= 3;
}
if (i > 0)
{
pixel_mask[j] &= lastbyte_mask[4];
if (pixel_mask[j] != 0)
*dp = (*sp & pixel_mask[j]) | (*dp & ~pixel_mask[j]);
else
shift += s_inc;
if (m == 1)
m = 0x80;
else
m >>= 1;
}
break;
}
......@@ -2392,123 +2425,24 @@ png_combine_row(png_structp png_ptr, png_bytep row, int mask)
png_bytep dp = row;
png_size_t pixel_bytes = (png_ptr->row_info.pixel_depth >> 3);
png_uint_32 i;
int m = 0x80;
png_uint_32 row_width = png_ptr->width;
png_byte m = 0x80;
switch (pixel_bytes)
{
case 1:
for (i = png_ptr->width; i > 0; i--)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
}
sp += 1;
dp += 1;
if ((m >>= 1) == 0)
m = 0x80;
}
break;
case 2:
for (i = png_ptr->width; i > 0; i--)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
*(dp + 1) = *(sp + 1);
}
sp += 2;
dp += 2;
if ((m >>= 1) == 0)
m = 0x80;
}
break;
case 3:
for (i = png_ptr->width; i > 0; i--)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
*(dp + 1) = *(sp + 1);
*(dp + 2) = *(sp + 2);
}
sp += 3;
dp += 3;
if ((m >>= 1) == 0)
m = 0x80;
}
break;
case 4:
for (i = png_ptr->width; i > 0; i--)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
*(dp + 1) = *(sp + 1);
*(dp + 2) = *(sp + 2);
*(dp + 3) = *(sp + 3);
}
sp += 4;
dp += 4;
if ((m >>= 1) == 0)
m = 0x80;
}
break;
case 6:
for (i = png_ptr->width; i > 0; i--)
for (i = 0; i < row_width; i++)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
*(dp + 1) = *(sp + 1);
*(dp + 2) = *(sp + 2);
*(dp + 3) = *(sp + 3);
*(dp + 4) = *(sp + 4);
*(dp + 5) = *(sp + 5);
}
sp += 6;
dp += 6;
if ((m >>= 1) == 0)
m = 0x80;
png_memcpy(dp, sp, pixel_bytes);
}
break;
case 8:
for (i = png_ptr->width; i > 0; i--)
{
if (m & mask)
{
*(dp + 0) = *(sp + 0);
*(dp + 1) = *(sp + 1);
*(dp + 2) = *(sp + 2);
*(dp + 3) = *(sp + 3);
*(dp + 4) = *(sp + 4);
*(dp + 5) = *(sp + 5);
*(dp + 6) = *(sp + 6);
*(dp + 7) = *(sp + 7);
}
sp += 8;
dp += 8;
if ((m >>= 1) == 0)
sp += pixel_bytes;
dp += pixel_bytes;
if (m == 1)
m = 0x80;
}
break;
default:
/*for (i = png_ptr->width; i > 0; i--)
*{
* if (m & mask)
* {
* png_size_t j;
* for (j = 0; j < pixel_bytes; j++)
* {
* *(dp + j) = *(sp + j);
* }
* }
* sp += pixel_bytes;
* dp += pixel_bytes;
* if ((m >>= 1) == 0)
* m = 0x80;
*}
*/break;
else
m >>= 1;
}
break;
}
......@@ -2537,101 +2471,122 @@ png_do_read_interlace(png_structp png_ptr)
#endif
png_debug(1,"in png_do_read_interlace (stock C version)\n");
if (row != NULL && row_info != NULL &&
pass < 6)
if (row != NULL && row_info != NULL)
{
png_uint_32 final_width = row_info->width * png_pass_inc[pass];
png_uint_32 final_width;
final_width = row_info->width * png_pass_inc[pass];
switch (row_info->pixel_depth)
{
case 1:
{
static const png_byte pixeltable1[24] =
{0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0xFF,
0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF};
png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3);
png_bytep dp = row + (png_size_t)((final_width - 1) >> 3);
int nbits = 8 / png_pass_inc[pass];
int sshift = 7 - (int)((row_info->width + 7) & 0x07);
int s_inc = nbits;
png_byte smask = (1 << nbits) - 1;
const png_byte *pix = pixeltable1 + (2 * nbits);
int sshift, dshift;
int s_start, s_end, s_inc;
int jstop = png_pass_inc[pass];
png_byte v;
png_uint_32 i;
int j;
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (transformations & PNG_PACKSWAP)
{
sshift = 7 - sshift;
s_inc = -s_inc;
sshift = (int)((row_info->width + 7) & 0x07);
dshift = (int)((final_width + 7) & 0x07);
s_start = 7;
s_end = 0;
s_inc = -1;
}
else
#endif
sshift &= (0x10 - nbits);
for (i = (row_info->width + nbits - 1) / nbits;
i > 0; i--)
{
*dp-- = pix[(*sp >> sshift) & smask];
sshift = 7 - (int)((row_info->width + 7) & 0x07);
dshift = 7 - (int)((final_width + 7) & 0x07);
s_start = 0;
s_end = 7;
s_inc = 1;
}
sshift += s_inc;
if (sshift >= 8)
for (i = 0; i < row_info->width; i++)
{
sshift -= 8;
sp--;
v = (png_byte)((*sp >> sshift) & 0x01);
for (j = 0; j < jstop; j++)
{
*dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff);
*dp |= (png_byte)(v << dshift);
if (dshift == s_end)
{
dshift = s_start;
dp--;
}
else
dshift += s_inc;
}
else if (sshift < 0)
if (sshift == s_end)
{
sshift += 8;
sshift = s_start;
sp--;
}
else
sshift += s_inc;
}
break;
}
case 2:
{
static const png_byte pixeltable2[20] =
{0x00, 0x55, 0xAA, 0xFF,
0x00, 0x05, 0x0A, 0x0F, 0x50, 0x55, 0x5A, 0x5F,
0xA0, 0xA5, 0xAA, 0xAF, 0xF0, 0xF5, 0xFA, 0xFF};
png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 2);
png_bytep dp = row + (png_size_t)((final_width - 1) >> 2);
int is2 = (png_pass_inc[pass] == 2);
int is8 = (png_pass_inc[pass] == 8);
int sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1);
int s_inc = 2 << is2;
png_byte smask = (4 << (2 * is2)) - 1;
const png_byte *pix = pixeltable2 + (4 * is2);
png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2);
png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2);
int sshift, dshift;
int s_start, s_end, s_inc;
int jstop = png_pass_inc[pass];
png_uint_32 i;
png_byte v;
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (transformations & PNG_PACKSWAP)
{
sshift = 6 - sshift;
s_inc = -s_inc;
sshift = (int)(((row_info->width + 3) & 0x03) << 1);
dshift = (int)(((final_width + 3) & 0x03) << 1);
s_start = 6;
s_end = 0;
s_inc = -2;
}
else
#endif
sshift &= (0x0E - (2 * is2));
{
sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1);
dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1);
s_start = 0;
s_end = 6;
s_inc = 2;
}
for (i = (row_info->width + is2) >> is2;
i > 0; i--)
for (i = 0; i < row_info->width; i++)
{
v = pix[(*sp >> sshift) & smask];
*dp-- = v;
if (is8)
*dp-- = v;
png_byte v;
int j;
sshift += s_inc;
if (sshift >= 8)
v = (png_byte)((*sp >> sshift) & 0x03);
for (j = 0; j < jstop; j++)
{
sshift -= 8;
sp--;
*dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff);
*dp |= (png_byte)(v << dshift);
if (dshift == s_end)
{
dshift = s_start;
dp--;
}
else if (sshift < 0)
else
dshift += s_inc;
}
if (sshift == s_end)
{
sshift += 8;
sshift = s_start;
sp--;
}
else
sshift += s_inc;
}
break;
}
......@@ -2639,39 +2594,54 @@ png_do_read_interlace(png_structp png_ptr)
{
png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1);
png_bytep dp = row + (png_size_t)((final_width - 1) >> 1);
int jinit = png_pass_inc[pass] >> 1;
int sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2);
int s_inc = 4;
int sshift, dshift;
int s_start, s_end, s_inc;
png_uint_32 i;
png_byte v;
int j;
int jstop = png_pass_inc[pass];
#if defined(PNG_READ_PACKSWAP_SUPPORTED)
if (transformations & PNG_PACKSWAP)
{
sshift = 4 - sshift;
s_inc = -s_inc;
sshift = (int)(((row_info->width + 1) & 0x01) << 2);
dshift = (int)(((final_width + 1) & 0x01) << 2);
s_start = 4;
s_end = 0;
s_inc = -4;
}
else
#endif
for (i = row_info->width; i > 0; i--)
{
v = (*sp >> sshift) & 0x0F;
v |= v << 4;
sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2);
dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2);
s_start = 0;
s_end = 4;
s_inc = 4;
}
for (j = jinit; j > 0; j--)
*dp-- = v;
for (i = 0; i < row_info->width; i++)
{
png_byte v = (png_byte)((*sp >> sshift) & 0xf);
int j;
sshift += s_inc;
if (sshift >= 8)
for (j = 0; j < jstop; j++)
{
sshift -= 8;
sp--;
*dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff);
*dp |= (png_byte)(v << dshift);
if (dshift == s_end)
{
dshift = s_start;
dp--;
}
else
dshift += s_inc;
}
else if (sshift < 0)
if (sshift == s_end)
{
sshift += 8;
sshift = s_start;
sp--;
}
else
sshift += s_inc;
}
break;
}
......@@ -2679,112 +2649,23 @@ png_do_read_interlace(png_structp png_ptr)
{
png_size_t pixel_bytes = (row_info->pixel_depth >> 3);
png_bytep sp = row + (png_size_t)(row_info->width - 1) * pixel_bytes;
png_bytep dp = row + (png_size_t)(final_width - 2) * pixel_bytes;
int jinit = png_pass_inc[pass] >> 1;
png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes;
int jstop = png_pass_inc[pass];
png_uint_32 i;
int j;
switch (pixel_bytes)
for (i = 0; i < row_info->width; i++)
{
case 1:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
{
*(dp + 0) = *(dp + 1) = *(sp + 0);
dp -= 2;
}
sp -= 1;
}
break;
case 2:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
{
*(dp + 0) = *(dp + 2) = *(sp + 0);
*(dp + 1) = *(dp + 3) = *(sp + 1);
dp -= 4;
}
sp -= 2;
}
break;
case 3:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
{
*(dp + 0) = *(dp + 3) = *(sp + 0);
*(dp + 1) = *(dp + 4) = *(sp + 1);
*(dp + 2) = *(dp + 5) = *(sp + 2);
dp -= 6;
}
sp -= 3;
}
break;
case 4:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
{
*(dp + 0) = *(dp + 4) = *(sp + 0);
*(dp + 1) = *(dp + 5) = *(sp + 1);
*(dp + 2) = *(dp + 6) = *(sp + 2);
*(dp + 3) = *(dp + 7) = *(sp + 3);
dp -= 8;
}
sp -= 4;
}
break;
case 6:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
{
*(dp + 0) = *(dp + 6) = *(sp + 0);
*(dp + 1) = *(dp + 7) = *(sp + 1);
*(dp + 2) = *(dp + 8) = *(sp + 2);
*(dp + 3) = *(dp + 9) = *(sp + 3);
*(dp + 4) = *(dp + 10) = *(sp + 4);
*(dp + 5) = *(dp + 11) = *(sp + 5);
dp -= 12;
}
sp -= 6;
}
break;
case 8:
for (i = row_info->width; i > 0; i--)
{
for (j = jinit; j > 0; j--)
png_byte v[8];
int j;
png_memcpy(v, sp, pixel_bytes);
for (j = 0; j < jstop; j++)
{
*(dp + 0) = *(dp + 8) = *(sp + 0);
*(dp + 1) = *(dp + 9) = *(sp + 1);
*(dp + 2) = *(dp + 10) = *(sp + 2);
*(dp + 3) = *(dp + 11) = *(sp + 3);
*(dp + 4) = *(dp + 12) = *(sp + 4);
*(dp + 5) = *(dp + 13) = *(sp + 5);
*(dp + 6) = *(dp + 14) = *(sp + 6);
*(dp + 7) = *(dp + 15) = *(sp + 7);
dp -= 16;
}
sp -= 8;
png_memcpy(dp, v, pixel_bytes);
dp -= pixel_bytes;
}
break;
default:
/*for (i = row_info->width; i > 0; i--)
*{
* for (j = jinit; j > 0; j--)
* {
* png_size_t k;
* for (k = 0; k < pixel_bytes; k++)
* {
* *(dp + pixel_bytes + k) = *(dp + k) = *(sp + k);
* }
* dp -= (2 * pixel_bytes);
* }
* sp -= pixel_bytes;
*}
*/break;
sp -= pixel_bytes;
}
break;
}
......
/* pngset.c - storage of image information into info struct
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngtest.c - a simple test program to test libpng
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......@@ -1551,4 +1551,4 @@ main(int argc, char *argv[])
}
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_2_8rc2 your_png_h_is_not_version_1_2_8rc2;
typedef version_1_2_8rc3 your_png_h_is_not_version_1_2_8rc3;
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
......@@ -2,7 +2,7 @@
*
* For Intel x86 CPU and Microsoft Visual C++ compiler
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* Copyright (c) 1998, Intel Corporation
......
/* pngwio.c - functions for data output
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngwrite.c - general routines to write a PNG file
*
* libpng 1.2.8rc2 - November 26, 2004
* libpng 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngwtran.c - transforms the data in a row for PNG writers
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
/* pngwutil.c - utilities to write a PNG file
*
* libpng version 1.2.8rc2 - November 26, 2004
* libpng version 1.2.8rc3 - November 28, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
......
......@@ -8,7 +8,7 @@
# Modeled after libxml-config.
version=1.2.8rc2
version=1.2.8rc3
prefix=""
libdir=""
libs=""
......
......@@ -6,6 +6,6 @@ includedir=${exec_prefix}/include
Name: libpng12
Description: Loads and saves PNG files
Version: 1.2.8rc2
Version: 1.2.8rc3
Libs: -L${libdir} -lpng12 -lz -lm
Cflags: -I${includedir}/libpng12
......@@ -33,7 +33,7 @@ RANLIB=echo
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
......
......@@ -33,7 +33,7 @@ RANLIB=echo
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
......
......@@ -18,7 +18,7 @@ RM = rm -f
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
prefix=/usr/local
......
......@@ -12,7 +12,7 @@ ZLIBLIB=/usr/local/lib
ZLIBINC=/usr/local/include
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
ALIGN=
......
......@@ -79,7 +79,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
LIBNAME = libpng12
PNGMAJ = 0
CYGDLL = 12
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
SHAREDLIB=cygpng$(CYGDLL).dll
......
......@@ -23,7 +23,7 @@ LDFLAGS=-L. -L$(ZLIBLIB) -lpng12 -lz
RANLIB=ranlib
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -32,7 +32,7 @@ ZLIBLIB=../zlib
ZLIBINC=../zlib
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
# makefile for libpng.a and libpng12.so on Linux ELF with gcc
# Copyright (C) 1998, 1999, 2002 Greg Roelofs and Glenn Randers-Pehrson
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
CC=gcc
# where "make install" puts libpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/usr/local
# Where the zlib library and include files are located.
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=../zlib
ZLIBINC=../zlib
ALIGN=
# for i386:
#ALIGN=-malign-loops=2 -malign-functions=2
WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
-Wmissing-declarations -Wtraditional -Wcast-align \
-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
# for pgcc version 2.95.1, -O3 is buggy; don't use it.
CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops \
$(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS_A=-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) libpng.a -lz -lm
RANLIB=ranlib
#RANLIB=echo
INCPATH=$(prefix)/include
LIBPATH=$(prefix)/lib
MANPATH=$(prefix)/man
BINPATH=$(prefix)/bin
# override DESTDIR= on the make install command line to easily support
# installing into a temporary location. Example:
#
# make install DESTDIR=/tmp/build/libpng
#
# If you're going to install into a temporary location
# via DESTDIR, $(DESTDIR)$(prefix) must already exist before
# you execute make install.
DESTDIR=
DB=$(DESTDIR)$(BINPATH)
DI=$(DESTDIR)$(INCPATH)
DL=$(DESTDIR)$(LIBPATH)
DM=$(DESTDIR)$(MANPATH)
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
pngwtran.o pngmem.o pngerror.o pngpread.o
OBJSDLL = $(OBJS:.o=.pic.o)
.SUFFIXES: .c .o .pic.o
.c.pic.o:
$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
all: libpng.a $(LIBNAME).so pngtest pngtest-static libpng.pc libpng-config
libpng.a: $(OBJS)
ar rc $@ $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng.syms: png.h pngconf.h
$(CC) $(CFLAGS) -E -DPNG_BUILDSYMS png.h |\
awk -F '[\t [\]();]' 'BEGIN{print "{global:"}\
{ for (i=1;i+2<=NF;++i)\
if ($$(i)=="PNG_FUNCTION_EXPORT" && $$(i+2)=="END")\
print $$(i+1) ";";\
for (i=1;i+1<=NF;++i)\
if ($$(i)=="PNG_DATA_EXPORT")\
print $$(i+1) ";";}\
END{print "local: *; };"}' >$@.new
rm -f $@
mv $@.new $@
libpng-config:
( cat scripts/libpng-config-head.in; \
echo prefix=\"$(prefix)\"; \
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config
$(LIBNAME).so: $(LIBNAME).so.$(PNGMAJ)
ln -sf $(LIBNAME).so.$(PNGMAJ) $(LIBNAME).so
$(LIBNAME).so.$(PNGMAJ): $(LIBNAME).so.$(PNGVER)
ln -sf $(LIBNAME).so.$(PNGVER) $(LIBNAME).so.$(PNGMAJ)
$(LIBNAME).so.$(PNGVER): $(OBJSDLL) libpng.syms
$(CC) -shared -Wl,-soname,$(LIBNAME).so.$(PNGMAJ) \
-Wl,-version-script,libpng.syms \
-o $(LIBNAME).so.$(PNGVER) \
$(OBJSDLL)
libpng.so.3.$(PNGMIN): $(OBJSDLL) libpng.syms
$(CC) -shared -Wl,-soname,libpng.so.3 \
-Wl,-version-script,libpng.syms \
-o libpng.so.3.$(PNGMIN) \
$(OBJSDLL)
pngtest: pngtest.o $(LIBNAME).so
$(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS)
pngtest-static: pngtest.o libpng.a
$(CC) -o pngtest-static $(CFLAGS) pngtest.o $(LDFLAGS_A)
test: pngtest pngtest-static
@echo ""
@echo " Running pngtest dynamically linked with $(LIBNAME).so:"
@echo ""
./pngtest
@echo ""
@echo " Running pngtest statically linked with libpng.a:"
@echo ""
./pngtest-static
install-headers: png.h pngconf.h
-@if [ ! -d $(DI) ]; then mkdir $(DI); fi
-@if [ ! -d $(DI)/$(LIBNAME) ]; then mkdir $(DI)/$(LIBNAME); fi
cp png.h pngconf.h $(DI)/$(LIBNAME)
chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-@/bin/rm -f $(DI)/png.h $(DI)/pngconf.h
-@/bin/rm -f $(DI)/libpng
(cd $(DI); ln -sf $(LIBNAME) libpng; ln -sf $(LIBNAME)/* .)
install-static: install-headers libpng.a
-@if [ ! -d $(DL) ]; then mkdir $(DL); fi
cp libpng.a $(DL)/$(LIBNAME).a
chmod 644 $(DL)/$(LIBNAME).a
-@/bin/rm -f $(DL)/libpng.a
(cd $(DL); ln -sf $(LIBNAME).a libpng.a)
install-shared: install-headers $(LIBNAME).so.$(PNGVER) libpng.pc \
libpng.so.3.$(PNGMIN)
-@if [ ! -d $(DL) ]; then mkdir $(DL); fi
-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGVER)* $(DL)/$(LIBNAME).so
-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)
-@/bin/rm -f $(DL)/libpng.so
-@/bin/rm -f $(DL)/libpng.so.3
-@/bin/rm -f $(DL)/libpng.so.3.$(PNGMIN)*
cp $(LIBNAME).so.$(PNGVER) $(DL)
cp libpng.so.3.$(PNGMIN) $(DL)
chmod 755 $(DL)/$(LIBNAME).so.$(PNGVER)
chmod 755 $(DL)/libpng.so.3.$(PNGMIN)
(cd $(DL); \
ln -sf libpng.so.3.$(PNGMIN) libpng.so.3; \
ln -sf libpng.so.3 libpng.so; \
ln -sf $(LIBNAME).so.$(PNGVER) $(LIBNAME).so.$(PNGMAJ); \
ln -sf $(LIBNAME).so.$(PNGMAJ) $(LIBNAME).so)
-@if [ ! -d $(DL)/pkgconfig ]; then mkdir $(DL)/pkgconfig; fi
-@/bin/rm -f $(DL)/pkgconfig/$(LIBNAME).pc
-@/bin/rm -f $(DL)/pkgconfig/libpng.pc
cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc
chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc
(cd $(DL)/pkgconfig; ln -sf $(LIBNAME).pc libpng.pc)
install-man: libpng.3 libpngpf.3 png.5
-@if [ ! -d $(DM) ]; then mkdir $(DM); fi
-@if [ ! -d $(DM)/man3 ]; then mkdir $(DM)/man3; fi
-@/bin/rm -f $(DM)/man3/libpng.3
-@/bin/rm -f $(DM)/man3/libpngpf.3
cp libpng.3 $(DM)/man3
cp libpngpf.3 $(DM)/man3
-@if [ ! -d $(DM)/man5 ]; then mkdir $(DM)/man5; fi
-@/bin/rm -f $(DM)/man5/png.5
cp png.5 $(DM)/man5
install-config: libpng-config
-@if [ ! -d $(DB) ]; then mkdir $(DB); fi
-@/bin/rm -f $(DB)/libpng-config
-@/bin/rm -f $(DB)/$(LIBNAME)-config
cp libpng-config $(DB)/$(LIBNAME)-config
chmod 755 $(DB)/$(LIBNAME)-config
(cd $(DB); ln -sf $(LIBNAME)-config libpng-config)
install: install-static install-shared install-man install-config
# If you installed in $(DESTDIR), test-installed won't work until you
# move the library to its final location. Use test-dd to test it
# before then.
test-dd:
echo
echo Testing installed dynamic shared library in $(DL).
$(CC) -I$(DI) -I$(ZLIBINC) \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(DL) -L$(ZLIBLIB) -W1, -rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \
-o pngtestd `$(BINPATH)/libpng12-config --ldflags`
./pngtestd pngtest.png
test-installed:
$(CC) -I$(ZLIBINC) \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \
-o pngtesti `$(BINPATH)/libpng12-config --ldflags`
./pngtesti pngtest.png
clean:
/bin/rm -f *.o libpng.a libpng.syms pngtest pngout.png libpng-config \
$(LIBNAME).so $(LIBNAME).so.$(PNGMAJ)* pngtest-static pngtesti \
libpng.so.3.$(PNGMIN) \
libpng.pc
DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
writelock:
chmod a-w *.[ch35] $(DOCS) scripts/*
# DO NOT DELETE THIS LINE -- make depend depends on it.
png.o png.pic.o: png.h pngconf.h
pngerror.o pngerror.pic.o: png.h pngconf.h
pngrio.o pngrio.pic.o: png.h pngconf.h
pngwio.o pngwio.pic.o: png.h pngconf.h
pngmem.o pngmem.pic.o: png.h pngconf.h
pngset.o pngset.pic.o: png.h pngconf.h
pngget.o pngget.pic.o: png.h pngconf.h
pngread.o pngread.pic.o: png.h pngconf.h
pngrtran.o pngrtran.pic.o: png.h pngconf.h
pngrutil.o pngrutil.pic.o: png.h pngconf.h
pngtrans.o pngtrans.pic.o: png.h pngconf.h
pngwrite.o pngwrite.pic.o: png.h pngconf.h
pngwtran.o pngwtran.pic.o: png.h pngconf.h
pngwutil.o pngwutil.pic.o: png.h pngconf.h
pngpread.o pngpread.pic.o: png.h pngconf.h
pngtest.o: png.h pngconf.h
......@@ -15,7 +15,7 @@
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
CC=gcc
......
......@@ -27,7 +27,7 @@ LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
RANLIB=ranlib
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -41,7 +41,7 @@ RANLIB=ranlib
#RANLIB=echo
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -24,7 +24,7 @@ LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
RANLIB=ranlib
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -5,7 +5,7 @@
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
CC=gcc
......
......@@ -13,7 +13,7 @@ INCSDIR=${LOCALBASE}/include/libpng12
LIB= png12
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.2.8rc2
SHLIB_MINOR= 1.2.8rc3
SRCS= pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
......
......@@ -13,7 +13,7 @@ INCSDIR=${LOCALBASE}/include/libpng
LIB= png
SHLIB_MAJOR= 3
SHLIB_MINOR= 1.2.8rc2
SHLIB_MINOR= 1.2.8rc3
SRCS= pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
......
......@@ -7,7 +7,7 @@ LIBDIR= ${PREFIX}/lib
MANDIR= ${PREFIX}/man/cat
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.2.8rc2
SHLIB_MINOR= 1.2.8rc3
LIB= png
SRCS= png.c pngerror.c pnggccrd.c pngget.c pngmem.c pngpread.c \
......
......@@ -24,7 +24,7 @@ LDFLAGS=-L. -L$(ZLIBLIB) -lpng12 -lz -lm
RANLIB=echo
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -18,7 +18,7 @@ ZLIBINC=../zlib
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
CC=gcc
......
......@@ -5,7 +5,7 @@
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
# Where make install puts libpng.a, libpng12.so, and libpng12/png.h
......
......@@ -34,7 +34,7 @@ LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
RANLIB=echo
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -30,7 +30,7 @@ LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
RANLIB=echo
PNGMAJ = 0
PNGMIN = 1.2.8rc2
PNGMIN = 1.2.8rc3
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12
......
......@@ -2,7 +2,7 @@
; PNG.LIB module definition file for OS/2
;----------------------------------------
; Version 1.2.8rc2
; Version 1.2.8rc3
LIBRARY PNG
DESCRIPTION "PNG image compression library for OS/2"
......
......@@ -6,7 +6,7 @@ LIBRARY
DESCRIPTION "PNG image compression library for Windows"
EXPORTS
;Version 1.2.8rc2
;Version 1.2.8rc3
png_build_grayscale_palette @1
png_check_sig @2
png_chunk_error @3
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册