26 #define _POSIX_SOURCE 1
39 # define png_jmpbuf(png_ptr) ((png_ptr)->png_jmpbuf)
62 #define PNG_BYTES_TO_CHECK 4
63 int check_if_png(
char *file_name, FILE **fp)
65 char buf[PNG_BYTES_TO_CHECK];
68 if ((*fp = fopen(file_name,
"rb")) ==
NULL)
72 if (fread(buf, 1, PNG_BYTES_TO_CHECK, *fp) != PNG_BYTES_TO_CHECK)
88 void read_png(
char *file_name)
92 unsigned int sig_read = 0;
94 int bit_depth, color_type, interlace_type;
97 if ((fp = fopen(file_name,
"rb")) ==
NULL)
101 void read_png(FILE *fp,
unsigned int sig_read)
106 int bit_depth, color_type, interlace_type;
116 png_voidp user_error_ptr, user_error_fn, user_warning_fn);
125 info_ptr = png_create_info_struct(png_ptr);
126 if (info_ptr ==
NULL)
182 png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
195 #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
252 screen_gamma = user-defined screen_gamma;
255 else if ((gamma_str = getenv(
"SCREEN_GAMMA")) !=
NULL)
257 screen_gamma = atof(gamma_str);
264 screen_gamma = 1.7 or 1.0;
286 #ifdef PNG_READ_QUANTIZE_SUPPORTED
299 png_color std_color_cube[MAX_SCREEN_COLORS];
302 MAX_SCREEN_COLORS,
NULL, 0);
305 else if (
png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette))
312 max_screen_colors, histogram, 0);
333 if (color_type & PNG_COLOR_MASK_COLOR)
345 #ifdef PNG_READ_INTERLACING_SUPPORTED
382 for (pass = 0; pass < number_passes; pass++)
391 for (
y = 0;
y <
height;
y += number_of_rows)
435 png_voidp user_error_ptr, user_error_fn, user_warning_fn);
437 if (*png_ptr ==
NULL)
443 *info_ptr = png_create_info_struct(png_ptr);
445 if (*info_ptr ==
NULL)
470 info_callback, row_callback, end_callback);
536 #ifdef PNG_READ_INTERLACING_SUPPORTED
540 if ((old_row !=
NULL) && (new_row !=
NULL))
582 void write_png(
char *file_name )
590 fp = fopen(file_name,
"wb");
601 png_voidp user_error_ptr, user_error_fn, user_warning_fn);
610 info_ptr = png_create_info_struct(png_ptr);
611 if (info_ptr ==
NULL)
640 user_IO_flush_function);
662 png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???,
679 sig_bit.
gray = true_bit_depth;
682 sig_bit.
red = true_red_bit_depth;
683 sig_bit.
green = true_green_bit_depth;
684 sig_bit.
blue = true_blue_bit_depth;
687 sig_bit.
alpha = true_alpha_bit_depth;
698 text_ptr[0].key =
"Title";
699 text_ptr[0].text =
"Mona Lisa";
701 text_ptr[0].itxt_length = 0;
702 text_ptr[0].lang =
NULL;
703 text_ptr[0].lang_key =
NULL;
704 text_ptr[1].key =
"Author";
705 text_ptr[1].text =
"Leonardo DaVinci";
707 text_ptr[1].itxt_length = 0;
708 text_ptr[1].lang =
NULL;
709 text_ptr[1].lang_key =
NULL;
710 text_ptr[2].key =
"Description";
711 text_ptr[2].text =
"<long text>";
713 text_ptr[2].itxt_length = 0;
714 text_ptr[2].lang =
NULL;
715 text_ptr[2].lang_key =
NULL;
793 png_error (png_ptr,
"Image is too tall to process in memory");
795 for (k = 0; k <
height; k++)
796 row_pointers[k] = image + k*width*bytes_per_pixel;
810 for (pass = 0; pass < number_passes; pass++)
813 png_write_rows(png_ptr, &row_pointers[first_row], number_of_rows);
void PNGAPI png_set_packing(png_structp png_ptr)
void PNGAPI png_set_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, int interlace_type, int compression_type, int filter_type)
png_size_t PNGAPI png_get_rowbytes(png_const_structp png_ptr, png_const_infop info_ptr)
void PNGAPI png_write_image(png_structp png_ptr, png_bytepp image)
void PNGAPI png_write_png(png_structp png_ptr, png_infop info_ptr, int transforms, voidp params)
void PNGAPI png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
#define PNG_FILLER_BEFORE
png_uint_32 PNGAPI png_get_PLTE(png_const_structp png_ptr, png_const_infop info_ptr, png_colorp *palette, int *num_palette)
void PNGAPI png_process_data(png_structp png_ptr, png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)
void PNGAPI png_progressive_combine_row(png_structp png_ptr, png_bytep old_row, png_const_bytep new_row)
png_uint_32 PNGAPI png_get_sRGB(png_const_structp png_ptr, png_const_infop info_ptr, int *file_srgb_intent)
#define PNG_BACKGROUND_GAMMA_SCREEN
#define PNG_MAX_PALETTE_LENGTH
void PNGAPI png_set_background(png_structp png_ptr, png_const_color_16p background_color, int background_gamma_code, int need_expand, double background_gamma)
void PNGAPI png_set_palette_to_rgb(png_structp png_ptr)
void PNGAPI png_write_rows(png_structp png_ptr, png_bytepp row, png_uint_32 num_rows)
#define PNG_COLOR_TYPE_PALETTE
void PNGAPI png_read_rows(png_structp png_ptr, png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)
#define PNG_LIBPNG_VER_STRING
png_error(png_ptr,"Missing IHDR before iCCP")
void PNGAPI png_set_quantize(png_structp png_ptr, png_colorp palette, int num_palette, int maximum_colors, png_const_uint_16p histogram, int full_quantize)
void PNGAPI png_set_sig_bytes(png_structp png_ptr, int num_bytes)
EGLSurface EGLint EGLint EGLint EGLint height
png_uint_32 PNGAPI png_get_hIST(png_const_structp png_ptr, png_const_infop info_ptr, png_uint_16p *hist)
png_uint_32 PNGAPI png_get_gAMA(png_const_structp png_ptr, png_const_infop info_ptr, double *file_gamma)
void PNGAPI png_set_strip_16(png_structp png_ptr)
void PNGAPI png_set_write_fn(png_structp png_ptr, png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
#define PNG_BACKGROUND_GAMMA_FILE
#define png_jmpbuf(png_ptr)
void PNGAPI png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
void PNGAPI png_set_bgr(png_structp png_ptr)
png_uint_32 PNGAPI png_get_sBIT(png_const_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
#define PNG_TEXT_COMPRESSION_zTXt
EGLContext EGLenum EGLClientBuffer buffer
#define PNG_TEXT_COMPRESSION_NONE
GLenum GLenum GLvoid * row
void PNGAPI png_set_sBIT(png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit)
png_struct FAR * png_structp
void PNGAPI png_write_info(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_read_end(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
void PNGAPI png_set_PLTE(png_structp png_ptr, png_infop info_ptr, png_const_colorp palette, int num_palette)
#define PNG_COLOR_MASK_COLOR
void PNGAPI png_set_packswap(png_structp png_ptr)
png_uint_32 PNGAPI png_get_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, int *interlace_type, int *compression_type, int *filter_type)
void PNGAPI png_set_swap(png_structp png_ptr)
EGLSurface EGLint EGLint EGLint width
void PNGAPI png_set_text(png_structp png_ptr, png_infop info_ptr, png_const_textp text_ptr, int num_text)
#define PNG_COLOR_TYPE_GRAY
void PNGAPI png_set_scale_16(png_structp png_ptr)
png_uint_16 FAR * png_uint_16p
void PNGAPI png_write_end(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_set_shift(png_structp png_ptr, png_const_color_8p true_bits)
void PNGAPI png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
png_uint_32 PNGAPI png_get_valid(png_const_structp png_ptr, png_const_infop info_ptr, png_uint_32 flag)
void PNGAPI png_set_strip_alpha(png_structp png_ptr)
void PNGAPI png_read_info(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_set_read_fn(png_structp png_ptr, png_voidp io_ptr, png_rw_ptr read_data_fn)
void PNGAPI png_set_invert_mono(png_structp png_ptr)
EGLSurface EGLint EGLint y
#define PNG_FILTER_TYPE_BASE
#define PNG_COMPRESSION_TYPE_BASE
GLenum GLuint GLsizei const GLchar * buf
void PNGAPI png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
png_color_8 FAR * png_color_8p
int PNGAPI png_set_interlace_handling(png_structp png_ptr)
void PNGAPI png_set_tRNS_to_alpha(png_structp png_ptr)
void PNGAPI png_read_png(png_structp png_ptr, png_infop info_ptr, int transforms, voidp params)
void PNGAPI png_read_image(png_structp png_ptr, png_bytepp image)
void PNGAPI png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr, png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)
png_uint_32 PNGAPI png_get_bKGD(png_const_structp png_ptr, png_infop info_ptr, png_color_16p *background)
void PNGAPI png_free(png_structp png_ptr, png_voidp ptr)
void PNGAPI png_set_swap_alpha(png_structp png_ptr)
void PNGAPI png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)
void PNGAPI png_read_update_info(png_structp png_ptr, png_infop info_ptr)
void PNGAPI png_init_io(png_structp png_ptr, png_FILE_p fp)
int PNGAPI png_sig_cmp(png_const_bytep sig, png_size_t start, png_size_t num_to_check)
png_color FAR * png_colorp