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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? png.c

?? qtopia-phone-2.2.0下png工具庫(kù)源代碼實(shí)現(xiàn)。
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* png.c - location for general purpose libpng functions * * libpng version 1.0.9 - January 31, 2001 * Copyright (c) 1998-2001 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_0_9 Your_png_h_is_not_version_1_0_9;/* 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] = "1.0.9";/* 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/* 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. */voidpf PNGAPIpng_zalloc(voidpf png_ptr, uInt items, uInt size){   png_uint_32 num_bytes = (png_uint_32)items * size;   png_voidp ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);#ifndef PNG_NO_ZALLOC_ZERO   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 */void PNGAPIpng_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(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   if ((info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,      png_ptr->malloc_fn)) != NULL)#else   if ((info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO)) != NULL)#endif   {      png_info_init(info_ptr);   }   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);#else      png_destroy_struct((png_voidp)info_ptr);#endif      *info_ptr_ptr = (png_infop)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. */void PNGAPIpng_info_init(png_infop info_ptr){   png_debug(1, "in png_info_init\n");   /* set everything to 0 */   png_memset(info_ptr, 0, 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;    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)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.99精品| 国产乱码一区二区三区| 91精品办公室少妇高潮对白| 日韩精品免费视频人成| 国产人成亚洲第一网站在线播放 | 欧美一级片在线观看| 久久精品国内一区二区三区| 国产精品日韩成人| 欧美日韩1234| 懂色一区二区三区免费观看| 亚洲免费av在线| 精品久久久久久无| 成人精品gif动图一区| 天天爽夜夜爽夜夜爽精品视频| 久久精品欧美一区二区三区麻豆| 色欧美乱欧美15图片| 亚洲伊人伊色伊影伊综合网| 精品国产乱码久久久久久1区2区| 国产乱国产乱300精品| 一区二区三区在线观看视频| 欧美精品一区二区三区蜜桃| 日本久久一区二区| 国产成人综合在线播放| 亚洲午夜羞羞片| 欧美韩日一区二区三区四区| 91国偷自产一区二区三区成为亚洲经典 | 欧美亚洲国产bt| 国内精品久久久久影院色| 亚洲国产成人av| 国产精品国产三级国产aⅴ中文| 欧美精品久久一区| 成人晚上爱看视频| 久久国产精品99久久久久久老狼| 亚洲自拍另类综合| 国产精品国产精品国产专区不片| 精品国产亚洲在线| 欧美一区二区三区喷汁尤物| 欧美精品三级日韩久久| 在线精品视频免费播放| 五月综合激情网| 亚洲成va人在线观看| 亚洲乱码精品一二三四区日韩在线| 99久久er热在这里只有精品15| 国产一区二区不卡老阿姨| 亚洲综合色婷婷| 一区二区三区中文字幕电影 | 国产91高潮流白浆在线麻豆| 亚洲国产一区二区视频| 亚洲素人一区二区| 中文字幕不卡在线| 国产女主播一区| 久久这里只有精品6| 91精品国产综合久久福利软件| 在线欧美日韩精品| 在线免费观看不卡av| 日本精品裸体写真集在线观看| 91在线视频在线| 91在线精品一区二区三区| 国产99久久久国产精品潘金| 国产成人a级片| 粉嫩av一区二区三区在线播放| 91浏览器打开| 色美美综合视频| 91成人免费网站| 欧美午夜精品一区二区蜜桃| 91视频免费播放| 在线看一区二区| 欧美人体做爰大胆视频| 精品国产区一区| 久久久五月婷婷| 久久这里只有精品首页| 欧美高清在线一区| 久久亚洲精品国产精品紫薇| 国产精品久久三| 亚洲精品国产一区二区精华液| 亚洲自拍偷拍网站| 日本女优在线视频一区二区| 国产美女精品在线| 日本不卡123| 国产一区二区三区在线观看精品| 丁香天五香天堂综合| 国产精品一二三四五| 99在线热播精品免费| 欧美色综合网站| 欧美一区二区三区性视频| 亚洲精品在线免费播放| 亚洲精品一区二区三区福利| 国产欧美综合在线观看第十页 | 久久看人人爽人人| 欧美国产一区在线| 亚洲免费观看在线观看| 婷婷成人激情在线网| 成人性生交大片免费看视频在线| 色中色一区二区| 久久久精品影视| 一区二区在线免费| 久久99国产精品免费| 99re热这里只有精品视频| 欧美日韩一卡二卡三卡 | 亚洲午夜成aⅴ人片| 秋霞午夜鲁丝一区二区老狼| 成人做爰69片免费看网站| 精品婷婷伊人一区三区三| 国产欧美精品一区二区色综合朱莉| 亚洲精选一二三| 久久99精品国产麻豆婷婷| 色婷婷综合久久| 欧美日韩国产一级| 国产欧美日韩麻豆91| 亚洲欧美另类久久久精品| 日本欧美韩国一区三区| zzijzzij亚洲日本少妇熟睡| 精品少妇一区二区三区在线视频| 亚洲免费视频中文字幕| 天天影视涩香欲综合网| av爱爱亚洲一区| 久久精品在这里| 一区二区三区四区亚洲| 国产精品一区二区你懂的| 成人av动漫网站| 久久久精品综合| 日本午夜精品一区二区三区电影 | 日本丶国产丶欧美色综合| 精品盗摄一区二区三区| 亚洲美女区一区| 久久99精品国产麻豆不卡| 欧美日韩精品一区二区三区四区| 国产精品国产三级国产专播品爱网 | 日韩一区二区视频在线观看| 亚洲激情自拍偷拍| 91片在线免费观看| 国产亚洲制服色| 麻豆国产精品官网| 欧美日韩亚洲综合| 一区二区三区国产精品| 本田岬高潮一区二区三区| 国产精品毛片大码女人| 国产在线视频一区二区| 99国产精品久| 中文字幕在线观看不卡视频| 国产成人精品亚洲午夜麻豆| 亚洲精品在线观看视频| 久久精品国产亚洲a| 日韩午夜在线观看| 亚洲视频一区在线| 91麻豆文化传媒在线观看| 国产精品久久久久一区二区三区| 麻豆专区一区二区三区四区五区| 在线成人午夜影院| 亚洲欧美国产三级| 91麻豆国产在线观看| 成人免费一区二区三区在线观看| 国产成人亚洲综合a∨婷婷| 精品国产3级a| 国产老肥熟一区二区三区| www激情久久| 成人av小说网| 国产精品久久毛片a| 亚洲va天堂va国产va久| 欧美日韩第一区日日骚| 中文字幕一区二区在线播放| 国产精品一级黄| 中文字幕国产一区| caoporen国产精品视频| 中文av一区二区| 色av成人天堂桃色av| 一区二区三区四区高清精品免费观看 | 毛片一区二区三区| 久久亚洲欧美国产精品乐播 | 日韩精品亚洲专区| 精品美女一区二区| 亚洲va欧美va人人爽午夜| 日韩一区二区在线看片| 人人精品人人爱| 精品国产乱码久久久久久图片| 国产九色sp调教91| 国产精品福利电影一区二区三区四区| 久久超碰97人人做人人爱| 久久久影视传媒| 91丨porny丨国产入口| 另类中文字幕网| 国产目拍亚洲精品99久久精品| 色视频欧美一区二区三区| 午夜欧美大尺度福利影院在线看| 欧美一区二区三区男人的天堂| 国产一区二区三区免费播放| 久久网站热最新地址| 国产电影一区在线| 中文字幕五月欧美| 欧美日本国产一区| 国产精品自在欧美一区| 亚洲不卡av一区二区三区| 久久众筹精品私拍模特| 在线观看国产精品网站| 免费观看日韩av| 亚洲欧美一区二区在线观看| 91国在线观看| 波多野结衣欧美| 美女视频黄 久久| 亚洲国产视频网站|