mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[devel] Imported from libpng-1.4.0beta74.tar
This commit is contained in:
36
pngrtran.c
36
pngrtran.c
@@ -1,7 +1,7 @@
|
||||
|
||||
/* pngrtran.c - transforms the data in a row for PNG readers
|
||||
*
|
||||
* Last changed in libpng 1.4.0 [August 1, 2009]
|
||||
* Last changed in libpng 1.4.0 [August 8, 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.)
|
||||
@@ -859,7 +859,7 @@ png_init_read_transformations(png_structp png_ptr)
|
||||
int i, istop;
|
||||
istop=(int)png_ptr->num_trans;
|
||||
for (i=0; i<istop; i++)
|
||||
png_ptr->trans[i] = (png_byte)(255 - png_ptr->trans[i]);
|
||||
png_ptr->trans_alpha[i] = (png_byte)(255 - png_ptr->trans_alpha[i]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -881,7 +881,7 @@ png_init_read_transformations(png_structp png_ptr)
|
||||
k=0;
|
||||
for (i=0; i<png_ptr->num_trans; i++)
|
||||
{
|
||||
if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff)
|
||||
if (png_ptr->trans_alpha[i] != 0 && png_ptr->trans_alpha[i] != 0xff)
|
||||
k=1; /* Partial transparency is present */
|
||||
}
|
||||
if (k == 0)
|
||||
@@ -963,26 +963,26 @@ png_init_read_transformations(png_structp png_ptr)
|
||||
}
|
||||
for (i = 0; i < num_palette; i++)
|
||||
{
|
||||
if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff)
|
||||
if (i < (int)png_ptr->num_trans && png_ptr->trans_alpha[i] != 0xff)
|
||||
{
|
||||
if (png_ptr->trans[i] == 0)
|
||||
if (png_ptr->trans_alpha[i] == 0)
|
||||
{
|
||||
palette[i] = back;
|
||||
}
|
||||
else /* if (png_ptr->trans[i] != 0xff) */
|
||||
else /* if (png_ptr->trans_alpha[i] != 0xff) */
|
||||
{
|
||||
png_byte v, w;
|
||||
|
||||
v = png_ptr->gamma_to_1[palette[i].red];
|
||||
png_composite(w, v, png_ptr->trans[i], back_1.red);
|
||||
png_composite(w, v, png_ptr->trans_alpha[i], back_1.red);
|
||||
palette[i].red = png_ptr->gamma_from_1[w];
|
||||
|
||||
v = png_ptr->gamma_to_1[palette[i].green];
|
||||
png_composite(w, v, png_ptr->trans[i], back_1.green);
|
||||
png_composite(w, v, png_ptr->trans_alpha[i], back_1.green);
|
||||
palette[i].green = png_ptr->gamma_from_1[w];
|
||||
|
||||
v = png_ptr->gamma_to_1[palette[i].blue];
|
||||
png_composite(w, v, png_ptr->trans[i], back_1.blue);
|
||||
png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue);
|
||||
palette[i].blue = png_ptr->gamma_from_1[w];
|
||||
}
|
||||
}
|
||||
@@ -1102,19 +1102,19 @@ png_init_read_transformations(png_structp png_ptr)
|
||||
|
||||
for (i = 0; i < istop; i++)
|
||||
{
|
||||
if (png_ptr->trans[i] == 0)
|
||||
if (png_ptr->trans_alpha[i] == 0)
|
||||
{
|
||||
palette[i] = back;
|
||||
}
|
||||
else if (png_ptr->trans[i] != 0xff)
|
||||
else if (png_ptr->trans_alpha[i] != 0xff)
|
||||
{
|
||||
/* The png_composite() macro is defined in png.h */
|
||||
png_composite(palette[i].red, palette[i].red,
|
||||
png_ptr->trans[i], back.red);
|
||||
png_ptr->trans_alpha[i], back.red);
|
||||
png_composite(palette[i].green, palette[i].green,
|
||||
png_ptr->trans[i], back.green);
|
||||
png_ptr->trans_alpha[i], back.green);
|
||||
png_composite(palette[i].blue, palette[i].blue,
|
||||
png_ptr->trans[i], back.blue);
|
||||
png_ptr->trans_alpha[i], back.blue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1334,7 +1334,7 @@ png_do_read_transformations(png_structp png_ptr)
|
||||
if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE)
|
||||
{
|
||||
png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1,
|
||||
png_ptr->palette, png_ptr->trans, png_ptr->num_trans);
|
||||
png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3506,7 +3506,7 @@ png_do_gamma(png_row_infop row_info, png_bytep row,
|
||||
*/
|
||||
void /* PRIVATE */
|
||||
png_do_expand_palette(png_row_infop row_info, png_bytep row,
|
||||
png_colorp palette, png_bytep trans, int num_trans)
|
||||
png_colorp palette, png_bytep trans_alpha, int num_trans)
|
||||
{
|
||||
int shift, value;
|
||||
png_bytep sp, dp;
|
||||
@@ -3597,7 +3597,7 @@ png_do_expand_palette(png_row_infop row_info, png_bytep row,
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
if (trans != NULL)
|
||||
if (trans_alpha != NULL)
|
||||
{
|
||||
sp = row + (png_size_t)row_width - 1;
|
||||
dp = row + (png_size_t)(row_width << 2) - 1;
|
||||
@@ -3607,7 +3607,7 @@ png_do_expand_palette(png_row_infop row_info, png_bytep row,
|
||||
if ((int)(*sp) >= num_trans)
|
||||
*dp-- = 0xff;
|
||||
else
|
||||
*dp-- = trans[*sp];
|
||||
*dp-- = trans_alpha[*sp];
|
||||
*dp-- = palette[*sp].blue;
|
||||
*dp-- = palette[*sp].green;
|
||||
*dp-- = palette[*sp].red;
|
||||
|
||||
Reference in New Issue
Block a user