pngget.c revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* pngget.c - retrieval of values from info struct 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Last changed in libpng 1.2.43 [February 25, 2010] 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 1998-2010 Glenn Randers-Pehrson 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This code is released under the libpng license. 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For conditions of distribution and use, see the disclaimer 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and license in png.h 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PNG_INTERNAL 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PNG_NO_PEDANTIC_WARNINGS 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "png.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(info_ptr->valid & flag); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_rowbytes(png_structp png_ptr, png_infop info_ptr) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(info_ptr->rowbytes); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_INFO_IMAGE_SUPPORTED 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_bytepp PNGAPI 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_rows(png_structp png_ptr, png_infop info_ptr) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(info_ptr->row_pointers); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_EASY_ACCESS_SUPPORTED 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Easy access to info, added in libpng-0.99 */ 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_image_width(png_structp png_ptr, png_infop info_ptr) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->width; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_image_height(png_structp png_ptr, png_infop info_ptr) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->height; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_bit_depth(png_structp png_ptr, png_infop info_ptr) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->bit_depth; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_color_type(png_structp png_ptr, png_infop info_ptr) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->color_type; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_filter_type(png_structp png_ptr, png_infop info_ptr) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->filter_type; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_interlace_type(png_structp png_ptr, png_infop info_ptr) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->interlace_type; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_compression_type(png_structp png_ptr, png_infop info_ptr) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_ptr->compression_type; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_pHYs) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter"); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->x_pixels_per_unit); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_pHYs) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter"); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->y_pixels_per_unit); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_pHYs) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter"); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER || 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->x_pixels_per_unit); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FLOATING_POINT_SUPPORTED 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float PNGAPI 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_pHYs) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio"); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->x_pixels_per_unit == 0) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((float)0.0); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((float)((float)info_ptr->y_pixels_per_unit 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /(float)info_ptr->x_pixels_per_unit)); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0.0); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((float)0.0); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_int_32 PNGAPI 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_oFFs_SUPPORTED 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_oFFs) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->x_offset); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_int_32 PNGAPI 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_oFFs_SUPPORTED 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_oFFs) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->y_offset); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_int_32 PNGAPI 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_oFFs_SUPPORTED 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_oFFs) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->x_offset); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_int_32 PNGAPI 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_oFFs_SUPPORTED 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->valid & PNG_INFO_oFFs) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (info_ptr->y_offset); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.0254 +.5)); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.0254 +.5)); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.0254 +.5)); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float PNGAPI 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((float)png_get_x_offset_microns(png_ptr, info_ptr) 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.00003937); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float PNGAPI 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((float)png_get_y_offset_microns(png_ptr, info_ptr) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.00003937); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 retval = 0; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "pHYs"); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_x != NULL) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *res_x = info_ptr->x_pixels_per_unit; 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_y != NULL) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *res_y = info_ptr->y_pixels_per_unit; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (unit_type != NULL) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unit_type = (int)info_ptr->phys_unit_type; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (*unit_type == 1) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (retval); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PNG_pHYs_SUPPORTED */ 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* png_get_channels really belongs in here, too, but it's been around longer */ 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PNG_EASY_ACCESS_SUPPORTED */ 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_channels(png_structp png_ptr, png_infop info_ptr) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(info_ptr->channels); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_bytep PNGAPI 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_signature(png_structp png_ptr, png_infop info_ptr) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL) 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(info_ptr->signature); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (NULL); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_bKGD_SUPPORTED 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_bKGD(png_structp png_ptr, png_infop info_ptr, 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_color_16p *background) 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && background != NULL) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "bKGD"); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *background = &(info_ptr->background); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_bKGD); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_cHRM_SUPPORTED 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FLOATING_POINT_SUPPORTED 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_cHRM(png_structp png_ptr, png_infop info_ptr, 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double *white_x, double *white_y, double *red_x, double *red_y, 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double *green_x, double *green_y, double *blue_x, double *blue_y) 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "cHRM"); 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (white_x != NULL) 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *white_x = (double)info_ptr->x_white; 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (white_y != NULL) 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *white_y = (double)info_ptr->y_white; 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (red_x != NULL) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *red_x = (double)info_ptr->x_red; 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (red_y != NULL) 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *red_y = (double)info_ptr->y_red; 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (green_x != NULL) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *green_x = (double)info_ptr->x_green; 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (green_y != NULL) 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *green_y = (double)info_ptr->y_green; 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (blue_x != NULL) 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *blue_x = (double)info_ptr->x_blue; 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (blue_y != NULL) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *blue_y = (double)info_ptr->y_blue; 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_cHRM); 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FIXED_POINT_SUPPORTED 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x, 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y, 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_fixed_point *blue_x, png_fixed_point *blue_y) 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "cHRM"); 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (white_x != NULL) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *white_x = info_ptr->int_x_white; 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (white_y != NULL) 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *white_y = info_ptr->int_y_white; 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (red_x != NULL) 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *red_x = info_ptr->int_x_red; 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (red_y != NULL) 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *red_y = info_ptr->int_y_red; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (green_x != NULL) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *green_x = info_ptr->int_x_green; 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (green_y != NULL) 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *green_y = info_ptr->int_y_green; 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (blue_x != NULL) 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *blue_x = info_ptr->int_x_blue; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (blue_y != NULL) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *blue_y = info_ptr->int_y_blue; 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_cHRM); 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_gAMA_SUPPORTED 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FLOATING_POINT_SUPPORTED 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "gAMA"); 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && file_gamma != NULL) 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *file_gamma = (double)info_ptr->gamma; 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_gAMA); 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FIXED_POINT_SUPPORTED 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_fixed_point *int_file_gamma) 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "gAMA"); 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && int_file_gamma != NULL) 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *int_file_gamma = info_ptr->int_gamma; 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_gAMA); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_sRGB_SUPPORTED 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent) 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "sRGB"); 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB) 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && file_srgb_intent != NULL) 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *file_srgb_intent = (int)info_ptr->srgb_intent; 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_sRGB); 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_iCCP_SUPPORTED 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_iCCP(png_structp png_ptr, png_infop info_ptr, 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_charpp name, int *compression_type, 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_charpp profile, png_uint_32 *proflen) 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "iCCP"); 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP) 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && name != NULL && profile != NULL && proflen != NULL) 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *name = info_ptr->iccp_name; 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *profile = info_ptr->iccp_profile; 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Compression_type is a dummy so the API won't have to change 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * if we introduce multiple compression types later. 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *proflen = (int)info_ptr->iccp_proflen; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *compression_type = (int)info_ptr->iccp_compression; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_iCCP); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_sPLT_SUPPORTED 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_sPLT(png_structp png_ptr, png_infop info_ptr, 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_sPLT_tpp spalettes) 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL) 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *spalettes = info_ptr->splt_palettes; 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)info_ptr->splt_palettes_num); 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_hIST_SUPPORTED 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist) 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "hIST"); 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && hist != NULL) 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *hist = info_ptr->hist; 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_hIST); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_IHDR(png_structp png_ptr, png_infop info_ptr, 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 *width, png_uint_32 *height, int *bit_depth, 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *color_type, int *interlace_type, int *compression_type, 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *filter_type) 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "IHDR"); 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr == NULL || info_ptr == NULL || width == NULL || 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) height == NULL || bit_depth == NULL || color_type == NULL) 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *width = info_ptr->width; 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *height = info_ptr->height; 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *bit_depth = info_ptr->bit_depth; 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *color_type = info_ptr->color_type; 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (compression_type != NULL) 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *compression_type = info_ptr->compression_type; 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (filter_type != NULL) 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *filter_type = info_ptr->filter_type; 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (interlace_type != NULL) 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *interlace_type = info_ptr->interlace_type; 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* This is redundant if we can be sure that the info_ptr values were all 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * assigned in png_set_IHDR(). We do the check anyhow in case an 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * application has ignored our advice not to mess with the members 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of info_ptr directly. 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height, 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type, 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_ptr->compression_type, info_ptr->filter_type); 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (1); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_oFFs_SUPPORTED 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_oFFs(png_structp png_ptr, png_infop info_ptr, 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type) 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "oFFs"); 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs) 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && offset_x != NULL && offset_y != NULL && unit_type != NULL) 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *offset_x = info_ptr->x_offset; 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *offset_y = info_ptr->y_offset; 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unit_type = (int)info_ptr->offset_unit_type; 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_oFFs); 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pCAL_SUPPORTED 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pCAL(png_structp png_ptr, png_infop info_ptr, 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams, 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_charp *units, png_charpp *params) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "pCAL"); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL && 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nparams != NULL && units != NULL && params != NULL) 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *purpose = info_ptr->pcal_purpose; 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *X0 = info_ptr->pcal_X0; 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *X1 = info_ptr->pcal_X1; 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *type = (int)info_ptr->pcal_type; 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *nparams = (int)info_ptr->pcal_nparams; 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *units = info_ptr->pcal_units; 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *params = info_ptr->pcal_params; 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_pCAL); 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_sCAL_SUPPORTED 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FLOATING_POINT_SUPPORTED 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_sCAL(png_structp png_ptr, png_infop info_ptr, 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *unit, double *width, double *height) 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (info_ptr->valid & PNG_INFO_sCAL)) 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unit = info_ptr->scal_unit; 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *width = info_ptr->scal_pixel_width; 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *height = info_ptr->scal_pixel_height; 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_sCAL); 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_FIXED_POINT_SUPPORTED 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr, 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *unit, png_charpp width, png_charpp height) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (info_ptr->valid & PNG_INFO_sCAL)) 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unit = info_ptr->scal_unit; 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *width = info_ptr->scal_s_width; 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *height = info_ptr->scal_s_height; 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_sCAL); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_pHYs_SUPPORTED 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_pHYs(png_structp png_ptr, png_infop info_ptr, 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 retval = 0; 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "pHYs"); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (info_ptr->valid & PNG_INFO_pHYs)) 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_x != NULL) 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *res_x = info_ptr->x_pixels_per_unit; 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res_y != NULL) 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *res_y = info_ptr->y_pixels_per_unit; 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (unit_type != NULL) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unit_type = (int)info_ptr->phys_unit_type; 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_pHYs; 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (retval); 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette, 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *num_palette) 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "PLTE"); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE) 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && palette != NULL) 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *palette = info_ptr->palette; 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *num_palette = info_ptr->num_palette; 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(3, "num_palette = %d", *num_palette); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_PLTE); 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_sBIT_SUPPORTED 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit) 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "sBIT"); 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT) 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && sig_bit != NULL) 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *sig_bit = &(info_ptr->sig_bit); 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_sBIT); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_TEXT_SUPPORTED 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr, 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *num_text) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0) 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (png_ptr->chunk_name[0] == '\0' ? "text" 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : (png_const_charp)png_ptr->chunk_name)); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (text_ptr != NULL) 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *text_ptr = info_ptr->text; 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (num_text != NULL) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *num_text = info_ptr->num_text; 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)info_ptr->num_text); 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (num_text != NULL) 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *num_text = 0; 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_tIME_SUPPORTED 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time) 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "tIME"); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME) 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && mod_time != NULL) 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mod_time = &(info_ptr->mod_time); 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (PNG_INFO_tIME); 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_tRNS_SUPPORTED 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_tRNS(png_structp png_ptr, png_infop info_ptr, 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_bytep *trans, int *num_trans, png_color_16p *trans_values) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_uint_32 retval = 0; 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_debug1(1, "in %s retrieval function", "tRNS"); 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (trans != NULL) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *trans = info_ptr->trans; 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_tRNS; 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (trans_values != NULL) 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *trans_values = &(info_ptr->trans_values); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */ 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (trans_values != NULL) 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *trans_values = &(info_ptr->trans_values); 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_tRNS; 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (trans != NULL) 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *trans = NULL; 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (num_trans != NULL) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *num_trans = info_ptr->num_trans; 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) retval |= PNG_INFO_tRNS; 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (retval); 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr, 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) png_unknown_chunkpp unknowns) 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL) 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *unknowns = info_ptr->unknown_chunks; 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ((png_uint_32)info_ptr->unknown_chunks_num); 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_rgb_to_gray_status (png_structp png_ptr) 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_byte)(png_ptr? png_ptr->rgb_to_gray_status : 0); 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_USER_CHUNKS_SUPPORTED 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_voidp PNGAPI 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_user_chunk_ptr(png_structp png_ptr) 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? png_ptr->user_chunk_ptr : NULL); 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_compression_buffer_size(png_structp png_ptr) 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L); 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_ASSEMBLER_CODE_SUPPORTED 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PNG_1_0_X 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This function was added to libpng 1.2.0 and should exist by default */ 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_asm_flags (png_structp png_ptr) 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Obsolete, to be removed from libpng-1.4.0 */ 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? 0L: 0L); 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This function was added to libpng 1.2.0 and should exist by default */ 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_asm_flagmask (int flag_select) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Obsolete, to be removed from libpng-1.4.0 */ 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flag_select=flag_select; 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0L; 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */ 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This function was added to libpng 1.2.0 */ 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_mmx_flagmask (int flag_select, int *compilerID) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Obsolete, to be removed from libpng-1.4.0 */ 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flag_select=flag_select; 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */ 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0L; 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This function was added to libpng 1.2.0 */ 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_byte PNGAPI 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_mmx_bitdepth_threshold (png_structp png_ptr) 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Obsolete, to be removed from libpng-1.4.0 */ 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? 0: 0); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This function was added to libpng 1.2.0 */ 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_mmx_rowbytes_threshold (png_structp png_ptr) 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Obsolete, to be removed from libpng-1.4.0 */ 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? 0L: 0L); 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* ?PNG_1_0_X */ 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */ 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PNG_SET_USER_LIMITS_SUPPORTED 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* These functions were added to libpng 1.2.6 but not enabled 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)* by default. They will be enabled in libpng-1.4.0 */ 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_user_width_max (png_structp png_ptr) 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? png_ptr->user_width_max : 0); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_uint_32 PNGAPI 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)png_get_user_height_max (png_structp png_ptr) 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (png_ptr? png_ptr->user_height_max : 0); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */ 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ 945