亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩码欧中文字| 欧美日韩一区二区电影| aaa亚洲精品一二三区| 成人app在线观看| 欧美伊人久久大香线蕉综合69 | 国产亚洲精品资源在线26u| 日本一区二区在线不卡| 怡红院av一区二区三区| 日产国产欧美视频一区精品| 国产福利一区二区三区视频| 色视频成人在线观看免| 欧美一区二区不卡视频| 欧美激情一区三区| 午夜欧美在线一二页| 国产一区高清在线| 99精品国产热久久91蜜凸| 欧美日韩成人综合天天影院| 久久蜜桃一区二区| 亚洲一二三四在线| 国产一区二区女| 91福利视频久久久久| 精品黑人一区二区三区久久| 中文字幕在线不卡一区| 日韩和的一区二区| 成人福利视频网站| 日韩一区二区三区视频在线观看| 国产欧美日韩精品a在线观看| 亚洲一二三四在线观看| 国产精品1024| 欧美日韩一区二区三区高清| 亚洲国产成人午夜在线一区| 丝袜国产日韩另类美女| av电影一区二区| 精品国产伦一区二区三区观看方式| 成人免费小视频| 精品在线免费观看| 色成人在线视频| 亚洲国产精品成人综合 | 欧美日韩国产不卡| 欧美国产日韩在线观看| 日韩精品一级二级| 91女神在线视频| 久久久久国产精品厨房| 蜜臀va亚洲va欧美va天堂| 色天使久久综合网天天| 久久久久久久久一| 麻豆成人综合网| 欧美精品少妇一区二区三区| 国产精品不卡在线观看| 国产精品一区二区男女羞羞无遮挡| 91精品欧美久久久久久动漫 | 黄色精品一二区| 欧美日韩免费不卡视频一区二区三区| 欧美国产日本韩| 国产一区二区精品久久| 欧美成人猛片aaaaaaa| 日本伊人午夜精品| 精品视频一区三区九区| 一区二区三区国产精华| av电影天堂一区二区在线观看| 久久精品一区八戒影视| 久久99国产精品麻豆| 欧美一区二区三区日韩| 日韩黄色在线观看| 欧美高清视频一二三区| 亚洲国产视频在线| 色一情一乱一乱一91av| 中文字幕一区二区三区在线观看 | 制服.丝袜.亚洲.中文.综合| 亚洲午夜精品久久久久久久久| 91丝袜呻吟高潮美腿白嫩在线观看| 国产亚洲成av人在线观看导航| 国产一区久久久| 久久久亚洲高清| 国产麻豆成人精品| 久久综合精品国产一区二区三区| 麻豆91免费观看| 欧美电影免费观看高清完整版在| 日韩电影一区二区三区| 91精品国产麻豆国产自产在线 | 国产成人午夜视频| 国产三级三级三级精品8ⅰ区| 黄色日韩网站视频| 国产日韩欧美高清| 高清不卡一区二区在线| 国产精品久久久久久久久动漫 | 日韩美女一区二区三区| 麻豆久久一区二区| 精品久久久久久最新网址| 久草这里只有精品视频| 精品不卡在线视频| 国产高清一区日本| 国产精品网站在线观看| 97se亚洲国产综合自在线观| 亚洲视频一区二区在线观看| 欧美亚洲国产一区二区三区| 香蕉影视欧美成人| 欧美一区二区三区婷婷月色| 精品一区二区免费在线观看| 久久精品一区四区| www一区二区| 成人在线综合网| 亚洲精品乱码久久久久久久久 | www一区二区| av电影天堂一区二区在线| 一区二区三区四区精品在线视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲va天堂va国产va久| 欧美mv日韩mv| 99久久综合狠狠综合久久| 亚洲一区中文在线| 精品国产3级a| 99久久精品国产毛片| 丝袜美腿高跟呻吟高潮一区| 久久精品亚洲一区二区三区浴池| 成+人+亚洲+综合天堂| 亚洲高清久久久| 亚洲精品一区在线观看| www.日韩av| 日本在线不卡视频一二三区| 久久久综合网站| 色女孩综合影院| 亚洲国产精品久久不卡毛片| 久久天天做天天爱综合色| 91久久香蕉国产日韩欧美9色| 日韩成人免费电影| 国产精品网友自拍| 欧美久久久久久久久久| 国产jizzjizz一区二区| 亚洲成人动漫在线观看| 久久人人超碰精品| 欧美亚洲精品一区| 国内精品嫩模私拍在线| 亚洲一二三四区不卡| 精品国产电影一区二区| 在线观看亚洲成人| 国产精品99久久久久久似苏梦涵| 亚洲你懂的在线视频| 日韩午夜av电影| 91在线精品一区二区三区| 美腿丝袜亚洲三区| 一区二区三区中文免费| 久久九九国产精品| 91精品国产91综合久久蜜臀| 不卡av免费在线观看| 卡一卡二国产精品| 一区二区三区四区高清精品免费观看 | 欧美狂野另类xxxxoooo| 成人h动漫精品| 狠狠色2019综合网| 亚洲成a人片综合在线| 国产精品三级视频| 精品理论电影在线观看 | 亚洲黄色在线视频| 精品久久久久久综合日本欧美| 欧美性色黄大片手机版| 精品国产一区二区三区久久影院 | 国产精品国产馆在线真实露脸| 日韩欧美电影一区| 在线观看av一区| 成人一区二区视频| 国产一区在线观看麻豆| 日韩国产高清在线| 亚洲欧洲三级电影| 国产日本亚洲高清| 精品国产一二三| 欧美日本国产视频| 色哦色哦哦色天天综合| 不卡av免费在线观看| 国产成人激情av| 国产一区二区三区免费在线观看| 婷婷丁香激情综合| 亚洲va欧美va人人爽| 亚洲综合色网站| 亚洲女与黑人做爰| 欧美极品少妇xxxxⅹ高跟鞋| 精品乱人伦一区二区三区| 日韩免费一区二区| 91精品国产综合久久香蕉麻豆| 欧美日韩视频一区二区| 色av综合在线| 色妞www精品视频| 日本精品裸体写真集在线观看| 成人av在线影院| aaa国产一区| 99re这里只有精品首页| av午夜精品一区二区三区| 国产伦精一区二区三区| 国产在线精品一区二区不卡了 | 在线一区二区三区四区五区| 色偷偷88欧美精品久久久| 91在线观看美女| 91国偷自产一区二区开放时间 | 久久品道一品道久久精品| 日韩精品中文字幕一区| 日韩亚洲欧美中文三级| 日韩精品一区二区三区三区免费 | 成人午夜在线播放| 懂色中文一区二区在线播放| 成人久久久精品乱码一区二区三区|