[devel] Added "bit_depth" parameter to the private png_build_gamma_table()

function.  Pass bit_depth=8 to png_build_gamma_table() when bit_depth is 16
but the PNG_16_TO_8 transform has been set, to avoid unnecessary build of
16-bit tables.
This commit is contained in:
Glenn Randers-Pehrson
2009-12-13 08:14:40 -06:00
parent 0452bbcf84
commit ffa8924330
5 changed files with 33 additions and 16 deletions

View File

@@ -1,7 +1,7 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
* Last changed in libpng 1.4.0 [December 11, 2009]
* Last changed in libpng 1.4.0 [December 13, 2009]
* Copyright (c) 1998-2009 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.)
@@ -886,7 +886,11 @@ png_init_read_transformations(png_structp png_ptr)
if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
png_ptr->gamma != 0.0)
{
png_build_gamma_table(png_ptr);
if (png_ptr->transformations & PNG_16_TO_8)
png_build_gamma_table(png_ptr, 8);
else
png_build_gamma_table(png_ptr, png_ptr->bit_depth);
#ifdef PNG_READ_BACKGROUND_SUPPORTED
if (png_ptr->transformations & PNG_BACKGROUND)
{
@@ -3910,11 +3914,11 @@ static PNG_CONST int png_gamma_shift[] =
*/
void /* PRIVATE */
png_build_gamma_table(png_structp png_ptr)
png_build_gamma_table(png_structp png_ptr, png_byte bit_depth)
{
png_debug(1, "in png_build_gamma_table");
if (png_ptr->bit_depth <= 8)
if (bit_depth <= 8)
{
int i;
double g;