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

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

?? tif_dirwrite.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
	data = (char*) _TIFFmalloc(dirsize);	if (data == NULL) {		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			     "Cannot write directory, out of space");		return (0);	}	/*	 * Put the directory  at the end of the file.	 */	tif->tif_diroff = (TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;	tif->tif_dataoff = (toff_t)(	    tif->tif_diroff + sizeof (uint16) + dirsize + sizeof (toff_t));	if (tif->tif_dataoff & 1)		tif->tif_dataoff++;	(void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);	dir = (TIFFDirEntry*) data;	/*	 * Setup external form of directory	 * entries and write data items.	 */	_TIFFmemcpy(fields, td->td_fieldsset, sizeof (fields));	for (fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {		const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];		/*		 * For custom fields, we test to see if the custom field		 * is set or not.  For normal fields, we just use the		 * FieldSet test.		*/		if( fip->field_bit == FIELD_CUSTOM )		{			int ci, is_set = FALSE;			for( ci = 0; ci < td->td_customValueCount; ci++ )				is_set |= (td->td_customValues[ci].info == fip);			if( !is_set )				continue;		}		else if (!FieldSet(fields, fip->field_bit))			continue;                		if( fip->field_bit != FIELD_CUSTOM )			ResetFieldBit(fields, fip->field_bit);	}	/*	 * Write directory.	 */	dircount = (uint16) nfields;	*pdiroff = (uint32) tif->tif_nextdiroff;	if (tif->tif_flags & TIFF_SWAB) {		/*		 * The file's byte order is opposite to the		 * native machine architecture.  We overwrite		 * the directory information with impunity		 * because it'll be released below after we		 * write it to the file.  Note that all the		 * other tag construction routines assume that		 * we do this byte-swapping; i.e. they only		 * byte-swap indirect data.		 */		for (dir = (TIFFDirEntry*) data; dircount; dir++, dircount--) {			TIFFSwabArrayOfShort(&dir->tdir_tag, 2);			TIFFSwabArrayOfLong(&dir->tdir_count, 2);		}		dircount = (uint16) nfields;		TIFFSwabShort(&dircount);		TIFFSwabLong(pdiroff);	}	(void) TIFFSeekFile(tif, tif->tif_diroff, SEEK_SET);	if (!WriteOK(tif, &dircount, sizeof (dircount))) {		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			     "Error writing directory count");		goto bad;	}	if (!WriteOK(tif, data, dirsize)) {		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			     "Error writing directory contents");		goto bad;	}	if (!WriteOK(tif, pdiroff, sizeof (uint32))) {		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			     "Error writing directory link");		goto bad;	}	_TIFFfree(data);	return (1);bad:	_TIFFfree(data);	return (0);}intTIFFWriteCustomDirectory(TIFF* tif, toff_t *pdiroff){	return _TIFFWriteCustomDirectory(tif, pdiroff);}/* * Process tags that are not special cased. */static intTIFFWriteNormalTag(TIFF* tif, TIFFDirEntry* dir, const TIFFFieldInfo* fip){	uint16 wc = (uint16) fip->field_writecount;	uint32 wc2;	dir->tdir_tag = (uint16) fip->field_tag;	dir->tdir_type = (uint16) fip->field_type;	dir->tdir_count = wc;		switch (fip->field_type) {	case TIFF_SHORT:	case TIFF_SSHORT:		if (fip->field_passcount) {			uint16* wp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &wp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &wp);				dir->tdir_count = wc;			}			if (!TIFFWriteShortArray(tif, dir, wp))				return 0;		} else {			if (wc == 1) {				uint16 sv;				TIFFGetField(tif, fip->field_tag, &sv);				dir->tdir_offset =					TIFFInsertData(tif, dir->tdir_type, sv);			} else {				uint16* wp;				TIFFGetField(tif, fip->field_tag, &wp);				if (!TIFFWriteShortArray(tif, dir, wp))					return 0;			}		}		break;	case TIFF_LONG:	case TIFF_SLONG:	case TIFF_IFD:		if (fip->field_passcount) {			uint32* lp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &lp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &lp);				dir->tdir_count = wc;			}			if (!TIFFWriteLongArray(tif, dir, lp))				return 0;		} else {			if (wc == 1) {				/* XXX handle LONG->SHORT conversion */				TIFFGetField(tif, fip->field_tag,					     &dir->tdir_offset);			} else {				uint32* lp;				TIFFGetField(tif, fip->field_tag, &lp);				if (!TIFFWriteLongArray(tif, dir, lp))					return 0;			}		}		break;	case TIFF_RATIONAL:	case TIFF_SRATIONAL:		if (fip->field_passcount) {			float* fp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &fp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &fp);				dir->tdir_count = wc;			}			if (!TIFFWriteRationalArray(tif, dir, fp))				return 0;		} else {			if (wc == 1) {				float fv;				TIFFGetField(tif, fip->field_tag, &fv);				if (!TIFFWriteRationalArray(tif, dir, &fv))					return 0;			} else {				float* fp;				TIFFGetField(tif, fip->field_tag, &fp);				if (!TIFFWriteRationalArray(tif, dir, fp))					return 0;			}		}		break;	case TIFF_FLOAT:		if (fip->field_passcount) {			float* fp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &fp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &fp);				dir->tdir_count = wc;			}			if (!TIFFWriteFloatArray(tif, dir, fp))				return 0;		} else {			if (wc == 1) {				float fv;				TIFFGetField(tif, fip->field_tag, &fv);				if (!TIFFWriteFloatArray(tif, dir, &fv))					return 0;			} else {				float* fp;				TIFFGetField(tif, fip->field_tag, &fp);				if (!TIFFWriteFloatArray(tif, dir, fp))					return 0;			}		}		break;	case TIFF_DOUBLE:		if (fip->field_passcount) {			double* dp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &dp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &dp);				dir->tdir_count = wc;			}			if (!TIFFWriteDoubleArray(tif, dir, dp))				return 0;		} else {			if (wc == 1) {				double dv;				TIFFGetField(tif, fip->field_tag, &dv);				if (!TIFFWriteDoubleArray(tif, dir, &dv))					return 0;			} else {				double* dp;				TIFFGetField(tif, fip->field_tag, &dp);				if (!TIFFWriteDoubleArray(tif, dir, dp))					return 0;			}		}		break;	case TIFF_ASCII:		{                     char* cp;                    if (fip->field_passcount)                    {                        if( wc == (uint16) TIFF_VARIABLE2 )                            TIFFGetField(tif, fip->field_tag, &wc2, &cp);                        else                            TIFFGetField(tif, fip->field_tag, &wc, &cp);                    }                    else                        TIFFGetField(tif, fip->field_tag, &cp);                    dir->tdir_count = (uint32) (strlen(cp) + 1);                    if (!TIFFWriteByteArray(tif, dir, cp))                        return (0);		}		break;        case TIFF_BYTE:        case TIFF_SBYTE:          		if (fip->field_passcount) {			char* cp;			if (wc == (uint16) TIFF_VARIABLE2) {				TIFFGetField(tif, fip->field_tag, &wc2, &cp);				dir->tdir_count = wc2;			} else {	/* Assume TIFF_VARIABLE */				TIFFGetField(tif, fip->field_tag, &wc, &cp);				dir->tdir_count = wc;			}			if (!TIFFWriteByteArray(tif, dir, cp))				return 0;		} else {			if (wc == 1) {				char cv;				TIFFGetField(tif, fip->field_tag, &cv);				if (!TIFFWriteByteArray(tif, dir, &cv))					return 0;			} else {				char* cp;				TIFFGetField(tif, fip->field_tag, &cp);				if (!TIFFWriteByteArray(tif, dir, cp))					return 0;			}		}                break;	case TIFF_UNDEFINED:		{ char* cp;		  if (wc == (unsigned short) TIFF_VARIABLE) {			TIFFGetField(tif, fip->field_tag, &wc, &cp);			dir->tdir_count = wc;		  } else if (wc == (unsigned short) TIFF_VARIABLE2) {			TIFFGetField(tif, fip->field_tag, &wc2, &cp);			dir->tdir_count = wc2;		  } else 			TIFFGetField(tif, fip->field_tag, &cp);		  if (!TIFFWriteByteArray(tif, dir, cp))			return (0);		}		break;        case TIFF_NOTYPE:                break;	}	return (1);}/* * Setup a directory entry with either a SHORT * or LONG type according to the value. */static voidTIFFSetupShortLong(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint32 v){	dir->tdir_tag = (uint16) tag;	dir->tdir_count = 1;	if (v > 0xffffL) {		dir->tdir_type = (short) TIFF_LONG;		dir->tdir_offset = v;	} else {		dir->tdir_type = (short) TIFF_SHORT;		dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);	}}/* * Setup a SHORT directory entry */static voidTIFFSetupShort(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint16 v){	dir->tdir_tag = (uint16) tag;	dir->tdir_count = 1;	dir->tdir_type = (short) TIFF_SHORT;	dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);}#undef MakeShortDirent#define	NITEMS(x)	(sizeof (x) / sizeof (x[0]))/* * Setup a directory entry that references a * samples/pixel array of SHORT values and * (potentially) write the associated indirect * values. */static intTIFFWritePerSampleShorts(TIFF* tif, ttag_t tag, TIFFDirEntry* dir){	uint16 buf[10], v;	uint16* w = buf;	uint16 i, samples = tif->tif_dir.td_samplesperpixel;	int status;	if (samples > NITEMS(buf)) {		w = (uint16*) _TIFFmalloc(samples * sizeof (uint16));		if (w == NULL) {			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			    "No space to write per-sample shorts");			return (0);		}	}	TIFFGetField(tif, tag, &v);	for (i = 0; i < samples; i++)		w[i] = v;		dir->tdir_tag = (uint16) tag;	dir->tdir_type = (uint16) TIFF_SHORT;	dir->tdir_count = samples;	status = TIFFWriteShortArray(tif, dir, w);	if (w != buf)		_TIFFfree((char*) w);	return (status);}/* * Setup a directory entry that references a samples/pixel array of ``type'' * values and (potentially) write the associated indirect values.  The source * data from TIFFGetField() for the specified tag must be returned as double. */static intTIFFWritePerSampleAnys(TIFF* tif,    TIFFDataType type, ttag_t tag, TIFFDirEntry* dir){	double buf[10], v;	double* w = buf;	uint16 i, samples = tif->tif_dir.td_samplesperpixel;	int status;	if (samples > NITEMS(buf)) {		w = (double*) _TIFFmalloc(samples * sizeof (double));		if (w == NULL) {			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,			    "No space to write per-sample values");			return (0);		}	}	TIFFGetField(tif, tag, &v);	for (i = 0; i < samples; i++)		w[i] = v;	status = TIFFWriteAnyArray(tif, type, tag, dir, samples, w);	if (w != buf)		_TIFFfree(w);	return (status);}#undef NITEMS/* * Setup a pair of shorts that are returned by * value, rather than as a reference to an array. */static intTIFFSetupShortPair(TIFF* tif, ttag_t tag, TIFFDirEntry* dir){	uint16 v[2];	TIFFGetField(tif, tag, &v[0], &v[1]);	dir->tdir_tag = (uint16) tag;	dir->tdir_type = (uint16) TIFF_SHORT;	dir->tdir_count = 2;	return (TIFFWriteShortArray(tif, dir, v));}/* * Setup a directory entry for an NxM table of shorts, * where M is known to be 2**bitspersample, and write * the associated indirect data. */static intTIFFWriteShortTable(TIFF* tif,    ttag_t tag, TIFFDirEntry* dir, uint32 n, uint16** table){	uint32 i, off;	dir->tdir_tag = (uint16) tag;	dir->tdir_type = (short) TIFF_SHORT;	/* XXX -- yech, fool TIFFWriteData */	dir->tdir_count = (uint32) (1L<<tif->tif_dir.td_bitspersample);	off = tif->tif_dataoff;	for (i = 0; i < n; i++)		if (!TIFFWriteData(tif, dir, (char *)table[i]))			return (0);	dir->tdir_count *= n;	dir->tdir_offset = off;	return (1);}/* * Write/copy data associated with an ASCII or opaque tag value. */static intTIFFWriteByteArray(TIFF* tif, TIFFDirEntry* dir, char* cp){	if (dir->tdir_count > 4) {		if (!TIFFWriteData(tif, dir, cp))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品观看| 中文字幕一区二区三区精华液| 欧美激情一区二区三区全黄| 成人综合婷婷国产精品久久| 亚洲码国产岛国毛片在线| 色欧美日韩亚洲| 国产原创一区二区| 亚洲国产精品黑人久久久| 日韩三级视频在线观看| 日韩一区二区精品葵司在线 | 国产欧美一区二区三区在线看蜜臀| 久久久精品综合| 亚洲精品一二三四区| 日产国产欧美视频一区精品| 国产91精品免费| 欧美日韩国产一二三| 久久久久亚洲综合| 午夜国产精品一区| 成人黄色小视频| 欧美日韩亚洲另类| 国产亚洲精品超碰| 日产国产欧美视频一区精品| av资源站一区| 精品国产乱码久久久久久图片| 亚洲女人的天堂| 国产大陆亚洲精品国产| 在线电影院国产精品| 中文字幕在线观看不卡| 国产精品一区一区三区| 91精品国产免费| 午夜欧美电影在线观看| 不卡视频在线看| 中文字幕不卡的av| 国产一区美女在线| 日韩视频免费观看高清完整版 | 久久成人免费电影| 538prom精品视频线放| 午夜精品成人在线视频| 欧美日韩精品一区二区天天拍小说| 亚洲欧洲另类国产综合| 国产精品一区二区三区网站| wwwwww.欧美系列| 久久精品国产网站| 日韩美一区二区三区| 蜜臀a∨国产成人精品| 日韩欧美在线综合网| 激情成人午夜视频| 久久精品一区二区| 波多野结衣在线aⅴ中文字幕不卡| 精品久久久久久无| 国产精品一二三在| 综合久久国产九一剧情麻豆| 91色porny蝌蚪| 视频一区中文字幕| 久久综合一区二区| a4yy欧美一区二区三区| 亚洲国产sm捆绑调教视频| 欧美电影一区二区| 成人丝袜18视频在线观看| 中文成人综合网| 欧美午夜视频网站| 久久精品国产77777蜜臀| 中文成人av在线| 欧美人妇做爰xxxⅹ性高电影| 美女视频一区在线观看| 国产精品妹子av| 6080yy午夜一二三区久久| 成人天堂资源www在线| 亚洲成人午夜电影| 国产喂奶挤奶一区二区三区| 欧美色图片你懂的| 成人国产在线观看| 另类的小说在线视频另类成人小视频在线| 国产视频一区在线观看| 欧美日韩在线综合| 波多野结衣视频一区| 国精品**一区二区三区在线蜜桃| 亚洲免费色视频| 久久精品日产第一区二区三区高清版| 在线观看成人小视频| 国产98色在线|日韩| 久久精品国产成人一区二区三区| 日韩毛片一二三区| 国产日韩欧美精品在线| 91麻豆精品91久久久久同性| 91传媒视频在线播放| 福利一区二区在线观看| 国产老妇另类xxxxx| 免费在线一区观看| 婷婷综合久久一区二区三区| 亚洲一区影音先锋| 亚洲综合色自拍一区| 亚洲精品伦理在线| 日韩一区有码在线| 国产精品久久久久久一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 日韩欧美国产三级| 欧美精品一区二区三区在线播放| 日韩一区二区三区高清免费看看| 欧美日本高清视频在线观看| 欧美精品久久一区| 日韩欧美一区中文| 国产亚洲一二三区| 欧美激情中文不卡| 中文字幕日本乱码精品影院| 亚洲欧洲av一区二区三区久久| 亚洲色图欧洲色图婷婷| 亚洲狠狠爱一区二区三区| 无码av中文一区二区三区桃花岛| 午夜精品123| 国产美女在线观看一区| 国产福利不卡视频| 色成年激情久久综合| 91精品欧美综合在线观看最新| 欧美一区二区播放| 国产欧美视频在线观看| 亚洲综合视频网| 国产精品资源在线看| 色综合一个色综合| 日韩欧美中文字幕精品| 亚洲素人一区二区| 免费三级欧美电影| 91丨porny丨首页| 久久久久国产精品麻豆| 夜色激情一区二区| 不卡免费追剧大全电视剧网站| 欧美日韩www| 亚洲人精品午夜| 激情都市一区二区| 欧美一区二区三区不卡| 亚洲日本在线天堂| 懂色一区二区三区免费观看| 91.com在线观看| 亚洲婷婷在线视频| 国产福利91精品| 亚洲精品一区二区三区福利 | 国产精品久久久久aaaa| 亚洲欧美乱综合| 激情另类小说区图片区视频区| 在线观看网站黄不卡| 精品久久久久久久久久久久包黑料| 亚洲欧洲国产日本综合| 久久99精品一区二区三区| 欧美日韩一级视频| 自拍偷拍国产精品| 国产宾馆实践打屁股91| www久久久久| 麻豆国产精品官网| 欧美丰满高潮xxxx喷水动漫| 亚洲一区二区三区国产| 成人黄色av网站在线| 久久人人超碰精品| 国产一区二区美女诱惑| 精品国产一区二区三区av性色| 亚洲线精品一区二区三区| 91麻豆自制传媒国产之光| 精品久久久久久亚洲综合网| 国产一区欧美日韩| 久久夜色精品一区| 国产精品羞羞答答xxdd| 国产农村妇女毛片精品久久麻豆| 精品亚洲欧美一区| 久久一夜天堂av一区二区三区 | 亚洲一区二区三区视频在线播放| av午夜精品一区二区三区| 日韩欧美在线综合网| 国产精品资源在线观看| 久久精品日产第一区二区三区高清版 | av在线播放一区二区三区| 亚洲精品中文在线影院| 99精品热视频| 亚洲国产精品黑人久久久| 成人黄色av电影| 久久精品国内一区二区三区| 91精品国产高清一区二区三区蜜臀 | 亚洲精品视频在线| 欧美日韩免费一区二区三区视频| 香蕉乱码成人久久天堂爱免费| 97精品国产97久久久久久久久久久久 | 亚洲欧美日韩国产综合| 欧美日韩高清在线| 图片区小说区区亚洲影院| 久久精品欧美一区二区三区不卡 | 久久久久久久久久久久久久久99| 精品亚洲国产成人av制服丝袜| 成人免费一区二区三区在线观看| 欧美日韩在线三区| 丰满少妇在线播放bd日韩电影| 亚洲bt欧美bt精品777| 久久精品亚洲一区二区三区浴池| 色综合中文字幕国产 | 欧美一级欧美三级| 色婷婷狠狠综合| 激情都市一区二区| 日韩av一区二区三区四区| 在线免费不卡电影| 岛国精品在线播放| 激情久久五月天| 蜜臀久久99精品久久久久久9| 国产日韩欧美一区二区三区乱码|