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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pngerror.c

?? 一款最完整的工業(yè)組態(tài)軟源代碼
?? C
字號:

/* pngerror.c - stub functions for i/o and memory allocation
 *
 * 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.)
 *
 * This file provides a location for all error handling.  Users who
 * need special error handling are expected to write replacement functions
 * and use png_set_error_fn() to use those functions.  See the instructions
 * at each function.
 */

#define PNG_INTERNAL
#include "png.h"

static void /* PRIVATE */
png_default_error PNGARG((png_structp png_ptr,
  png_const_charp error_message));
static void /* PRIVATE */
png_default_warning PNGARG((png_structp png_ptr,
  png_const_charp warning_message));

/* This function is called whenever there is a fatal error.  This function
 * should not be changed.  If there is a need to handle errors differently,
 * you should supply a replacement error function and use png_set_error_fn()
 * to replace the error function at run-time.
 */
void PNGAPI
png_error(png_structp png_ptr, png_const_charp error_message)
{
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
   char msg[16];
   if (png_ptr->flags&(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
   {
     if (*error_message == '#')
     {
         int offset;
         for (offset=1; offset<15; offset++)
            if (*(error_message+offset) == ' ')
                break;
         if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
         {
            int i;
            for (i=0; i<offset-1; i++)
               msg[i]=error_message[i+1];
            msg[i]='\0';
            error_message=msg;
         }
         else
            error_message+=offset;
     }
     else
     {
         if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
         {
            msg[0]='0';        
            msg[1]='\0';
            error_message=msg;
         }
     }
   }
#endif
   if (png_ptr != NULL && png_ptr->error_fn != NULL)
      (*(png_ptr->error_fn))(png_ptr, error_message);

   /* If the custom handler doesn't exist, or if it returns,
      use the default handler, which will not return. */
   png_default_error(png_ptr, error_message);
}

/* This function is called whenever there is a non-fatal error.  This function
 * should not be changed.  If there is a need to handle warnings differently,
 * you should supply a replacement warning function and use
 * png_set_error_fn() to replace the warning function at run-time.
 */
void PNGAPI
png_warning(png_structp png_ptr, png_const_charp warning_message)
{
   int offset = 0;
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
   if (png_ptr->flags&(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
#endif
   {
     if (*warning_message == '#')
     {
         for (offset=1; offset<15; offset++)
            if (*(warning_message+offset) == ' ')
                break;
     }
   }
   if (png_ptr != NULL && png_ptr->warning_fn != NULL)
      (*(png_ptr->warning_fn))(png_ptr, warning_message+offset);
   else
      png_default_warning(png_ptr, warning_message+offset);
}

/* These utilities are used internally to build an error message that relates
 * to the current chunk.  The chunk name comes from png_ptr->chunk_name,
 * this is used to prefix the message.  The message is limited in length
 * to 63 bytes, the name characters are output as hex digits wrapped in []
 * if the character is invalid.
 */
#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
static PNG_CONST char png_digit[16] = {
   '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
   'A', 'B', 'C', 'D', 'E', 'F'
};

static void /* PRIVATE */
png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
   error_message)
{
   int iout = 0, iin = 0;

   while (iin < 4)
   {
      int c = png_ptr->chunk_name[iin++];
      if (isnonalpha(c))
      {
         buffer[iout++] = '[';
         buffer[iout++] = png_digit[(c & 0xf0) >> 4];
         buffer[iout++] = png_digit[c & 0x0f];
         buffer[iout++] = ']';
      }
      else
      {
         buffer[iout++] = (png_byte)c;
      }
   }

   if (error_message == NULL)
      buffer[iout] = 0;
   else
   {
      buffer[iout++] = ':';
      buffer[iout++] = ' ';
      png_strncpy(buffer+iout, error_message, 63);
      buffer[iout+63] = 0;
   }
}

void PNGAPI
png_chunk_error(png_structp png_ptr, png_const_charp error_message)
{
   char msg[18+64];
   png_format_buffer(png_ptr, msg, error_message);
   png_error(png_ptr, msg);
}

void PNGAPI
png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
{
   char msg[18+64];
   png_format_buffer(png_ptr, msg, warning_message);
   png_warning(png_ptr, msg);
}

/* This is the default error handling function.  Note that replacements for
 * this function MUST NOT RETURN, or the program will likely crash.  This
 * function is used by default, or if the program supplies NULL for the
 * error function pointer in png_set_error_fn().
 */
static void /* PRIVATE */
png_default_error(png_structp png_ptr, png_const_charp error_message)
{
#ifndef PNG_NO_CONSOLE_IO
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
   if (*error_message == '#')
   {
     int offset;
     char error_number[16];
     for (offset=0; offset<15; offset++)
     {
         error_number[offset] = *(error_message+offset+1);
         if (*(error_message+offset) == ' ')
             break;
     }
     if((offset > 1) && (offset < 15))
     {
       error_number[offset-1]='\0';
       fprintf(stderr, "libpng error no. %s: %s\n", error_number,
          error_message+offset);
     }
     else
       fprintf(stderr, "libpng error: %s, offset=%d\n", error_message,offset);
   }
   else
#endif
   fprintf(stderr, "libpng error: %s\n", error_message);
#endif

#ifdef PNG_SETJMP_SUPPORTED
#  ifdef USE_FAR_KEYWORD
   {
      jmp_buf jmpbuf;
      png_memcpy(jmpbuf,png_ptr->jmpbuf,png_sizeof(jmp_buf));
      longjmp(jmpbuf, 1);
   }
#  else
   longjmp(png_ptr->jmpbuf, 1);
# endif
#else
   /* make compiler happy */ ;
   if (png_ptr)
   PNG_ABORT();
#endif
#ifdef PNG_NO_CONSOLE_IO
   /* make compiler happy */ ;
   if (&error_message != NULL)
      return;
#endif
}

/* This function is called when there is a warning, but the library thinks
 * it can continue anyway.  Replacement functions don't have to do anything
 * here if you don't want them to.  In the default configuration, png_ptr is
 * not used, but it is passed in case it may be useful.
 */
static void /* PRIVATE */
png_default_warning(png_structp png_ptr, png_const_charp warning_message)
{
#ifndef PNG_NO_CONSOLE_IO
#  ifdef PNG_ERROR_NUMBERS_SUPPORTED
   if (*warning_message == '#')
   {
     int offset;
     char warning_number[16];
     for (offset=0; offset<15; offset++)
     {
        warning_number[offset]=*(warning_message+offset+1);
        if (*(warning_message+offset) == ' ')
            break;
     }
     if((offset > 1) && (offset < 15))
     {
       warning_number[offset-1]='\0';
       fprintf(stderr, "libpng warning no. %s: %s\n", warning_number,
          warning_message+offset);
     }
     else
       fprintf(stderr, "libpng warning: %s\n", warning_message);
   }
   else
#  endif
     fprintf(stderr, "libpng warning: %s\n", warning_message);
#else
   /* make compiler happy */ ;
   if (warning_message)
     return;
#endif
   /* make compiler happy */ ;
   if (png_ptr)
      return;
}

/* This function is called when the application wants to use another method
 * of handling errors and warnings.  Note that the error function MUST NOT
 * return to the calling routine or serious problems will occur.  The return
 * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1)
 */
void PNGAPI
png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
   png_error_ptr error_fn, png_error_ptr warning_fn)
{
   png_ptr->error_ptr = error_ptr;
   png_ptr->error_fn = error_fn;
   png_ptr->warning_fn = warning_fn;
}


/* This function returns a pointer to the error_ptr associated with the user
 * functions.  The application should free any memory associated with this
 * pointer before png_write_destroy and png_read_destroy are called.
 */
png_voidp PNGAPI
png_get_error_ptr(png_structp png_ptr)
{
   return ((png_voidp)png_ptr->error_ptr);
}


#ifdef PNG_ERROR_NUMBERS_SUPPORTED
void PNGAPI
png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
{
   if(png_ptr != NULL)
   {
     png_ptr->flags &=
       ((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
   }
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同ⅹxx女同tv| 国产欧美日韩在线| 亚洲综合色区另类av| 精品视频999| 蜜桃视频一区二区| 亚洲欧美日韩国产另类专区| 欧美肥大bbwbbw高潮| 国产成人综合亚洲网站| 亚洲最大成人网4388xx| 久久人人超碰精品| 一本到不卡免费一区二区| 老司机免费视频一区二区三区| 国产精品视频在线看| 777xxx欧美| av中文一区二区三区| 一区二区三区高清不卡| 日韩精品中文字幕在线不卡尤物| 成人激情图片网| 免费日本视频一区| 国产精品久久久久影院老司| 欧美日韩亚洲综合在线| 成人午夜大片免费观看| 男女视频一区二区| 亚洲精品欧美激情| 日韩欧美成人午夜| 欧美中文一区二区三区| 国产91丝袜在线播放| 日韩国产精品久久久| 樱花草国产18久久久久| 日本一区二区三区在线观看| 久久久亚洲欧洲日产国码αv| 色呦呦一区二区三区| 成人国产免费视频| 欧美影视一区二区三区| 亚洲一区二区三区四区不卡| 亚洲国产电影在线观看| 欧美视频在线一区二区三区 | 91麻豆国产福利在线观看| 卡一卡二国产精品| 日韩av一级片| 亚洲午夜电影网| 一区二区在线观看免费| 国产日韩欧美一区二区三区综合| 欧美tickling网站挠脚心| 91精品国产综合久久国产大片| 欧美性色aⅴ视频一区日韩精品| 丁香另类激情小说| 国产精品一区二区果冻传媒| 免费看日韩精品| 日本aⅴ亚洲精品中文乱码| 亚洲妇熟xx妇色黄| 奇米亚洲午夜久久精品| 亚洲精品成人a在线观看| 亚洲欧美偷拍三级| 亚洲欧洲综合另类| 日韩理论片网站| 尤物视频一区二区| 国产精品久久久久久亚洲毛片 | 国产夜色精品一区二区av| 精品三级在线观看| 日韩精品中午字幕| 欧美日韩国产一级二级| 欧美美女直播网站| 制服丝袜亚洲网站| 精品少妇一区二区| 久久久九九九九| 日韩美女在线视频| 日韩无一区二区| 久久色在线视频| 国产亚洲精品久| 亚洲男人的天堂在线观看| 一区二区三区日韩| 午夜激情久久久| 久久97超碰色| 国产69精品久久久久毛片| 成人av在线电影| 成人久久18免费网站麻豆| 一本大道久久a久久精二百| 在线观看欧美黄色| 在线不卡的av| 欧美一区二区在线免费播放| 欧美不卡视频一区| 亚洲欧美影音先锋| 午夜精品爽啪视频| 另类专区欧美蜜桃臀第一页| 国产成人亚洲综合a∨婷婷图片| 国产精品羞羞答答xxdd| 在线欧美日韩国产| 日韩三级视频中文字幕| 国产精品午夜免费| 午夜精品久久久久久久99樱桃| 亚洲成av人片www| 国产一区二区中文字幕| 99精品欧美一区二区三区综合在线| 欧美这里有精品| 精品国产一区久久| 亚洲图片另类小说| 精品在线免费视频| 97久久精品人人做人人爽| 亚洲国产精品精华液2区45| 欧美xxx久久| 亚洲成a人在线观看| 丰满岳乱妇一区二区三区 | 欧美大白屁股肥臀xxxxxx| 国产精品国产成人国产三级| 免费成人在线播放| 欧美系列一区二区| 亚洲色图欧洲色图| 顶级嫩模精品视频在线看| 日韩欧美国产麻豆| 日韩在线一区二区| 91福利国产成人精品照片| 国产精品入口麻豆九色| 精品一区二区三区在线播放| 欧美性生活影院| 国产精品久久久久aaaa樱花| 九九国产精品视频| 91精品国产麻豆国产自产在线 | 狠狠色狠狠色合久久伊人| 欧美亚洲日本国产| 亚洲欧洲99久久| 成人18精品视频| 国产欧美视频一区二区| 久久精品国产亚洲一区二区三区| 91免费观看视频在线| 一区在线中文字幕| 成人黄色在线网站| www一区二区| 韩日精品视频一区| 欧美精品一区二区三区四区| 捆绑变态av一区二区三区| 欧美精品国产精品| 亚瑟在线精品视频| 欧洲激情一区二区| 一区二区日韩av| 欧美综合一区二区| 亚洲夂夂婷婷色拍ww47 | 在线中文字幕一区| 国产婷婷色一区二区三区四区 | 欧美专区亚洲专区| 一区二区免费看| 欧美日本在线一区| 亚洲成人av在线电影| 欧美裸体一区二区三区| 日韩高清不卡一区二区三区| 欧美色精品在线视频| 亚洲图片有声小说| 欧美日韩国产天堂| 美女一区二区在线观看| 日韩精品中文字幕一区 | 91精品国产一区二区| 免费观看久久久4p| 久久久久久97三级| 99精品视频在线播放观看| 亚洲一线二线三线视频| 欧美精选一区二区| 国产一区二区中文字幕| 国产精品三级电影| 欧美日韩在线一区二区| 久久精品久久久精品美女| 国产日韩欧美高清在线| 日本韩国欧美一区| 日韩va亚洲va欧美va久久| 久久女同性恋中文字幕| 99r国产精品| 男人的j进女人的j一区| 国产精品无遮挡| 欧美精品在线一区二区三区| 精品欧美一区二区久久| 亚洲成人av一区二区三区| 日韩欧美在线网站| 成人美女视频在线观看| 午夜欧美在线一二页| 国产无一区二区| 欧美伊人精品成人久久综合97| 久久丁香综合五月国产三级网站| 亚洲国产精品t66y| 在线播放国产精品二区一二区四区| 国产一区二区在线看| 亚洲精品ww久久久久久p站| 精品福利视频一区二区三区| 91在线免费看| 久久9热精品视频| 亚洲精品免费在线播放| 久久久激情视频| 欧美高清一级片在线| 成人黄色大片在线观看| 免费三级欧美电影| 一区二区成人在线| 国产欧美一区二区三区在线老狼| 欧美精品 国产精品| av一本久道久久综合久久鬼色| 毛片不卡一区二区| 亚洲欧美另类久久久精品2019| 26uuu国产在线精品一区二区| 色94色欧美sute亚洲线路一ni | 色婷婷亚洲综合| 国产伦精品一区二区三区免费| 亚洲成人av福利| 自拍偷拍亚洲激情|