.TH LIBPNGPF 3 "May 21, 1998"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library
(private functions)
.SH SYNOPSIS
#include <png.h>

void png_build_gamma_table (png_structp png_ptr);

void png_build_grayscale_palette (int bit_depth, png_colorp
palette);

void png_calculate_crc (png_structp png_ptr, png_bytep ptr,
png_size_t length);
void png_check_chunk_name (png_structp png_ptr, png_bytep
chunk_name);

png_size_t png_check_keyword (png_structp png_ptr, png_charp
key, png_charpp new_key);

void png_combine_row (png_structp png_ptr, png_bytep row, int
mask);

void png_correct_palette (png_structp png_ptr, png_colorp
palette, int num_palette);

int png_crc_error (png_structp png_ptr);

int png_crc_finish (png_structp png_ptr, png_uint_32 skip);

void png_crc_read (png_structp png_ptr, png_bytep buf,
png_size_t length);

png_voidp png_create_struct (int type);

void png_destroy_struct (png_voidp struct_ptr);

void png_do_background (png_row_infop row_info, png_bytep row,
png_color_16p trans_values, png_color_16p background,
png_color_16p background_1, png_bytep gamma_table, png_bytep
gamma_from_1, png_bytep gamma_to_1, png_uint_16pp gamma_16,
png_uint_16pp gamma_16_from_1, png_uint_16pp gamma_16_to_1, int
gamma_shift);

void png_do_bgr (png_row_infop row_info, png_bytep row);

void png_do_chop (png_row_infop row_info, png_bytep row);

void png_do_dither (png_row_infop row_info, png_bytep row,
png_bytep palette_lookup, png_bytep dither_lookup);

void png_do_expand (png_row_infop row_info, png_bytep row,
png_color_16p trans_value);

void png_do_expand_palette (png_row_infop row_info, png_bytep
row, png_colorp palette, png_bytep trans, int num_trans);

void png_do_gamma (png_row_infop row_info, png_bytep row,
png_bytep gamma_table, png_uint_16pp gamma_16_table, int
gamma_shift);

void png_do_gray_to_rgb (png_row_infop row_info, png_bytep
row);

void png_do_invert (png_row_infop row_info, png_bytep row);

void png_do_pack (png_row_infop row_info, png_bytep row,
png_uint_32 bit_depth);

void png_do_packswap (png_row_infop row_info, png_bytep row);

void png_do_read_filler (png_row_infop row_info, png_bytep row,
png_uint_32 filler, png_uint_32 flags);

void png_do_read_interlace (png_row_infop row_info, png_bytep
row, int pass, png_uint_32 transformations);

void png_do_read_invert_alpha (png_row_infop row_info,
png_bytep row);

void png_do_read_swap_alpha (png_row_infop row_info, png_bytep
row);

void png_do_read_transformations (png_structp png_ptr);

void png_do_rgb_to_gray (png_row_infop row_info, png_bytep
row);

void png_do_shift (png_row_infop row_info, png_bytep row,
png_color_8p bit_depth);

void png_do_strip_filler (png_row_infop row_info, png_bytep
row, png_uint_32 flags);

void png_do_swap (png_row_infop row_info, png_bytep row);

void png_do_unpack (png_row_infop row_info, png_bytep row);

void png_do_unshift (png_row_infop row_info, png_bytep row,
png_color_8p sig_bits);

void png_do_write_interlace (png_row_infop row_info, png_bytep
row, int pass);

void png_do_write_invert_alpha (png_row_infop row_info,
png_bytep row);

void png_do_write_swap_alpha (png_row_infop row_info, png_bytep
row);

void png_do_write_transformations (png_structp png_ptr);

void *png_far_to_near (png_structp png_ptr,png_voidp ptr,
int check);

void png_flush (png_structp png_ptr);

png_int_32 png_get_int_32 (png_bytep buf);

png_uint_16 png_get_uint_16 (png_bytep buf);

png_uint_32 png_get_uint_32 (png_bytep buf);

void png_handle_bKGD (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_cHRM (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_gAMA (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_hIST (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_IEND (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_IHDR (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_oFFs (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_pCAL (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_pHYs (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_PLTE (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_sBIT (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_sRGB (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_tEXt (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_tIME (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_tRNS (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_handle_unknown (png_structp png_ptr, png_infop
info_ptr, png_uint_32 length);

void png_handle_zTXt (png_structp png_ptr, png_infop info_ptr,
png_uint_32 length);

void png_info_destroy (png_structp png_ptr, png_infop
info_ptr);

void png_init_read_transformations (png_structp png_ptr);

void png_process_IDAT_data (png_structp png_ptr, png_bytep
buffer, png_size_t buffer_length);

void png_process_some_data (png_structp png_ptr, png_infop
info_ptr);

void png_push_check_crc (png_structp png_ptr);

void png_push_crc_finish (png_structp png_ptr);

void png_push_crc_skip (png_structp png_ptr, png_uint_32
length);

void png_push_fill_buffer (png_structp png_ptr, png_bytep
buffer, png_size_t length);

void png_push_handle_tEXt (png_structp png_ptr, png_infop
info_ptr, png_uint_32 length);

void png_push_handle_unknown (png_structp png_ptr, png_infop
info_ptr, png_uint_32 length);

void png_push_handle_zTXt (png_structp png_ptr, png_infop
info_ptr, png_uint_32 length);

void png_push_have_end (png_structp png_ptr, png_infop
info_ptr);

void png_push_have_info (png_structp png_ptr, png_infop
info_ptr);

void png_push_have_row (png_structp png_ptr, png_bytep row);

void png_push_process_row (png_structp png_ptr);

void png_push_read_chunk (png_structp png_ptr, png_infop
info_ptr);

void png_push_read_end (png_structp png_ptr, png_infop
info_ptr);

void png_push_read_IDAT (png_structp png_ptr);

void png_push_read_sig (png_structp png_ptr, png_infop
info_ptr);

void png_push_read_tEXt (png_structp png_ptr, png_infop
info_ptr);

void png_push_read_zTXt (png_structp png_ptr, png_infop
info_ptr);

void png_push_restore_buffer (png_structp png_ptr, png_bytep
buffer, png_size_t buffer_length);

void png_push_save_buffer (png_structp png_ptr);

void png_read_data (png_structp png_ptr, png_bytep data,
png_size_t length);

void png_read_filter_row (png_structp png_ptr, png_row_infop
row_info, png_bytep row, png_bytep prev_row, int filter);

void png_read_finish_row (png_structp png_ptr);

void png_read_init (png_structp png_ptr);

void png_read_push_finish_row (png_structp png_ptr);

void png_read_start_row (png_structp png_ptr);

void png_read_transform_info (png_structp png_ptr, png_infop
info_ptr);

void png_reset_crc (png_structp png_ptr);

void png_save_int_32 (png_bytep buf, png_int_32 i);

void png_save_uint_16 (png_bytep buf, unsigned int i);

void png_save_uint_32 (png_bytep buf, png_uint_32 i);

void png_write_bKGD (png_structp png_ptr, png_color_16p values,
int color_type);

void png_write_cHRM (png_structp png_ptr, double white_x,
double white_y, double red_x, double red_y, double green_x,
double green_y, double blue_x, double blue_y);

void png_write_data (png_structp png_ptr, png_bytep data,
png_size_t length);
void png_write_filtered_row (png_structp png_ptr, png_bytep
filtered_row);

void png_write_find_filter (png_structp png_ptr, png_row_infop
row_info);

void png_write_finish_row (png_structp png_ptr);

void png_write_gAMA (png_structp png_ptr, double file_gamma);

void png_write_hIST (png_structp png_ptr, png_uint_16p hist,
int num_hist);

void png_write_init (png_structp png_ptr);

void png_write_IDAT (png_structp png_ptr, png_bytep data,
png_size_t length);

void png_write_IEND (png_structp png_ptr);

void png_write_IHDR (png_structp png_ptr, png_uint_32 width,
png_uint_32 height, int bit_depth, int color_type, int
compression_type, int filter_type, int interlace_type);

void png_write_oFFs (png_structp png_ptr, png_uint_32 x_offset,
png_uint_32 y_offset, int unit_type);

void png_write_pCAL (png_structp png_ptr, png_charp purpose,
png_int_32 X0, png_int_32 X1, int type, int nparams, png_charp
units, png_charpp params);

void png_write_pHYs (png_structp png_ptr, png_uint_32
x_pixels_per_unit, png_uint_32 y_pixels_per_unit, int
unit_type);

void png_write_PLTE (png_structp png_ptr, png_colorp palette,
png_uint_32 num_pal);

void png_write_sBIT (png_structp png_ptr, png_color_8p sbit,
int color_type);

void png_write_sig (png_structp png_ptr);

void png_write_sRGB (png_structp png_ptr, int intent);

void png_write_start_row (png_structp png_ptr);

void png_write_tEXt (png_structp png_ptr, png_charp key,
png_charp text, png_size_t text_len);

void png_write_tIME (png_structp png_ptr, png_timep mod_time);

void png_write_tRNS (png_structp png_ptr, png_bytep trans,
png_color_16p values, int number, int color_type);

void png_write_zTXt (png_structp png_ptr, png_charp key,
png_charp text, png_size_t text_len, int compression);

voidpf png_zalloc (voidpf png_ptr, uInt items, uInt size);

void png_zfree (voidpf png_ptr, voidpf ptr);

.SH DESCRIPTION
The functions listed above are used privately by libpng
and are not recommended for use by applications.  They
are listed alphabetically here as an aid to libpng maintainers.
See png.h for more information on these functions.

.SH SEE ALSO
libpng(3), png(5)
.SH AUTHOR
Glenn Randers-Pehrson
