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

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

?? tif_pdsdirread.c

?? tiff格式傳真源碼例子
?? C
?? 第 1 頁 / 共 3 頁
字號:
		if (!ReadOK(tif, cp, cc))			goto bad;	} else {		if (dir->tdir_offset + cc > tif->tif_size)			goto bad;		_TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);	}	if (tif->tif_flags & TIFF_SWAB) {		switch (dir->tdir_type) {		case TIFF_SHORT:		case TIFF_SSHORT:			TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);			break;		case TIFF_LONG:		case TIFF_SLONG:		case TIFF_FLOAT:			TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);			break;		case TIFF_RATIONAL:		case TIFF_SRATIONAL:			TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);			break;		case TIFF_DOUBLE:			TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);			break;		}	}	return (cc);bad:	TIFFError(tif->tif_name, "Error fetching data for field \"%s\"",	    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);	return ((tsize_t) 0);}/* * Fetch an ASCII item from the file. */static tsize_tTIFFFetchString(TIFF* tif, TIFFDirEntry* dir, char* cp){	if (dir->tdir_count <= 4) {		uint32 l = dir->tdir_offset;		if (tif->tif_flags & TIFF_SWAB)			TIFFSwabLong(&l);		_TIFFmemcpy(cp, &l, dir->tdir_count);		return (1);	}	return (TIFFFetchData(tif, dir, cp));}/* * Convert numerator+denominator to float. */static intcvtRational(TIFF* tif, TIFFDirEntry* dir, uint32 num, uint32 denom, float* rv){	if (denom == 0) {		TIFFError(tif->tif_name,		    "%s: Rational with zero denominator (num = %lu)",		    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name, num);		return (0);	} else {		if (dir->tdir_type == TIFF_RATIONAL)			*rv = ((float)num / (float)denom);		else			*rv = ((float)(int32)num / (float)(int32)denom);		return (1);	}}/* * Fetch a rational item from the file * at offset off and return the value * as a floating point number. */static floatTIFFFetchRational(TIFF* tif, TIFFDirEntry* dir){	uint32 l[2];	float v;	return (!TIFFFetchData(tif, dir, (char *)l) ||	    !cvtRational(tif, dir, l[0], l[1], &v) ? 1.0f : v);}/* * Fetch a single floating point value * from the offset field and return it * as a native float. */static floatTIFFFetchFloat(TIFF* tif, TIFFDirEntry* dir){	/* This appears to be a flagrant bug in the TIFF library, yet I	   actually don't understand how it could have ever worked the old	   way. Look at the comments in my new code and you'll understand. */#if (0)	float v = (float)	    TIFFExtractData(tif, dir->tdir_type, dir->tdir_offset);	TIFFCvtIEEEFloatToNative(tif, 1, &v);#else	float v;	/* This is a little bit tricky - if we just cast the uint32 to a float,	   C will perform a numerical conversion, which is not what we want.	   We want to take the actual bit pattern in the uint32 and interpret	   it as a float. Thus we cast a uint32 * into a float * and then	   dereference to get v. */	uint32 l = (uint32)	    TIFFExtractData(tif, dir->tdir_type, dir->tdir_offset);	v = * (float *) &l;	TIFFCvtIEEEFloatToNative(tif, 1, &v);#endif	return (v);}/* * Fetch an array of BYTE or SBYTE values. */static intTIFFFetchByteArray(TIFF* tif, TIFFDirEntry* dir, uint16* v){	if (dir->tdir_count <= 4) {		/*		 * Extract data from offset field.		 */		if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {			switch (dir->tdir_count) {			case 4: v[3] = dir->tdir_offset & 0xff;			case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;			case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;			case 1: v[0] = dir->tdir_offset >> 24;			}		} else {			switch (dir->tdir_count) {			case 4: v[3] = dir->tdir_offset >> 24;			case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;			case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;			case 1: v[0] = dir->tdir_offset & 0xff;			}		}		return (1);	} else		return (TIFFFetchData(tif, dir, (char*) v) != 0);	/* XXX */}/* * Fetch an array of SHORT or SSHORT values. */static intTIFFFetchShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v){	if (dir->tdir_count <= 2) {		if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {			switch (dir->tdir_count) {			case 2: v[1] = dir->tdir_offset & 0xffff;			case 1: v[0] = dir->tdir_offset >> 16;			}		} else {			switch (dir->tdir_count) {			case 2: v[1] = dir->tdir_offset >> 16;			case 1: v[0] = dir->tdir_offset & 0xffff;			}		}		return (1);	} else		return (TIFFFetchData(tif, dir, (char *)v) != 0);}/* * Fetch a pair of SHORT or BYTE values. */static intTIFFFetchShortPair(TIFF* tif, TIFFDirEntry* dir){	uint16 v[2];	int ok = 0;	switch (dir->tdir_type) {	case TIFF_SHORT:	case TIFF_SSHORT:		ok = TIFFFetchShortArray(tif, dir, v);		break;	case TIFF_BYTE:	case TIFF_SBYTE:		ok  = TIFFFetchByteArray(tif, dir, v);		break;	}	if (ok)		TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);	return (ok);}/* * Fetch an array of LONG or SLONG values. */static intTIFFFetchLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v){	if (dir->tdir_count == 1) {		v[0] = dir->tdir_offset;		return (1);	} else		return (TIFFFetchData(tif, dir, (char*) v) != 0);}/* * Fetch an array of RATIONAL or SRATIONAL values. */static intTIFFFetchRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v){	int ok = 0;	uint32* l;	l = (uint32*)CheckMalloc(tif,	    dir->tdir_count*TIFFDataWidth(dir->tdir_type),	    "to fetch array of rationals");	if (l) {		if (TIFFFetchData(tif, dir, (char *)l)) {			uint32 i;			for (i = 0; i < dir->tdir_count; i++) {				ok = cvtRational(tif, dir,				    l[2*i+0], l[2*i+1], &v[i]);				if (!ok)					break;			}		}		_TIFFfree((char *)l);	}	return (ok);}/* * Fetch an array of FLOAT values. */static intTIFFFetchFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v){	if (dir->tdir_count == 1) {		v[0] = *(float*) &dir->tdir_offset;		TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);		return (1);	} else	if (TIFFFetchData(tif, dir, (char*) v)) {		TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);		return (1);	} else		return (0);}/* * Fetch an array of DOUBLE values. */static intTIFFFetchDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v){	if (TIFFFetchData(tif, dir, (char*) v)) {		TIFFCvtIEEEDoubleToNative(tif, dir->tdir_count, v);		return (1);	} else		return (0);}/* * Fetch an array of ANY values.  The actual values are * returned as doubles which should be able hold all the * types.  Yes, there really should be an tany_t to avoid * this potential non-portability ...  Note in particular * that we assume that the double return value vector is * large enough to read in any fundamental type.  We use * that vector as a buffer to read in the base type vector * and then convert it in place to double (from end * to front of course). */static intTIFFFetchAnyArray(TIFF* tif, TIFFDirEntry* dir, double* v){	int i;	switch (dir->tdir_type) {	case TIFF_BYTE:	case TIFF_SBYTE:		if (!TIFFFetchByteArray(tif, dir, (uint16*) v))			return (0);		if (dir->tdir_type == TIFF_BYTE) {			uint16* vp = (uint16*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		} else {			int16* vp = (int16*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		}		break;	case TIFF_SHORT:	case TIFF_SSHORT:		if (!TIFFFetchShortArray(tif, dir, (uint16*) v))			return (0);		if (dir->tdir_type == TIFF_SHORT) {			uint16* vp = (uint16*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		} else {			int16* vp = (int16*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		}		break;	case TIFF_LONG:	case TIFF_SLONG:		if (!TIFFFetchLongArray(tif, dir, (uint32*) v))			return (0);		if (dir->tdir_type == TIFF_LONG) {			uint32* vp = (uint32*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		} else {			int32* vp = (int32*) v;			for (i = dir->tdir_count-1; i >= 0; i--)				v[i] = vp[i];		}		break;	case TIFF_RATIONAL:	case TIFF_SRATIONAL:		if (!TIFFFetchRationalArray(tif, dir, (float*) v))			return (0);		{ float* vp = (float*) v;		  for (i = dir->tdir_count-1; i >= 0; i--)			v[i] = vp[i];		}		break;	case TIFF_FLOAT:		if (!TIFFFetchFloatArray(tif, dir, (float*) v))			return (0);		{ float* vp = (float*) v;		  for (i = dir->tdir_count-1; i >= 0; i--)			v[i] = vp[i];		}		break;	case TIFF_DOUBLE:		return (TIFFFetchDoubleArray(tif, dir, (double*) v));	default:		/* TIFF_NOTYPE */		/* TIFF_ASCII */		/* TIFF_UNDEFINED */		TIFFError(tif->tif_name,		    "Cannot read TIFF_ANY type %d for field \"%s\"",		    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);		return (0);	}	return (1);}/* * Fetch a tag that is not handled by special case code. *//* The standard function TIFFFetchNormalTag() could definitely be replaced   with a simple call to this function, just adding TIFFSetField() as the   last argument. */static intTIFFFetchNormalSubTag(TIFF* tif, TIFFDirEntry* dp, const TIFFFieldInfo* fip,		      int (*setFieldFn)(TIFF *tif, ttag_t tag, ...)){	static char mesg[] = "to fetch tag value";	int ok = 0;	if (dp->tdir_count > 1) {		/* array of values */		char* cp = NULL;		switch (dp->tdir_type) {		case TIFF_BYTE:		case TIFF_SBYTE:			/* NB: always expand BYTE values to shorts */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品久| 亚洲欧美日韩国产手机在线| 樱花影视一区二区| 成人黄色a**站在线观看| 国产亚洲欧美一区在线观看| 国产精品中文字幕日韩精品 | 国产精品成人免费在线| 风间由美一区二区三区在线观看| 精品国产不卡一区二区三区| 久久精品国产亚洲a| 精品久久99ma| 国内国产精品久久| 久久久久久久av麻豆果冻| 国产精品性做久久久久久| 国产欧美一区视频| 成人avav影音| 亚洲另类在线制服丝袜| 欧美色视频在线观看| 午夜精品影院在线观看| 欧美一级日韩免费不卡| 麻豆久久久久久| 久久日韩粉嫩一区二区三区| 国产.欧美.日韩| 亚洲人成网站在线| 欧美在线观看禁18| 日韩福利电影在线| 精品少妇一区二区三区日产乱码| 国产一区二区三区四区五区入口| 国产亚洲精品久| 99久久免费视频.com| 一区二区三区四区蜜桃| 欧美精品99久久久**| 久久成人免费电影| 亚洲国产精品传媒在线观看| 色综合一区二区三区| 婷婷综合在线观看| 欧美v日韩v国产v| 不卡一区中文字幕| 亚洲五码中文字幕| 亚洲精品一区二区三区99| 成人免费视频caoporn| 亚洲一区二区在线免费看| 欧美一卡2卡3卡4卡| 国产91富婆露脸刺激对白| 亚洲综合男人的天堂| 日韩限制级电影在线观看| 成人自拍视频在线| 五月天激情综合网| 久久先锋影音av鲁色资源| 91香蕉视频mp4| 男人的j进女人的j一区| 国产欧美一区二区精品性色超碰| 欧洲精品视频在线观看| 久久精品噜噜噜成人av农村| 国产精品福利电影一区二区三区四区| 欧美网站大全在线观看| 国产一区二区三区四| 一区二区三区在线高清| 欧美精品一区二区在线观看| 色综合中文字幕| 国产综合久久久久影院| 日韩精品一区二区三区老鸭窝 | 国内精品久久久久影院色| 亚洲欧美自拍偷拍| 欧美一区二区三区四区视频| 成人性色生活片免费看爆迷你毛片| 亚洲精品日韩一| 26uuu国产在线精品一区二区| 色网综合在线观看| 国产综合一区二区| 亚洲国产视频一区| 日本一区二区在线不卡| 91精品国产综合久久婷婷香蕉| 国产成人在线视频免费播放| 亚洲成av人片在线观看| 国产精品国产三级国产专播品爱网 | 亚洲激情在线播放| 久久先锋资源网| 欧美精品久久99久久在免费线 | 国产一区不卡视频| 亚洲国产aⅴ成人精品无吗| 日本一区二区三区国色天香 | 国产日韩欧美精品一区| 91精品欧美一区二区三区综合在 | 一个色在线综合| 久久久www成人免费无遮挡大片 | 制服丝袜在线91| 91麻豆国产香蕉久久精品| 国产精品一区2区| 美美哒免费高清在线观看视频一区二区 | 国产香蕉久久精品综合网| 69p69国产精品| 日本高清不卡一区| 高清不卡一二三区| 国产在线视视频有精品| 视频在线观看一区| 亚洲精品欧美综合四区| 国产精品日韩成人| 久久久亚洲欧洲日产国码αv| 欧美色网站导航| 成人h动漫精品一区二区 | 日韩免费观看2025年上映的电影| 色一情一伦一子一伦一区| 夫妻av一区二区| 国精产品一区一区三区mba视频| 日韩av中文字幕一区二区三区| 一区二区三区在线观看动漫| 国产精品久久久久久久久免费相片| 精品99999| 日韩一卡二卡三卡| 欧美一区二区三区白人| 欧美日韩一区二区三区四区五区| 91啦中文在线观看| 99re热视频精品| 成人av电影在线网| 成人高清在线视频| 成人一区二区三区中文字幕| 国产成人精品免费视频网站| 国产老女人精品毛片久久| 精品无人码麻豆乱码1区2区| 蜜桃av噜噜一区| 日韩综合在线视频| 天天色 色综合| 三级久久三级久久| 天天爽夜夜爽夜夜爽精品视频| 亚洲一区二区三区四区的 | 中文字幕中文乱码欧美一区二区| 国产偷国产偷亚洲高清人白洁 | 欧美一区二区三区精品| 在线不卡免费欧美| 欧美精品视频www在线观看| 欧美日韩在线亚洲一区蜜芽| 欧美日韩一区 二区 三区 久久精品 | 韩国精品主播一区二区在线观看| 久久精品国产久精国产爱| 日韩av电影免费观看高清完整版在线观看 | 日韩欧美亚洲国产另类| 日韩一区二区三区视频| 日韩区在线观看| 2017欧美狠狠色| 亚洲国产精品高清| 一区在线播放视频| 亚洲综合一区二区三区| 亚洲第一会所有码转帖| 日本视频中文字幕一区二区三区| 日本不卡中文字幕| 蜜臀a∨国产成人精品| 经典一区二区三区| 国产成人在线视频免费播放| www.欧美色图| 欧美在线色视频| 欧美肥妇毛茸茸| 欧美一二三在线| 国产清纯白嫩初高生在线观看91| 亚洲欧美综合色| 午夜久久久久久| 国产一区二区三区免费播放 | 国产aⅴ精品一区二区三区色成熟| 成人午夜精品在线| 一本大道av一区二区在线播放| 欧美日韩一区二区三区免费看| 日韩一区二区三区精品视频| 国产亚洲精品超碰| 一区二区三区四区高清精品免费观看| 亚洲国产精品影院| 久久爱www久久做| bt欧美亚洲午夜电影天堂| 欧美三级一区二区| 精品免费视频.| 综合激情成人伊人| 中文字幕中文字幕一区| 日韩午夜精品视频| 日韩午夜av电影| 中文字幕免费一区| 亚洲人一二三区| 蜜臀a∨国产成人精品| 成人免费毛片高清视频| 欧美丝袜自拍制服另类| 精品国产123| 中文字幕一区二区三区精华液| 天堂成人国产精品一区| 国产精品一区在线观看你懂的| 色综合天天狠狠| 精品少妇一区二区三区在线播放 | 色婷婷久久综合| 日韩一区二区电影网| 亚洲欧洲色图综合| 蜜桃视频在线观看一区| 91丨porny丨国产入口| 91精品国产乱码| 国产精品激情偷乱一区二区∴| 日本欧美一区二区三区| 成人av免费在线播放| 91麻豆精品国产91久久久久久久久 | 久久精品国产999大香线蕉| 99精品视频在线播放观看| 日韩欧美一区二区在线视频| 亚洲嫩草精品久久| 国产激情一区二区三区| 欧美精品久久99|