📄 pngget.c
字号:
/* pngget.c - retrieval of values from info struct * * libpng 1.2.5 - October 3, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) */#define PNG_INTERNAL#include "png.h"png_uint_32 PNGAPIpng_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag){ if (png_ptr != NULL && info_ptr != NULL) return(info_ptr->valid & flag); else return(0);}png_uint_32 PNGAPIpng_get_rowbytes(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) return(info_ptr->rowbytes); else return(0);}#if defined(PNG_INFO_IMAGE_SUPPORTED)png_bytepp PNGAPIpng_get_rows(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) return(info_ptr->row_pointers); else return(0);}#endif#ifdef PNG_EASY_ACCESS_SUPPORTED/* easy access to info, added in libpng-0.99 */png_uint_32 PNGAPIpng_get_image_width(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->width; } return (0);}png_uint_32 PNGAPIpng_get_image_height(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->height; } return (0);}png_byte PNGAPIpng_get_bit_depth(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->bit_depth; } return (0);}png_byte PNGAPIpng_get_color_type(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->color_type; } return (0);}png_byte PNGAPIpng_get_filter_type(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->filter_type; } return (0);}png_byte PNGAPIpng_get_interlace_type(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->interlace_type; } return (0);}png_byte PNGAPIpng_get_compression_type(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) { return info_ptr->compression_type; } return (0);}png_uint_32 PNGAPIpng_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_pHYs_SUPPORTED) if (info_ptr->valid & PNG_INFO_pHYs) { png_debug1(1, "in %s retrieval function\n", "png_get_x_pixels_per_meter"); if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER) return (0); else return (info_ptr->x_pixels_per_unit); }#else return (0);#endif return (0);}png_uint_32 PNGAPIpng_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_pHYs_SUPPORTED) if (info_ptr->valid & PNG_INFO_pHYs) { png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter"); if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER) return (0); else return (info_ptr->y_pixels_per_unit); }#else return (0);#endif return (0);}png_uint_32 PNGAPIpng_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_pHYs_SUPPORTED) if (info_ptr->valid & PNG_INFO_pHYs) { png_debug1(1, "in %s retrieval function\n", "png_get_pixels_per_meter"); if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER || info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit) return (0); else return (info_ptr->x_pixels_per_unit); }#else return (0);#endif return (0);}#ifdef PNG_FLOATING_POINT_SUPPORTEDfloat PNGAPIpng_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr) { if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_pHYs_SUPPORTED) if (info_ptr->valid & PNG_INFO_pHYs) { png_debug1(1, "in %s retrieval function\n", "png_get_aspect_ratio"); if (info_ptr->x_pixels_per_unit == 0) return ((float)0.0); else return ((float)((float)info_ptr->y_pixels_per_unit /(float)info_ptr->x_pixels_per_unit)); }#else return (0.0);#endif return ((float)0.0);}#endifpng_int_32 PNGAPIpng_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_oFFs_SUPPORTED) if (info_ptr->valid & PNG_INFO_oFFs) { png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns"); if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) return (0); else return (info_ptr->x_offset); }#else return (0);#endif return (0);}png_int_32 PNGAPIpng_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_oFFs_SUPPORTED) if (info_ptr->valid & PNG_INFO_oFFs) { png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns"); if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) return (0); else return (info_ptr->y_offset); }#else return (0);#endif return (0);}png_int_32 PNGAPIpng_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_oFFs_SUPPORTED) if (info_ptr->valid & PNG_INFO_oFFs) { png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns"); if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) return (0); else return (info_ptr->x_offset); }#else return (0);#endif return (0);}png_int_32 PNGAPIpng_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL)#if defined(PNG_oFFs_SUPPORTED) if (info_ptr->valid & PNG_INFO_oFFs) { png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns"); if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) return (0); else return (info_ptr->y_offset); }#else return (0);#endif return (0);}#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)png_uint_32 PNGAPIpng_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr){ return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr) *.0254 +.5));}png_uint_32 PNGAPIpng_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr){ return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr) *.0254 +.5));}png_uint_32 PNGAPIpng_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr){ return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr) *.0254 +.5));}float PNGAPIpng_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr){ return ((float)png_get_x_offset_microns(png_ptr, info_ptr) *.00003937);}float PNGAPIpng_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr){ return ((float)png_get_y_offset_microns(png_ptr, info_ptr) *.00003937);}#if defined(PNG_pHYs_SUPPORTED)png_uint_32 PNGAPIpng_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type){ png_uint_32 retval = 0; if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) { png_debug1(1, "in %s retrieval function\n", "pHYs"); if (res_x != NULL) { *res_x = info_ptr->x_pixels_per_unit; retval |= PNG_INFO_pHYs; } if (res_y != NULL) { *res_y = info_ptr->y_pixels_per_unit; retval |= PNG_INFO_pHYs; } if (unit_type != NULL) { *unit_type = (int)info_ptr->phys_unit_type; retval |= PNG_INFO_pHYs; if(*unit_type == 1) { if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50); } } } return (retval);}#endif /* PNG_pHYs_SUPPORTED */#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED *//* png_get_channels really belongs in here, too, but it's been around longer */#endif /* PNG_EASY_ACCESS_SUPPORTED */png_byte PNGAPIpng_get_channels(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) return(info_ptr->channels); else return (0);}png_bytep PNGAPIpng_get_signature(png_structp png_ptr, png_infop info_ptr){ if (png_ptr != NULL && info_ptr != NULL) return(info_ptr->signature); else return (NULL);}#if defined(PNG_bKGD_SUPPORTED)png_uint_32 PNGAPIpng_get_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p *background){ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) && background != NULL) { png_debug1(1, "in %s retrieval function\n", "bKGD"); *background = &(info_ptr->background); return (PNG_INFO_bKGD); } return (0);}#endif#if defined(PNG_cHRM_SUPPORTED)#ifdef PNG_FLOATING_POINT_SUPPORTEDpng_uint_32 PNGAPIpng_get_cHRM(png_structp png_ptr, png_infop info_ptr, double *white_x, double *white_y, double *red_x, double *red_y, double *green_x, double *green_y, double *blue_x, double *blue_y){ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) { png_debug1(1, "in %s retrieval function\n", "cHRM"); if (white_x != NULL) *white_x = (double)info_ptr->x_white; if (white_y != NULL) *white_y = (double)info_ptr->y_white; if (red_x != NULL) *red_x = (double)info_ptr->x_red; if (red_y != NULL) *red_y = (double)info_ptr->y_red; if (green_x != NULL) *green_x = (double)info_ptr->x_green; if (green_y != NULL) *green_y = (double)info_ptr->y_green; if (blue_x != NULL) *blue_x = (double)info_ptr->x_blue; if (blue_y != NULL) *blue_y = (double)info_ptr->y_blue; return (PNG_INFO_cHRM); } return (0);}#endif#ifdef PNG_FIXED_POINT_SUPPORTEDpng_uint_32 PNGAPIpng_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x, png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y, png_fixed_point *blue_x, png_fixed_point *blue_y){ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) { png_debug1(1, "in %s retrieval function\n", "cHRM"); if (white_x != NULL) *white_x = info_ptr->int_x_white; if (white_y != NULL) *white_y = info_ptr->int_y_white; if (red_x != NULL) *red_x = info_ptr->int_x_red; if (red_y != NULL) *red_y = info_ptr->int_y_red; if (green_x != NULL) *green_x = info_ptr->int_x_green; if (green_y != NULL) *green_y = info_ptr->int_y_green; if (blue_x != NULL) *blue_x = info_ptr->int_x_blue; if (blue_y != NULL) *blue_y = info_ptr->int_y_blue; return (PNG_INFO_cHRM); } return (0);}#endif#endif#if defined(PNG_gAMA_SUPPORTED)#ifdef PNG_FLOATING_POINT_SUPPORTEDpng_uint_32 PNGAPIpng_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma){ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) && file_gamma != NULL) { png_debug1(1, "in %s retrieval function\n", "gAMA"); *file_gamma = (double)info_ptr->gamma; return (PNG_INFO_gAMA); } return (0);}#endif#ifdef PNG_FIXED_POINT_SUPPORTEDpng_uint_32 PNGAPIpng_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point *int_file_gamma){ if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) && int_file_gamma != NULL) { png_debug1(1, "in %s retrieval function\n", "gAMA"); *int_file_gamma = info_ptr->int_gamma; return (PNG_INFO_gAMA); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -