.TH LIBPNGPF 3 "February 28, 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
