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

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

?? tif_pixarlog.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
	} else if (stride == 4) {	    r2 = wp[0] = (uint16) CLAMP(ip[0]);	    g2 = wp[1] = (uint16) CLAMP(ip[1]);	    b2 = wp[2] = (uint16) CLAMP(ip[2]);	    a2 = wp[3] = (uint16) CLAMP(ip[3]);	    n -= 4;	    while (n > 0) {		n -= 4;		wp += 4;		ip += 4;		r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;		g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;		b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;		a1 = (int32) CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;	    }	} else {	    ip += n - 1;	/* point to last one */	    wp += n - 1;	/* point to last one */	    n -= stride;	    while (n > 0) {		REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]);				wp[stride] -= wp[0];				wp[stride] &= mask;				wp--; ip--)		n -= stride;	    }	    REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]); wp--; ip--)	}    }}static voidhorizontalDifference16(unsigned short *ip, int n, int stride, 	unsigned short *wp, uint16 *From14){    register int  r1, g1, b1, a1, r2, g2, b2, a2, mask;/* assumption is unsigned pixel values */#undef   CLAMP#define  CLAMP(v) From14[(v) >> 2]    mask = CODE_MASK;    if (n >= stride) {	if (stride == 3) {	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);	    b2 = wp[2] = CLAMP(ip[2]);	    n -= 3;	    while (n > 0) {		n -= 3;		wp += 3;		ip += 3;		r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;		g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;		b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;	    }	} else if (stride == 4) {	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);	    b2 = wp[2] = CLAMP(ip[2]);  a2 = wp[3] = CLAMP(ip[3]);	    n -= 4;	    while (n > 0) {		n -= 4;		wp += 4;		ip += 4;		r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;		g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;		b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;		a1 = CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;	    }	} else {	    ip += n - 1;	/* point to last one */	    wp += n - 1;	/* point to last one */	    n -= stride;	    while (n > 0) {		REPEAT(stride, wp[0] = CLAMP(ip[0]);				wp[stride] -= wp[0];				wp[stride] &= mask;				wp--; ip--)		n -= stride;	    }	    REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)	}    }}static voidhorizontalDifference8(unsigned char *ip, int n, int stride, 	unsigned short *wp, uint16 *From8){    register int  r1, g1, b1, a1, r2, g2, b2, a2, mask;#undef	 CLAMP#define  CLAMP(v) (From8[(v)])    mask = CODE_MASK;    if (n >= stride) {	if (stride == 3) {	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);	    b2 = wp[2] = CLAMP(ip[2]);	    n -= 3;	    while (n > 0) {		n -= 3;		r1 = CLAMP(ip[3]); wp[3] = (r1-r2) & mask; r2 = r1;		g1 = CLAMP(ip[4]); wp[4] = (g1-g2) & mask; g2 = g1;		b1 = CLAMP(ip[5]); wp[5] = (b1-b2) & mask; b2 = b1;		wp += 3;		ip += 3;	    }	} else if (stride == 4) {	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);	    b2 = wp[2] = CLAMP(ip[2]);  a2 = wp[3] = CLAMP(ip[3]);	    n -= 4;	    while (n > 0) {		n -= 4;		r1 = CLAMP(ip[4]); wp[4] = (r1-r2) & mask; r2 = r1;		g1 = CLAMP(ip[5]); wp[5] = (g1-g2) & mask; g2 = g1;		b1 = CLAMP(ip[6]); wp[6] = (b1-b2) & mask; b2 = b1;		a1 = CLAMP(ip[7]); wp[7] = (a1-a2) & mask; a2 = a1;		wp += 4;		ip += 4;	    }	} else {	    wp += n + stride - 1;	/* point to last one */	    ip += n + stride - 1;	/* point to last one */	    n -= stride;	    while (n > 0) {		REPEAT(stride, wp[0] = CLAMP(ip[0]);				wp[stride] -= wp[0];				wp[stride] &= mask;				wp--; ip--)		n -= stride;	    }	    REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)	}    }}/* * Encode a chunk of pixels. */static intPixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s){	TIFFDirectory *td = &tif->tif_dir;	PixarLogState *sp = EncoderState(tif);	static const char module[] = "PixarLogEncode";	int	i, n, llen;	unsigned short * up;	(void) s;	switch (sp->user_datafmt) {	case PIXARLOGDATAFMT_FLOAT:		n = cc / sizeof(float);		/* XXX float == 32 bits */		break;	case PIXARLOGDATAFMT_16BIT:	case PIXARLOGDATAFMT_12BITPICIO:	case PIXARLOGDATAFMT_11BITLOG:		n = cc / sizeof(uint16);	/* XXX uint16 == 16 bits */		break;	case PIXARLOGDATAFMT_8BIT:	case PIXARLOGDATAFMT_8BITABGR:		n = cc;		break;	default:		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			"%d bit input not supported in PixarLog",			td->td_bitspersample);		return 0;	}	llen = sp->stride * td->td_imagewidth;	for (i = 0, up = sp->tbuf; i < n; i += llen, up += llen) {		switch (sp->user_datafmt)  {		case PIXARLOGDATAFMT_FLOAT:			horizontalDifferenceF((float *)bp, llen, 				sp->stride, up, sp->FromLT2);			bp += llen * sizeof(float);			break;		case PIXARLOGDATAFMT_16BIT:			horizontalDifference16((uint16 *)bp, llen, 				sp->stride, up, sp->From14);			bp += llen * sizeof(uint16);			break;		case PIXARLOGDATAFMT_8BIT:			horizontalDifference8((unsigned char *)bp, llen, 				sp->stride, up, sp->From8);			bp += llen * sizeof(unsigned char);			break;		default:			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,				"%d bit input not supported in PixarLog",				td->td_bitspersample);			return 0;		}	} 	sp->stream.next_in = (unsigned char *) sp->tbuf;	sp->stream.avail_in = n * sizeof(uint16);	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 intPixarLogPostEncode(TIFF* tif){	PixarLogState *sp = EncoderState(tif);	static const char module[] = "PixarLogPostEncode";	int state;	sp->stream.avail_in = 0;	do {		state = deflate(&sp->stream, Z_FINISH);		switch (state) {		case Z_STREAM_END:		case Z_OK:		    if (sp->stream.avail_out != (uint32)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 voidPixarLogClose(TIFF* tif){	TIFFDirectory *td = &tif->tif_dir;	/* In a really sneaky maneuver, on close, we covertly modify both	 * bitspersample and sampleformat in the directory to indicate	 * 8-bit linear.  This way, the decode "just works" even for	 * readers that don't know about PixarLog, or how to set	 * the PIXARLOGDATFMT pseudo-tag.	 */	td->td_bitspersample = 8;	td->td_sampleformat = SAMPLEFORMAT_UINT;}static voidPixarLogCleanup(TIFF* tif){	PixarLogState* sp = (PixarLogState*) tif->tif_data;	assert(sp != 0);	(void)TIFFPredictorCleanup(tif);	tif->tif_tagmethods.vgetfield = sp->vgetparent;	tif->tif_tagmethods.vsetfield = sp->vsetparent;	if (sp->FromLT2) _TIFFfree(sp->FromLT2);	if (sp->From14) _TIFFfree(sp->From14);	if (sp->From8) _TIFFfree(sp->From8);	if (sp->ToLinearF) _TIFFfree(sp->ToLinearF);	if (sp->ToLinear16) _TIFFfree(sp->ToLinear16);	if (sp->ToLinear8) _TIFFfree(sp->ToLinear8);	if (sp->state&PLSTATE_INIT) {		if (tif->tif_mode == O_RDONLY)			inflateEnd(&sp->stream);		else			deflateEnd(&sp->stream);	}	if (sp->tbuf)		_TIFFfree(sp->tbuf);	_TIFFfree(sp);	tif->tif_data = NULL;	_TIFFSetDefaultCompressionState(tif);}static intPixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap){    PixarLogState *sp = (PixarLogState *)tif->tif_data;    int result;    static const char module[] = "PixarLogVSetField";    switch (tag) {     case TIFFTAG_PIXARLOGQUALITY:		sp->quality = va_arg(ap, int);		if (tif->tif_mode != O_RDONLY && (sp->state&PLSTATE_INIT)) {			if (deflateParams(&sp->stream,			    sp->quality, Z_DEFAULT_STRATEGY) != Z_OK) {				TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",					tif->tif_name, sp->stream.msg);				return (0);			}		}		return (1);     case TIFFTAG_PIXARLOGDATAFMT:	sp->user_datafmt = va_arg(ap, int);	/* Tweak the TIFF header so that the rest of libtiff knows what	 * size of data will be passed between app and library, and	 * assume that the app knows what it is doing and is not	 * confused by these header manipulations...	 */	switch (sp->user_datafmt) {	 case PIXARLOGDATAFMT_8BIT:	 case PIXARLOGDATAFMT_8BITABGR:	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);	    break;	 case PIXARLOGDATAFMT_11BITLOG:	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);	    break;	 case PIXARLOGDATAFMT_12BITPICIO:	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_INT);	    break;	 case PIXARLOGDATAFMT_16BIT:	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);	    break;	 case PIXARLOGDATAFMT_FLOAT:	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);	    break;	}	/*	 * Must recalculate sizes should bits/sample change.	 */	tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;	tif->tif_scanlinesize = TIFFScanlineSize(tif);	result = 1;		/* NB: pseudo tag */	break;     default:	result = (*sp->vsetparent)(tif, tag, ap);    }    return (result);}static intPixarLogVGetField(TIFF* tif, ttag_t tag, va_list ap){    PixarLogState *sp = (PixarLogState *)tif->tif_data;    switch (tag) {     case TIFFTAG_PIXARLOGQUALITY:	*va_arg(ap, int*) = sp->quality;	break;     case TIFFTAG_PIXARLOGDATAFMT:	*va_arg(ap, int*) = sp->user_datafmt;	break;     default:	return (*sp->vgetparent)(tif, tag, ap);    }    return (1);}static const TIFFFieldInfo pixarlogFieldInfo[] = {    {TIFFTAG_PIXARLOGDATAFMT,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""},    {TIFFTAG_PIXARLOGQUALITY,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""}};intTIFFInitPixarLog(TIFF* tif, int scheme){	PixarLogState* sp;	assert(scheme == COMPRESSION_PIXARLOG);	/*	 * Allocate state block so tag methods have storage to record values.	 */	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (PixarLogState));	if (tif->tif_data == NULL)		goto bad;	sp = (PixarLogState*) tif->tif_data;	_TIFFmemset(sp, 0, sizeof (*sp));	sp->stream.data_type = Z_BINARY;	sp->user_datafmt = PIXARLOGDATAFMT_UNKNOWN;	/*	 * Install codec methods.	 */	tif->tif_setupdecode = PixarLogSetupDecode;	tif->tif_predecode = PixarLogPreDecode;	tif->tif_decoderow = PixarLogDecode;	tif->tif_decodestrip = PixarLogDecode;	tif->tif_decodetile = PixarLogDecode;	tif->tif_setupencode = PixarLogSetupEncode;	tif->tif_preencode = PixarLogPreEncode;	tif->tif_postencode = PixarLogPostEncode;	tif->tif_encoderow = PixarLogEncode;	tif->tif_encodestrip = PixarLogEncode;	tif->tif_encodetile = PixarLogEncode;	tif->tif_close = PixarLogClose;	tif->tif_cleanup = PixarLogCleanup;	/* Override SetField so we can handle our private pseudo-tag */	_TIFFMergeFieldInfo(tif, pixarlogFieldInfo, N(pixarlogFieldInfo));	sp->vgetparent = tif->tif_tagmethods.vgetfield;	tif->tif_tagmethods.vgetfield = PixarLogVGetField;   /* hook for codec tags */	sp->vsetparent = tif->tif_tagmethods.vsetfield;	tif->tif_tagmethods.vsetfield = PixarLogVSetField;   /* hook for codec tags */	/* Default values for codec-specific fields */	sp->quality = Z_DEFAULT_COMPRESSION; /* default comp. level */	sp->state = 0;	/* we don't wish to use the predictor, 	 * the default is none, which predictor value 1	 */	(void) TIFFPredictorInit(tif);	/*	 * build the companding tables 	 */	PixarLogMakeTables(sp);	return (1);bad:	TIFFErrorExt(tif->tif_clientdata, "TIFFInitPixarLog",		     "No space for PixarLog state block");	return (0);}#endif /* PIXARLOG_SUPPORT *//* vim: set ts=8 sts=8 sw=8 noet: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久久久久久久99 | 亚洲视频电影在线| 久久99在线观看| 欧美不卡一二三| 国产精品一区二区免费不卡| 欧美国产日韩亚洲一区| eeuss鲁片一区二区三区| 亚洲一区二区四区蜜桃| 这里只有精品免费| 国产精品一区一区三区| 国产精品欧美一区喷水| 欧美又粗又大又爽| 日本不卡的三区四区五区| 久久久久久麻豆| 色综合久久综合网97色综合| 日韩精品91亚洲二区在线观看| 欧美一区二区大片| 波多野结衣视频一区| 亚洲午夜电影网| 久久精品夜夜夜夜久久| 91成人在线免费观看| 毛片av一区二区| **性色生活片久久毛片| 欧美一区二区三区喷汁尤物| 国产成人aaa| 日韩精品欧美精品| 国产精品久久久久久亚洲伦| 精品视频在线免费| 国产91在线看| 日产精品久久久久久久性色| 国产精品麻豆久久久| 7777精品伊人久久久大香线蕉| 国产剧情一区二区| 水野朝阳av一区二区三区| 欧美国产精品一区| 欧美一卡2卡3卡4卡| av一区二区三区在线| 免费欧美在线视频| 亚洲欧美在线另类| 精品国产a毛片| 欧美影院精品一区| 99视频一区二区| 国产美女主播视频一区| 日韩成人精品在线| 亚洲一区二区三区四区不卡| 亚洲精品一区二区三区蜜桃下载 | 狠狠色丁香婷婷综合久久片| 亚洲欧美二区三区| 国产欧美视频在线观看| 日韩情涩欧美日韩视频| 在线观看亚洲a| 不卡大黄网站免费看| 国产精品88888| 精品亚洲成a人在线观看| 日日夜夜精品视频免费| 亚洲一区二区欧美激情| 亚洲欧美韩国综合色| 亚洲国产精品精华液2区45| 欧美电影免费观看高清完整版在线| 日本韩国欧美在线| 99久久99久久精品国产片果冻 | 粉嫩绯色av一区二区在线观看| 日本免费在线视频不卡一不卡二| 亚洲综合色噜噜狠狠| 亚洲色图20p| 亚洲欧美偷拍另类a∨色屁股| 国产精品久久久久一区二区三区 | 久久91精品国产91久久小草| 亚洲sss视频在线视频| 亚洲精品videosex极品| 中文字幕一区二区在线观看| 国产精品国产自产拍高清av王其| 国产欧美精品一区aⅴ影院| 久久综合九色综合欧美就去吻| 日韩一区二区高清| 日韩视频免费观看高清完整版在线观看 | 欧美一区二区三区在线视频| 91精品在线一区二区| 日韩亚洲欧美在线| 精品av久久707| 久久亚洲一级片| 久久丝袜美腿综合| 国产精品嫩草99a| 中文字幕在线不卡| 亚洲一区二区在线观看视频| 天堂久久久久va久久久久| 免费在线观看日韩欧美| 韩国精品久久久| 成人高清免费在线播放| 色偷偷88欧美精品久久久| 欧美日韩一本到| 精品久久久久久久人人人人传媒 | 日本电影欧美片| 欧美视频一二三区| 欧美一级理论片| 2021中文字幕一区亚洲| 中文字幕精品一区二区精品绿巨人 | 精品在线免费视频| 国产福利一区二区三区| 91亚洲国产成人精品一区二三| 91美女福利视频| 91精品国产手机| 国产精品视频九色porn| 亚洲主播在线观看| 麻豆高清免费国产一区| 成人免费毛片高清视频| 欧美色偷偷大香| 精品sm在线观看| 亚洲久本草在线中文字幕| 日本不卡视频在线观看| 成人av动漫网站| 欧美日韩国产综合一区二区 | 奇米影视一区二区三区| 岛国精品在线播放| 欧美日韩精品系列| 国产清纯白嫩初高生在线观看91 | 欧美亚洲精品一区| 欧美成人性福生活免费看| 国产精品传媒在线| 老司机精品视频线观看86| 成人aa视频在线观看| 欧美电影影音先锋| 国产欧美综合色| 日韩高清电影一区| 国产成人午夜高潮毛片| 欧美日韩精品一区二区三区四区| 精品国产乱码久久久久久浪潮| 亚洲欧美激情小说另类| 久久99精品国产麻豆婷婷| 91在线小视频| 久久久影视传媒| 日韩成人免费看| 白白色 亚洲乱淫| 久久婷婷综合激情| 香蕉久久一区二区不卡无毒影院| 国产成人精品一区二区三区四区| 91精品在线观看入口| 亚洲毛片av在线| 国产999精品久久久久久绿帽| 欧美一区二区三级| 综合亚洲深深色噜噜狠狠网站| 久久99精品久久久久久动态图| 欧美日韩一级黄| 亚洲激情五月婷婷| 高清不卡在线观看av| 精品福利在线导航| 日韩avvvv在线播放| 精品视频全国免费看| 一区二区三区av电影| 成人免费视频视频在线观看免费| 2欧美一区二区三区在线观看视频| 午夜国产不卡在线观看视频| 日本精品一级二级| 一区二区三区.www| 91搞黄在线观看| 一区2区3区在线看| 日本二三区不卡| 亚洲一区二区在线免费观看视频| 91亚洲精品一区二区乱码| 中文字幕在线一区二区三区| 成人精品高清在线| 国产精品青草综合久久久久99| 成人综合在线视频| 国产精品久久久久久久久果冻传媒 | 欧美午夜精品一区二区蜜桃| 亚洲精品乱码久久久久久黑人 | 成人黄色在线视频| 国产精品午夜春色av| 成人性生交大合| 中文字幕一区二区三区av| 99久久精品国产一区二区三区| 亚洲日本va午夜在线影院| 91小视频免费看| 亚洲福利视频三区| 91精品国产91久久综合桃花| 免费的成人av| 国产亚洲va综合人人澡精品| 成人精品一区二区三区四区| 亚洲欧洲制服丝袜| 717成人午夜免费福利电影| 看片网站欧美日韩| 国产午夜精品一区二区三区嫩草| 成人免费毛片app| 樱桃国产成人精品视频| 91精品国产福利| 国产精品亚洲午夜一区二区三区| 中文字幕不卡三区| 色婷婷狠狠综合| 日韩在线一区二区三区| 久久夜色精品国产欧美乱极品| 顶级嫩模精品视频在线看| 亚洲乱码中文字幕| 日韩精品一区二区三区老鸭窝| 国产精品夜夜爽| 亚洲在线视频免费观看| 欧美mv日韩mv亚洲| 色综合久久综合网97色综合| 美女视频网站黄色亚洲| 国产精品欧美久久久久无广告 | 久久疯狂做爰流白浆xx|