18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c - retrieval of values from info struct
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *
4c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner * Last changed in libpng 1.2.43 [February 25, 2010]
5c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner * Copyright (c) 1998-2010 Glenn Randers-Pehrson
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
8c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner *
9c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner * This code is released under the libpng license.
10c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner * For conditions of distribution and use, see the disclaimer
11c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner * and license in png.h
12c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner *
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTERNAL
16c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#define PNG_NO_PEDANTIC_WARNINGS
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "png.h"
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(info_ptr->valid & flag);
25c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   else
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(0);
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(info_ptr->rowbytes);
35c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   else
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(0);
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_INFO_IMAGE_SUPPORTED
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_bytepp PNGAPI
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_rows(png_structp png_ptr, png_infop info_ptr)
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(info_ptr->row_pointers);
46c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   else
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(0);
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_EASY_ACCESS_SUPPORTED
53c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* Easy access to info, added in libpng-0.99 */
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_image_width(png_structp png_ptr, png_infop info_ptr)
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->width;
59c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_image_height(png_structp png_ptr, png_infop info_ptr)
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->height;
68c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->bit_depth;
77c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_color_type(png_structp png_ptr, png_infop info_ptr)
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->color_type;
86c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_filter_type(png_structp png_ptr, png_infop info_ptr)
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->filter_type;
95c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->interlace_type;
104c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_compression_type(png_structp png_ptr, png_infop info_ptr)
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return info_ptr->compression_type;
113c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
121c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_pHYs)
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
124c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter");
125c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
126c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
128c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
129c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
130c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->x_pixels_per_unit);
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
142c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_pHYs)
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
145c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter");
146c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
147c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
149c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
150c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
151c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->y_pixels_per_unit);
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
163c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_pHYs)
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
166c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
167c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
168c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
171c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
172c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
173c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->x_pixels_per_unit);
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectfloat PNGAPI
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
186c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
187c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_pHYs)
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
190c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
191c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (info_ptr->x_pixels_per_unit == 0)
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         return ((float)0.0);
194c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      else
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         return ((float)((float)info_ptr->y_pixels_per_unit
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            /(float)info_ptr->x_pixels_per_unit));
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
200c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      return (0.0);
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((float)0.0);
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_int_32 PNGAPI
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
210c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_oFFs_SUPPORTED
211c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_oFFs)
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
214c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
215c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
216c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
218c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
219c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
220c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->x_offset);
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
223c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      return (0);
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_int_32 PNGAPI
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
232c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
233c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_oFFs_SUPPORTED
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_oFFs)
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
236c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
237c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
238c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
240c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
241c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
242c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->y_offset);
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_int_32 PNGAPI
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
254c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
255c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_oFFs_SUPPORTED
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_oFFs)
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
258c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
259c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
260c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
262c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
263c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
264c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->x_offset);
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_int_32 PNGAPI
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
276c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
277c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_oFFs_SUPPORTED
2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (info_ptr->valid & PNG_INFO_oFFs)
2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
280c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
281c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
282c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          return (0);
284c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
285c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      else
286c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          return (info_ptr->y_offset);
2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr)
2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *.0254 +.5));
3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr)
3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *.0254 +.5));
3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr)
3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *.0254 +.5));
3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectfloat PNGAPI
3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((float)png_get_x_offset_microns(png_ptr, info_ptr)
3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *.00003937);
3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectfloat PNGAPI
3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *.00003937);
3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
330c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 retval = 0;
3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
339c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "pHYs");
340c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (res_x != NULL)
3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *res_x = info_ptr->x_pixels_per_unit;
3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (res_y != NULL)
3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *res_y = info_ptr->y_pixels_per_unit;
3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (unit_type != NULL)
3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
3538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *unit_type = (int)info_ptr->phys_unit_type;
3548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
355c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner         if (*unit_type == 1)
3568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         {
3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
3588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
3598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         }
3608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
3618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (retval);
3638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_pHYs_SUPPORTED */
3658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif  /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_get_channels really belongs in here, too, but it's been around longer */
3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif  /* PNG_EASY_ACCESS_SUPPORTED */
3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_channels(png_structp png_ptr, png_infop info_ptr)
3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(info_ptr->channels);
3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   else
3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (0);
3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_bytep PNGAPI
3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_signature(png_structp png_ptr, png_infop info_ptr)
3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL)
3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return(info_ptr->signature);
3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   else
3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (NULL);
3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
389c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_bKGD_SUPPORTED
3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_bKGD(png_structp png_ptr, png_infop info_ptr,
3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_color_16p *background)
3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)
3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && background != NULL)
3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
397c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "bKGD");
398c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *background = &(info_ptr->background);
4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_bKGD);
4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
406c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_cHRM_SUPPORTED
4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED
4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_cHRM(png_structp png_ptr, png_infop info_ptr,
4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   double *white_x, double *white_y, double *red_x, double *red_y,
4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   double *green_x, double *green_y, double *blue_x, double *blue_y)
4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
4148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
415c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "cHRM");
416c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (white_x != NULL)
4188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *white_x = (double)info_ptr->x_white;
4198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (white_y != NULL)
4208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *white_y = (double)info_ptr->y_white;
4218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (red_x != NULL)
4228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *red_x = (double)info_ptr->x_red;
4238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (red_y != NULL)
4248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *red_y = (double)info_ptr->y_red;
4258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (green_x != NULL)
4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *green_x = (double)info_ptr->x_green;
4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (green_y != NULL)
4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *green_y = (double)info_ptr->y_green;
4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (blue_x != NULL)
4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *blue_x = (double)info_ptr->x_blue;
4318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (blue_y != NULL)
4328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *blue_y = (double)info_ptr->y_blue;
4338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_cHRM);
4348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
4358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
4368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
4378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED
4398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
4408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
4418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x,
4428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y,
4438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_fixed_point *blue_x, png_fixed_point *blue_y)
4448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
445c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "cHRM");
446c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
4478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
4488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
4498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (white_x != NULL)
4508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *white_x = info_ptr->int_x_white;
4518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (white_y != NULL)
4528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *white_y = info_ptr->int_y_white;
4538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (red_x != NULL)
4548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *red_x = info_ptr->int_x_red;
4558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (red_y != NULL)
4568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *red_y = info_ptr->int_y_red;
4578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (green_x != NULL)
4588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *green_x = info_ptr->int_x_green;
4598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (green_y != NULL)
4608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *green_y = info_ptr->int_y_green;
4618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (blue_x != NULL)
4628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *blue_x = info_ptr->int_x_blue;
4638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (blue_y != NULL)
4648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *blue_y = info_ptr->int_y_blue;
4658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_cHRM);
4668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
4678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
4688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
4698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
472c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_gAMA_SUPPORTED
4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED
4748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
4758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma)
4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
477c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "gAMA");
478c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
4808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && file_gamma != NULL)
4818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
4828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *file_gamma = (double)info_ptr->gamma;
4838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_gAMA);
4848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
4858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
4868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
4878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
4888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED
4898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
4908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr,
4918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    png_fixed_point *int_file_gamma)
4928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
493c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "gAMA");
494c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
4958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
4968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && int_file_gamma != NULL)
4978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
4988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *int_file_gamma = info_ptr->int_gamma;
4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_gAMA);
5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
5028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
506c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_sRGB_SUPPORTED
5078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent)
5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
510c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "sRGB");
511c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)
5138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && file_srgb_intent != NULL)
5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *file_srgb_intent = (int)info_ptr->srgb_intent;
5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_sRGB);
5178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
5188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
5198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
522c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_iCCP_SUPPORTED
5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
5248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_iCCP(png_structp png_ptr, png_infop info_ptr,
5258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             png_charpp name, int *compression_type,
5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             png_charpp profile, png_uint_32 *proflen)
5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
528c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "iCCP");
529c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP)
5318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && name != NULL && profile != NULL && proflen != NULL)
5328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
5338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *name = info_ptr->iccp_name;
5348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *profile = info_ptr->iccp_profile;
535c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      /* Compression_type is a dummy so the API won't have to change
536c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       * if we introduce multiple compression types later.
537c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       */
5388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *proflen = (int)info_ptr->iccp_proflen;
5398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *compression_type = (int)info_ptr->iccp_compression;
5408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_iCCP);
5418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
5428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
5438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
546c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_sPLT_SUPPORTED
5478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
5488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_sPLT(png_structp png_ptr, png_infop info_ptr,
5498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             png_sPLT_tpp spalettes)
5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL)
5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *spalettes = info_ptr->splt_palettes;
5548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     return ((png_uint_32)info_ptr->splt_palettes_num);
5558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
5568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
5578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
560c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_hIST_SUPPORTED
5618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
5628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist)
5638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
564c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "hIST");
565c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
5668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)
5678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && hist != NULL)
5688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
5698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *hist = info_ptr->hist;
5708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_hIST);
5718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
5758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
5778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_IHDR(png_structp png_ptr, png_infop info_ptr,
5788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 *width, png_uint_32 *height, int *bit_depth,
5798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   int *color_type, int *interlace_type, int *compression_type,
5808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   int *filter_type)
5818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
583c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "IHDR");
584c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
585c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   if (png_ptr == NULL || info_ptr == NULL || width == NULL ||
586c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       height == NULL || bit_depth == NULL || color_type == NULL)
587c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      return (0);
588c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
589c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   *width = info_ptr->width;
590c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   *height = info_ptr->height;
591c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   *bit_depth = info_ptr->bit_depth;
592c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   *color_type = info_ptr->color_type;
593c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
594c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   if (compression_type != NULL)
595c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      *compression_type = info_ptr->compression_type;
596c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
597c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   if (filter_type != NULL)
598c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      *filter_type = info_ptr->filter_type;
599c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
600c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   if (interlace_type != NULL)
601c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      *interlace_type = info_ptr->interlace_type;
602c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
603c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   /* This is redundant if we can be sure that the info_ptr values were all
604c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    * assigned in png_set_IHDR().  We do the check anyhow in case an
605c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    * application has ignored our advice not to mess with the members
606c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    * of info_ptr directly.
607c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    */
608c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
609c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
610c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       info_ptr->compression_type, info_ptr->filter_type);
611c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
612c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   return (1);
6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
615c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_oFFs_SUPPORTED
6168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
6178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_oFFs(png_structp png_ptr, png_infop info_ptr,
6188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)
6198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
620c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "oFFs");
621c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
6228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)
6238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && offset_x != NULL && offset_y != NULL && unit_type != NULL)
6248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
6258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *offset_x = info_ptr->x_offset;
6268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *offset_y = info_ptr->y_offset;
6278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *unit_type = (int)info_ptr->offset_unit_type;
6288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_oFFs);
6298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
6308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
6318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
6328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
6338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
634c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pCAL_SUPPORTED
6358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
6368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pCAL(png_structp png_ptr, png_infop info_ptr,
6378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
6388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_charp *units, png_charpp *params)
6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
640c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "pCAL");
641c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
6428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
643c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
644c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner       nparams != NULL && units != NULL && params != NULL)
6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
6468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *purpose = info_ptr->pcal_purpose;
6478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *X0 = info_ptr->pcal_X0;
6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *X1 = info_ptr->pcal_X1;
6498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *type = (int)info_ptr->pcal_type;
6508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *nparams = (int)info_ptr->pcal_nparams;
6518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *units = info_ptr->pcal_units;
6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *params = info_ptr->pcal_params;
6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_pCAL);
6548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
6568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
659c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_sCAL_SUPPORTED
6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED
6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
6628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_sCAL(png_structp png_ptr, png_infop info_ptr,
6638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             int *unit, double *width, double *height)
6648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (png_ptr != NULL && info_ptr != NULL &&
666c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner        (info_ptr->valid & PNG_INFO_sCAL))
6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
6688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *unit = info_ptr->scal_unit;
6698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *width = info_ptr->scal_pixel_width;
6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *height = info_ptr->scal_pixel_height;
6718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return (PNG_INFO_sCAL);
6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return(0);
6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
6758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
6768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED
6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             int *unit, png_charpp width, png_charpp height)
6808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
6818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (png_ptr != NULL && info_ptr != NULL &&
682c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner        (info_ptr->valid & PNG_INFO_sCAL))
6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
6848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *unit = info_ptr->scal_unit;
6858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *width = info_ptr->scal_s_width;
6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        *height = info_ptr->scal_s_height;
6878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return (PNG_INFO_sCAL);
6888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
6898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return(0);
6908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
6918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
6928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
6938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
6948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
695c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_pHYs_SUPPORTED
6968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
6978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_pHYs(png_structp png_ptr, png_infop info_ptr,
6988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
6998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
7008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 retval = 0;
7018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
702c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "pHYs");
703c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL &&
7058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      (info_ptr->valid & PNG_INFO_pHYs))
7068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
7078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (res_x != NULL)
7088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
7098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *res_x = info_ptr->x_pixels_per_unit;
7108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
7118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
712c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (res_y != NULL)
7148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
7158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *res_y = info_ptr->y_pixels_per_unit;
7168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
7178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
718c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (unit_type != NULL)
7208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
7218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *unit_type = (int)info_ptr->phys_unit_type;
7228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_pHYs;
7238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
7248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
7258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (retval);
7268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
7278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
7288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
7308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette,
7318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   int *num_palette)
7328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
733c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "PLTE");
734c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE)
7368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       && palette != NULL)
7378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
7388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *palette = info_ptr->palette;
7398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *num_palette = info_ptr->num_palette;
740c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(3, "num_palette = %d", *num_palette);
7418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_PLTE);
7428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
7438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
7448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
7458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
746c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_sBIT_SUPPORTED
7478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
7488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
7498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
750c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "sBIT");
751c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)
7538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      && sig_bit != NULL)
7548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
7558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *sig_bit = &(info_ptr->sig_bit);
7568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_sBIT);
7578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
7588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
7598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
7608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
7618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
762c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_TEXT_SUPPORTED
7638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
7648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
7658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   int *num_text)
7668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
7678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0)
7688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
769c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function",
7708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         (png_ptr->chunk_name[0] == '\0' ? "text"
7718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             : (png_const_charp)png_ptr->chunk_name));
772c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (text_ptr != NULL)
7748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *text_ptr = info_ptr->text;
775c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (num_text != NULL)
7778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *num_text = info_ptr->num_text;
778c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return ((png_uint_32)info_ptr->num_text);
7808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
7818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (num_text != NULL)
7828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *num_text = 0;
7838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return(0);
7848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
7858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
7868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
787c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_tIME_SUPPORTED
7888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
7898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time)
7908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
791c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner   png_debug1(1, "in %s retrieval function", "tIME");
792c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
7938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)
7948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       && mod_time != NULL)
7958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
7968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      *mod_time = &(info_ptr->mod_time);
7978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return (PNG_INFO_tIME);
7988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
7998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
8008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
8028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
803c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_tRNS_SUPPORTED
8048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
8058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_tRNS(png_structp png_ptr, png_infop info_ptr,
8068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_bytep *trans, int *num_trans, png_color_16p *trans_values)
8078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
8088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   png_uint_32 retval = 0;
8098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
8108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
811c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      png_debug1(1, "in %s retrieval function", "tRNS");
812c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
8138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
8148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
8158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          if (trans != NULL)
8168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          {
8178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             *trans = info_ptr->trans;
8188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             retval |= PNG_INFO_tRNS;
8198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          }
820c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
8218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          if (trans_values != NULL)
8228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             *trans_values = &(info_ptr->trans_values);
8238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
8248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */
8258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
8268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          if (trans_values != NULL)
8278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          {
8288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             *trans_values = &(info_ptr->trans_values);
8298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             retval |= PNG_INFO_tRNS;
8308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project          }
831c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner
832c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner          if (trans != NULL)
8338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             *trans = NULL;
8348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
835c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner      if (num_trans != NULL)
8368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      {
8378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         *num_trans = info_ptr->num_trans;
8388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         retval |= PNG_INFO_tRNS;
8398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      }
8408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
8418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (retval);
8428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
8448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
845c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
8468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
8478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr,
8488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             png_unknown_chunkpp unknowns)
8498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
8508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL)
8518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   {
8528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     *unknowns = info_ptr->unknown_chunks;
8538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     return ((png_uint_32)info_ptr->unknown_chunks_num);
8548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   }
8558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (0);
8568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
8588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
859c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
8608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
8618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_rgb_to_gray_status (png_structp png_ptr)
8628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
8638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (png_byte)(png_ptr? png_ptr->rgb_to_gray_status : 0);
8648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
8668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
867c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner#ifdef PNG_USER_CHUNKS_SUPPORTED
8688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_voidp PNGAPI
8698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_user_chunk_ptr(png_structp png_ptr)
8708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
8718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (png_ptr? png_ptr->user_chunk_ptr : NULL);
8728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
8748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
8768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_compression_buffer_size(png_structp png_ptr)
8778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
8788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L);
8798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
8828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_1_0_X
883c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* This function was added to libpng 1.2.0 and should exist by default */
8848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
8858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_asm_flags (png_structp png_ptr)
8868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
887c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    /* Obsolete, to be removed from libpng-1.4.0 */
8888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (png_ptr? 0L: 0L);
8898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
891c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* This function was added to libpng 1.2.0 and should exist by default */
8928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_asm_flagmask (int flag_select)
8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
895c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    /* Obsolete, to be removed from libpng-1.4.0 */
896c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    flag_select=flag_select;
897c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    return 0L;
8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* GRR:  could add this:   && defined(PNG_MMX_CODE_SUPPORTED) */
901c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* This function was added to libpng 1.2.0 */
9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_mmx_flagmask (int flag_select, int *compilerID)
9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
905c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    /* Obsolete, to be removed from libpng-1.4.0 */
906c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    flag_select=flag_select;
907c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    *compilerID = -1;   /* unknown (i.e., no asm/MMX code compiled) */
908c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    return 0L;
9098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
911c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* This function was added to libpng 1.2.0 */
9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_byte PNGAPI
9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_mmx_bitdepth_threshold (png_structp png_ptr)
9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
915c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    /* Obsolete, to be removed from libpng-1.4.0 */
9168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (png_ptr? 0: 0);
9178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
919c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* This function was added to libpng 1.2.0 */
9208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_mmx_rowbytes_threshold (png_structp png_ptr)
9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
923c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner    /* Obsolete, to be removed from libpng-1.4.0 */
9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (png_ptr? 0L: 0L);
9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ?PNG_1_0_X */
9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_SET_USER_LIMITS_SUPPORTED
930c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner/* These functions were added to libpng 1.2.6 but not enabled
931c7702eb5df5f3e72ceedfcd5fb60b94c0a945934David 'Digit' Turner* by default. They will be enabled in libpng-1.4.0 */
9328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
9338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_user_width_max (png_structp png_ptr)
9348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (png_ptr? png_ptr->user_width_max : 0);
9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_uint_32 PNGAPI
9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_get_user_height_max (png_structp png_ptr)
9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (png_ptr? png_ptr->user_height_max : 0);
9418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
9438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
945