.TH LIBPNGPF 3 "March 9, 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
