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

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

?? pngread.c

?? 一款最完整的工業組態軟源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:

/* pngread.c - read a PNG file
 *
 * libpng 1.2.7 - September 12, 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.)
 *
 * This file contains routines that an application calls directly to
 * read a PNG file or stream.
 */

#define PNG_INTERNAL
#include "png.h"

/* Create a PNG structure for reading, and allocate any memory needed. */
png_structp PNGAPI
png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr,
   png_error_ptr error_fn, png_error_ptr warn_fn)
{

#ifdef PNG_USER_MEM_SUPPORTED
   return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
      warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
}

/* Alternate create PNG structure for reading, and allocate any memory needed. */
png_structp PNGAPI
png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
   png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
   png_malloc_ptr malloc_fn, png_free_ptr free_fn)
{
#endif /* PNG_USER_MEM_SUPPORTED */

   png_structp png_ptr;

#ifdef PNG_SETJMP_SUPPORTED
#ifdef USE_FAR_KEYWORD
   jmp_buf jmpbuf;
#endif
#endif

   int i;

   png_debug(1, "in png_create_read_struct\n");
#ifdef PNG_USER_MEM_SUPPORTED
   png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
      (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
#else
   png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
#endif
   if (png_ptr == NULL)
      return (NULL);

#if !defined(PNG_1_0_X)
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
   png_init_mmx_flags(png_ptr);   /* 1.2.0 addition */
#endif
#endif /* PNG_1_0_X */

   /* added at libpng-1.2.6 */
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
#endif

#ifdef PNG_SETJMP_SUPPORTED
#ifdef USE_FAR_KEYWORD
   if (setjmp(jmpbuf))
#else
   if (setjmp(png_ptr->jmpbuf))
#endif
   {
      png_free(png_ptr, png_ptr->zbuf);
      png_ptr->zbuf=NULL;
#ifdef PNG_USER_MEM_SUPPORTED
      png_destroy_struct_2((png_voidp)png_ptr, 
         (png_free_ptr)free_fn, (png_voidp)mem_ptr);
#else
      png_destroy_struct((png_voidp)png_ptr);
#endif
      return (NULL);
   }
#ifdef USE_FAR_KEYWORD
   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
#endif
#endif

#ifdef PNG_USER_MEM_SUPPORTED
   png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
#endif

   png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);

   i=0;
   do
   {
     if(user_png_ver[i] != png_libpng_ver[i])
        png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
   } while (png_libpng_ver[i++]);

   if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
   {
     /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
      * we must recompile any applications that use any older library version.
      * For versions after libpng 1.0, we will be compatible, so we need
      * only check the first digit.
      */
     if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
         (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
         (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
     {
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
        char msg[80];
        if (user_png_ver)
        {
          sprintf(msg, "Application was compiled with png.h from libpng-%.20s",
             user_png_ver);
          png_warning(png_ptr, msg);
        }
        sprintf(msg, "Application  is  running with png.c from libpng-%.20s",
           png_libpng_ver);
        png_warning(png_ptr, msg);
#endif
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
        png_ptr->flags=0;
#endif
        png_error(png_ptr,
           "Incompatible libpng version in application and library");
     }
   }

   /* initialize zbuf - compression buffer */
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
     (png_uint_32)png_ptr->zbuf_size);
   png_ptr->zstream.zalloc = png_zalloc;
   png_ptr->zstream.zfree = png_zfree;
   png_ptr->zstream.opaque = (voidpf)png_ptr;

   switch (inflateInit(&png_ptr->zstream))
   {
     case Z_OK: /* Do nothing */ break;
     case Z_MEM_ERROR:
     case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error"); break;
     case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error"); break;
     default: png_error(png_ptr, "Unknown zlib error");
   }

   png_ptr->zstream.next_out = png_ptr->zbuf;
   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;

   png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);

#ifdef PNG_SETJMP_SUPPORTED
/* Applications that neglect to set up their own setjmp() and then encounter
   a png_error() will longjmp here.  Since the jmpbuf is then meaningless we
   abort instead of returning. */
#ifdef USE_FAR_KEYWORD
   if (setjmp(jmpbuf))
      PNG_ABORT();
   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
#else
   if (setjmp(png_ptr->jmpbuf))
      PNG_ABORT();
#endif
#endif
   return (png_ptr);
}

/* Initialize PNG structure for reading, and allocate any memory needed.
   This interface is deprecated in favour of the png_create_read_struct(),
   and it will eventually disappear. */
#undef png_read_init
void PNGAPI
png_read_init(png_structp png_ptr)
{
   /* We only come here via pre-1.0.7-compiled applications */
   png_read_init_2(png_ptr, "1.0.6 or earlier", 0, 0);
}

void PNGAPI
png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
   png_size_t png_struct_size, png_size_t png_info_size)
{
   /* We only come here via pre-1.0.12-compiled applications */
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
   if(png_sizeof(png_struct) > png_struct_size || 
      png_sizeof(png_info) > png_info_size)
   {
      char msg[80];
      png_ptr->warning_fn=NULL;
      if (user_png_ver)
      {
        sprintf(msg, "Application was compiled with png.h from libpng-%.20s",
           user_png_ver);
        png_warning(png_ptr, msg);
      }
      sprintf(msg, "Application  is  running with png.c from libpng-%.20s",
         png_libpng_ver);
      png_warning(png_ptr, msg);
   }
#endif
   if(png_sizeof(png_struct) > png_struct_size)
     {
       png_ptr->error_fn=NULL;
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
       png_ptr->flags=0;
#endif
       png_error(png_ptr,
       "The png struct allocated by the application for reading is too small.");
     }
   if(png_sizeof(png_info) > png_info_size)
     {
       png_ptr->error_fn=NULL;
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
       png_ptr->flags=0;
#endif
       png_error(png_ptr,
         "The info struct allocated by application for reading is too small.");
     }
   png_read_init_3(&png_ptr, user_png_ver, png_struct_size);
}

void PNGAPI
png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
   png_size_t png_struct_size)
{
#ifdef PNG_SETJMP_SUPPORTED
   jmp_buf tmp_jmp;  /* to save current jump buffer */
#endif

   int i=0;

   png_structp png_ptr=*ptr_ptr;

   do
   {
     if(user_png_ver[i] != png_libpng_ver[i])
     {
#ifdef PNG_LEGACY_SUPPORTED
       png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
#else
       png_ptr->warning_fn=NULL;
       png_warning(png_ptr,
        "Application uses deprecated png_read_init() and should be recompiled.");
       break;
#endif
     }
   } while (png_libpng_ver[i++]);

   png_debug(1, "in png_read_init_3\n");

#ifdef PNG_SETJMP_SUPPORTED
   /* save jump buffer and error functions */
   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof (jmp_buf));
#endif

   if(png_sizeof(png_struct) > png_struct_size)
     {
       png_destroy_struct(png_ptr);
       *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
       png_ptr = *ptr_ptr;
     }

   /* reset all variables to 0 */
   png_memset(png_ptr, 0, png_sizeof (png_struct));

#ifdef PNG_SETJMP_SUPPORTED
   /* restore jump buffer */
   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
#endif

   /* added at libpng-1.2.6 */
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
   png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
   png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
#endif

   /* initialize zbuf - compression buffer */
   png_ptr->zbuf_size = PNG_ZBUF_SIZE;
   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
     (png_uint_32)png_ptr->zbuf_size);
   png_ptr->zstream.zalloc = png_zalloc;
   png_ptr->zstream.zfree = png_zfree;
   png_ptr->zstream.opaque = (voidpf)png_ptr;

   switch (inflateInit(&png_ptr->zstream))
   {
     case Z_OK: /* Do nothing */ break;
     case Z_MEM_ERROR:
     case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory"); break;
     case Z_VERSION_ERROR: png_error(png_ptr, "zlib version"); break;
     default: png_error(png_ptr, "Unknown zlib error");
   }

   png_ptr->zstream.next_out = png_ptr->zbuf;
   png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;

   png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
}

#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
/* Read the information before the actual image data.  This has been
 * changed in v0.90 to allow reading a file that already has the magic
 * bytes read from the stream.  You can tell libpng how many bytes have
 * been read from the beginning of the stream (up to the maximum of 8)
 * via png_set_sig_bytes(), and we will only check the remaining bytes
 * here.  The application can then have access to the signature bytes we
 * read if it is determined that this isn't a valid PNG file.
 */
void PNGAPI
png_read_info(png_structp png_ptr, png_infop info_ptr)
{
   png_debug(1, "in png_read_info\n");
   /* If we haven't checked all of the PNG signature bytes, do so now. */
   if (png_ptr->sig_bytes < 8)
   {
      png_size_t num_checked = png_ptr->sig_bytes,
                 num_to_check = 8 - num_checked;

      png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
      png_ptr->sig_bytes = 8;

      if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
      {
         if (num_checked < 4 &&
             png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
            png_error(png_ptr, "Not a PNG file");
         else
            png_error(png_ptr, "PNG file corrupted by ASCII conversion");
      }
      if (num_checked < 3)
         png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
   }

   for(;;)
   {
#ifdef PNG_USE_LOCAL_ARRAYS
      PNG_IHDR;
      PNG_IDAT;
      PNG_IEND;
      PNG_PLTE;
#if defined(PNG_READ_bKGD_SUPPORTED)
      PNG_bKGD;
#endif
#if defined(PNG_READ_cHRM_SUPPORTED)
      PNG_cHRM;
#endif
#if defined(PNG_READ_gAMA_SUPPORTED)
      PNG_gAMA;
#endif
#if defined(PNG_READ_hIST_SUPPORTED)
      PNG_hIST;
#endif
#if defined(PNG_READ_iCCP_SUPPORTED)
      PNG_iCCP;
#endif
#if defined(PNG_READ_iTXt_SUPPORTED)
      PNG_iTXt;
#endif
#if defined(PNG_READ_oFFs_SUPPORTED)
      PNG_oFFs;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合精品久久久| 奇米综合一区二区三区精品视频| 亚洲天堂av一区| 五月婷婷激情综合网| 韩国av一区二区三区四区| 99视频在线精品| 日韩欧美国产精品一区| 中文字幕亚洲在| 裸体歌舞表演一区二区| 99久久精品国产一区二区三区| 日韩欧美一级二级三级| 亚洲欧美精品午睡沙发| 久久成人免费电影| 欧美日韩成人在线| 一区二区三区在线视频播放 | 中文字幕巨乱亚洲| 亚洲成av人影院在线观看网| a亚洲天堂av| 久久久久久99精品| 日本欧美久久久久免费播放网| 北条麻妃国产九九精品视频| 日韩欧美国产系列| 亚洲成人av福利| 欧洲视频一区二区| 中文字幕一区二区三区色视频| 激情五月婷婷综合网| 欧美视频完全免费看| 中文字幕制服丝袜一区二区三区| 激情图区综合网| 91精品国产色综合久久不卡电影| 亚洲免费观看高清完整版在线| 成人一道本在线| 久久一区二区视频| 久久国产乱子精品免费女| 欧美丰满高潮xxxx喷水动漫| 亚洲免费av高清| 91视频观看免费| 中文字幕一区二区三区在线播放| 国产精品一区二区久激情瑜伽 | 日韩欧美一区二区不卡| 日韩在线一区二区三区| 欧美影院午夜播放| 午夜成人免费电影| 欧美一区二区三区四区视频| 天天做天天摸天天爽国产一区| 欧美日韩精品电影| 亚洲一区二区三区视频在线| 色吊一区二区三区| 亚洲综合色噜噜狠狠| 在线免费观看成人短视频| 亚洲一区二区三区在线| 欧美日韩视频在线第一区| 亚洲chinese男男1069| 欧美一区二区高清| 国产成a人亚洲精品| 久久久精品中文字幕麻豆发布| 国产很黄免费观看久久| 欧美激情在线免费观看| 91在线视频在线| 亚洲成人激情自拍| 欧美成人a∨高清免费观看| 国产精品夜夜嗨| 亚洲人成精品久久久久久| 色激情天天射综合网| 日韩专区中文字幕一区二区| 欧美电视剧在线看免费| 国产高清视频一区| 亚洲黄色性网站| 欧美一区二区三区在线观看视频| 国产另类ts人妖一区二区| 国产精品超碰97尤物18| 欧美色涩在线第一页| 久久丁香综合五月国产三级网站| 国产精品拍天天在线| 欧美自拍偷拍一区| 国产精品一区二区免费不卡 | 欧美一级爆毛片| www.亚洲激情.com| 日韩电影在线一区二区| 国产日韩欧美精品综合| 欧美色图天堂网| 国产九九视频一区二区三区| 亚洲欧美激情小说另类| 欧美一级片在线看| av在线综合网| 精品亚洲porn| 亚洲一区二区影院| 国产精品国产三级国产普通话蜜臀 | 亚洲国产视频在线| 精品sm捆绑视频| 在线亚洲高清视频| 国产美女在线观看一区| 一区二区三区四区不卡视频 | 欧美激情一区二区在线| 欧美日韩久久一区| av激情亚洲男人天堂| 美女脱光内衣内裤视频久久网站| 亚洲人吸女人奶水| 久久精品在线观看| 日韩一区二区三区av| 91视视频在线观看入口直接观看www | 国产欧美1区2区3区| 欧美精品一卡二卡| 色女孩综合影院| 成人动漫一区二区| 国产一区二区三区黄视频| 亚洲五码中文字幕| 亚洲人成小说网站色在线| 久久久久国产精品厨房| 精品少妇一区二区三区在线播放| 欧美色爱综合网| 色综合久久中文字幕综合网| 成人综合在线观看| 国产精品资源网站| 激情小说欧美图片| 国模少妇一区二区三区| 日韩黄色片在线观看| 亚洲国产毛片aaaaa无费看 | www国产亚洲精品久久麻豆| 欧美福利视频导航| 欧美午夜精品久久久久久孕妇| 97久久精品人人澡人人爽| 成人午夜激情影院| 国产成人精品一区二| 国产尤物一区二区在线| 精品在线你懂的| 国产一区在线视频| 国产91精品欧美| 成人在线综合网站| heyzo一本久久综合| 色噜噜偷拍精品综合在线| 91理论电影在线观看| 99久久精品久久久久久清纯| 国产成人亚洲精品青草天美| 成人爱爱电影网址| 色综合天天综合在线视频| 99麻豆久久久国产精品免费| 99精品久久免费看蜜臀剧情介绍| 91网上在线视频| 欧美日本在线一区| 欧美xxx久久| 久久亚洲春色中文字幕久久久| 久久久综合视频| 亚洲国产成人自拍| 亚洲精品v日韩精品| 偷拍一区二区三区四区| 老司机免费视频一区二区| 国产精品12区| 色一情一伦一子一伦一区| 欧美日韩一级二级| 亚洲精品一区二区三区福利 | 在线观看日韩国产| 日韩欧美国产一区二区三区 | 国产乱码精品一区二区三区av | 久久影院电视剧免费观看| 久久久精品人体av艺术| 国产精品视频yy9299一区| 亚洲精品福利视频网站| 久久精品国产一区二区| 成人免费看黄yyy456| 欧美午夜免费电影| 欧美激情资源网| 亚洲一区二区三区不卡国产欧美 | 国产肉丝袜一区二区| 中文字幕一区二区三| 日韩国产欧美在线视频| 不卡av在线免费观看| 欧美精品一二三| 国产日韩精品一区| 午夜久久久久久久久| 国产91高潮流白浆在线麻豆| 欧美三级电影在线看| 久久久天堂av| 日韩一区精品视频| 99在线精品观看| 久久蜜桃一区二区| 午夜欧美电影在线观看| heyzo一本久久综合| 欧美白人最猛性xxxxx69交| 一区二区成人在线| 国产大陆a不卡| 欧美sm极限捆绑bd| 亚洲成精国产精品女| 99在线精品观看| 国产亚洲va综合人人澡精品| 丝袜美腿亚洲综合| 欧洲一区在线电影| 亚洲欧美国产高清| 成人黄页毛片网站| 欧美精品一区二区久久久| 亚洲成av人片观看| 欧美特级限制片免费在线观看| 中文字幕欧美三区| 国产精品系列在线观看| 欧美一区二区三区的| 午夜私人影院久久久久| 色综合激情久久| 亚洲综合清纯丝袜自拍| 91亚洲午夜精品久久久久久| 国产精品免费aⅴ片在线观看|