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