⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pngget.c

📁 Linux下的基于X11的图形开发环境。
💻 C
📖 第 1 页 / 共 2 页
字号:
/* 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 + -