[devel] pngget.c was omitted from previous checkin.

This commit is contained in:
Glenn Randers-Pehrson 2010-08-19 16:52:01 -05:00
parent 3b5d695583
commit 4aa2cd69ae

View File

@ -208,14 +208,19 @@ png_get_pixel_aspect_ratio_fixed(png_structp png_ptr, png_infop info_ptr)
{ {
#ifdef PNG_READ_pHYs_SUPPORTED #ifdef PNG_READ_pHYs_SUPPORTED
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs) if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)
&& info_ptr->x_pixels_per_unit > 0 && info_ptr->y_pixels_per_unit > 0) && info_ptr->x_pixels_per_unit > 0 && info_ptr->y_pixels_per_unit > 0
&& info_ptr->x_pixels_per_unit <= PNG_UINT_31_MAX
&& info_ptr->y_pixels_per_unit <= PNG_UINT_31_MAX)
{ {
png_fixed_point res; png_fixed_point res;
png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio_fixed"); png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio_fixed");
if (png_muldiv(&res, info_ptr->y_pixels_per_unit, PNG_FP_1, /* The following casts work because a PNG 4 byte integer only has a valid
info_ptr->x_pixels_per_unit)) * range of 0..2^31-1; otherwise the cast might overflow.
*/
if (png_muldiv(&res, (png_int_32)info_ptr->y_pixels_per_unit, PNG_FP_1,
(png_int_32)info_ptr->x_pixels_per_unit))
return res; return res;
} }
#endif #endif
@ -335,7 +340,8 @@ ppi_from_ppm(png_uint_32 ppm)
* to be bigger than 2^31. * to be bigger than 2^31.
*/ */
png_fixed_point result; png_fixed_point result;
if (ppm <= PNG_UINT_31_MAX && png_muldiv(&result, ppm, 127, 5000)) if (ppm <= PNG_UINT_31_MAX && png_muldiv(&result, (png_int_32)ppm, 127,
5000))
return result; return result;
/* Overflow. */ /* Overflow. */
@ -377,7 +383,7 @@ png_fixed_point PNGAPI
png_get_x_offset_inches_fixed(png_structp png_ptr, png_infop info_ptr) png_get_x_offset_inches_fixed(png_structp png_ptr, png_infop info_ptr)
{ {
return png_fixed_inches_from_microns(png_ptr, return png_fixed_inches_from_microns(png_ptr,
png_get_x_offset_microns(png_ptr, info_ptr)); png_get_x_offset_microns(png_ptr, info_ptr));
} }
#endif #endif
@ -386,7 +392,7 @@ png_fixed_point PNGAPI
png_get_y_offset_inches_fixed(png_structp png_ptr, png_infop info_ptr) png_get_y_offset_inches_fixed(png_structp png_ptr, png_infop info_ptr)
{ {
return png_fixed_inches_from_microns(png_ptr, return png_fixed_inches_from_microns(png_ptr,
png_get_y_offset_microns(png_ptr, info_ptr)); png_get_y_offset_microns(png_ptr, info_ptr));
} }
#endif #endif
@ -397,7 +403,7 @@ png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
/* To avoid the overflow do the conversion directly in floating /* To avoid the overflow do the conversion directly in floating
* point. * point.
*/ */
return png_get_x_offset_microns(png_ptr, info_ptr) * .00003937f; return (float)(png_get_x_offset_microns(png_ptr, info_ptr) * .00003937);
} }
#endif #endif
@ -408,7 +414,7 @@ png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
/* To avoid the overflow do the conversion directly in floating /* To avoid the overflow do the conversion directly in floating
* point. * point.
*/ */
return png_get_y_offset_microns(png_ptr, info_ptr) * .00003937f; return (float)(png_get_y_offset_microns(png_ptr, info_ptr) * .00003937);
} }
#endif #endif
@ -439,6 +445,7 @@ png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
{ {
*unit_type = (int)info_ptr->phys_unit_type; *unit_type = (int)info_ptr->phys_unit_type;
retval |= PNG_INFO_pHYs; retval |= PNG_INFO_pHYs;
if (*unit_type == 1) if (*unit_type == 1)
{ {
if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
@ -788,7 +795,7 @@ png_get_sCAL(png_structp png_ptr, png_infop info_ptr,
#endif #endif
png_uint_32 PNGAPI png_uint_32 PNGAPI
png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr, png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
int *unit, png_charpp width, png_charpp height) int *unit, png_charpp width, png_charpp height)
{ {
if (png_ptr != NULL && info_ptr != NULL && if (png_ptr != NULL && info_ptr != NULL &&
(info_ptr->valid & PNG_INFO_sCAL)) (info_ptr->valid & PNG_INFO_sCAL))
@ -963,14 +970,14 @@ png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
#endif #endif
#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
png_uint_32 PNGAPI int PNGAPI
png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr, png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr,
png_unknown_chunkpp unknowns) png_unknown_chunkpp unknowns)
{ {
if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL) if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL)
{ {
*unknowns = info_ptr->unknown_chunks; *unknowns = info_ptr->unknown_chunks;
return ((png_uint_32)info_ptr->unknown_chunks_num); return info_ptr->unknown_chunks_num;
} }
return (0); return (0);
@ -1008,17 +1015,20 @@ png_get_user_width_max (png_structp png_ptr)
{ {
return (png_ptr ? png_ptr->user_width_max : 0); return (png_ptr ? png_ptr->user_width_max : 0);
} }
png_uint_32 PNGAPI png_uint_32 PNGAPI
png_get_user_height_max (png_structp png_ptr) png_get_user_height_max (png_structp png_ptr)
{ {
return (png_ptr ? png_ptr->user_height_max : 0); return (png_ptr ? png_ptr->user_height_max : 0);
} }
/* This function was added to libpng 1.4.0 */ /* This function was added to libpng 1.4.0 */
png_uint_32 PNGAPI png_uint_32 PNGAPI
png_get_chunk_cache_max (png_structp png_ptr) png_get_chunk_cache_max (png_structp png_ptr)
{ {
return (png_ptr ? png_ptr->user_chunk_cache_max : 0); return (png_ptr ? png_ptr->user_chunk_cache_max : 0);
} }
/* This function was added to libpng 1.4.1 */ /* This function was added to libpng 1.4.1 */
png_alloc_size_t PNGAPI png_alloc_size_t PNGAPI
png_get_chunk_malloc_max (png_structp png_ptr) png_get_chunk_malloc_max (png_structp png_ptr)