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

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

?? pngwio.c

?? Trolltech公司發布的基于C++圖形開發環境
?? C
字號:
/* pngwio.c - functions for data output * * libpng 1.2.5 - October 3, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 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 output.  Users who need * special handling are expected to write functions that have the same * arguments as these and perform similar functions, but that possibly * use different output methods.  Note that you shouldn't change these * functions, but rather write replacement functions and then change * them at run time with png_set_write_fn(...). */#define PNG_INTERNAL#include "png.h"#ifdef PNG_WRITE_SUPPORTED/* Write the data to whatever output you are using.  The default routine   writes to a file pointer.  Note that this routine sometimes gets called   with very small lengths, so you should implement some kind of simple   buffering if you are using unbuffered writes.  This should never be asked   to write more than 64K on a 16 bit machine.  */void /* PRIVATE */png_write_data(png_structp png_ptr, png_bytep data, png_size_t length){   if (png_ptr->write_data_fn != NULL )      (*(png_ptr->write_data_fn))(png_ptr, data, length);   else      png_error(png_ptr, "Call to NULL write function");}#if !defined(PNG_NO_STDIO)/* This is the function that does the actual writing of data.  If you are   not writing to a standard C stream, you should create a replacement   write_data function and use it at run time with png_set_write_fn(), rather   than changing the library. */#ifndef USE_FAR_KEYWORDvoid PNGAPIpng_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length){   png_uint_32 check;#if defined(_WIN32_WCE)   if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )      check = 0;#else   check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr));#endif   if (check != length)      png_error(png_ptr, "Write Error");}#else/* this is the model-independent version. Since the standard I/O library   can't handle far buffers in the medium and small models, we have to copy   the data.*/#define NEAR_BUF_SIZE 1024#define MIN(a,b) (a <= b ? a : b)void PNGAPIpng_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length){   png_uint_32 check;   png_byte *near_data;  /* Needs to be "png_byte *" instead of "png_bytep" */   png_FILE_p io_ptr;   /* Check if data really is near. If so, use usual code. */   near_data = (png_byte *)CVT_PTR_NOCHECK(data);   io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);   if ((png_bytep)near_data == data)   {#if defined(_WIN32_WCE)      if ( !WriteFile(io_ptr, near_data, length, &check, NULL) )         check = 0;#else      check = fwrite(near_data, 1, length, io_ptr);#endif   }   else   {      png_byte buf[NEAR_BUF_SIZE];      png_size_t written, remaining, err;      check = 0;      remaining = length;      do      {         written = MIN(NEAR_BUF_SIZE, remaining);         png_memcpy(buf, data, written); /* copy far buffer to near buffer */#if defined(_WIN32_WCE)         if ( !WriteFile(io_ptr, buf, written, &err, NULL) )            err = 0;#else         err = fwrite(buf, 1, written, io_ptr);#endif         if (err != written)            break;         else            check += err;         data += written;         remaining -= written;      }      while (remaining != 0);   }   if (check != length)      png_error(png_ptr, "Write Error");}#endif#endif/* This function is called to output any data pending writing (normally   to disk).  After png_flush is called, there should be no data pending   writing in any buffers. */#if defined(PNG_WRITE_FLUSH_SUPPORTED)void /* PRIVATE */png_flush(png_structp png_ptr){   if (png_ptr->output_flush_fn != NULL)      (*(png_ptr->output_flush_fn))(png_ptr);}#if !defined(PNG_NO_STDIO)void PNGAPIpng_default_flush(png_structp png_ptr){#if !defined(_WIN32_WCE)   png_FILE_p io_ptr;   io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));   if (io_ptr != NULL)      fflush(io_ptr);#endif}#endif#endif/* This function allows the application to supply new output functions for   libpng if standard C streams aren't being used.   This function takes as its arguments:   png_ptr       - pointer to a png output data structure   io_ptr        - pointer to user supplied structure containing info about                   the output functions.  May be NULL.   write_data_fn - pointer to a new output function that takes as its                   arguments a pointer to a png_struct, a pointer to                   data to be written, and a 32-bit unsigned int that is                   the number of bytes to be written.  The new write                   function should call png_error(png_ptr, "Error msg")                   to exit and output any fatal error messages.   flush_data_fn - pointer to a new flush function that takes as its                   arguments a pointer to a png_struct.  After a call to                   the flush function, there should be no data in any buffers                   or pending transmission.  If the output method doesn't do                   any buffering of ouput, a function prototype must still be                   supplied although it doesn't have to do anything.  If                   PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile                   time, output_flush_fn will be ignored, although it must be                   supplied for compatibility. */void PNGAPIpng_set_write_fn(png_structp png_ptr, png_voidp io_ptr,   png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn){   png_ptr->io_ptr = io_ptr;#if !defined(PNG_NO_STDIO)   if (write_data_fn != NULL)      png_ptr->write_data_fn = write_data_fn;   else      png_ptr->write_data_fn = png_default_write_data;#else   png_ptr->write_data_fn = write_data_fn;#endif#if defined(PNG_WRITE_FLUSH_SUPPORTED)#if !defined(PNG_NO_STDIO)   if (output_flush_fn != NULL)      png_ptr->output_flush_fn = output_flush_fn;   else      png_ptr->output_flush_fn = png_default_flush;#else   png_ptr->output_flush_fn = output_flush_fn;#endif#endif /* PNG_WRITE_FLUSH_SUPPORTED */   /* It is an error to read while writing a png file */   if (png_ptr->read_data_fn != NULL)   {      png_ptr->read_data_fn = NULL;      png_warning(png_ptr,         "Attempted to set both read_data_fn and write_data_fn in");      png_warning(png_ptr,         "the same structure.  Resetting read_data_fn to NULL.");   }}#if defined(USE_FAR_KEYWORD)#if defined(_MSC_VER)void *png_far_to_near(png_structp png_ptr,png_voidp ptr, int check){   void *near_ptr;   void FAR *far_ptr;   FP_OFF(near_ptr) = FP_OFF(ptr);   far_ptr = (void FAR *)near_ptr;   if(check != 0)      if(FP_SEG(ptr) != FP_SEG(far_ptr))         png_error(png_ptr,"segment lost in conversion");   return(near_ptr);}#  elsevoid *png_far_to_near(png_structp png_ptr,png_voidp ptr, int check){   void *near_ptr;   void FAR *far_ptr;   near_ptr = (void FAR *)ptr;   far_ptr = (void FAR *)near_ptr;   if(check != 0)      if(far_ptr != ptr)         png_error(png_ptr,"segment lost in conversion");   return(near_ptr);}#   endif#   endif#endif /* PNG_WRITE_SUPPORTED */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩久久精品一区| 在线观看三级视频欧美| 日韩欧美电影在线| 青青青伊人色综合久久| 日韩免费福利电影在线观看| 国产一区日韩二区欧美三区| 国产喂奶挤奶一区二区三区| 欧美色图在线观看| 亚洲不卡av一区二区三区| 91精品国产色综合久久ai换脸 | 丁香五精品蜜臀久久久久99网站| 中文字幕精品一区二区精品绿巨人| 91在线小视频| 丝袜诱惑制服诱惑色一区在线观看 | 男女性色大片免费观看一区二区| 日韩欧美国产一区在线观看| 国产一区二区三区综合| 中文字幕精品一区二区精品绿巨人 | 欧美一二三区在线观看| 久久爱www久久做| 国产精品狼人久久影院观看方式| 欧美在线一区二区| 极品美女销魂一区二区三区| 国产精品电影一区二区三区| 欧美日韩国产综合草草| 国产剧情一区二区| 亚洲色图色小说| 欧美成人女星排行榜| 国产白丝网站精品污在线入口| 亚洲免费大片在线观看| 日韩欧美一级精品久久| 成人97人人超碰人人99| 日本成人超碰在线观看| 国产精品久久看| 日韩一级高清毛片| 91美女片黄在线观看| 精品在线免费观看| 一区二区视频在线看| 欧美mv日韩mv国产网站| 精品视频资源站| 成人免费高清视频| 麻豆国产精品一区二区三区| 亚洲欧美日韩综合aⅴ视频| 日韩精品一区二区在线| 欧美性大战久久久久久久蜜臀 | 国产a精品视频| 三级成人在线视频| 亚洲欧美日韩电影| 久久精品视频免费观看| 欧美日韩一卡二卡| 成人午夜电影网站| 狠狠色丁香久久婷婷综合丁香| 亚洲免费视频成人| 国产精品日韩精品欧美在线| 日韩视频在线观看一区二区| 色妞www精品视频| 国产成人aaa| 国产在线视频一区二区三区| 舔着乳尖日韩一区| 亚洲精品伦理在线| 国产精品久久久久久久久搜平片| 日韩色在线观看| 91精品国产麻豆国产自产在线| 色婷婷av一区二区三区大白胸| 懂色一区二区三区免费观看 | 秋霞成人午夜伦在线观看| 亚洲午夜久久久久久久久电影院| 国产精品久久777777| 欧美激情一区二区| 欧美国产欧美综合| 久久久99精品免费观看| 精品少妇一区二区三区在线播放| 7799精品视频| 欧美美女一区二区三区| 67194成人在线观看| 欧美日韩国产在线观看| 欧美嫩在线观看| 欧美精品久久一区| 91精品国产黑色紧身裤美女| 欧美精品自拍偷拍动漫精品| 91精品国产综合久久精品| 7777精品伊人久久久大香线蕉的| 欧美性猛交xxxxxxxx| 欧美老肥妇做.爰bbww| 欧美日韩成人综合| 欧美成人性战久久| 久久在线观看免费| 日本一区二区三区久久久久久久久不 | 欧美卡1卡2卡| 日韩午夜在线播放| 国产午夜精品一区二区三区视频| 国产精品另类一区| 亚洲美女在线国产| 亚洲午夜一二三区视频| 久久99精品国产.久久久久| 国产一区二区成人久久免费影院| 成人免费黄色大片| 在线观看区一区二| 日韩视频一区二区三区在线播放 | hitomi一区二区三区精品| 99免费精品在线| 欧美午夜精品一区二区三区| 日韩精品中文字幕一区二区三区 | 欧美成人女星排行榜| 欧美国产精品劲爆| 亚洲国产欧美在线| 国产在线精品一区二区不卡了 | 一本色道久久综合精品竹菊| 欧美在线|欧美| 欧美精品一区二区精品网| 中文字幕中文字幕一区| 婷婷成人综合网| 成人免费视频视频在线观看免费| 色网站国产精品| 精品少妇一区二区三区免费观看 | 一区二区三区在线视频观看58| 无吗不卡中文字幕| 狠狠色综合播放一区二区| 一本久道中文字幕精品亚洲嫩| 日韩亚洲欧美在线观看| 成人免费小视频| 久久99热这里只有精品| 色偷偷成人一区二区三区91| 2020国产精品| 午夜免费欧美电影| 成人晚上爱看视频| 日韩一区二区三区视频在线观看| 国产精品情趣视频| 精品影院一区二区久久久| 日本韩国一区二区| 久久久久久久久久久久久久久99| 亚洲第一精品在线| 91在线小视频| 国产色爱av资源综合区| 日韩精品电影在线| 欧美综合视频在线观看| 国产精品你懂的在线欣赏| 看片的网站亚洲| 欧美性感一区二区三区| 中文字幕中文字幕在线一区 | 色婷婷激情综合| 国产网站一区二区| 免费的国产精品| 欧美日韩国产首页| 亚洲精品成a人| 国产 日韩 欧美大片| 精品国产精品网麻豆系列| 首页欧美精品中文字幕| 在线观看日韩电影| 亚洲精品国产一区二区精华液| 成人黄色小视频| 国产日韩欧美一区二区三区综合| 免费看精品久久片| 欧美一区二区三区在| 日韩精品1区2区3区| 欧美日韩中文精品| 亚洲综合激情另类小说区| 一本一本久久a久久精品综合麻豆| 国产精品电影一区二区| www.亚洲精品| 中文字幕一区av| 99精品欧美一区二区三区综合在线| 欧美国产日产图区| 成人免费高清在线观看| 国产精品国产三级国产普通话三级 | 亚洲精品中文字幕在线观看| 99亚偷拍自图区亚洲| 国产精品九色蝌蚪自拍| 91小视频免费看| 一区二区三区不卡视频在线观看| 色婷婷激情久久| 午夜伦欧美伦电影理论片| 欧美日韩免费视频| 三级亚洲高清视频| 精品乱码亚洲一区二区不卡| 蜜臀91精品一区二区三区| 欧美一级高清片| 精品一区二区久久久| 久久精品免费在线观看| 成人性视频免费网站| 国产精品福利一区二区三区| 91色在线porny| 亚洲1区2区3区4区| 日韩一级二级三级精品视频| 国产一区二区三区黄视频| 国产欧美日韩精品a在线观看| jlzzjlzz亚洲女人18| 亚洲va欧美va人人爽| 日韩欧美成人一区二区| 国产精品一区二区免费不卡| 国产精品久久久久久久第一福利| 色婷婷精品大在线视频| 男男gaygay亚洲| 国产精品毛片a∨一区二区三区| 99re66热这里只有精品3直播| 亚洲美女区一区| 日韩欧美高清一区| av在线综合网| 奇米四色…亚洲| 国产精品久久久久久福利一牛影视|