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

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

?? pngpread.c

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

/* pngpread.c - read a png file in push mode
 *
 * libpng version 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.)
 */

#define PNG_INTERNAL
#include "png.h"

#ifdef PNG_PROGRESSIVE_READ_SUPPORTED

/* push model modes */
#define PNG_READ_SIG_MODE   0
#define PNG_READ_CHUNK_MODE 1
#define PNG_READ_IDAT_MODE  2
#define PNG_SKIP_MODE       3
#define PNG_READ_tEXt_MODE  4
#define PNG_READ_zTXt_MODE  5
#define PNG_READ_DONE_MODE  6
#define PNG_READ_iTXt_MODE  7
#define PNG_ERROR_MODE      8

void PNGAPI
png_process_data(png_structp png_ptr, png_infop info_ptr,
   png_bytep buffer, png_size_t buffer_size)
{
   png_push_restore_buffer(png_ptr, buffer, buffer_size);

   while (png_ptr->buffer_size)
   {
      png_process_some_data(png_ptr, info_ptr);
   }
}

/* What we do with the incoming data depends on what we were previously
 * doing before we ran out of data...
 */
void /* PRIVATE */
png_process_some_data(png_structp png_ptr, png_infop info_ptr)
{
   switch (png_ptr->process_mode)
   {
      case PNG_READ_SIG_MODE:
      {
         png_push_read_sig(png_ptr, info_ptr);
         break;
      }
      case PNG_READ_CHUNK_MODE:
      {
         png_push_read_chunk(png_ptr, info_ptr);
         break;
      }
      case PNG_READ_IDAT_MODE:
      {
         png_push_read_IDAT(png_ptr);
         break;
      }
#if defined(PNG_READ_tEXt_SUPPORTED)
      case PNG_READ_tEXt_MODE:
      {
         png_push_read_tEXt(png_ptr, info_ptr);
         break;
      }
#endif
#if defined(PNG_READ_zTXt_SUPPORTED)
      case PNG_READ_zTXt_MODE:
      {
         png_push_read_zTXt(png_ptr, info_ptr);
         break;
      }
#endif
#if defined(PNG_READ_iTXt_SUPPORTED)
      case PNG_READ_iTXt_MODE:
      {
         png_push_read_iTXt(png_ptr, info_ptr);
         break;
      }
#endif
      case PNG_SKIP_MODE:
      {
         png_push_crc_finish(png_ptr);
         break;
      }
      default:
      {
         png_ptr->buffer_size = 0;
         break;
      }
   }
}

/* Read any remaining signature bytes from the stream and compare them with
 * the correct PNG signature.  It is possible that this routine is called
 * with bytes already read from the signature, either because they have been
 * checked by the calling application, or because of multiple calls to this
 * routine.
 */
void /* PRIVATE */
png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
{
   png_size_t num_checked = png_ptr->sig_bytes,
             num_to_check = 8 - num_checked;

   if (png_ptr->buffer_size < num_to_check)
   {
      num_to_check = png_ptr->buffer_size;
   }

   png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]),
      num_to_check);
   png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes+num_to_check);

   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");
   }
   else
   {
      if (png_ptr->sig_bytes >= 8)
      {
         png_ptr->process_mode = PNG_READ_CHUNK_MODE;
      }
   }
}

void /* PRIVATE */
png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
{
#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;
#endif
#if defined(PNG_READ_pCAL_SUPPORTED)
      PNG_pCAL;
#endif
#if defined(PNG_READ_pHYs_SUPPORTED)
      PNG_pHYs;
#endif
#if defined(PNG_READ_sBIT_SUPPORTED)
      PNG_sBIT;
#endif
#if defined(PNG_READ_sCAL_SUPPORTED)
      PNG_sCAL;
#endif
#if defined(PNG_READ_sRGB_SUPPORTED)
      PNG_sRGB;
#endif
#if defined(PNG_READ_sPLT_SUPPORTED)
      PNG_sPLT;
#endif
#if defined(PNG_READ_tEXt_SUPPORTED)
      PNG_tEXt;
#endif
#if defined(PNG_READ_tIME_SUPPORTED)
      PNG_tIME;
#endif
#if defined(PNG_READ_tRNS_SUPPORTED)
      PNG_tRNS;
#endif
#if defined(PNG_READ_zTXt_SUPPORTED)
      PNG_zTXt;
#endif
#endif /* PNG_USE_LOCAL_ARRAYS */
   /* First we make sure we have enough data for the 4 byte chunk name
    * and the 4 byte chunk length before proceeding with decoding the
    * chunk data.  To fully decode each of these chunks, we also make
    * sure we have enough data in the buffer for the 4 byte CRC at the
    * end of every chunk (except IDAT, which is handled separately).
    */
   if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER))
   {
      png_byte chunk_length[4];

      if (png_ptr->buffer_size < 8)
      {
         png_push_save_buffer(png_ptr);
         return;
      }

      png_push_fill_buffer(png_ptr, chunk_length, 4);
      png_ptr->push_length = png_get_uint_31(png_ptr,chunk_length);
      png_reset_crc(png_ptr);
      png_crc_read(png_ptr, png_ptr->chunk_name, 4);
      png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
   }

   if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length);
   }
   else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length);

      png_ptr->process_mode = PNG_READ_DONE_MODE;
      png_push_have_end(png_ptr, info_ptr);
   }
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
   else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
         png_ptr->mode |= PNG_HAVE_IDAT;
      png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length);
      if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
         png_ptr->mode |= PNG_HAVE_PLTE;
      else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
      {
         if (!(png_ptr->mode & PNG_HAVE_IHDR))
            png_error(png_ptr, "Missing IHDR before IDAT");
         else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
                  !(png_ptr->mode & PNG_HAVE_PLTE))
            png_error(png_ptr, "Missing PLTE before IDAT");
      }
   }
#endif
   else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
   }
   else if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
   {
      /* If we reach an IDAT chunk, this means we have read all of the
       * header chunks, and we can start reading the image (or if this
       * is called after the image has been read - we have an error).
       */
     if (!(png_ptr->mode & PNG_HAVE_IHDR))
       png_error(png_ptr, "Missing IHDR before IDAT");
     else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
         !(png_ptr->mode & PNG_HAVE_PLTE))
       png_error(png_ptr, "Missing PLTE before IDAT");

      if (png_ptr->mode & PNG_HAVE_IDAT)
      {
         if (png_ptr->push_length == 0)
            return;

         if (png_ptr->mode & PNG_AFTER_IDAT)
            png_error(png_ptr, "Too many IDAT's found");
      }

      png_ptr->idat_size = png_ptr->push_length;
      png_ptr->mode |= PNG_HAVE_IDAT;
      png_ptr->process_mode = PNG_READ_IDAT_MODE;
      png_push_have_info(png_ptr, info_ptr);
      png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes;
      png_ptr->zstream.next_out = png_ptr->row_buf;
      return;
   }
#if defined(PNG_READ_gAMA_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_sBIT_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_cHRM_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_sRGB_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_iCCP_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_sPLT_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_tRNS_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_bKGD_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }
      png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length);
   }
#endif
#if defined(PNG_READ_hIST_SUPPORTED)
   else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
   {
      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
      {
         png_push_save_buffer(png_ptr);
         return;
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天天天做夜夜夜夜做| 中国色在线观看另类| 亚洲精品国产视频| 91久久久免费一区二区| 一区二区三区蜜桃| 欧美在线制服丝袜| 日韩电影在线观看电影| 久久夜色精品一区| a亚洲天堂av| 亚洲一区二区欧美日韩| 日韩午夜激情免费电影| 国产69精品一区二区亚洲孕妇| 国产精品乱码久久久久久| 日本久久电影网| 青青青爽久久午夜综合久久午夜| 精品久久久久久久久久久久久久久久久| 久久成人羞羞网站| 中文字幕在线免费不卡| 欧美在线视频全部完| 男人的天堂久久精品| 国产日产欧美一区| 欧美日韩在线播放| 狠狠色2019综合网| 亚洲女子a中天字幕| 欧美成人一区二区三区在线观看| 国产aⅴ综合色| 亚洲成年人网站在线观看| 精品对白一区国产伦| av一区二区三区在线| 日韩av中文字幕一区二区三区| 日本一区二区动态图| 欧美日韩精品一区二区在线播放| 精品无人码麻豆乱码1区2区| 中文字幕一区二区三区四区| 欧美另类久久久品| 波多野结衣的一区二区三区| 日韩高清不卡在线| 中文字幕一区视频| 日韩午夜激情av| 一本到不卡精品视频在线观看| 美日韩一级片在线观看| 亚洲日本va午夜在线影院| 日韩一本二本av| 91成人免费网站| 国产丶欧美丶日本不卡视频| 五月婷婷综合激情| 亚洲天堂精品视频| 久久久久久久久久久久久夜| 欧美巨大另类极品videosbest | 视频精品一区二区| 亚洲国产精品ⅴa在线观看| 制服丝袜av成人在线看| 91一区二区在线观看| 国产成人小视频| 亚洲五码中文字幕| 亚洲色图在线看| 中文一区二区完整视频在线观看| 欧美男男青年gay1069videost| 91小视频在线| jizz一区二区| 国产成人亚洲精品狼色在线 | 国产日韩欧美制服另类| 欧美精品xxxxbbbb| 在线观看视频欧美| voyeur盗摄精品| 国产成人精品一区二| 国产一区二区在线免费观看| 日韩高清在线不卡| 日韩av一区二区三区四区| 伊人开心综合网| 亚洲欧美国产三级| 亚洲综合免费观看高清完整版 | 欧美综合一区二区| 色呦呦国产精品| 91色porny在线视频| 波波电影院一区二区三区| 成人免费视频网站在线观看| 懂色av一区二区在线播放| 国产福利视频一区二区三区| 国内精品久久久久影院色| 奇米影视一区二区三区| 日韩avvvv在线播放| 免费人成精品欧美精品| 奇米色777欧美一区二区| 老司机精品视频在线| 久久成人综合网| 成人自拍视频在线| 99视频超级精品| 欧美亚洲综合一区| 欧美精品自拍偷拍动漫精品| 欧美精品色一区二区三区| 7777精品久久久大香线蕉| 日韩免费视频一区| 久久老女人爱爱| 国产精品第13页| 一区二区三区成人| 性做久久久久久免费观看欧美| 亚洲va欧美va国产va天堂影院| 午夜欧美大尺度福利影院在线看| 日韩黄色片在线观看| 日本vs亚洲vs韩国一区三区二区 | 日韩理论电影院| 亚洲国产色一区| 久久精品国产77777蜜臀| 韩国三级中文字幕hd久久精品| 国产成人精品影视| 在线观看免费亚洲| 精品国产精品网麻豆系列| 国产免费观看久久| 亚洲一区二区三区在线看| 日本在线播放一区二区三区| 国产一区二区三区在线看麻豆| 不卡的av网站| 91精品国产综合久久婷婷香蕉| 久久亚洲精品小早川怜子| 中文字幕中文字幕在线一区| 日韩在线卡一卡二| 99久久婷婷国产综合精品| 91精品午夜视频| 国产精品久久久久久久裸模| 五月天激情综合网| 丁香另类激情小说| 欧美日本在线播放| 久久九九影视网| 丝袜国产日韩另类美女| 高清在线不卡av| 51精品秘密在线观看| 国产精品美女久久福利网站| 日韩高清欧美激情| 91碰在线视频| 国产三级精品视频| 亚洲18女电影在线观看| 波多野结衣在线一区| 欧美大片在线观看| 一区二区高清视频在线观看| 国产在线精品国自产拍免费| 色悠悠久久综合| 国产婷婷色一区二区三区四区| 亚洲国产精品视频| 久久99久久久久| 欧美成人性战久久| 欧美视频你懂的| 奇米四色…亚洲| 精品久久人人做人人爰| 午夜精品影院在线观看| 欧美理论电影在线| 亚洲宅男天堂在线观看无病毒| 精品欧美久久久| 国产一区欧美日韩| 国产精品美女视频| 91免费精品国自产拍在线不卡| 中文字幕欧美三区| 成人h动漫精品一区二区| 日本sm残虐另类| 久久新电视剧免费观看| 一本久道中文字幕精品亚洲嫩| 麻豆精品国产91久久久久久| 久久久久久久久久久99999| 91久久精品日日躁夜夜躁欧美| 亚洲一线二线三线久久久| 欧美一级国产精品| 99免费精品视频| 亚洲国产精品久久不卡毛片| 欧美精品一区视频| 国产成人免费视频精品含羞草妖精 | av在线不卡网| 日日摸夜夜添夜夜添国产精品| 久久久亚洲高清| 国产精品中文字幕一区二区三区| 亚洲男人电影天堂| 国产精品一区二区在线播放| 久久综合久久鬼色| 国产91在线观看| 国产精品乱人伦| 日韩三级视频在线观看| 色综合亚洲欧洲| 精品一区二区久久| 亚洲精品欧美二区三区中文字幕| 欧美三级电影在线看| 99久久亚洲一区二区三区青草| 成人污视频在线观看| 免费人成黄页网站在线一区二区| 亚洲免费观看高清| 亚洲视频一二区| 国产精品久久看| 亚洲精品一线二线三线无人区| 在线一区二区三区四区五区 | 欧美一级一区二区| 日韩精品久久理论片| 韩国成人精品a∨在线观看| 国产99久久久国产精品免费看 | 粉嫩久久99精品久久久久久夜| ●精品国产综合乱码久久久久| 盗摄精品av一区二区三区| 日本一区二区三级电影在线观看| 国产a级毛片一区| 亚洲人成精品久久久久久| 欧美日韩国产系列| 免费黄网站欧美| 欧美激情一区二区在线|