@ -1,8 +1,8 @@
/* pngwutil.c - utilities to write a PNG file
/* pngwutil.c - utilities to write a PNG file
*
*
* Last changed in libpng 1.6 .32 [ August 24 , 2017 ]
* Last changed in libpng 1.6 .35 [ July 15 , 2018 ]
* Copyright ( c ) 1998 - 2002 , 2004 , 2006 - 2017 Glenn Randers - Pehrson
* Copyright ( c ) 1998 - 2002 , 2004 , 2006 - 2018 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 . )
*
*
@ -59,7 +59,7 @@ png_write_sig(png_structrp png_ptr)
/* Write the rest of the 8 byte signature */
/* Write the rest of the 8 byte signature */
png_write_data ( png_ptr , & png_signature [ png_ptr - > sig_bytes ] ,
png_write_data ( png_ptr , & png_signature [ png_ptr - > sig_bytes ] ,
( png_ size_t) ( 8 - png_ptr - > sig_bytes ) ) ;
( size_t ) ( 8 - png_ptr - > sig_bytes ) ) ;
if ( png_ptr - > sig_bytes < 3 )
if ( png_ptr - > sig_bytes < 3 )
png_ptr - > mode | = PNG_HAVE_PNG_SIGNATURE ;
png_ptr - > mode | = PNG_HAVE_PNG_SIGNATURE ;
@ -124,8 +124,7 @@ png_write_chunk_start(png_structrp png_ptr, png_const_bytep chunk_string,
* given to png_write_chunk_header ( ) .
* given to png_write_chunk_header ( ) .
*/
*/
void PNGAPI
void PNGAPI
png_write_chunk_data ( png_structrp png_ptr , png_const_bytep data ,
png_write_chunk_data ( png_structrp png_ptr , png_const_bytep data , size_t length )
png_size_t length )
{
{
/* Write the data, and run the CRC over it */
/* Write the data, and run the CRC over it */
if ( png_ptr = = NULL )
if ( png_ptr = = NULL )
@ -160,7 +159,7 @@ png_write_chunk_end(png_structrp png_ptr)
/* Write the crc in a single operation */
/* Write the crc in a single operation */
png_save_uint_32 ( buf , png_ptr - > crc ) ;
png_save_uint_32 ( buf , png_ptr - > crc ) ;
png_write_data ( png_ptr , buf , ( png_size_t ) 4 ) ;
png_write_data ( png_ptr , buf , 4 ) ;
}
}
/* Write a PNG chunk all at once. The type is an array of ASCII characters
/* Write a PNG chunk all at once. The type is an array of ASCII characters
@ -174,7 +173,7 @@ png_write_chunk_end(png_structrp png_ptr)
*/
*/
static void
static void
png_write_complete_chunk ( png_structrp png_ptr , png_uint_32 chunk_name ,
png_write_complete_chunk ( png_structrp png_ptr , png_uint_32 chunk_name ,
png_const_bytep data , png_ size_t length )
png_const_bytep data , size_t length )
{
{
if ( png_ptr = = NULL )
if ( png_ptr = = NULL )
return ;
return ;
@ -191,7 +190,7 @@ png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name,
/* This is the API that calls the internal function above. */
/* This is the API that calls the internal function above. */
void PNGAPI
void PNGAPI
png_write_chunk ( png_structrp png_ptr , png_const_bytep chunk_string ,
png_write_chunk ( png_structrp png_ptr , png_const_bytep chunk_string ,
png_const_bytep data , png_ size_t length )
png_const_bytep data , size_t length )
{
{
png_write_complete_chunk ( png_ptr , PNG_CHUNK_FROM_STRING ( chunk_string ) , data ,
png_write_complete_chunk ( png_ptr , PNG_CHUNK_FROM_STRING ( chunk_string ) , data ,
length ) ;
length ) ;
@ -820,7 +819,7 @@ png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height,
buf [ 12 ] = ( png_byte ) interlace_type ;
buf [ 12 ] = ( png_byte ) interlace_type ;
/* Write the chunk */
/* Write the chunk */
png_write_complete_chunk ( png_ptr , png_IHDR , buf , ( png_size_t ) 13 ) ;
png_write_complete_chunk ( png_ptr , png_IHDR , buf , 13 ) ;
if ( ( png_ptr - > do_filter ) = = PNG_NO_FILTERS )
if ( ( png_ptr - > do_filter ) = = PNG_NO_FILTERS )
{
{
@ -889,7 +888,7 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette,
buf [ 0 ] = pal_ptr - > red ;
buf [ 0 ] = pal_ptr - > red ;
buf [ 1 ] = pal_ptr - > green ;
buf [ 1 ] = pal_ptr - > green ;
buf [ 2 ] = pal_ptr - > blue ;
buf [ 2 ] = pal_ptr - > blue ;
png_write_chunk_data ( png_ptr , buf , ( png_size_t ) 3 ) ;
png_write_chunk_data ( png_ptr , buf , 3 ) ;
}
}
# else
# else
@ -903,7 +902,7 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette,
buf [ 0 ] = pal_ptr [ i ] . red ;
buf [ 0 ] = pal_ptr [ i ] . red ;
buf [ 1 ] = pal_ptr [ i ] . green ;
buf [ 1 ] = pal_ptr [ i ] . green ;
buf [ 2 ] = pal_ptr [ i ] . blue ;
buf [ 2 ] = pal_ptr [ i ] . blue ;
png_write_chunk_data ( png_ptr , buf , ( png_size_t ) 3 ) ;
png_write_chunk_data ( png_ptr , buf , 3 ) ;
}
}
# endif
# endif
@ -1075,7 +1074,7 @@ png_write_IEND(png_structrp png_ptr)
{
{
png_debug ( 1 , " in png_write_IEND " ) ;
png_debug ( 1 , " in png_write_IEND " ) ;
png_write_complete_chunk ( png_ptr , png_IEND , NULL , ( png_size_t ) 0 ) ;
png_write_complete_chunk ( png_ptr , png_IEND , NULL , 0 ) ;
png_ptr - > mode | = PNG_HAVE_IEND ;
png_ptr - > mode | = PNG_HAVE_IEND ;
}
}
@ -1090,7 +1089,7 @@ png_write_gAMA_fixed(png_structrp png_ptr, png_fixed_point file_gamma)
/* file_gamma is saved in 1/100,000ths */
/* file_gamma is saved in 1/100,000ths */
png_save_uint_32 ( buf , ( png_uint_32 ) file_gamma ) ;
png_save_uint_32 ( buf , ( png_uint_32 ) file_gamma ) ;
png_write_complete_chunk ( png_ptr , png_gAMA , buf , ( png_size_t ) 4 ) ;
png_write_complete_chunk ( png_ptr , png_gAMA , buf , 4 ) ;
}
}
# endif
# endif
@ -1108,7 +1107,7 @@ png_write_sRGB(png_structrp png_ptr, int srgb_intent)
" Invalid sRGB rendering intent specified " ) ;
" Invalid sRGB rendering intent specified " ) ;
buf [ 0 ] = ( png_byte ) srgb_intent ;
buf [ 0 ] = ( png_byte ) srgb_intent ;
png_write_complete_chunk ( png_ptr , png_sRGB , buf , ( png_size_t ) 1 ) ;
png_write_complete_chunk ( png_ptr , png_sRGB , buf , 1 ) ;
}
}
# endif
# endif
@ -1182,8 +1181,8 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette)
png_uint_32 name_len ;
png_uint_32 name_len ;
png_byte new_name [ 80 ] ;
png_byte new_name [ 80 ] ;
png_byte entrybuf [ 10 ] ;
png_byte entrybuf [ 10 ] ;
png_ size_t entry_size = ( spalette - > depth = = 8 ? 6 : 10 ) ;
size_t entry_size = ( spalette - > depth = = 8 ? 6 : 10 ) ;
png_ size_t palette_size = entry_size * ( png_ size_t) spalette - > nentries ;
size_t palette_size = entry_size * ( size_t ) spalette - > nentries ;
png_sPLT_entryp ep ;
png_sPLT_entryp ep ;
# ifndef PNG_POINTER_INDEXING_SUPPORTED
# ifndef PNG_POINTER_INDEXING_SUPPORTED
int i ;
int i ;
@ -1200,10 +1199,9 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette)
png_write_chunk_header ( png_ptr , png_sPLT ,
png_write_chunk_header ( png_ptr , png_sPLT ,
( png_uint_32 ) ( name_len + 2 + palette_size ) ) ;
( png_uint_32 ) ( name_len + 2 + palette_size ) ) ;
png_write_chunk_data ( png_ptr , ( png_bytep ) new_name ,
png_write_chunk_data ( png_ptr , ( png_bytep ) new_name , ( size_t ) ( name_len + 1 ) ) ;
( png_size_t ) ( name_len + 1 ) ) ;
png_write_chunk_data ( png_ptr , & spalette - > depth , ( png_size_t ) 1 ) ;
png_write_chunk_data ( png_ptr , & spalette - > depth , 1 ) ;
/* Loop through each palette entry, writing appropriately */
/* Loop through each palette entry, writing appropriately */
# ifdef PNG_POINTER_INDEXING_SUPPORTED
# ifdef PNG_POINTER_INDEXING_SUPPORTED
@ -1265,7 +1263,7 @@ void /* PRIVATE */
png_write_sBIT ( png_structrp png_ptr , png_const_color_8p sbit , int color_type )
png_write_sBIT ( png_structrp png_ptr , png_const_color_8p sbit , int color_type )
{
{
png_byte buf [ 4 ] ;
png_byte buf [ 4 ] ;
png_ size_t size ;
size_t size ;
png_debug ( 1 , " in png_write_sBIT " ) ;
png_debug ( 1 , " in png_write_sBIT " ) ;
@ -1365,7 +1363,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
/* Write the chunk out as it is */
/* Write the chunk out as it is */
png_write_complete_chunk ( png_ptr , png_tRNS , trans_alpha ,
png_write_complete_chunk ( png_ptr , png_tRNS , trans_alpha ,
( png_ size_t) num_trans ) ;
( size_t ) num_trans ) ;
}
}
else if ( color_type = = PNG_COLOR_TYPE_GRAY )
else if ( color_type = = PNG_COLOR_TYPE_GRAY )
@ -1380,7 +1378,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
}
}
png_save_uint_16 ( buf , tran - > gray ) ;
png_save_uint_16 ( buf , tran - > gray ) ;
png_write_complete_chunk ( png_ptr , png_tRNS , buf , ( png_size_t ) 2 ) ;
png_write_complete_chunk ( png_ptr , png_tRNS , buf , 2 ) ;
}
}
else if ( color_type = = PNG_COLOR_TYPE_RGB )
else if ( color_type = = PNG_COLOR_TYPE_RGB )
@ -1400,7 +1398,7 @@ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
return ;
return ;
}
}
png_write_complete_chunk ( png_ptr , png_tRNS , buf , ( png_size_t ) 6 ) ;
png_write_complete_chunk ( png_ptr , png_tRNS , buf , 6 ) ;
}
}
else
else
@ -1433,7 +1431,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
}
}
buf [ 0 ] = back - > index ;
buf [ 0 ] = back - > index ;
png_write_complete_chunk ( png_ptr , png_bKGD , buf , ( png_size_t ) 1 ) ;
png_write_complete_chunk ( png_ptr , png_bKGD , buf , 1 ) ;
}
}
else if ( ( color_type & PNG_COLOR_MASK_COLOR ) ! = 0 )
else if ( ( color_type & PNG_COLOR_MASK_COLOR ) ! = 0 )
@ -1454,7 +1452,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
return ;
return ;
}
}
png_write_complete_chunk ( png_ptr , png_bKGD , buf , ( png_size_t ) 6 ) ;
png_write_complete_chunk ( png_ptr , png_bKGD , buf , 6 ) ;
}
}
else
else
@ -1468,7 +1466,7 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
}
}
png_save_uint_16 ( buf , back - > gray ) ;
png_save_uint_16 ( buf , back - > gray ) ;
png_write_complete_chunk ( png_ptr , png_bKGD , buf , ( png_size_t ) 2 ) ;
png_write_complete_chunk ( png_ptr , png_bKGD , buf , 2 ) ;
}
}
}
}
# endif
# endif
@ -1488,7 +1486,7 @@ png_write_eXIf(png_structrp png_ptr, png_bytep exif, int num_exif)
for ( i = 0 ; i < num_exif ; i + + )
for ( i = 0 ; i < num_exif ; i + + )
{
{
buf [ 0 ] = exif [ i ] ;
buf [ 0 ] = exif [ i ] ;
png_write_chunk_data ( png_ptr , buf , ( png_size_t ) 1 ) ;
png_write_chunk_data ( png_ptr , buf , 1 ) ;
}
}
png_write_chunk_end ( png_ptr ) ;
png_write_chunk_end ( png_ptr ) ;
@ -1519,7 +1517,7 @@ png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist)
for ( i = 0 ; i < num_hist ; i + + )
for ( i = 0 ; i < num_hist ; i + + )
{
{
png_save_uint_16 ( buf , hist [ i ] ) ;
png_save_uint_16 ( buf , hist [ i ] ) ;
png_write_chunk_data ( png_ptr , buf , ( png_size_t ) 2 ) ;
png_write_chunk_data ( png_ptr , buf , 2 ) ;
}
}
png_write_chunk_end ( png_ptr ) ;
png_write_chunk_end ( png_ptr ) ;
@ -1530,7 +1528,7 @@ png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist)
/* Write a tEXt chunk */
/* Write a tEXt chunk */
void /* PRIVATE */
void /* PRIVATE */
png_write_tEXt ( png_structrp png_ptr , png_const_charp key , png_const_charp text ,
png_write_tEXt ( png_structrp png_ptr , png_const_charp key , png_const_charp text ,
png_ size_t text_len )
size_t text_len )
{
{
png_uint_32 key_len ;
png_uint_32 key_len ;
png_byte new_key [ 80 ] ;
png_byte new_key [ 80 ] ;
@ -1627,7 +1625,7 @@ png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key,
png_const_charp lang , png_const_charp lang_key , png_const_charp text )
png_const_charp lang , png_const_charp lang_key , png_const_charp text )
{
{
png_uint_32 key_len , prefix_len ;
png_uint_32 key_len , prefix_len ;
png_ size_t lang_len , lang_key_len ;
size_t lang_len , lang_key_len ;
png_byte new_key [ 82 ] ;
png_byte new_key [ 82 ] ;
compression_state comp ;
compression_state comp ;
@ -1737,7 +1735,7 @@ png_write_oFFs(png_structrp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
png_save_int_32 ( buf + 4 , y_offset ) ;
png_save_int_32 ( buf + 4 , y_offset ) ;
buf [ 8 ] = ( png_byte ) unit_type ;
buf [ 8 ] = ( png_byte ) unit_type ;
png_write_complete_chunk ( png_ptr , png_oFFs , buf , ( png_size_t ) 9 ) ;
png_write_complete_chunk ( png_ptr , png_oFFs , buf , 9 ) ;
}
}
# endif
# endif
# ifdef PNG_WRITE_pCAL_SUPPORTED
# ifdef PNG_WRITE_pCAL_SUPPORTED
@ -1748,7 +1746,7 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
png_charpp params )
png_charpp params )
{
{
png_uint_32 purpose_len ;
png_uint_32 purpose_len ;
png_ size_t units_len , total_len ;
size_t units_len , total_len ;
png_size_tp params_len ;
png_size_tp params_len ;
png_byte buf [ 10 ] ;
png_byte buf [ 10 ] ;
png_byte new_purpose [ 80 ] ;
png_byte new_purpose [ 80 ] ;
@ -1772,7 +1770,7 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
total_len = purpose_len + units_len + 10 ;
total_len = purpose_len + units_len + 10 ;
params_len = ( png_size_tp ) png_malloc ( png_ptr ,
params_len = ( png_size_tp ) png_malloc ( png_ptr ,
( png_alloc_size_t ) ( ( png_alloc_size_t ) nparams * ( sizeof ( png_ size_t) ) ) ) ;
( png_alloc_size_t ) ( ( png_alloc_size_t ) nparams * ( sizeof ( size_t ) ) ) ) ;
/* Find the length of each parameter, making sure we don't count the
/* Find the length of each parameter, making sure we don't count the
* null terminator for the last parameter .
* null terminator for the last parameter .
@ -1792,8 +1790,8 @@ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
png_save_int_32 ( buf + 4 , X1 ) ;
png_save_int_32 ( buf + 4 , X1 ) ;
buf [ 8 ] = ( png_byte ) type ;
buf [ 8 ] = ( png_byte ) type ;
buf [ 9 ] = ( png_byte ) nparams ;
buf [ 9 ] = ( png_byte ) nparams ;
png_write_chunk_data ( png_ptr , buf , ( png_size_t ) 10 ) ;
png_write_chunk_data ( png_ptr , buf , 10 ) ;
png_write_chunk_data ( png_ptr , ( png_const_bytep ) units , ( png_ size_t) units_len ) ;
png_write_chunk_data ( png_ptr , ( png_const_bytep ) units , ( size_t ) units_len ) ;
for ( i = 0 ; i < nparams ; i + + )
for ( i = 0 ; i < nparams ; i + + )
{
{
@ -1812,7 +1810,7 @@ png_write_sCAL_s(png_structrp png_ptr, int unit, png_const_charp width,
png_const_charp height )
png_const_charp height )
{
{
png_byte buf [ 64 ] ;
png_byte buf [ 64 ] ;
png_ size_t wlen , hlen , total_len ;
size_t wlen , hlen , total_len ;
png_debug ( 1 , " in png_write_sCAL_s " ) ;
png_debug ( 1 , " in png_write_sCAL_s " ) ;
@ -1853,7 +1851,7 @@ png_write_pHYs(png_structrp png_ptr, png_uint_32 x_pixels_per_unit,
png_save_uint_32 ( buf + 4 , y_pixels_per_unit ) ;
png_save_uint_32 ( buf + 4 , y_pixels_per_unit ) ;
buf [ 8 ] = ( png_byte ) unit_type ;
buf [ 8 ] = ( png_byte ) unit_type ;
png_write_complete_chunk ( png_ptr , png_pHYs , buf , ( png_size_t ) 9 ) ;
png_write_complete_chunk ( png_ptr , png_pHYs , buf , 9 ) ;
}
}
# endif
# endif
@ -1883,7 +1881,7 @@ png_write_tIME(png_structrp png_ptr, png_const_timep mod_time)
buf [ 5 ] = mod_time - > minute ;
buf [ 5 ] = mod_time - > minute ;
buf [ 6 ] = mod_time - > second ;
buf [ 6 ] = mod_time - > second ;
png_write_complete_chunk ( png_ptr , png_tIME , buf , ( png_size_t ) 7 ) ;
png_write_complete_chunk ( png_ptr , png_tIME , buf , 7 ) ;
}
}
# endif
# endif
@ -2073,8 +2071,8 @@ png_write_finish_row(png_structrp png_ptr)
{
{
if ( png_ptr - > prev_row ! = NULL )
if ( png_ptr - > prev_row ! = NULL )
memset ( png_ptr - > prev_row , 0 ,
memset ( png_ptr - > prev_row , 0 ,
( png_size_t ) ( PNG_ROWBYTES ( png_ptr - > usr_channels *
PNG_ROWBYTES ( png_ptr - > usr_channels *
png_ptr - > usr_bit_depth , png_ptr - > width ) ) + 1 ) ;
png_ptr - > usr_bit_depth , png_ptr - > width ) + 1 ) ;
return ;
return ;
}
}
@ -2130,7 +2128,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
for ( i = png_pass_start [ pass ] ; i < row_width ;
for ( i = png_pass_start [ pass ] ; i < row_width ;
i + = png_pass_inc [ pass ] )
i + = png_pass_inc [ pass ] )
{
{
sp = row + ( png_ size_t) ( i > > 3 ) ;
sp = row + ( size_t ) ( i > > 3 ) ;
value = ( int ) ( * sp > > ( 7 - ( int ) ( i & 0x07 ) ) ) & 0x01 ;
value = ( int ) ( * sp > > ( 7 - ( int ) ( i & 0x07 ) ) ) & 0x01 ;
d | = ( value < < shift ) ;
d | = ( value < < shift ) ;
@ -2168,7 +2166,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
for ( i = png_pass_start [ pass ] ; i < row_width ;
for ( i = png_pass_start [ pass ] ; i < row_width ;
i + = png_pass_inc [ pass ] )
i + = png_pass_inc [ pass ] )
{
{
sp = row + ( png_ size_t) ( i > > 2 ) ;
sp = row + ( size_t ) ( i > > 2 ) ;
value = ( * sp > > ( ( 3 - ( int ) ( i & 0x03 ) ) < < 1 ) ) & 0x03 ;
value = ( * sp > > ( ( 3 - ( int ) ( i & 0x03 ) ) < < 1 ) ) & 0x03 ;
d | = ( value < < shift ) ;
d | = ( value < < shift ) ;
@ -2204,7 +2202,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
for ( i = png_pass_start [ pass ] ; i < row_width ;
for ( i = png_pass_start [ pass ] ; i < row_width ;
i + = png_pass_inc [ pass ] )
i + = png_pass_inc [ pass ] )
{
{
sp = row + ( png_ size_t) ( i > > 1 ) ;
sp = row + ( size_t ) ( i > > 1 ) ;
value = ( * sp > > ( ( 1 - ( int ) ( i & 0x01 ) ) < < 2 ) ) & 0x0f ;
value = ( * sp > > ( ( 1 - ( int ) ( i & 0x01 ) ) < < 2 ) ) & 0x0f ;
d | = ( value < < shift ) ;
d | = ( value < < shift ) ;
@ -2230,7 +2228,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
png_bytep dp ;
png_bytep dp ;
png_uint_32 i ;
png_uint_32 i ;
png_uint_32 row_width = row_info - > width ;
png_uint_32 row_width = row_info - > width ;
png_ size_t pixel_bytes ;
size_t pixel_bytes ;
/* Start at the beginning */
/* Start at the beginning */
dp = row ;
dp = row ;
@ -2243,7 +2241,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
i + = png_pass_inc [ pass ] )
i + = png_pass_inc [ pass ] )
{
{
/* Find out where the original pixel is */
/* Find out where the original pixel is */
sp = row + ( png_ size_t) i * pixel_bytes ;
sp = row + ( size_t ) i * pixel_bytes ;
/* Move the pixel */
/* Move the pixel */
if ( dp ! = sp )
if ( dp ! = sp )
@ -2274,16 +2272,16 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
*/
*/
static void /* PRIVATE */
static void /* PRIVATE */
png_write_filtered_row ( png_structrp png_ptr , png_bytep filtered_row ,
png_write_filtered_row ( png_structrp png_ptr , png_bytep filtered_row ,
png_ size_t row_bytes ) ;
size_t row_bytes ) ;
# ifdef PNG_WRITE_FILTER_SUPPORTED
# ifdef PNG_WRITE_FILTER_SUPPORTED
static png_ size_t /* PRIVATE */
static size_t /* PRIVATE */
png_setup_sub_row ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_sub_row ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes , const png_ size_t lmins )
size_t row_bytes , size_t lmins )
{
{
png_bytep rp , dp , lp ;
png_bytep rp , dp , lp ;
png_ size_t i ;
size_t i ;
png_ size_t sum = 0 ;
size_t sum = 0 ;
unsigned int v ;
unsigned int v ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_SUB ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_SUB ;
@ -2318,10 +2316,10 @@ png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp,
static void /* PRIVATE */
static void /* PRIVATE */
png_setup_sub_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_sub_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes )
size_t row_bytes )
{
{
png_bytep rp , dp , lp ;
png_bytep rp , dp , lp ;
png_ size_t i ;
size_t i ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_SUB ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_SUB ;
@ -2338,13 +2336,12 @@ png_setup_sub_row_only(png_structrp png_ptr, const png_uint_32 bpp,
}
}
}
}
static png_size_t /* PRIVATE */
static size_t /* PRIVATE */
png_setup_up_row ( png_structrp png_ptr , const png_size_t row_bytes ,
png_setup_up_row ( png_structrp png_ptr , size_t row_bytes , size_t lmins )
const png_size_t lmins )
{
{
png_bytep rp , dp , pp ;
png_bytep rp , dp , pp ;
png_ size_t i ;
size_t i ;
png_ size_t sum = 0 ;
size_t sum = 0 ;
unsigned int v ;
unsigned int v ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_UP ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_UP ;
@ -2367,10 +2364,10 @@ png_setup_up_row(png_structrp png_ptr, const png_size_t row_bytes,
return ( sum ) ;
return ( sum ) ;
}
}
static void /* PRIVATE */
static void /* PRIVATE */
png_setup_up_row_only ( png_structrp png_ptr , const png_ size_t row_bytes )
png_setup_up_row_only ( png_structrp png_ptr , size_t row_bytes )
{
{
png_bytep rp , dp , pp ;
png_bytep rp , dp , pp ;
png_ size_t i ;
size_t i ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_UP ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_UP ;
@ -2382,13 +2379,13 @@ png_setup_up_row_only(png_structrp png_ptr, const png_size_t row_bytes)
}
}
}
}
static png_ size_t /* PRIVATE */
static size_t /* PRIVATE */
png_setup_avg_row ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_avg_row ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes , const png_ size_t lmins )
size_t row_bytes , size_t lmins )
{
{
png_bytep rp , dp , pp , lp ;
png_bytep rp , dp , pp , lp ;
png_uint_32 i ;
png_uint_32 i ;
png_ size_t sum = 0 ;
size_t sum = 0 ;
unsigned int v ;
unsigned int v ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_AVG ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_AVG ;
@ -2424,7 +2421,7 @@ png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp,
}
}
static void /* PRIVATE */
static void /* PRIVATE */
png_setup_avg_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_avg_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes )
size_t row_bytes )
{
{
png_bytep rp , dp , pp , lp ;
png_bytep rp , dp , pp , lp ;
png_uint_32 i ;
png_uint_32 i ;
@ -2444,13 +2441,13 @@ png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp,
}
}
}
}
static png_ size_t /* PRIVATE */
static size_t /* PRIVATE */
png_setup_paeth_row ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_paeth_row ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes , const png_ size_t lmins )
size_t row_bytes , size_t lmins )
{
{
png_bytep rp , dp , pp , cp , lp ;
png_bytep rp , dp , pp , cp , lp ;
png_ size_t i ;
size_t i ;
png_ size_t sum = 0 ;
size_t sum = 0 ;
unsigned int v ;
unsigned int v ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_PAETH ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_PAETH ;
@ -2507,10 +2504,10 @@ png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp,
}
}
static void /* PRIVATE */
static void /* PRIVATE */
png_setup_paeth_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
png_setup_paeth_row_only ( png_structrp png_ptr , const png_uint_32 bpp ,
const png_ size_t row_bytes )
size_t row_bytes )
{
{
png_bytep rp , dp , pp , cp , lp ;
png_bytep rp , dp , pp , cp , lp ;
png_ size_t i ;
size_t i ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_PAETH ;
png_ptr - > try_row [ 0 ] = PNG_FILTER_VALUE_PAETH ;
@ -2559,8 +2556,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
png_bytep row_buf ;
png_bytep row_buf ;
png_bytep best_row ;
png_bytep best_row ;
png_uint_32 bpp ;
png_uint_32 bpp ;
png_ size_t mins ;
size_t mins ;
png_ size_t row_bytes = row_info - > rowbytes ;
size_t row_bytes = row_info - > rowbytes ;
png_debug ( 1 , " in png_write_find_filter " ) ;
png_debug ( 1 , " in png_write_find_filter " ) ;
@ -2615,8 +2612,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
* ' none ' filter .
* ' none ' filter .
*/
*/
png_bytep rp ;
png_bytep rp ;
png_ size_t sum = 0 ;
size_t sum = 0 ;
png_ size_t i ;
size_t i ;
unsigned int v ;
unsigned int v ;
{
{
@ -2644,8 +2641,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
else if ( ( filter_to_do & PNG_FILTER_SUB ) ! = 0 )
else if ( ( filter_to_do & PNG_FILTER_SUB ) ! = 0 )
{
{
png_ size_t sum ;
size_t sum ;
png_ size_t lmins = mins ;
size_t lmins = mins ;
sum = png_setup_sub_row ( png_ptr , bpp , row_bytes , lmins ) ;
sum = png_setup_sub_row ( png_ptr , bpp , row_bytes , lmins ) ;
@ -2670,8 +2667,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
else if ( ( filter_to_do & PNG_FILTER_UP ) ! = 0 )
else if ( ( filter_to_do & PNG_FILTER_UP ) ! = 0 )
{
{
png_ size_t sum ;
size_t sum ;
png_ size_t lmins = mins ;
size_t lmins = mins ;
sum = png_setup_up_row ( png_ptr , row_bytes , lmins ) ;
sum = png_setup_up_row ( png_ptr , row_bytes , lmins ) ;
@ -2696,8 +2693,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
else if ( ( filter_to_do & PNG_FILTER_AVG ) ! = 0 )
else if ( ( filter_to_do & PNG_FILTER_AVG ) ! = 0 )
{
{
png_ size_t sum ;
size_t sum ;
png_ size_t lmins = mins ;
size_t lmins = mins ;
sum = png_setup_avg_row ( png_ptr , bpp , row_bytes , lmins ) ;
sum = png_setup_avg_row ( png_ptr , bpp , row_bytes , lmins ) ;
@ -2722,8 +2719,8 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
else if ( ( filter_to_do & PNG_FILTER_PAETH ) ! = 0 )
else if ( ( filter_to_do & PNG_FILTER_PAETH ) ! = 0 )
{
{
png_ size_t sum ;
size_t sum ;
png_ size_t lmins = mins ;
size_t lmins = mins ;
sum = png_setup_paeth_row ( png_ptr , bpp , row_bytes , lmins ) ;
sum = png_setup_paeth_row ( png_ptr , bpp , row_bytes , lmins ) ;
@ -2748,7 +2745,7 @@ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
/* Do the actual writing of a previously filtered row. */
/* Do the actual writing of a previously filtered row. */
static void
static void
png_write_filtered_row ( png_structrp png_ptr , png_bytep filtered_row ,
png_write_filtered_row ( png_structrp png_ptr , png_bytep filtered_row ,
png_ size_t full_row_length /*includes filter byte*/ )
size_t full_row_length /*includes filter byte*/ )
{
{
png_debug ( 1 , " in png_write_filtered_row " ) ;
png_debug ( 1 , " in png_write_filtered_row " ) ;