// Copyright (C) 2019 Davis E. King (davis@dlib.net), Nils Labugt // License: Boost Software License See LICENSE.txt for the full license. #include <png.h> #include <setjmp.h> #include <stdio.h> #include <stdlib.h> #include <iostream> void png_loader_user_error_fn_silent(png_structp png_struct, png_const_charp ) { longjmp(png_jmpbuf(png_struct),1); } void png_loader_user_warning_fn_silent(png_structp , png_const_charp ) { } // This code doesn't really make a lot of sense. It's just calling all the libpng functions to make // sure they can be compiled and linked. int main() { std::cerr << "This program is just for build system testing. Don't actually run it." << std::endl; abort(); png_bytep* row_pointers_; png_structp png_ptr_; png_infop info_ptr_; png_infop end_info_; FILE *fp = fopen( "whatever.png", "rb" ); png_byte sig[8]; fread( sig, 1, 8, fp ); png_sig_cmp( sig, 0, 8 ); png_ptr_ = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, &png_loader_user_error_fn_silent, &png_loader_user_warning_fn_silent ); png_get_header_ver(NULL); info_ptr_ = png_create_info_struct( png_ptr_ ); end_info_ = png_create_info_struct( png_ptr_ ); setjmp(png_jmpbuf(png_ptr_)); png_set_palette_to_rgb(png_ptr_); png_init_io( png_ptr_, fp ); png_set_sig_bytes( png_ptr_, 8 ); // flags force one byte per channel output int png_transforms = PNG_TRANSFORM_PACKING; png_read_png( png_ptr_, info_ptr_, png_transforms, NULL ); png_get_image_height( png_ptr_, info_ptr_ ); png_get_image_width( png_ptr_, info_ptr_ ); png_get_bit_depth( png_ptr_, info_ptr_ ); png_get_color_type( png_ptr_, info_ptr_ ); png_get_rows( png_ptr_, info_ptr_ ); fclose(fp); png_destroy_read_struct(&png_ptr_, &info_ptr_, &end_info_); }