亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? png.c

?? linux syslinux source code
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* png.c - location for general purpose libpng functions * * libpng version 1.2.8 - December 3, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 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#define PNG_NO_EXTERN#include "png.h"/* Generate a compiler error if there is an old png.h in the search path. */typedef version_1_2_8 Your_png_h_is_not_version_1_2_8;/* Version information for C files.  This had better match the version * string defined in png.h.  */#ifdef PNG_USE_GLOBAL_ARRAYS/* png_libpng_ver was changed to a function in version 1.0.5c */const char png_libpng_ver[18] = PNG_LIBPNG_VER_STRING;/* png_sig was changed to a function in version 1.0.5c *//* Place to hold the signature string for a PNG file. */const png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10};/* Invoke global declarations for constant strings for known chunk types */PNG_IHDR;PNG_IDAT;PNG_IEND;PNG_PLTE;PNG_bKGD;PNG_cHRM;PNG_gAMA;PNG_hIST;PNG_iCCP;PNG_iTXt;PNG_oFFs;PNG_pCAL;PNG_sCAL;PNG_pHYs;PNG_sBIT;PNG_sPLT;PNG_sRGB;PNG_tEXt;PNG_tIME;PNG_tRNS;PNG_zTXt;/* arrays to facilitate easy interlacing - use pass (0 - 6) as index *//* start of interlace block */const int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};/* offset to next interlace block */const int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};/* start of interlace block in the y direction */const int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};/* offset to next interlace block in the y direction */const int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};/* width of interlace block (used in assembler routines only) */#ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROWconst int FARDATA png_pass_width[] = {8, 4, 4, 2, 2, 1, 1};#endif/* Height of interlace block.  This is not currently used - if you need * it, uncomment it here and in png.hconst int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};*//* Mask to determine which pixels are valid in a pass */const int FARDATA png_pass_mask[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};/* Mask to determine which pixels to overwrite while displaying */const int FARDATA png_pass_dsp_mask[]   = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};#endif /* PNG_USE_GLOBAL_ARRAYS *//* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature.  If the PNG data is embedded into another * stream we can set num_bytes = 8 so that libpng will not attempt to read * or write any of the magic bytes before it starts on the IHDR. */void PNGAPIpng_set_sig_bytes(png_structp png_ptr, int num_bytes){   png_debug(1, "in png_set_sig_bytes\n");   if (num_bytes > 8)      png_error(png_ptr, "Too many bytes for PNG signature.");   png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes);}/* Checks whether the supplied bytes match the PNG signature.  We allow * checking less than the full 8-byte signature so that those apps that * already read the first few bytes of a file to determine the file type * can simply check the remaining bytes for extra assurance.  Returns * an integer less than, equal to, or greater than zero if sig is found, * respectively, to be less than, to match, or be greater than the correct * PNG signature (this is the same behaviour as strcmp, memcmp, etc). */int PNGAPIpng_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check){   png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};   if (num_to_check > 8)      num_to_check = 8;   else if (num_to_check < 1)      return (0);   if (start > 7)      return (0);   if (start + num_to_check > 8)      num_to_check = 8 - start;   return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));}/* (Obsolete) function to check signature bytes.  It does not allow one * to check a partial signature.  This function might be removed in the * future - use png_sig_cmp().  Returns true (nonzero) if the file is a PNG. */int PNGAPIpng_check_sig(png_bytep sig, int num){  return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num));}/* Function to allocate memory for zlib and clear it to 0. */#ifdef PNG_1_0_Xvoidpf PNGAPI#elsevoidpf /* private */#endifpng_zalloc(voidpf png_ptr, uInt items, uInt size){   png_voidp ptr;   png_structp p=png_ptr;   png_uint_32 save_flags=p->flags;   png_uint_32 num_bytes;   if (items > PNG_UINT_32_MAX/size)   {     png_warning (png_ptr, "Potential overflow in png_zalloc()");     return (NULL);   }   num_bytes = (png_uint_32)items * size;   p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;   ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);   p->flags=save_flags;#if defined(PNG_1_0_X) && !defined(PNG_NO_ZALLOC_ZERO)   if (ptr == NULL)       return ((voidpf)ptr);   if (num_bytes > (png_uint_32)0x8000L)   {      png_memset(ptr, 0, (png_size_t)0x8000L);      png_memset((png_bytep)ptr + (png_size_t)0x8000L, 0,         (png_size_t)(num_bytes - (png_uint_32)0x8000L));   }   else   {      png_memset(ptr, 0, (png_size_t)num_bytes);   }#endif   return ((voidpf)ptr);}/* function to free memory for zlib */#ifdef PNG_1_0_Xvoid PNGAPI#elsevoid /* private */#endifpng_zfree(voidpf png_ptr, voidpf ptr){   png_free((png_structp)png_ptr, (png_voidp)ptr);}/* Reset the CRC variable to 32 bits of 1's.  Care must be taken * in case CRC is > 32 bits to leave the top bits 0. */void /* PRIVATE */png_reset_crc(png_structp png_ptr){   png_ptr->crc = crc32(0, Z_NULL, 0);}/* Calculate the CRC over a section of data.  We can only pass as * much data to this routine as the largest single buffer size.  We * also check that this data will actually be used before going to the * trouble of calculating it. */void /* PRIVATE */png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length){   int need_crc = 1;   if (png_ptr->chunk_name[0] & 0x20)                     /* ancillary */   {      if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==          (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))         need_crc = 0;   }   else                                                    /* critical */   {      if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)         need_crc = 0;   }   if (need_crc)      png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length);}/* Allocate the memory for an info_struct for the application.  We don't * really need the png_ptr, but it could potentially be useful in the * future.  This should be used in favour of malloc(png_sizeof(png_info)) * and png_info_init() so that applications that want to use a shared * libpng don't have to be recompiled if png_info changes size. */png_infop PNGAPIpng_create_info_struct(png_structp png_ptr){   png_infop info_ptr;   png_debug(1, "in png_create_info_struct\n");   if(png_ptr == NULL) return (NULL);#ifdef PNG_USER_MEM_SUPPORTED   info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,      png_ptr->malloc_fn, png_ptr->mem_ptr);#else   info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);#endif   if (info_ptr != NULL)      png_info_init_3(&info_ptr, png_sizeof(png_info));   return (info_ptr);}/* This function frees the memory associated with a single info struct. * Normally, one would use either png_destroy_read_struct() or * png_destroy_write_struct() to free an info struct, but this may be * useful for some applications. */void PNGAPIpng_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr){   png_infop info_ptr = NULL;   png_debug(1, "in png_destroy_info_struct\n");   if (info_ptr_ptr != NULL)      info_ptr = *info_ptr_ptr;   if (info_ptr != NULL)   {      png_info_destroy(png_ptr, info_ptr);#ifdef PNG_USER_MEM_SUPPORTED      png_destroy_struct_2((png_voidp)info_ptr, png_ptr->free_fn,          png_ptr->mem_ptr);#else      png_destroy_struct((png_voidp)info_ptr);#endif      *info_ptr_ptr = NULL;   }}/* Initialize the info structure.  This is now an internal function (0.89) * and applications using it are urged to use png_create_info_struct() * instead. */#if defined(PNG_1_0_X) || defined (PNG_1_2_X)#undef png_info_initvoid PNGAPIpng_info_init(png_infop info_ptr){   /* We only come here via pre-1.0.12-compiled applications */   png_info_init_3(&info_ptr, 0);}#endifvoid PNGAPIpng_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size){   png_infop info_ptr = *ptr_ptr;   png_debug(1, "in png_info_init_3\n");   if(png_sizeof(png_info) > png_info_struct_size)     {       png_destroy_struct(info_ptr);       info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);       *ptr_ptr = info_ptr;     }   /* set everything to 0 */   png_memset(info_ptr, 0, png_sizeof (png_info));}#ifdef PNG_FREE_ME_SUPPORTEDvoid PNGAPIpng_data_freer(png_structp png_ptr, png_infop info_ptr,   int freer, png_uint_32 mask){   png_debug(1, "in png_data_freer\n");   if (png_ptr == NULL || info_ptr == NULL)      return;   if(freer == PNG_DESTROY_WILL_FREE_DATA)      info_ptr->free_me |= mask;   else if(freer == PNG_USER_WILL_FREE_DATA)      info_ptr->free_me &= ~mask;   else      png_warning(png_ptr,         "Unknown freer parameter in png_data_freer.");}#endifvoid PNGAPIpng_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask,   int num){   png_debug(1, "in png_free_data\n");   if (png_ptr == NULL || info_ptr == NULL)      return;#if defined(PNG_TEXT_SUPPORTED)/* free text item num or (if num == -1) all text items */#ifdef PNG_FREE_ME_SUPPORTEDif ((mask & PNG_FREE_TEXT) & info_ptr->free_me)#elseif (mask & PNG_FREE_TEXT)#endif{   if (num != -1)   {     if (info_ptr->text && info_ptr->text[num].key)     {         png_free(png_ptr, info_ptr->text[num].key);         info_ptr->text[num].key = NULL;     }   }   else   {       int i;       for (i = 0; i < info_ptr->num_text; i++)           png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);       png_free(png_ptr, info_ptr->text);       info_ptr->text = NULL;       info_ptr->num_text=0;   }}#endif#if defined(PNG_tRNS_SUPPORTED)/* free any tRNS entry */#ifdef PNG_FREE_ME_SUPPORTEDif ((mask & PNG_FREE_TRNS) & info_ptr->free_me)#elseif ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))#endif{    png_free(png_ptr, info_ptr->trans);    info_ptr->valid &= ~PNG_INFO_tRNS;#ifndef PNG_FREE_ME_SUPPORTED    png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;#endif    info_ptr->trans = NULL;}#endif#if defined(PNG_sCAL_SUPPORTED)/* free any sCAL entry */#ifdef PNG_FREE_ME_SUPPORTEDif ((mask & PNG_FREE_SCAL) & info_ptr->free_me)#elseif (mask & PNG_FREE_SCAL)#endif{#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)    png_free(png_ptr, info_ptr->scal_s_width);    png_free(png_ptr, info_ptr->scal_s_height);    info_ptr->scal_s_width = NULL;    info_ptr->scal_s_height = NULL;#endif    info_ptr->valid &= ~PNG_INFO_sCAL;}#endif#if defined(PNG_pCAL_SUPPORTED)/* free any pCAL entry */#ifdef PNG_FREE_ME_SUPPORTEDif ((mask & PNG_FREE_PCAL) & info_ptr->free_me)#elseif (mask & PNG_FREE_PCAL)#endif{    png_free(png_ptr, info_ptr->pcal_purpose);    png_free(png_ptr, info_ptr->pcal_units);    info_ptr->pcal_purpose = NULL;    info_ptr->pcal_units = NULL;    if (info_ptr->pcal_params != NULL)    {        int i;        for (i = 0; i < (int)info_ptr->pcal_nparams; i++)        {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产综合精品| 中文一区二区完整视频在线观看| 成人丝袜高跟foot| 国产黄色精品网站| 国产一区二区调教| 国产酒店精品激情| 国产成人在线色| 成人av电影在线| 91麻豆国产在线观看| 色哟哟亚洲精品| 欧美日韩一卡二卡三卡 | 国产精品欧美综合在线| 国产欧美一二三区| 亚洲天天做日日做天天谢日日欢| 国产精品视频一二| 亚洲欧美日韩精品久久久久| 亚洲激情自拍视频| 日本亚洲欧美天堂免费| 日韩va欧美va亚洲va久久| 亚洲日本免费电影| 亚洲国产三级在线| 亚洲成人动漫av| 激情综合亚洲精品| 99这里只有久久精品视频| 在线观看成人小视频| 7777精品伊人久久久大香线蕉经典版下载| 555www色欧美视频| 国产精品视频九色porn| 亚洲自拍偷拍九九九| 免费在线观看不卡| 成人av在线播放网站| 欧美三区在线视频| 久久久蜜桃精品| 亚洲最新在线观看| 蜜臀av国产精品久久久久| 懂色av一区二区三区蜜臀| 在线亚洲免费视频| 国产亚洲女人久久久久毛片| 国产午夜精品一区二区三区嫩草 | 亚洲免费观看高清完整版在线观看 | 国产传媒日韩欧美成人| 日本高清免费不卡视频| 精品日韩一区二区| 亚洲乱码精品一二三四区日韩在线| 五月天一区二区| 国产91综合网| 欧美一区二区啪啪| 国产精品天美传媒| 精品写真视频在线观看| 精品视频在线免费看| 亚洲国产成人自拍| 久久成人av少妇免费| 色综合久久久久久久| 精品国产乱码久久久久久浪潮| 亚洲国产aⅴ成人精品无吗| 成人久久久精品乱码一区二区三区| 欧美视频一区二区在线观看| www国产成人免费观看视频 深夜成人网| 亚洲色图19p| 7878成人国产在线观看| 亚洲国产精品传媒在线观看| 亚洲免费观看视频| 国产盗摄精品一区二区三区在线| 欧美精品v国产精品v日韩精品| 精品久久久久久久久久久久包黑料| 亚洲成人av福利| 欧美图区在线视频| 亚洲一二三专区| 91九色最新地址| 亚洲精品v日韩精品| 91丨九色丨蝌蚪富婆spa| 国产精品女人毛片| 高清国产一区二区三区| 2020国产精品自拍| 国产一区二区三区在线观看免费视频| 日韩一级黄色片| 精彩视频一区二区| 精品国产一区二区三区av性色 | 麻豆精品新av中文字幕| 日韩一区二区三区视频| 亚洲图片有声小说| 91国产免费观看| 亚洲国产精品自拍| 欧美日韩国产美| 日韩激情一二三区| 欧美精品一二三| 美女在线视频一区| 久久久久久电影| 国产成人精品三级麻豆| 中文一区一区三区高中清不卡| av亚洲精华国产精华精| 伊人一区二区三区| 欧美高清视频不卡网| 奇米影视一区二区三区| 日韩欧美一区在线观看| 国产黄色精品视频| 亚洲黄色免费电影| 91麻豆精品国产91久久久久| 日韩欧美国产麻豆| 欧美电影免费观看高清完整版| 日韩av一二三| 精品国产电影一区二区| av一二三不卡影片| 午夜不卡av在线| 国产午夜精品在线观看| 激情亚洲综合在线| 一区二区三区蜜桃| 精品国产乱码久久久久久蜜臀| 99re这里只有精品6| 五月激情六月综合| 国产欧美久久久精品影院| 欧美亚洲国产怡红院影院| 激情欧美一区二区三区在线观看| 亚洲欧洲一区二区在线播放| 777色狠狠一区二区三区| av色综合久久天堂av综合| 男女男精品视频| 亚洲品质自拍视频| 国产亚洲婷婷免费| 91精品国产欧美日韩| 色老汉av一区二区三区| 亚洲国产日韩一级| 日韩一区二区三区在线| voyeur盗摄精品| 男女激情视频一区| 亚洲免费观看高清完整版在线 | 国产精品不卡一区| 欧美一区二区三区爱爱| 91一区一区三区| 国产成人免费xxxxxxxx| 日韩国产在线观看| 亚洲免费av网站| 国产精品国产三级国产aⅴ中文| 日韩午夜电影av| 欧美日韩精品欧美日韩精品| 97久久人人超碰| 粉嫩高潮美女一区二区三区| 久久99九九99精品| 日韩avvvv在线播放| 洋洋成人永久网站入口| 亚洲丝袜精品丝袜在线| 国产99精品视频| 国产精品91xxx| 美女免费视频一区| 午夜伦欧美伦电影理论片| 亚洲主播在线播放| 中文字幕一区二区三区四区不卡| 337p日本欧洲亚洲大胆色噜噜| 宅男噜噜噜66一区二区66| 91精品国产综合久久久蜜臀粉嫩 | 手机精品视频在线观看| 亚洲男人天堂一区| 悠悠色在线精品| 亚洲精品国产视频| 一区二区激情视频| 亚洲成国产人片在线观看| 视频一区视频二区中文| 天堂久久一区二区三区| 免费成人美女在线观看.| 美国十次了思思久久精品导航| 欧美96一区二区免费视频| 九色|91porny| 国产福利精品一区| 91原创在线视频| 欧美日韩国产小视频在线观看| 91精品国产综合久久久久| 日韩一区二区三区视频在线| 久久综合色播五月| 中文字幕一区二区三| 亚洲韩国精品一区| 毛片一区二区三区| 国产成人亚洲精品狼色在线| 99re热这里只有精品视频| 欧美日本一道本在线视频| 久久亚洲综合色一区二区三区 | 欧美体内she精高潮| 欧美一区二区三区视频| 国产亚洲精品中文字幕| 亚洲色图在线视频| 日韩成人精品在线观看| 国产一区二区在线观看免费| 色综合久久久久久久久| 日韩午夜激情免费电影| 亚洲欧洲精品一区二区三区不卡| 午夜精品久久久久久久| 国产高清不卡二三区| 欧美日韩精品电影| 精品免费国产一区二区三区四区| 国产精品丝袜在线| 青青草国产成人av片免费| a级精品国产片在线观看| 欧美日韩国产大片| 国产精品国产三级国产普通话蜜臀| 午夜一区二区三区在线观看| 国产高清不卡一区| 91麻豆精品91久久久久同性| 久久精品夜夜夜夜久久| 亚洲一区二区在线免费看| 国产麻豆精品95视频| 欧美军同video69gay|