mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[libpng16] Improved ICC profile handling including cHRM chunk generation and
fixed Cygwin+MSVC build errors. The ICC profile handling now includes more checking. Several errors that caused rejection of the profile are now handled with a warning in such a way that the invalid profiles will be read by default in release (but not pre-RC) builds but will not be written by default. The easy part of handling a cHRM chunk is written, where the ICC profile contains the required data. The more difficult part plus guessing a gAMA value requires code to pass selected RGB values through the profile.
This commit is contained in:
parent
53f7051b1b
commit
b98681b49a
13
ANNOUNCE
13
ANNOUNCE
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Libpng 1.6.0beta29 - September 1, 2012
|
Libpng 1.6.0beta29 - September 4, 2012
|
||||||
|
|
||||||
This is not intended to be a public release. It will be replaced
|
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.
|
within a few weeks by a public version or by another test version.
|
||||||
@ -482,7 +482,7 @@ Version 1.6.0beta28 [August 29, 2012]
|
|||||||
contain the tags needed to process the PNG (tags all required by the ICC
|
contain the tags needed to process the PNG (tags all required by the ICC
|
||||||
spec). Removed unused PNG_STATIC from pngpriv.h.
|
spec). Removed unused PNG_STATIC from pngpriv.h.
|
||||||
|
|
||||||
Version 1.6.0beta29 [September 1, 2012]
|
Version 1.6.0beta29 [September 4, 2012]
|
||||||
Fixed the simplified API example programs and improved the error message
|
Fixed the simplified API example programs and improved the error message
|
||||||
if the version field is not set.
|
if the version field is not set.
|
||||||
Added contrib/examples/* to the *.zip and *.7z distributions.
|
Added contrib/examples/* to the *.zip and *.7z distributions.
|
||||||
@ -494,6 +494,15 @@ Version 1.6.0beta29 [September 1, 2012]
|
|||||||
where the length has not been extended to a multiple of 4, and pngtest
|
where the length has not been extended to a multiple of 4, and pngtest
|
||||||
now intercepts all libpng errors, allowing the previously-introduced
|
now intercepts all libpng errors, allowing the previously-introduced
|
||||||
"--strict test" on no warnings to actually work.
|
"--strict test" on no warnings to actually work.
|
||||||
|
Improved ICC profile handling including cHRM chunk generation and fixed
|
||||||
|
Cygwin+MSVC build errors. The ICC profile handling now includes more
|
||||||
|
checking. Several errors that caused rejection of the profile are now
|
||||||
|
handled with a warning in such a way that the invalid profiles will be
|
||||||
|
read by default in release (but not pre-RC) builds but will not be
|
||||||
|
written by default. The easy part of handling a cHRM chunk is written,
|
||||||
|
where the ICC profile contains the required data. The more difficult
|
||||||
|
part plus guessing a gAMA value requires code to pass selected RGB values
|
||||||
|
through the profile.
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||||
(subscription required; visit
|
(subscription required; visit
|
||||||
|
11
CHANGES
11
CHANGES
@ -4233,7 +4233,7 @@ Version 1.6.0beta28 [August 29, 2012]
|
|||||||
contain the tags needed to process the PNG (tags all required by the ICC
|
contain the tags needed to process the PNG (tags all required by the ICC
|
||||||
spec). Removed unused PNG_STATIC from pngpriv.h.
|
spec). Removed unused PNG_STATIC from pngpriv.h.
|
||||||
|
|
||||||
Version 1.6.0beta29 [September 1, 2012]
|
Version 1.6.0beta29 [September 4, 2012]
|
||||||
Fixed the simplified API example programs to add the *colormap parameter
|
Fixed the simplified API example programs to add the *colormap parameter
|
||||||
to several of he API and improved the error message if the version field
|
to several of he API and improved the error message if the version field
|
||||||
is not set.
|
is not set.
|
||||||
@ -4246,6 +4246,15 @@ Version 1.6.0beta29 [September 1, 2012]
|
|||||||
where the length has not been extended to a multiple of 4, and pngtest
|
where the length has not been extended to a multiple of 4, and pngtest
|
||||||
now intercepts all libpng errors, allowing the previously-introduced
|
now intercepts all libpng errors, allowing the previously-introduced
|
||||||
"--strict test" on no warnings to actually work.
|
"--strict test" on no warnings to actually work.
|
||||||
|
Improved ICC profile handling including cHRM chunk generation and fixed
|
||||||
|
Cygwin+MSVC build errors. The ICC profile handling now includes more
|
||||||
|
checking. Several errors that caused rejection of the profile are now
|
||||||
|
handled with a warning in such a way that the invalid profiles will be
|
||||||
|
read by default in release (but not pre-RC) builds but will not be
|
||||||
|
written by default. The easy part of handling a cHRM chunk is written,
|
||||||
|
where the ICC profile contains the required data. The more difficult
|
||||||
|
part plus guessing a gAMA value requires code to pass selected RGB values
|
||||||
|
through the profile.
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||||
(subscription required; visit
|
(subscription required; visit
|
||||||
|
4
LICENSE
4
LICENSE
@ -10,7 +10,7 @@ this sentence.
|
|||||||
|
|
||||||
This code is released under the libpng license.
|
This code is released under the libpng license.
|
||||||
|
|
||||||
libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, August 29, 2012, are
|
libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, September 4, 2012, are
|
||||||
Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are
|
Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are
|
||||||
distributed according to the same disclaimer and license as libpng-1.2.5
|
distributed according to the same disclaimer and license as libpng-1.2.5
|
||||||
with the following individual added to the list of Contributing Authors
|
with the following individual added to the list of Contributing Authors
|
||||||
@ -108,4 +108,4 @@ certification mark of the Open Source Initiative.
|
|||||||
|
|
||||||
Glenn Randers-Pehrson
|
Glenn Randers-Pehrson
|
||||||
glennrp at users.sourceforge.net
|
glennrp at users.sourceforge.net
|
||||||
August 29, 2012
|
September 4, 2012
|
||||||
|
2
README
2
README
@ -1,4 +1,4 @@
|
|||||||
README for libpng version 1.6.0beta29 - August 29, 2012 (shared library 16.0)
|
README for libpng version 1.6.0beta29 - September 4, 2012 (shared library 16.0)
|
||||||
See the note about version numbers near the top of png.h
|
See the note about version numbers near the top of png.h
|
||||||
|
|
||||||
See INSTALL for instructions on how to install libpng.
|
See INSTALL for instructions on how to install libpng.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
libpng-manual.txt - A description on how to use and modify libpng
|
libpng-manual.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
libpng version 1.6.0beta29 - September 1, 2012
|
libpng version 1.6.0beta29 - September 4, 2012
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
<glennrp at users.sourceforge.net>
|
<glennrp at users.sourceforge.net>
|
||||||
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
||||||
@ -11,7 +11,7 @@ libpng-manual.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
Based on:
|
||||||
|
|
||||||
libpng versions 0.97, January 1998, through 1.6.0beta29 - September 1, 2012
|
libpng versions 0.97, January 1998, through 1.6.0beta29 - September 4, 2012
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
||||||
|
|
||||||
@ -5064,7 +5064,7 @@ Other rules can be inferred by inspecting the libpng source.
|
|||||||
|
|
||||||
XVI. Y2K Compliance in libpng
|
XVI. Y2K Compliance in libpng
|
||||||
|
|
||||||
September 1, 2012
|
September 4, 2012
|
||||||
|
|
||||||
Since the PNG Development group is an ad-hoc body, we can't make
|
Since the PNG Development group is an ad-hoc body, we can't make
|
||||||
an official declaration.
|
an official declaration.
|
||||||
|
14
libpng.3
14
libpng.3
@ -1,4 +1,4 @@
|
|||||||
.TH LIBPNG 3 "September 1, 2012"
|
.TH LIBPNG 3 "September 4, 2012"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta29
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta29
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -997,7 +997,7 @@ Following is a copy of the libpng-manual.txt file that accompanies libpng.
|
|||||||
.SH LIBPNG.TXT
|
.SH LIBPNG.TXT
|
||||||
libpng-manual.txt - A description on how to use and modify libpng
|
libpng-manual.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
libpng version 1.6.0beta29 - September 1, 2012
|
libpng version 1.6.0beta29 - September 4, 2012
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
<glennrp at users.sourceforge.net>
|
<glennrp at users.sourceforge.net>
|
||||||
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
||||||
@ -1008,7 +1008,7 @@ libpng-manual.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
Based on:
|
||||||
|
|
||||||
libpng versions 0.97, January 1998, through 1.6.0beta29 - September 1, 2012
|
libpng versions 0.97, January 1998, through 1.6.0beta29 - September 4, 2012
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
||||||
|
|
||||||
@ -6062,7 +6062,7 @@ Other rules can be inferred by inspecting the libpng source.
|
|||||||
|
|
||||||
.SH XVI. Y2K Compliance in libpng
|
.SH XVI. Y2K Compliance in libpng
|
||||||
|
|
||||||
September 1, 2012
|
September 4, 2012
|
||||||
|
|
||||||
Since the PNG Development group is an ad-hoc body, we can't make
|
Since the PNG Development group is an ad-hoc body, we can't make
|
||||||
an official declaration.
|
an official declaration.
|
||||||
@ -6330,7 +6330,7 @@ possible without all of you.
|
|||||||
|
|
||||||
Thanks to Frank J. T. Wojcik for helping with the documentation.
|
Thanks to Frank J. T. Wojcik for helping with the documentation.
|
||||||
|
|
||||||
Libpng version 1.6.0beta29 - September 1, 2012:
|
Libpng version 1.6.0beta29 - September 4, 2012:
|
||||||
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
|
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
|
||||||
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
|
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
|
||||||
|
|
||||||
@ -6353,7 +6353,7 @@ this sentence.
|
|||||||
|
|
||||||
This code is released under the libpng license.
|
This code is released under the libpng license.
|
||||||
|
|
||||||
libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, September 1, 2012, are
|
libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, September 4, 2012, are
|
||||||
Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
|
Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
|
||||||
distributed according to the same disclaimer and license as libpng-1.2.5
|
distributed according to the same disclaimer and license as libpng-1.2.5
|
||||||
with the following individual added to the list of Contributing Authors
|
with the following individual added to the list of Contributing Authors
|
||||||
@ -6452,7 +6452,7 @@ certification mark of the Open Source Initiative.
|
|||||||
|
|
||||||
Glenn Randers-Pehrson
|
Glenn Randers-Pehrson
|
||||||
glennrp at users.sourceforge.net
|
glennrp at users.sourceforge.net
|
||||||
September 1, 2012
|
September 4, 2012
|
||||||
|
|
||||||
.\" end of man page
|
.\" end of man page
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.TH LIBPNGPF 3 "August 29, 2012"
|
.TH LIBPNGPF 3 "September 4, 2012"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta29
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta29
|
||||||
(private functions)
|
(private functions)
|
||||||
|
2
png.5
2
png.5
@ -1,4 +1,4 @@
|
|||||||
.TH PNG 5 "August 29, 2012"
|
.TH PNG 5 "September 4, 2012"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
png \- Portable Network Graphics (PNG) format
|
png \- Portable Network Graphics (PNG) format
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
10
png.h
10
png.h
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* png.h - header file for PNG reference library
|
/* png.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* libpng version 1.6.0beta29 - August 29, 2012
|
* libpng version 1.6.0beta29 - September 4, 2012
|
||||||
* Copyright (c) 1998-2012 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2012 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
@ -11,7 +11,7 @@
|
|||||||
* Authors and maintainers:
|
* Authors and maintainers:
|
||||||
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
|
* 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.89c, June 1996, through 0.96, May 1997: Andreas Dilger
|
||||||
* libpng versions 0.97, January 1998, through 1.6.0beta29 - August 29, 2012: Glenn
|
* libpng versions 0.97, January 1998, through 1.6.0beta29 - September 4, 2012: Glenn
|
||||||
* See also "Contributing Authors", below.
|
* See also "Contributing Authors", below.
|
||||||
*
|
*
|
||||||
* Note about libpng version numbers:
|
* Note about libpng version numbers:
|
||||||
@ -198,7 +198,7 @@
|
|||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
*
|
*
|
||||||
* libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, August 29, 2012, are
|
* libpng versions 1.2.6, August 15, 2004, through 1.6.0beta29, September 4, 2012, are
|
||||||
* Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are
|
* Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are
|
||||||
* distributed according to the same disclaimer and license as libpng-1.2.5
|
* distributed according to the same disclaimer and license as libpng-1.2.5
|
||||||
* with the following individual added to the list of Contributing Authors:
|
* with the following individual added to the list of Contributing Authors:
|
||||||
@ -310,7 +310,7 @@
|
|||||||
* Y2K compliance in libpng:
|
* Y2K compliance in libpng:
|
||||||
* =========================
|
* =========================
|
||||||
*
|
*
|
||||||
* August 29, 2012
|
* September 4, 2012
|
||||||
*
|
*
|
||||||
* Since the PNG Development group is an ad-hoc body, we can't make
|
* Since the PNG Development group is an ad-hoc body, we can't make
|
||||||
* an official declaration.
|
* an official declaration.
|
||||||
@ -378,7 +378,7 @@
|
|||||||
/* Version information for png.h - this should match the version in png.c */
|
/* Version information for png.h - this should match the version in png.c */
|
||||||
#define PNG_LIBPNG_VER_STRING "1.6.0beta29"
|
#define PNG_LIBPNG_VER_STRING "1.6.0beta29"
|
||||||
#define PNG_HEADER_VERSION_STRING \
|
#define PNG_HEADER_VERSION_STRING \
|
||||||
" libpng version 1.6.0beta29 - August 29, 2012\n"
|
" libpng version 1.6.0beta29 - September 4, 2012\n"
|
||||||
|
|
||||||
#define PNG_LIBPNG_VER_SONUM 16
|
#define PNG_LIBPNG_VER_SONUM 16
|
||||||
#define PNG_LIBPNG_VER_DLLNUM 16
|
#define PNG_LIBPNG_VER_DLLNUM 16
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngconf.h - machine configurable file for libpng
|
/* pngconf.h - machine configurable file for libpng
|
||||||
*
|
*
|
||||||
* libpng version 1.6.0beta29 - August 29, 2012
|
* libpng version 1.6.0beta29 - September 4, 2012
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2012 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2012 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
|
@ -272,7 +272,7 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
||||||
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)))
|
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0)
|
||||||
{
|
{
|
||||||
if (png_ptr->push_length + 4 > png_ptr->buffer_size)
|
if (png_ptr->push_length + 4 > png_ptr->buffer_size)
|
||||||
{
|
{
|
||||||
|
@ -1442,8 +1442,8 @@ PNG_INTERNAL_FUNCTION(int,png_colorspace_set_sRGB,(png_const_structrp png_ptr,
|
|||||||
#ifdef PNG_iCCP_SUPPORTED
|
#ifdef PNG_iCCP_SUPPORTED
|
||||||
PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr,
|
||||||
png_colorspacerp colorspace, png_const_charp name,
|
png_colorspacerp colorspace, png_const_charp name,
|
||||||
png_uint_32 profile_length, png_const_bytep profile, int preferred,
|
png_uint_32 profile_length, png_const_bytep profile, int color_type),
|
||||||
int color_type), PNG_EMPTY);
|
PNG_EMPTY);
|
||||||
/* The 'name' is used for information only */
|
/* The 'name' is used for information only */
|
||||||
|
|
||||||
/* Routines for checking parts of an ICC profile. */
|
/* Routines for checking parts of an ICC profile. */
|
||||||
@ -1461,8 +1461,7 @@ PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr,
|
|||||||
png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY);
|
png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY);
|
||||||
PNG_INTERNAL_FUNCTION(int,png_icc_set_gAMA_and_cHRM,(
|
PNG_INTERNAL_FUNCTION(int,png_icc_set_gAMA_and_cHRM,(
|
||||||
png_const_structrp png_ptr, png_colorspacerp colorspace,
|
png_const_structrp png_ptr, png_colorspacerp colorspace,
|
||||||
png_const_charp name, png_const_bytep profile, uLong adler, int preferred),
|
png_const_charp name, png_const_bytep profile, uLong adler), PNG_EMPTY);
|
||||||
PNG_EMPTY);
|
|
||||||
/* 'adler' is the Adler32 checksum of the uncompressed profile data. It may
|
/* 'adler' is the Adler32 checksum of the uncompressed profile data. It may
|
||||||
* be zero to indicate that it is not available. It is used, if provided,
|
* be zero to indicate that it is not available. It is used, if provided,
|
||||||
* as a fast check on the profile when checking to see if it is sRGB. The
|
* as a fast check on the profile when checking to see if it is sRGB. The
|
||||||
|
@ -139,7 +139,7 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr)
|
|||||||
png_handle_IEND(png_ptr, info_ptr, length);
|
png_handle_IEND(png_ptr, info_ptr, length);
|
||||||
|
|
||||||
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
||||||
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)))
|
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0)
|
||||||
{
|
{
|
||||||
png_handle_unknown(png_ptr, info_ptr, length, keep);
|
png_handle_unknown(png_ptr, info_ptr, length, keep);
|
||||||
|
|
||||||
@ -723,7 +723,7 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr)
|
|||||||
png_handle_IEND(png_ptr, info_ptr, length);
|
png_handle_IEND(png_ptr, info_ptr, length);
|
||||||
|
|
||||||
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
||||||
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)))
|
else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0)
|
||||||
{
|
{
|
||||||
if (chunk_name == png_IDAT)
|
if (chunk_name == png_IDAT)
|
||||||
{
|
{
|
||||||
|
@ -1495,8 +1495,7 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
|||||||
*/
|
*/
|
||||||
ok = png_icc_set_gAMA_and_cHRM(png_ptr,
|
ok = png_icc_set_gAMA_and_cHRM(png_ptr,
|
||||||
&png_ptr->colorspace, keyword, profile,
|
&png_ptr->colorspace, keyword, profile,
|
||||||
png_ptr->zstream.adler,
|
png_ptr->zstream.adler);
|
||||||
0/*prefer explicit gAMA/cHRM*/);
|
|
||||||
|
|
||||||
/* Steal the profile for info_ptr. */
|
/* Steal the profile for info_ptr. */
|
||||||
if (ok && info_ptr != NULL)
|
if (ok && info_ptr != NULL)
|
||||||
|
13
pngset.c
13
pngset.c
@ -649,8 +649,7 @@ png_set_iCCP(png_const_structrp png_ptr, png_inforp info_ptr,
|
|||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int result = png_colorspace_set_ICC(png_ptr, &info_ptr->colorspace, name,
|
int result = png_colorspace_set_ICC(png_ptr, &info_ptr->colorspace, name,
|
||||||
proflen, profile, 0/* do *not* override the app cHRM or gAMA */,
|
proflen, profile, info_ptr->color_type);
|
||||||
info_ptr->color_type);
|
|
||||||
|
|
||||||
png_colorspace_sync_info(png_ptr, info_ptr);
|
png_colorspace_sync_info(png_ptr, info_ptr);
|
||||||
|
|
||||||
@ -1072,7 +1071,7 @@ png_set_sPLT(png_const_structrp png_ptr,
|
|||||||
|
|
||||||
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
||||||
static png_byte
|
static png_byte
|
||||||
check_location(png_const_structrp png_ptr, unsigned int location)
|
check_location(png_const_structrp png_ptr, int location)
|
||||||
{
|
{
|
||||||
location &= (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT);
|
location &= (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT);
|
||||||
|
|
||||||
@ -1086,8 +1085,8 @@ check_location(png_const_structrp png_ptr, unsigned int location)
|
|||||||
png_app_warning(png_ptr,
|
png_app_warning(png_ptr,
|
||||||
"png_set_unknown_chunks now expects a valid location");
|
"png_set_unknown_chunks now expects a valid location");
|
||||||
/* Use the old behavior */
|
/* Use the old behavior */
|
||||||
location = png_ptr->mode &
|
location = (png_byte)(png_ptr->mode &
|
||||||
(PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT);
|
(PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (location == 0)
|
if (location == 0)
|
||||||
@ -1097,7 +1096,7 @@ check_location(png_const_structrp png_ptr, unsigned int location)
|
|||||||
* significant bit in turn.
|
* significant bit in turn.
|
||||||
*/
|
*/
|
||||||
while (location != (location & -location))
|
while (location != (location & -location))
|
||||||
location &= (png_byte)~(location & -location);
|
location &= ~(location & -location);
|
||||||
|
|
||||||
/* The cast is safe because 'location' is a bit mask and only the low four
|
/* The cast is safe because 'location' is a bit mask and only the low four
|
||||||
* bits are significant.
|
* bits are significant.
|
||||||
@ -1206,7 +1205,7 @@ png_set_unknown_chunk_location(png_const_structrp png_ptr, png_inforp info_ptr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
info_ptr->unknown_chunks[chunk].location =
|
info_ptr->unknown_chunks[chunk].location =
|
||||||
check_location(png_ptr, (png_byte)location);
|
check_location(png_ptr, location);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
70
pngstruct.h
70
pngstruct.h
@ -119,6 +119,7 @@ typedef struct png_colorspace
|
|||||||
#ifdef PNG_COLORSPACE_SUPPORTED
|
#ifdef PNG_COLORSPACE_SUPPORTED
|
||||||
png_xy end_points_xy; /* End points as chromaticities */
|
png_xy end_points_xy; /* End points as chromaticities */
|
||||||
png_XYZ end_points_XYZ; /* End points as CIE XYZ colorant values */
|
png_XYZ end_points_XYZ; /* End points as CIE XYZ colorant values */
|
||||||
|
png_uint_32 icc_info; /* Record of information from the colorspace */
|
||||||
png_uint_16 rendering_intent; /* Rendering intent of a profile */
|
png_uint_16 rendering_intent; /* Rendering intent of a profile */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -128,6 +129,75 @@ typedef struct png_colorspace
|
|||||||
|
|
||||||
typedef const png_colorspace * PNG_RESTRICT png_const_colorspacerp;
|
typedef const png_colorspace * PNG_RESTRICT png_const_colorspacerp;
|
||||||
|
|
||||||
|
/* ICC specific flags for the 'icc_info' field. */
|
||||||
|
/* The first four bits are for information defined from the profile, the
|
||||||
|
* remainder of the bits indicate the presence of specific tags. The #define
|
||||||
|
* names are derived from the tag name in the ICC 2010 (v4) specification.
|
||||||
|
*/
|
||||||
|
# define PNG_ICC_PCSXYZ 0x00000001U /* PCSXYS, else PCSLAB */
|
||||||
|
# define PNG_ICC_RGB 0x00000002U /* 'RGB ', else 'GRAY ' */
|
||||||
|
/* 0x00000004U reserved */
|
||||||
|
/* 0x00000008U reserved */
|
||||||
|
|
||||||
|
/* A utility to return the number of channels on the A side of the transform
|
||||||
|
* given an info value (can be optimized).
|
||||||
|
*/
|
||||||
|
# define PNG_ICC_CHANNELS(info) ((((info)&PNG_ICC_RGB)?2U:0U)+1U)
|
||||||
|
|
||||||
|
/* The profile description and copyright must be present in all valid ICC
|
||||||
|
* profiles, however libpng does not use them so absence is just reported as
|
||||||
|
* a warning. The media white point should be present too, but if it isn't
|
||||||
|
* all we lose is the ability to know if it differs from the adopted white
|
||||||
|
* (i.e. the information that the device maxima are actually colored;
|
||||||
|
* a non-white substrate for a printer, or an uncorrected scan for example.)
|
||||||
|
* The chromaticAdaptationTag tells us that the adopted white of the original
|
||||||
|
* differs from the PCS adopted white (which is identical to the PCS
|
||||||
|
* illuminant and should always be D50).
|
||||||
|
*/
|
||||||
|
# define PNG_ICC_profileDescriptionTag 0x00000010U /* required */
|
||||||
|
# define PNG_ICC_copyrightTag 0x00000020U /* required */
|
||||||
|
# define PNG_ICC_mediaWhitePointTag 0x00000040U /* required */
|
||||||
|
# define PNG_ICC_chromaticAdaptationTag 0x00000080U /* optional */
|
||||||
|
|
||||||
|
/* Tags that are required in all profiles (except DeviceLink): */
|
||||||
|
# define PNG_ICC_REQUIRED_BASE 0x00000070U
|
||||||
|
|
||||||
|
/* Other tags have to appear in specific profiles. In general a profile must
|
||||||
|
* either contain appropriate TRC and (for RGB profiles) matrix tags *or* it
|
||||||
|
* must contain AToB0 and BToA0 - the CLUT based transforms to an absolute
|
||||||
|
* colorimetric PCS. In the TRC case the PCS encoding must be PCSXYZ.
|
||||||
|
*/
|
||||||
|
# define PNG_ICC_redMatrixColumnTag 0x00000100U
|
||||||
|
# define PNG_ICC_greenMatrixColumnTag 0x00000200U
|
||||||
|
# define PNG_ICC_blueMatrixColumnTag 0x00000400U
|
||||||
|
/* 0x00000800U reserved */
|
||||||
|
# define PNG_ICC_redTRCTag 0x00001000U
|
||||||
|
# define PNG_ICC_greenTRCTag 0x00002000U
|
||||||
|
# define PNG_ICC_blueTRCTag 0x00004000U
|
||||||
|
# define PNG_ICC_grayTRCTag 0x00008000U
|
||||||
|
# define PNG_ICC_REQUIRED_RGB_MATRIXTRC 0x00007700U /* Required for RGB TRC */
|
||||||
|
# define PNG_ICC_ALL_TRC 0x0000f000U /* Includes all TRCTags */
|
||||||
|
# define PNG_ICC_REQUIRED_MATRIX 0x00000700U /* All MatrixColumnTags */
|
||||||
|
|
||||||
|
# define PNG_ICC_AToB0Tag 0x00010000U
|
||||||
|
# define PNG_ICC_BToA0Tag 0x00020000U
|
||||||
|
# define PNG_ICC_AToB1Tag 0x00040000U
|
||||||
|
# define PNG_ICC_BToA1Tag 0x00080000U
|
||||||
|
# define PNG_ICC_AToB2Tag 0x00100000U
|
||||||
|
# define PNG_ICC_BToA2Tag 0x00200000U
|
||||||
|
# define PNG_ICC_AToB_TAGS 0x00050000U /* Just AToB0 and AToB1 */
|
||||||
|
# define PNG_ICC_ALL_LUT 0x003f0000U
|
||||||
|
/* 0x00400000U reserved */
|
||||||
|
/* 0x00800000U reserved */
|
||||||
|
|
||||||
|
/* The ICC profile specification allows for shortcuts in the cHRM calculation
|
||||||
|
* via the colorant table (clrt) or the chromaticity tag (chrm).
|
||||||
|
*/
|
||||||
|
# define PNG_ICC_chromaticityTag 0x01000000U
|
||||||
|
# define PNG_ICC_colorantTableTag 0x02000000U
|
||||||
|
# define PNG_ICC_gamutTag 0x04000000U
|
||||||
|
|
||||||
|
/* General flags for the 'flags' field */
|
||||||
#define PNG_COLORSPACE_HAVE_GAMMA 0x0001
|
#define PNG_COLORSPACE_HAVE_GAMMA 0x0001
|
||||||
#define PNG_COLORSPACE_HAVE_ENDPOINTS 0x0002
|
#define PNG_COLORSPACE_HAVE_ENDPOINTS 0x0002
|
||||||
#define PNG_COLORSPACE_HAVE_INTENT 0x0004
|
#define PNG_COLORSPACE_HAVE_INTENT 0x0004
|
||||||
|
25
pngtest.c
25
pngtest.c
@ -403,19 +403,24 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
* here if you don't want to. In the default configuration, png_ptr is
|
* here if you don't want to. In the default configuration, png_ptr is
|
||||||
* not used, but it is passed in case it may be useful.
|
* not used, but it is passed in case it may be useful.
|
||||||
*/
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
PNG_CONST char *file_name;
|
||||||
|
} pngtest_error_parameters;
|
||||||
|
|
||||||
static void PNGCBAPI
|
static void PNGCBAPI
|
||||||
pngtest_warning(png_structp png_ptr, png_const_charp message)
|
pngtest_warning(png_structp png_ptr, png_const_charp message)
|
||||||
{
|
{
|
||||||
PNG_CONST char *name = "UNKNOWN (ERROR!)";
|
PNG_CONST char *name = "UNKNOWN (ERROR!)";
|
||||||
PNG_CONST char **test= (PNG_CONST char **)png_get_error_ptr(png_ptr);
|
pngtest_error_parameters *test =
|
||||||
|
(pngtest_error_parameters*)png_get_error_ptr(png_ptr);
|
||||||
|
|
||||||
++warning_count;
|
++warning_count;
|
||||||
|
|
||||||
if (test == NULL || *test == NULL)
|
if (test != NULL && test->file_name != NULL)
|
||||||
fprintf(STDERR, "%s: libpng warning: %s\n", name, message);
|
name = test->file_name;
|
||||||
|
|
||||||
else
|
fprintf(STDERR, "%s: libpng warning: %s\n", name, message);
|
||||||
fprintf(STDERR, "%s: libpng warning: %s\n", *test, message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is the default error handling function. Note that replacements for
|
/* This is the default error handling function. Note that replacements for
|
||||||
@ -800,7 +805,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
{
|
{
|
||||||
static png_FILE_p fpin;
|
static png_FILE_p fpin;
|
||||||
static png_FILE_p fpout; /* "static" prevents setjmp corruption */
|
static png_FILE_p fpout; /* "static" prevents setjmp corruption */
|
||||||
static PNG_CONST char *fp_name;
|
pngtest_error_parameters error_parameters;
|
||||||
png_structp read_ptr;
|
png_structp read_ptr;
|
||||||
png_infop read_info_ptr, end_info_ptr;
|
png_infop read_info_ptr, end_info_ptr;
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
@ -819,7 +824,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
int bit_depth, color_type;
|
int bit_depth, color_type;
|
||||||
|
|
||||||
row_buf = NULL;
|
row_buf = NULL;
|
||||||
fp_name = inname;
|
error_parameters.file_name = inname;
|
||||||
|
|
||||||
if ((fpin = fopen(inname, "rb")) == NULL)
|
if ((fpin = fopen(inname, "rb")) == NULL)
|
||||||
{
|
{
|
||||||
@ -843,7 +848,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
read_ptr =
|
read_ptr =
|
||||||
png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
png_set_error_fn(read_ptr, &fp_name, pngtest_error, pngtest_warning);
|
png_set_error_fn(read_ptr, &error_parameters, pngtest_error,
|
||||||
|
pngtest_warning);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
@ -854,7 +860,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
write_ptr =
|
write_ptr =
|
||||||
png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
png_set_error_fn(write_ptr, &fp_name, pngtest_error, pngtest_warning);
|
png_set_error_fn(write_ptr, &error_parameters, pngtest_error,
|
||||||
|
pngtest_warning);
|
||||||
#endif
|
#endif
|
||||||
pngtest_debug("Allocating read_info, write_info and end_info structures");
|
pngtest_debug("Allocating read_info, write_info and end_info structures");
|
||||||
read_info_ptr = png_create_info_struct(read_ptr);
|
read_info_ptr = png_create_info_struct(read_ptr);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
VisualStudio instructions
|
VisualStudio instructions
|
||||||
|
|
||||||
libpng version 1.6.0beta29 - August 29, 2012
|
libpng version 1.6.0beta29 - September 4, 2012
|
||||||
|
|
||||||
Copyright (c) 1998-2010 Glenn Randers-Pehrson
|
Copyright (c) 1998-2010 Glenn Randers-Pehrson
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* zlib.props - location of zlib source
|
* zlib.props - location of zlib source
|
||||||
*
|
*
|
||||||
* libpng version 1.6.0beta29 - August 29, 2012
|
* libpng version 1.6.0beta29 - September 4, 2012
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2011 Glenn Randers-Pehrson
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Makefiles for libpng version 1.6.0beta29 - August 29, 2012
|
Makefiles for libpng version 1.6.0beta29 - September 4, 2012
|
||||||
|
|
||||||
pnglibconf.h.prebuilt => Stores configuration settings
|
pnglibconf.h.prebuilt => Stores configuration settings
|
||||||
makefile.linux => Linux/ELF makefile
|
makefile.linux => Linux/ELF makefile
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
/* pnglibconf.h - library build configuration */
|
/* pnglibconf.h - library build configuration */
|
||||||
|
|
||||||
/* Libpng 1.6.0beta29 - August 29, 2012 */
|
/* Libpng 1.6.0beta29 - September 4, 2012 */
|
||||||
|
|
||||||
/* Copyright (c) 1998-2012 Glenn Randers-Pehrson */
|
/* Copyright (c) 1998-2012 Glenn Randers-Pehrson */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user