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

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

?? tif_pdsdirwrite.c

?? tiff格式傳真源碼例子
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_pdsdirwrite.c,v 1.2 2003/11/17 15:09:39 dron Exp $ *//* When writing data to TIFF files, it is often useful to store application-   specific data in a private TIFF directory so that the tags don't need to   be registered and won't conflict with other people's user-defined tags.   One needs to have a registered public tag which contains some amount of   raw data. That raw data, however, is interpreted at an independent,   separate, private tiff directory. This file provides some routines which   will be useful for converting that data from its raw binary form into   the proper form for your application.*//* * Copyright (c) 1988-1996 Sam Leffler * Copyright (c) 1991-1996 Silicon Graphics, Inc. * Copyright (c( 1996 USAF Phillips Laboratory * * 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. *//* * TIFF Library. * * These routines written by Conrad J. Poelman on a single late-night of * March 20-21, 1996. * * The entire purpose of this file is to provide a single external function, * TIFFWritePrivateDataSubDirectory(). This function is intended for use * in writing a private subdirectory structure into a TIFF file. The * actual reading of data from the structure is handled by the getFieldFn(), * which is passed to TIFFWritePrivateDataSubDirectory() as a parameter. The * idea is to enable any application wishing to read private subdirectories to * do so easily using this function, without modifying the TIFF library. * * The astute observer will notice that only two functions are at all different * from the original tif_dirwrite.c file: TIFFWritePrivateDataSubDirectory()and * TIFFWriteNormalSubTag(). All the other stuff that makes this file so huge * is only necessary because all of those functions are declared static in * tif_dirwrite.c, so we have to totally duplicate them in order to use them. * * Oh, also please note the bug-fix in the routine TIFFWriteNormalSubTag(), * which equally should be applied to TIFFWriteNormalTag(). * */#include "tiffiop.h"#if HAVE_IEEEFP#define	TIFFCvtNativeToIEEEFloat(tif, n, fp)#define	TIFFCvtNativeToIEEEDouble(tif, n, dp)#elseextern	void TIFFCvtNativeToIEEEFloat(TIFF*, uint32, float*);extern	void TIFFCvtNativeToIEEEDouble(TIFF*, uint32, double*);#endifstatic	int TIFFWriteNormalTag(TIFF*, TIFFDirEntry*, const TIFFFieldInfo*);static	int TIFFWriteNormalSubTag(TIFF*, TIFFDirEntry*, const TIFFFieldInfo*,				  int (*getFieldFn)(TIFF *tif,ttag_t tag,...));static	void TIFFSetupShortLong(TIFF*, ttag_t, TIFFDirEntry*, uint32);static	int TIFFSetupShortPair(TIFF*, ttag_t, TIFFDirEntry*);static	int TIFFWritePerSampleShorts(TIFF*, ttag_t, TIFFDirEntry*);static	int TIFFWritePerSampleAnys(TIFF*, TIFFDataType, ttag_t, TIFFDirEntry*);static	int TIFFWriteShortTable(TIFF*, ttag_t, TIFFDirEntry*, uint32, uint16**);static	int TIFFWriteShortArray(TIFF*,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, uint16*);static	int TIFFWriteLongArray(TIFF *,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, uint32*);static	int TIFFWriteRationalArray(TIFF *,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, float*);static	int TIFFWriteFloatArray(TIFF *,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, float*);static	int TIFFWriteDoubleArray(TIFF *,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, double*);static	int TIFFWriteByteArray(TIFF*, TIFFDirEntry*, char*);static	int TIFFWriteAnyArray(TIFF*,	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, double*);#ifdef COLORIMETRY_SUPPORTstatic	int TIFFWriteTransferFunction(TIFF*, TIFFDirEntry*);#endifstatic	int TIFFWriteData(TIFF*, TIFFDirEntry*, char*);static	int TIFFLinkDirectory(TIFF*);#define	WriteRationalPair(type, tag1, v1, tag2, v2) {		\	if (!TIFFWriteRational(tif, type, tag1, dir, v1))	\		goto bad;					\	if (!TIFFWriteRational(tif, type, tag2, dir+1, v2))	\		goto bad;					\	dir++;							\}#define	TIFFWriteRational(tif, type, tag, dir, v) \	TIFFWriteRationalArray((tif), (type), (tag), (dir), 1, &(v))#ifndef TIFFWriteRationalstatic	int TIFFWriteRational(TIFF*,	    TIFFDataType, ttag_t, TIFFDirEntry*, float);#endif/* This function will write an entire directory to the disk, and return the   offset value indicating where in the file it wrote the beginning of the   directory structure. This is NOT the same as the offset value before   calling this function, because some of the fields may have caused various   data items to be written out BEFORE writing the directory structure.   This code was basically written by ripping of the TIFFWriteDirectory()    code and generalizing it, using RPS's TIFFWritePliIfd() code for   inspiration.  My original goal was to make this code general enough that   the original TIFFWriteDirectory() could be rewritten to just call this   function with the appropriate field and field-accessing arguments.   However, now I realize that there's a lot of code that gets executed for   the main, standard TIFF directories that does not apply to special   private subdirectories, so such a reimplementation for the sake of   eliminating redundant or duplicate code is probably not possible,   unless we also pass in a Main flag to indiciate which type of handling   to do, which would be kind of a hack. I've marked those places where I   changed or ripped out code which would have to be re-inserted to   generalize this function. If it can be done in a clean and graceful way,   it would be a great way to generalize the TIFF library. Otherwise, I'll   just leave this code here where it duplicates but remains on top of and   hopefully mostly independent of the main TIFF library.   The caller will probably want to free the sub directory structure after   returning from this call, since otherwise once written out, the user   is likely to forget about it and leave data lying around.*/toff_tTIFFWritePrivateDataSubDirectory(TIFF* tif,				 uint32 pdir_fieldsset[], int pdir_fields_last,				 TIFFFieldInfo *field_info,				 int (*getFieldFn)(TIFF *tif, ttag_t tag, ...)){	uint16 dircount;	uint32 diroff, nextdiroff;	ttag_t tag;	uint32 nfields;	tsize_t dirsize;	char* data;	TIFFDirEntry* dir;	u_long b, *fields, fields_size;	toff_t directory_offset;	TIFFFieldInfo* fip;	/*	 * Deleted out all of the encoder flushing and such code from here -	 * not necessary for subdirectories.	 */	/* Finish writing out any image data. */	TIFFFlushData(tif);	/*	 * Size the directory so that we can calculate	 * offsets for the data items that aren't kept	 * in-place in each field.	 */	nfields = 0;	for (b = 0; b <= pdir_fields_last; b++)		if (FieldSet(pdir_fieldsset, b))			/* Deleted code to make size of first 4 tags 2			   instead of 1. */			nfields += 1;	dirsize = nfields * sizeof (TIFFDirEntry);	data = (char*) _TIFFmalloc(dirsize);	if (data == NULL) {		TIFFError(tif->tif_name,		    "Cannot write private subdirectory, out of space");		return (0);	}	/*	 * Place directory in data section of the file. If there isn't one	 * yet, place it at the end of the file. The directory is treated as	 * data, so we don't link it into the directory structure at all.	 */	if (tif->tif_dataoff == 0)	    tif->tif_dataoff =(TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;	diroff = tif->tif_dataoff;	tif->tif_dataoff = (toff_t)(	    diroff + sizeof (uint16) + dirsize + sizeof (toff_t));	if (tif->tif_dataoff & 1)		tif->tif_dataoff++;	(void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);	/*tif->tif_curdir++;*/	dir = (TIFFDirEntry*) data;	/*	 * Setup external form of directory	 * entries and write data items.	 */	/*	 * We make a local copy of the fieldsset here so that we don't mess	 * up the original one when we call ResetFieldBit(). But I'm not sure	 * why the original code calls ResetFieldBit(), since we're already	 * going through the fields in order...	 *	 * fields_size is the number of uint32's we will need to hold the	 * bit-mask for all of the fields. If our highest field number is	 * 100, then we'll need 100 / (8*4)+1 == 4 uint32's to hold the	 * fieldset.	 *	 * Unlike the original code, we allocate fields dynamically based	 * on the requested pdir_fields_last value, allowing private	 * data subdirectories to contain more than the built-in code's limit	 * of 95 tags in a directory.	 */	fields_size = pdir_fields_last / (8*sizeof(uint32)) + 1;	fields = _TIFFmalloc(fields_size*sizeof(uint32));	_TIFFmemcpy(fields, pdir_fieldsset, fields_size * sizeof(uint32));	/* Deleted "write out extra samples tag" code here. */	/* Deleted code for checking a billion little special cases for the	 * standard TIFF tags. Should add a general mechanism for overloading	 * write function for each field, just like Brian kept telling me!!!	 */	for (fip = field_info; fip->field_tag; fip++) {		/* Deleted code to check for FIELD_IGNORE!! */		if (/* fip->field_bit == FIELD_IGNORE || */		    !FieldSet(fields, fip->field_bit))			continue;		if (!TIFFWriteNormalSubTag(tif, dir, fip, getFieldFn))			goto bad;		dir++;		ResetFieldBit(fields, fip->field_bit);	}	/* Now we've written all of the referenced data, and are about to	   write the main directory structure, so grab the tif_dataoff value	   now so we can remember where we wrote the directory. */	directory_offset = tif->tif_dataoff;	/*	 * Write directory.	 */	dircount = (uint16) nfields;	/* Deleted code to link to the next directory - we set it to zero! */	nextdiroff = 0;	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(&nextdiroff);	}	(void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);	if (!WriteOK(tif, &dircount, sizeof (dircount))) {		TIFFError(tif->tif_name, "Error writing private subdirectory count");		goto bad;	}	if (!WriteOK(tif, data, dirsize)) {		TIFFError(tif->tif_name, "Error writing private subdirectory contents");		goto bad;	}	if (!WriteOK(tif, &nextdiroff, sizeof (nextdiroff))) {		TIFFError(tif->tif_name, "Error writing private subdirectory link");		goto bad;	}	tif->tif_dataoff += sizeof(dircount) + dirsize + sizeof(nextdiroff);	_TIFFfree(data);	_TIFFfree(fields);	tif->tif_flags &= ~TIFF_DIRTYDIRECT;#if (0)	/* This stuff commented out because I don't think we want it for	   subdirectories, but I could be wrong. */	(*tif->tif_cleanup)(tif);	/*	 * Reset directory-related state for subsequent	 * directories.	 */	TIFFDefaultDirectory(tif);	tif->tif_curoff = 0;	tif->tif_row = (uint32) -1;	tif->tif_curstrip = (tstrip_t) -1;#endif	return (directory_offset);bad:	_TIFFfree(data);	_TIFFfree(fields);	return (0);}#undef WriteRationalPair/* * Process tags that are not special cased. *//* The standard function TIFFWriteNormalTag() could definitely be replaced   with a simple call to this function, just adding TIFFGetField() as the   last argument. */static intTIFFWriteNormalSubTag(TIFF* tif, TIFFDirEntry* dir, const TIFFFieldInfo* fip,		      int (*getFieldFn)(TIFF *tif, ttag_t tag, ...)){	u_short wc = (u_short) fip->field_writecount;	dir->tdir_tag = fip->field_tag;	dir->tdir_type = (u_short) fip->field_type;	dir->tdir_count = wc;#define	WRITEF(x,y)	x(tif, fip->field_type, fip->field_tag, dir, wc, y)	switch (fip->field_type) {	case TIFF_SHORT:	case TIFF_SSHORT:		if (wc > 1) {			uint16* wp;			if (wc == (u_short) TIFF_VARIABLE) {				(*getFieldFn)(tif, fip->field_tag, &wc, &wp);				dir->tdir_count = wc;			} else				(*getFieldFn)(tif, fip->field_tag, &wp);			if (!WRITEF(TIFFWriteShortArray, wp))				return (0);		} else {			uint16 sv;			(*getFieldFn)(tif, fip->field_tag, &sv);			dir->tdir_offset =			    TIFFInsertData(tif, dir->tdir_type, sv);		}		break;	case TIFF_LONG:	case TIFF_SLONG:		if (wc > 1) {			uint32* lp;			if (wc == (u_short) TIFF_VARIABLE) {				(*getFieldFn)(tif, fip->field_tag, &wc, &lp);				dir->tdir_count = wc;			} else				(*getFieldFn)(tif, fip->field_tag, &lp);			if (!WRITEF(TIFFWriteLongArray, lp))				return (0);		} else {			/* XXX handle LONG->SHORT conversion */			(*getFieldFn)(tif, fip->field_tag, &dir->tdir_offset);		}		break;	case TIFF_RATIONAL:	case TIFF_SRATIONAL:		if (wc > 1) {			float* fp;			if (wc == (u_short) TIFF_VARIABLE) {				(*getFieldFn)(tif, fip->field_tag, &wc, &fp);				dir->tdir_count = wc;			} else				(*getFieldFn)(tif, fip->field_tag, &fp);			if (!WRITEF(TIFFWriteRationalArray, fp))				return (0);		} else {			float fv;			(*getFieldFn)(tif, fip->field_tag, &fv);			if (!WRITEF(TIFFWriteRationalArray, &fv))				return (0);		}		break;	case TIFF_FLOAT:		if (wc > 1) {			float* fp;			if (wc == (u_short) TIFF_VARIABLE) {				(*getFieldFn)(tif, fip->field_tag, &wc, &fp);				dir->tdir_count = wc;			} else				(*getFieldFn)(tif, fip->field_tag, &fp);			if (!WRITEF(TIFFWriteFloatArray, fp))				return (0);		} else {			float fv;			(*getFieldFn)(tif, fip->field_tag, &fv);			if (!WRITEF(TIFFWriteFloatArray, &fv))				return (0);		}		break;	case TIFF_DOUBLE:		/* Hey - I think this is a bug, or at least a "gross		   inconsistency", in the TIFF library. Look at the original		   TIFF library code below within the "#if (0) ... #else".		   Just from the type of *dp, you can see that this code		   expects TIFFGetField() to be handed a double ** for		   any TIFF_DOUBLE tag, even for the constant wc==1 case.		   This is totally inconsistent with other fields (like		   TIFF_FLOAT, above) and is also inconsistent with the		   TIFFSetField() function for TIFF_DOUBLEs, which expects		   to be passed a single double by value for the wc==1 case.		   (See the handling of TIFFFetchNormalTag() in tif_dirread.c		   for an example.) Maybe this function was written before		   TIFFWriteDoubleArray() was written, not that that's an		   excuse. Anyway, the new code below is a trivial modification		   of the TIFF_FLOAT code above. The fact that even single		   doubles get written out in the data segment and get an		   offset value stored is irrelevant here - that is all		   handled by TIFFWriteDoubleArray(). */#if (0)		{ double* dp;		  if (wc == (u_short) TIFF_VARIABLE) {			(*getFieldFn)(tif, fip->field_tag, &wc, &dp);			dir->tdir_count = wc;		  } else			(*getFieldFn)(tif, fip->field_tag, &dp);		  TIFFCvtNativeToIEEEDouble(tif, wc, dp);		  if (!TIFFWriteData(tif, dir, (char*) dp))			return (0);		}#else		if (wc > 1) {			double* dp;			if (wc == (u_short) TIFF_VARIABLE) {				(*getFieldFn)(tif, fip->field_tag, &wc, &dp);				dir->tdir_count = wc;			} else				(*getFieldFn)(tif, fip->field_tag, &dp);			if (!WRITEF(TIFFWriteDoubleArray, dp))				return (0);		} else {			double dv;			(*getFieldFn)(tif, fip->field_tag, &dv);			if (!WRITEF(TIFFWriteDoubleArray, &dv))				return (0);		}#endif		break;	case TIFF_ASCII:		{ char* cp;		  (*getFieldFn)(tif, fip->field_tag, &cp);		  dir->tdir_count = (uint32) (strlen(cp) + 1);		  if (!TIFFWriteByteArray(tif, dir, cp))			return (0);		}		break;	case TIFF_UNDEFINED:		{ char* cp;		  if (wc == (u_short) TIFF_VARIABLE) {			(*getFieldFn)(tif, fip->field_tag, &wc, &cp);			dir->tdir_count = wc;		  } else 			(*getFieldFn)(tif, fip->field_tag, &cp);		  if (!TIFFWriteByteArray(tif, dir, cp))			return (0);		}		break;	}	return (1);}#undef WRITEF/* Everything after this is exactly duplicated from the standard tif_dirwrite.c   file, necessitated by the fact that they are declared static there so   we can't call them!*//* * 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 = tag;	dir->tdir_count = 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线观看免费| 国产精品久久久久久福利一牛影视| 在线免费一区三区| 国产精品亚洲综合一区在线观看| 日本特黄久久久高潮| 久久91精品久久久久久秒播| 国产激情91久久精品导航 | 美女看a上一区| 性久久久久久久久久久久| 日本乱人伦aⅴ精品| 国产精品99久久久久| 一本久久a久久精品亚洲| 日韩一区二区免费在线电影| 国产午夜三级一区二区三| 一区二区三区高清| 国产一区二区剧情av在线| 欧美亚洲国产一区二区三区va| 国产精品免费看片| 婷婷一区二区三区| 91蜜桃传媒精品久久久一区二区| 精品成a人在线观看| 亚洲激情图片小说视频| 国产不卡一区视频| 26uuu亚洲| 精品一区二区成人精品| 久久美女艺术照精彩视频福利播放| 一区二区视频在线| 不卡在线观看av| 久久免费偷拍视频| 久久国产剧场电影| 欧美一区二区三区啪啪| 日本三级韩国三级欧美三级| 欧洲国产伦久久久久久久| 专区另类欧美日韩| 91黄色激情网站| 亚洲一区二区三区四区的| 欧美日韩电影在线播放| 蜜臀久久99精品久久久久久9| 精品日韩在线观看| 成熟亚洲日本毛茸茸凸凹| 日韩av在线免费观看不卡| 日韩视频免费观看高清完整版在线观看| 亚洲二区在线视频| 在线综合视频播放| 国产一区二区网址| 国产精品久久久久久久久晋中 | 亚洲成av人片在线观看无码| 欧美日韩精品一区二区| 国产九色sp调教91| 亚洲一区二三区| 精品国产sm最大网站免费看| av亚洲精华国产精华精华| 亚洲一区二区三区小说| 欧美精品一区二区久久婷婷| 99久久精品国产导航| 天天综合色天天| 久久久久高清精品| 欧美人妇做爰xxxⅹ性高电影 | 日韩一区二区三区精品视频 | 国产精品午夜在线| 欧美麻豆精品久久久久久| 国产一区二区在线影院| 亚洲国产一区二区三区| 中文字幕一区二区三区在线播放| 日韩欧美在线一区二区三区| 欧美日韩中文一区| 色8久久精品久久久久久蜜 | 欧美电视剧免费全集观看| 在线观看亚洲精品视频| 国产二区国产一区在线观看| 麻豆精品国产传媒mv男同 | 99精品视频一区二区三区| 国产成人精品免费视频网站| 蜜桃免费网站一区二区三区| 亚洲小说欧美激情另类| 亚洲国产wwwccc36天堂| 亚洲综合一二三区| 日韩精品每日更新| 老司机精品视频导航| 精品中文av资源站在线观看| 国产一区二区在线观看免费| 国产精品影视在线观看| 成人黄色777网| 91免费看`日韩一区二区| 色八戒一区二区三区| 欧美日韩国产电影| 欧美一级电影网站| 国产清纯美女被跳蛋高潮一区二区久久w | 99久久99精品久久久久久| 成人福利电影精品一区二区在线观看| 不卡一区二区三区四区| 在线观看视频91| 日韩西西人体444www| 久久久久久久久久看片| 亚洲美女在线一区| 亚洲va欧美va天堂v国产综合| 免费欧美在线视频| 97久久精品人人做人人爽50路| 欧美人狂配大交3d怪物一区| 久久网这里都是精品| 亚洲欧美日韩一区二区 | 欧美日韩午夜精品| 日本一区二区三区四区在线视频| 亚洲午夜日本在线观看| 国产一区二区久久| 69久久99精品久久久久婷婷 | 成人综合婷婷国产精品久久免费| 色av一区二区| 国产精品欧美一区喷水| 麻豆极品一区二区三区| 欧美视频完全免费看| 国产精品每日更新| 激情六月婷婷综合| 91精品国产黑色紧身裤美女| 亚洲电影你懂得| 欧美在线观看视频一区二区三区| 中文无字幕一区二区三区| 亚洲成av人影院在线观看网| 91国产丝袜在线播放| 国产欧美一区二区在线观看| 九九国产精品视频| 久久久精品tv| 国产福利不卡视频| 中文字幕欧美区| 波多野结衣的一区二区三区| 国产日本欧美一区二区| 国产aⅴ综合色| 亚洲视频在线一区| 91视频精品在这里| 悠悠色在线精品| 这里只有精品99re| 国内久久精品视频| 国产精品免费观看视频| av影院午夜一区| 亚洲精品成人天堂一二三| 91黄色在线观看| 裸体一区二区三区| 国产精品国产三级国产普通话蜜臀 | 欧美日本韩国一区| 国产精品一区二区久久精品爱涩| 国产精品久久三| 欧美人与z0zoxxxx视频| 国产伦精品一区二区三区视频青涩| 专区另类欧美日韩| 日韩一区国产二区欧美三区| 成人免费视频app| 奇米一区二区三区| 国产女同互慰高潮91漫画| 在线成人免费视频| 91亚洲精品久久久蜜桃| 久久99精品国产麻豆婷婷| 亚洲乱码国产乱码精品精可以看 | 在线视频一区二区三区| 国产在线精品一区二区三区不卡 | 亚洲视频免费在线| 亚洲精品一区二区三区影院| 欧美在线free| 91丨porny丨户外露出| 国产成人精品免费| 激情综合色丁香一区二区| 亚洲综合色自拍一区| 中文字幕电影一区| 欧美va亚洲va香蕉在线| 日韩色在线观看| 日韩精品一区二区三区视频| 欧美日韩亚洲综合一区| 91福利视频久久久久| 在线观看日韩电影| 欧美色图12p| 91精品一区二区三区久久久久久| 欧美曰成人黄网| 欧美日韩中文字幕一区二区| 5566中文字幕一区二区电影| 欧美精品自拍偷拍| 欧美情侣在线播放| 91精品午夜视频| 久久久国产精品午夜一区ai换脸| 日本一区二区三区四区| 中文字幕日韩av资源站| 中文字幕一区二区三区蜜月| 中文字幕一区二区不卡| 亚洲综合在线第一页| 毛片av中文字幕一区二区| 美腿丝袜在线亚洲一区| 国产精品中文字幕日韩精品| 成人av电影在线网| 欧美在线一二三| 精品91自产拍在线观看一区| 国产精品丝袜久久久久久app| 综合中文字幕亚洲| 日本不卡视频在线观看| 99久久久久久| 精品国产自在久精品国产| 亚洲人成亚洲人成在线观看图片 | 4438x成人网最大色成网站| 久久精品一区二区三区不卡| 亚洲婷婷在线视频| 成人一区在线观看| 欧美一区二区三区在线看| ...xxx性欧美|