Support libpng versions prior to 1.6 and 1.5

Tested confirmed for...
1.5.30
1.4.22
1.2.59
This commit is contained in:
james 2019-02-11 15:47:48 -08:00
parent 79736e40aa
commit b43e6a7199
2 changed files with 42 additions and 43 deletions

View file

@ -45,23 +45,23 @@ struct apng_info_def
};
/* PROTOS (FUCK COMPILER) */
void apng_seek (png_structrp, apng_const_inforp, size_t);
size_t apng_tell (png_structrp, apng_const_inforp);
void apng_seek (png_structp, apng_const_infop, size_t);
size_t apng_tell (png_structp, apng_const_infop);
#ifdef PNG_WRITE_FLUSH_SUPPORTED
void apng_flush (png_structrp, apng_inforp);
void apng_flush (png_structp, apng_infop);
#ifdef PNG_STDIO_SUPPORTED
void apng_default_flush (png_structrp);
void apng_default_flush (png_structp);
#endif/* PNG_STDIO_SUPPORTED */
#endif/* PNG_WRITE_FLUSH_SUPPORTED */
#ifdef PNG_STDIO_SUPPORTED
void apng_default_seek (png_structrp, size_t);
size_t apng_default_tell (png_structrp);
void apng_default_seek (png_structp, size_t);
size_t apng_default_tell (png_structp);
#endif/* PNG_STDIO_SUPPORTED */
void apng_write_IEND (png_structrp);
void apng_write_acTL (png_structrp, png_uint_32, png_uint_32);
void apng_write_IEND (png_structp);
void apng_write_acTL (png_structp, png_uint_32, png_uint_32);
apng_infop
apng_create_info_struct (png_structrp pngp)
apng_create_info_struct (png_structp pngp)
{
apng_infop ainfop;
(void)pngp;
@ -74,7 +74,7 @@ apng_create_info_struct (png_structrp pngp)
}
void
apng_destroy_info_struct (png_structrp pngp, apng_infopp ainfopp)
apng_destroy_info_struct (png_structp pngp, apng_infopp ainfopp)
{
(void)pngp;
if (!( pngp && ainfopp ))
@ -84,20 +84,20 @@ apng_destroy_info_struct (png_structrp pngp, apng_infopp ainfopp)
}
void
apng_seek (png_structrp pngp, apng_const_inforp ainfop, size_t l)
apng_seek (png_structp pngp, apng_const_infop ainfop, size_t l)
{
(*(ainfop->output_seek_fn))(pngp, l);
}
size_t
apng_tell (png_structrp pngp, apng_const_inforp ainfop)
apng_tell (png_structp pngp, apng_const_infop ainfop)
{
return (*(ainfop->output_tell_fn))(pngp);
}
#ifdef PNG_WRITE_FLUSH_SUPPORTED
void
apng_flush (png_structrp pngp, apng_inforp ainfop)
apng_flush (png_structp pngp, apng_infop ainfop)
{
if (ainfop->output_flush_fn)
(*(ainfop->output_flush_fn))(pngp);
@ -105,7 +105,7 @@ apng_flush (png_structrp pngp, apng_inforp ainfop)
#ifdef PNG_STDIO_SUPPORTED
void
apng_default_flush (png_structrp pngp)
apng_default_flush (png_structp pngp)
{
if (!( pngp ))
return;
@ -117,7 +117,7 @@ apng_default_flush (png_structrp pngp)
#ifdef PNG_STDIO_SUPPORTED
void
apng_default_seek (png_structrp pngp, size_t l)
apng_default_seek (png_structp pngp, size_t l)
{
if (!( pngp ))
return;
@ -127,7 +127,7 @@ apng_default_seek (png_structrp pngp, size_t l)
}
size_t
apng_default_tell (png_structrp pngp)
apng_default_tell (png_structp pngp)
{
long l;
@ -144,7 +144,7 @@ apng_default_tell (png_structrp pngp)
#endif/* PNG_STDIO_SUPPORTED */
void
apng_set_write_fn (png_structrp pngp, apng_inforp ainfop, png_voidp iop,
apng_set_write_fn (png_structp pngp, apng_infop ainfop, png_voidp iop,
png_rw_ptr write_f, png_flush_ptr flush_f,
apng_seek_ptr seek_f, apng_tell_ptr tell_f)
{
@ -176,18 +176,20 @@ apng_set_write_fn (png_structrp pngp, apng_inforp ainfop, png_voidp iop,
}
void
apng_write_IEND (png_structrp pngp)
apng_write_IEND (png_structp pngp)
{
png_write_chunk(pngp, (png_const_bytep)"IEND", 0, 0);
png_byte chunkc[] = "IEND";
png_write_chunk(pngp, chunkc, 0, 0);
}
void
apng_write_acTL (png_structrp pngp, png_uint_32 frames, png_uint_32 plays)
apng_write_acTL (png_structp pngp, png_uint_32 frames, png_uint_32 plays)
{
png_byte chunkc[] = "acTL";
png_byte buf[8];
png_save_uint_32(buf, frames);
png_save_uint_32(buf + 4, plays);
png_write_chunk(pngp, (png_const_bytep)"acTL", buf, 8);
png_write_chunk(pngp, chunkc, buf, 8);
}
png_uint_32
@ -208,8 +210,8 @@ apng_set_acTL (png_structp pngp, png_infop infop, apng_infop ainfop,
}
void
apng_write_info_before_PLTE (png_structrp pngp, png_inforp infop,
apng_inforp ainfop)
apng_write_info_before_PLTE (png_structp pngp, png_infop infop,
apng_infop ainfop)
{
if (!( pngp && infop && ainfop ))
return;
@ -229,15 +231,15 @@ apng_write_info_before_PLTE (png_structrp pngp, png_inforp infop,
}
void
apng_write_info (png_structrp pngp, png_inforp infop,
apng_inforp ainfop)
apng_write_info (png_structp pngp, png_infop infop,
apng_infop ainfop)
{
apng_write_info_before_PLTE(pngp, infop, ainfop);
png_write_info(pngp, infop);
}
void
apng_write_end (png_structp pngp, png_inforp infop, apng_inforp ainfop)
apng_write_end (png_structp pngp, png_infop infop, apng_infop ainfop)
{
(void)infop;
apng_write_IEND(pngp);
@ -253,7 +255,7 @@ apng_write_end (png_structp pngp, png_inforp infop, apng_inforp ainfop)
/* Dynamic runtime linking capable! (Hopefully.) */
void
apng_set_set_acTL_fn (png_structrp pngp, apng_inforp ainfop,
apng_set_set_acTL_fn (png_structp pngp, apng_infop ainfop,
apng_set_acTL_ptr set_acTL_f)
{
(void)pngp;

View file

@ -30,18 +30,15 @@ typedef apng_info * apng_infop;
typedef const apng_info * apng_const_infop;
typedef apng_info * * apng_infopp;
typedef apng_info * PNG_RESTRICT apng_inforp;
typedef const apng_info * PNG_RESTRICT apng_const_inforp;
typedef void (*apng_seek_ptr)(png_structp, size_t);
typedef size_t (*apng_tell_ptr)(png_structp);
typedef void (*apng_seek_ptr)(png_structrp, size_t);
typedef size_t (*apng_tell_ptr)(png_structrp);
typedef png_uint_32 (*apng_set_acTL_ptr)(png_structrp, png_inforp,
typedef png_uint_32 (*apng_set_acTL_ptr)(png_structp, png_infop,
png_uint_32, png_uint_32);
apng_infop apng_create_info_struct (png_structrp png_ptr);
apng_infop apng_create_info_struct (png_structp png_ptr);
void apng_destroy_info_struct (png_structrp png_ptr,
void apng_destroy_info_struct (png_structp png_ptr,
apng_infopp info_ptr_ptr);
/* Call the following functions in place of the libpng counterparts. */
@ -50,20 +47,20 @@ png_uint_32 apng_set_acTL (png_structp png_ptr, png_infop info_ptr,
apng_infop ainfo_ptr,
png_uint_32 num_frames, png_uint_32 num_plays);
void apng_write_info_before_PLTE (png_structrp png_ptr, png_inforp info_ptr,
apng_inforp ainfo_ptr);
void apng_write_info (png_structrp png_ptr, png_inforp info_ptr,
apng_inforp ainfo_ptr);
void apng_write_info_before_PLTE (png_structp png_ptr, png_infop info_ptr,
apng_infop ainfo_ptr);
void apng_write_info (png_structp png_ptr, png_infop info_ptr,
apng_infop ainfo_ptr);
void apng_write_end (png_structrp png_ptr, png_inforp info_ptr,
apng_inforp ainfo_ptr);
void apng_write_end (png_structp png_ptr, png_infop info_ptr,
apng_infop ainfo_ptr);
void apng_set_write_fn (png_structrp png_ptr, apng_inforp ainfo_ptr,
void apng_set_write_fn (png_structp png_ptr, apng_infop ainfo_ptr,
png_voidp io_ptr,
png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn,
apng_seek_ptr output_seek_fn, apng_tell_ptr output_tell_fn);
void apng_set_set_acTL_fn (png_structrp png_ptr, apng_inforp ainfo_ptr,
void apng_set_set_acTL_fn (png_structp png_ptr, apng_infop ainfo_ptr,
apng_set_acTL_ptr set_acTL_fn);
#endif/* APNG_H */