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

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

?? tif_zip.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
字號:
/* $Id: tif_zip.c,v 1.11 2006/09/27 22:39:00 fwarmerdam Exp $ *//* * Copyright (c) 1995-1997 Sam Leffler * Copyright (c) 1995-1997 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. */#include "tiffiop.h"#ifdef ZIP_SUPPORT/* * TIFF Library. * * ZIP (aka Deflate) Compression Support * * This file is simply an interface to the zlib library written by * Jean-loup Gailly and Mark Adler.  You must use version 1.0 or later * of the library: this code assumes the 1.0 API and also depends on * the ability to write the zlib header multiple times (one per strip) * which was not possible with versions prior to 0.95.  Note also that * older versions of this codec avoided this bug by supressing the header * entirely.  This means that files written with the old library cannot * be read; they should be converted to a different compression scheme * and then reconverted. * * The data format used by the zlib library is described in the files * zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available in the * directory ftp://ftp.uu.net/pub/archiving/zip/doc.  The library was * last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz. */#include "tif_predict.h"#include "zlib.h"#include <stdio.h>/* * Sigh, ZLIB_VERSION is defined as a string so there's no * way to do a proper check here.  Instead we guess based * on the presence of #defines that were added between the * 0.95 and 1.0 distributions. */#if !defined(Z_NO_COMPRESSION) || !defined(Z_DEFLATED)#error "Antiquated ZLIB software; you must use version 1.0 or later"#endif/* * State block for each open TIFF * file using ZIP compression/decompression. */typedef	struct {	TIFFPredictorState predict;	z_stream	stream;	int		zipquality;		/* compression level */	int		state;			/* state flags */#define ZSTATE_INIT_DECODE 0x01#define ZSTATE_INIT_ENCODE 0x02	TIFFVGetMethod	vgetparent;		/* super-class method */	TIFFVSetMethod	vsetparent;		/* super-class method */} ZIPState;#define	ZState(tif)		((ZIPState*) (tif)->tif_data)#define	DecoderState(tif)	ZState(tif)#define	EncoderState(tif)	ZState(tif)static	int ZIPEncode(TIFF*, tidata_t, tsize_t, tsample_t);static	int ZIPDecode(TIFF*, tidata_t, tsize_t, tsample_t);static intZIPSetupDecode(TIFF* tif){	ZIPState* sp = DecoderState(tif);	static const char module[] = "ZIPSetupDecode";	assert(sp != NULL);                /* if we were last encoding, terminate this mode */	if (sp->state & ZSTATE_INIT_ENCODE) {            deflateEnd(&sp->stream);            sp->state = 0;        }	if (inflateInit(&sp->stream) != Z_OK) {		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);		return (0);	} else {		sp->state |= ZSTATE_INIT_DECODE;		return (1);	}}/* * Setup state for decoding a strip. */static intZIPPreDecode(TIFF* tif, tsample_t s){	ZIPState* sp = DecoderState(tif);	(void) s;	assert(sp != NULL);        if( (sp->state & ZSTATE_INIT_DECODE) == 0 )            ZIPSetupDecode(tif);	sp->stream.next_in = tif->tif_rawdata;	sp->stream.avail_in = tif->tif_rawcc;	return (inflateReset(&sp->stream) == Z_OK);}static intZIPDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s){	ZIPState* sp = DecoderState(tif);	static const char module[] = "ZIPDecode";	(void) s;	assert(sp != NULL);        assert(sp->state == ZSTATE_INIT_DECODE);	sp->stream.next_out = op;	sp->stream.avail_out = occ;	do {		int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);		if (state == Z_STREAM_END)			break;		if (state == Z_DATA_ERROR) {			TIFFErrorExt(tif->tif_clientdata, module,			    "%s: Decoding error at scanline %d, %s",			    tif->tif_name, tif->tif_row, sp->stream.msg);			if (inflateSync(&sp->stream) != Z_OK)				return (0);			continue;		}		if (state != Z_OK) {			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",			    tif->tif_name, sp->stream.msg);			return (0);		}	} while (sp->stream.avail_out > 0);	if (sp->stream.avail_out != 0) {		TIFFErrorExt(tif->tif_clientdata, module,		    "%s: Not enough data at scanline %d (short %d bytes)",		    tif->tif_name, tif->tif_row, sp->stream.avail_out);		return (0);	}	return (1);}static intZIPSetupEncode(TIFF* tif){	ZIPState* sp = EncoderState(tif);	static const char module[] = "ZIPSetupEncode";	assert(sp != NULL);	if (sp->state & ZSTATE_INIT_DECODE) {            inflateEnd(&sp->stream);            sp->state = 0;        }	if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) {		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);		return (0);	} else {		sp->state |= ZSTATE_INIT_ENCODE;		return (1);	}}/* * Reset encoding state at the start of a strip. */static intZIPPreEncode(TIFF* tif, tsample_t s){	ZIPState *sp = EncoderState(tif);	(void) s;	assert(sp != NULL);        if( sp->state != ZSTATE_INIT_ENCODE )            ZIPSetupEncode(tif);	sp->stream.next_out = tif->tif_rawdata;	sp->stream.avail_out = tif->tif_rawdatasize;	return (deflateReset(&sp->stream) == Z_OK);}/* * Encode a chunk of pixels. */static intZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s){	ZIPState *sp = EncoderState(tif);	static const char module[] = "ZIPEncode";        assert(sp != NULL);        assert(sp->state == ZSTATE_INIT_ENCODE);	(void) s;	sp->stream.next_in = bp;	sp->stream.avail_in = cc;	do {		if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {			TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",			    tif->tif_name, sp->stream.msg);			return (0);		}		if (sp->stream.avail_out == 0) {			tif->tif_rawcc = tif->tif_rawdatasize;			TIFFFlushData1(tif);			sp->stream.next_out = tif->tif_rawdata;			sp->stream.avail_out = tif->tif_rawdatasize;		}	} while (sp->stream.avail_in > 0);	return (1);}/* * Finish off an encoded strip by flushing the last * string and tacking on an End Of Information code. */static intZIPPostEncode(TIFF* tif){	ZIPState *sp = EncoderState(tif);	static const char module[] = "ZIPPostEncode";	int state;	sp->stream.avail_in = 0;	do {		state = deflate(&sp->stream, Z_FINISH);		switch (state) {		case Z_STREAM_END:		case Z_OK:		    if ((int)sp->stream.avail_out != (int)tif->tif_rawdatasize)                    {			    tif->tif_rawcc =				tif->tif_rawdatasize - sp->stream.avail_out;			    TIFFFlushData1(tif);			    sp->stream.next_out = tif->tif_rawdata;			    sp->stream.avail_out = tif->tif_rawdatasize;		    }		    break;		default:			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",			tif->tif_name, sp->stream.msg);		    return (0);		}	} while (state != Z_STREAM_END);	return (1);}static voidZIPCleanup(TIFF* tif){	ZIPState* sp = ZState(tif);	assert(sp != 0);	(void)TIFFPredictorCleanup(tif);	tif->tif_tagmethods.vgetfield = sp->vgetparent;	tif->tif_tagmethods.vsetfield = sp->vsetparent;	if (sp->state & ZSTATE_INIT_ENCODE) {            deflateEnd(&sp->stream);            sp->state = 0;        } else if( sp->state & ZSTATE_INIT_DECODE) {            inflateEnd(&sp->stream);            sp->state = 0;	}	_TIFFfree(sp);	tif->tif_data = NULL;	_TIFFSetDefaultCompressionState(tif);}static intZIPVSetField(TIFF* tif, ttag_t tag, va_list ap){	ZIPState* sp = ZState(tif);	static const char module[] = "ZIPVSetField";	switch (tag) {	case TIFFTAG_ZIPQUALITY:		sp->zipquality = va_arg(ap, int);		if ( sp->state&ZSTATE_INIT_ENCODE ) {			if (deflateParams(&sp->stream,			    sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) {				TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",				    tif->tif_name, sp->stream.msg);				return (0);			}		}		return (1);	default:		return (*sp->vsetparent)(tif, tag, ap);	}	/*NOTREACHED*/}static intZIPVGetField(TIFF* tif, ttag_t tag, va_list ap){	ZIPState* sp = ZState(tif);	switch (tag) {	case TIFFTAG_ZIPQUALITY:		*va_arg(ap, int*) = sp->zipquality;		break;	default:		return (*sp->vgetparent)(tif, tag, ap);	}	return (1);}static const TIFFFieldInfo zipFieldInfo[] = {    { TIFFTAG_ZIPQUALITY,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,      TRUE,	FALSE,	"" },};intTIFFInitZIP(TIFF* tif, int scheme){	ZIPState* sp;	assert( (scheme == COMPRESSION_DEFLATE)		|| (scheme == COMPRESSION_ADOBE_DEFLATE));	/*	 * Allocate state block so tag methods have storage to record values.	 */	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (ZIPState));	if (tif->tif_data == NULL)		goto bad;	sp = ZState(tif);	sp->stream.zalloc = NULL;	sp->stream.zfree = NULL;	sp->stream.opaque = NULL;	sp->stream.data_type = Z_BINARY;	/*	 * Merge codec-specific tag information and	 * override parent get/set field methods.	 */	_TIFFMergeFieldInfo(tif, zipFieldInfo, TIFFArrayCount(zipFieldInfo));	sp->vgetparent = tif->tif_tagmethods.vgetfield;	tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */	sp->vsetparent = tif->tif_tagmethods.vsetfield;	tif->tif_tagmethods.vsetfield = ZIPVSetField; /* hook for codec tags */	/* Default values for codec-specific fields */	sp->zipquality = Z_DEFAULT_COMPRESSION;	/* default comp. level */	sp->state = 0;	/*	 * Install codec methods.	 */	tif->tif_setupdecode = ZIPSetupDecode;	tif->tif_predecode = ZIPPreDecode;	tif->tif_decoderow = ZIPDecode;	tif->tif_decodestrip = ZIPDecode;	tif->tif_decodetile = ZIPDecode;	tif->tif_setupencode = ZIPSetupEncode;	tif->tif_preencode = ZIPPreEncode;	tif->tif_postencode = ZIPPostEncode;	tif->tif_encoderow = ZIPEncode;	tif->tif_encodestrip = ZIPEncode;	tif->tif_encodetile = ZIPEncode;	tif->tif_cleanup = ZIPCleanup;	/*	 * Setup predictor setup.	 */	(void) TIFFPredictorInit(tif);	return (1);bad:	TIFFErrorExt(tif->tif_clientdata, "TIFFInitZIP",		     "No space for ZIP state block");	return (0);}#endif /* ZIP_SUPORT *//* vim: set ts=8 sts=8 sw=8 noet: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91啪九色porn原创视频在线观看| 韩国成人精品a∨在线观看| 婷婷丁香久久五月婷婷| 国产精品亚洲视频| 欧美疯狂性受xxxxx喷水图片| 亚洲国产电影在线观看| 青娱乐精品在线视频| 在线欧美一区二区| 国产精品剧情在线亚洲| 久草中文综合在线| 欧美精品久久久久久久久老牛影院 | 国产一区二区三区在线观看免费| 91麻豆免费看片| 国产欧美日韩另类视频免费观看| 日韩激情在线观看| 欧美色综合影院| 亚洲精品免费在线| www.欧美日韩| 中文字幕成人网| 精品一区二区三区影院在线午夜| 91麻豆精品国产91久久久资源速度 | 欧美va亚洲va| 日韩高清在线观看| 91精品国产品国语在线不卡| 亚洲一区二区三区精品在线| 91网站在线播放| 亚洲视频免费观看| 91美女片黄在线观看91美女| 综合激情网...| 91蜜桃免费观看视频| 国产精品久久看| 91同城在线观看| 樱桃视频在线观看一区| 一本一本久久a久久精品综合麻豆| 中文字幕一区二| 91麻豆精品秘密| 亚洲国产综合色| 欧美一卡二卡三卡四卡| 麻豆一区二区三| 久久久精品免费免费| 岛国av在线一区| 亚洲日本va在线观看| 在线亚洲免费视频| 五月婷婷色综合| 亚洲精品一区二区在线观看| 国产一区激情在线| 亚洲国产精品精华液ab| av欧美精品.com| 亚洲午夜私人影院| 91精品蜜臀在线一区尤物| 日av在线不卡| 欧美激情一区在线| 日本高清不卡一区| 全部av―极品视觉盛宴亚洲| 久久九九久久九九| 99久久精品情趣| 蜜臀av性久久久久蜜臀aⅴ四虎 | 韩国精品主播一区二区在线观看| 国产欧美一区二区精品仙草咪| 99久久免费精品高清特色大片| 亚洲第一二三四区| 久久综合999| 色狠狠综合天天综合综合| 日本欧洲一区二区| 国产无遮挡一区二区三区毛片日本| 成人免费毛片高清视频| 亚洲图片欧美视频| 久久久www成人免费毛片麻豆| 一本一本久久a久久精品综合麻豆| 视频一区视频二区中文| 中文字幕精品在线不卡| 欧美精品三级日韩久久| 丁香激情综合国产| 日本不卡视频一二三区| 国产精品美女久久久久久 | 亚洲综合自拍偷拍| 国产亚洲1区2区3区| 一本一本大道香蕉久在线精品| 久久99国产精品久久99果冻传媒| 综合色中文字幕| 久久久99免费| 91精品国产综合久久久久久久| 不卡的av在线播放| 精品一区二区免费看| 一区二区免费看| 国产精品午夜在线| 久久亚洲影视婷婷| 欧美一区二区视频在线观看2022| 99国产精品久| 国产v综合v亚洲欧| 国内精品嫩模私拍在线| 视频一区二区中文字幕| 一区二区三区免费看视频| 欧美韩国一区二区| 久久免费精品国产久精品久久久久| 欧美日韩亚洲不卡| 日本韩国欧美在线| 99国产精品99久久久久久| 国产一区二区电影| 国产一区激情在线| 国产一区在线视频| 精品系列免费在线观看| 日韩电影在线免费观看| 日韩一区欧美二区| 婷婷一区二区三区| 日韩国产一二三区| 性欧美大战久久久久久久久| 一区二区三区中文字幕精品精品 | 日韩美女在线视频| 欧美一级欧美三级| 制服丝袜中文字幕亚洲| 在线91免费看| 欧美成人猛片aaaaaaa| 欧美一区二区三区公司| 日韩一二在线观看| 欧美成人午夜电影| 国产夜色精品一区二区av| 国产婷婷一区二区| 国产日韩欧美综合一区| 中文字幕欧美区| 亚洲女子a中天字幕| 亚洲欧美偷拍卡通变态| 亚洲一区在线视频| 天天免费综合色| 人人狠狠综合久久亚洲| 久久精工是国产品牌吗| 国产乱一区二区| voyeur盗摄精品| 欧美三级日韩在线| 日韩一区二区三区免费看 | 欧美成人猛片aaaaaaa| 久久免费电影网| 综合欧美一区二区三区| 亚洲综合丝袜美腿| 麻豆91在线播放| 成人av在线资源网站| 色婷婷综合久久久中文一区二区 | 午夜精品爽啪视频| 久久se这里有精品| 成人av免费在线| 欧美日韩一本到| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 免费的成人av| 成人app下载| 欧美日韩国产综合一区二区| 日韩三级视频在线观看| 国产视频一区二区在线观看| 亚洲精品乱码久久久久久久久| 午夜伊人狠狠久久| 国产精品888| 精品视频123区在线观看| 精品欧美一区二区久久| 1000精品久久久久久久久| 男男成人高潮片免费网站| 成人精品免费看| 欧美日韩国产首页| 国产视频一区在线观看 | 一区二区三区四区在线免费观看| 日日夜夜免费精品视频| 成人免费福利片| 日韩一级片网址| 亚洲天堂免费在线观看视频| 美国av一区二区| 在线国产亚洲欧美| 国产蜜臀97一区二区三区| 婷婷综合五月天| 日本韩国精品在线| 国产欧美在线观看一区| 污片在线观看一区二区| 91啪在线观看| 国产精品黄色在线观看| 六月婷婷色综合| 欧美性猛片xxxx免费看久爱| 国产精品无圣光一区二区| 免费在线一区观看| 欧美日韩国产一级| 亚洲欧洲日本在线| 国产黄人亚洲片| 日韩精品一区在线| 青草av.久久免费一区| 欧美日韩在线播放三区四区| 国产精品二三区| 国产suv精品一区二区三区| 欧美一区在线视频| 日本中文字幕一区二区有限公司| 欧美视频一区二区三区在线观看| 国产精品毛片大码女人| 国产精品自拍网站| 久久综合久久综合久久| 免费观看日韩av| 日韩亚洲欧美在线观看| 天堂va蜜桃一区二区三区| 欧美日韩一卡二卡三卡 | 一色屋精品亚洲香蕉网站| 中文字幕五月欧美| 经典三级视频一区| 天堂蜜桃91精品| 色综合天天综合色综合av| 亚洲国产精品v| 国产91丝袜在线18|