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

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

?? gifapi.cpp

?? 《精通 vc++ 圖像編程》的源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
 * 函數名稱:
 *   ReadSrcDataGIF()
 *
 * 參數:
 *   CFile& file			- 源GIF文件
 *   LPWORD lpwMemLen		- 緩沖區長度(指針)
 *   LPDWORD lpdwDataLen	- 剩余數據長度(指針)
 *   LPSTR lpSrcBuff		- 緩沖區指針
 *	 LPBOOL lpbEOF			- 結束標志
 *
 * 返回值:
 *   無
 *
 * 說明:
 *   該函數用來讀取指定GIF文件中的圖像編碼,每次最多讀取MAX_BUFF_SIZE
 * 字節,是否讀完由標志lpbEOF指定。
 *
 *************************************************************************/
void ReadSrcDataGIF(CFile& file, LPWORD lpwMemLen, LPDWORD lpdwDataLen,
                        LPSTR lpSrcBuff, LPBOOL lpbEOF)
{
	// 判斷數據長度是否仍然大于內存大小
	if ((*lpdwDataLen) > (DWORD)(*lpwMemLen))
	{
		// 數據長度大于內存大小,表示沒有解碼完
		
		// 數據長度減內存大小
		(*lpdwDataLen) -= (DWORD)(*lpwMemLen);
	}
	else
	{
		// 數據長度不大于內存大小,表示解碼將要完成
		
		// 內存大小就是剩余數據長度
		(*lpwMemLen)    = (WORD)(*lpdwDataLen);
		
		// EOF標志設置為TRUE
		(*lpbEOF)       = TRUE;
	}
	
	// 讀取編碼數據
	file.Read(lpSrcBuff, (*lpwMemLen));
	
	// 返回
	return;
}

/*************************************************************************
 *
 * 函數名稱:
 *   DecodeGIF()
 *
 * 參數:
 *   CFile& file			- 源GIF文件
 *   LPSTR lpDIBBits		- 指向要保存的DIB圖像指針
 *   LPGIFDATAPARAM lpGIFDataParam	- 指向GIFCONTROLPARAM結構的指針
 *	 WORD wWidthBytes		- 每行圖像字節數
 *
 * 返回值:
 *   無
 *
 * 說明:
 *   該函數對指定GIF_LZW編碼數據進行解碼。
 *
 *************************************************************************/
void DecodeGIF(CFile& file, LPSTR lpDIBBits,
						  LPGIFDATAPARAM lpGIFDataParam,WORD wWidthBytes)
{
	// 指向編碼后圖像數據的指針
	BYTE *	lpDst;
	
	// 內存分配句柄
	HANDLE hPrefix;
	HANDLE hSuffix;
	HANDLE hStack;
	HANDLE hImage;
	
	// 用于字串表搜索的索引
	LPWORD lpwPrefix;
	LPBYTE lpbySuffix;
	LPBYTE lpbyStack;
	LPBYTE lpbyStackBgn;
	
	// 指向圖像當前行解碼結果的指針
	LPSTR  lpImageBgn;
	
	// 指向當前編碼像素的指針
	LPSTR  lpImage;
	
	// 計算當前數據圖像的偏移量
	DWORD  dwDataNdx;
	
	// LZW_CLEAR
	WORD   wLZW_CLEAR;
	
	// LZW_EOI
	WORD   wLZW_EOI;
	
	// LZW_MinCodeLen
	BYTE   byLZW_MinCodeLen;
	
	// 字串表索引
	WORD   wNowTableNdx;
	WORD   wTopTableNdx;
	
	// 當前圖像的行數
	WORD   wRowNum;
	
	// 計數
	WORD   wWidthCnt;
	WORD   wBitCnt;
	WORD   wRowCnt;
	
	// 循環變量
	WORD   wi;
	
	// 交錯方式存儲時每次增加的行數
	WORD   wIncTable[5]  = { 8,8,4,2,0 }; 
	
	// 交錯方式存儲時起始行數
	WORD   wBgnTable[5]  = { 0,4,2,1,0 }; 
	
	// 塊大小
	BYTE   byBlockSize;
	
	// 塊索引
	BYTE   byBlockNdx;
	
	DWORD  dwData;
	
	// 當前編碼
	WORD   wCode;
	
	// 上一個編碼
	WORD   wOldCode;
	
	// 臨時索引
	WORD   wTempNdx;
	
	WORD   wCodeMask[13] = {0x0000,
							0x0001,0x0003,0x0007,0x000F,
							0x001F,0x003F,0x007F,0x00FF,
							0x01FF,0x03FF,0x07FF,0x0FFF
							};
	
	BYTE   byLeftBits;
	BYTE   byFirstChar;
	BYTE   byCode;
	BYTE   byCurrentBits;
	BYTE   byPass;
	
	// 臨時字節變量
	BYTE   byTempChar;
	
	// 給字串表分配內存
	hPrefix          = GlobalAlloc(GHND,(DWORD)(MAX_TABLE_SIZE<<1));
	hSuffix          = GlobalAlloc(GHND,(DWORD)MAX_TABLE_SIZE);
	hStack           = GlobalAlloc(GHND,(DWORD)MAX_TABLE_SIZE);
	hImage           = GlobalAlloc(GHND,(DWORD)wWidthBytes);
	
	// 鎖定內存
	lpwPrefix        = (LPWORD)GlobalLock(hPrefix);
	lpbySuffix       = (LPBYTE)GlobalLock(hSuffix);
	lpbyStack        = (LPBYTE)GlobalLock(hStack);
	lpbyStackBgn     = lpbyStack;
	lpImage          = (LPSTR)GlobalLock(hImage);
	lpImageBgn       = lpImage;
	
	// 讀取GIF LZW最小編碼大小
	byLZW_MinCodeLen = *lpGIFDataParam->lpBgnBuff++;
	
	byCurrentBits    = byLZW_MinCodeLen + (BYTE)0x01;
	
	// 計算LZW_CLEAR
	wLZW_CLEAR       = 1 << byLZW_MinCodeLen;
	
	// 計算LZW_EOI
	wLZW_EOI         = wLZW_CLEAR + 1;
	
	// 計算字串表索引
	wNowTableNdx     = wLZW_CLEAR + 2;
	wTopTableNdx     = 1 << byCurrentBits;
	
	// 賦初值
	dwData           = 0UL;
	wBitCnt          = lpGIFDataParam->wBits;
	wRowNum          = 0;
	wRowCnt          = 1;
	wWidthCnt        = 0;
	wCode            = 0;
	wOldCode         = 0xFFFF;
	byBlockSize      = 0x01;
	byBlockNdx       = 0x00;
	byLeftBits       = 0x00;
	byTempChar       = 0x00;
	byPass           = 0x00;
	
	// 讀取下一個編碼
	while(byLeftBits < byCurrentBits)
	{
		// 讀取下一個字符
		
		// 判斷是否讀完一個數據塊
		if (++byBlockNdx == byBlockSize)
		{
			// 讀取下一個數據塊
			byBlockSize = *lpGIFDataParam->lpBgnBuff++;
			byBlockNdx  = 0x00;
			
			// 判斷是否讀完
			if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
			    !lpGIFDataParam->bEOF)
			{
				// 讀取下一個數據塊
				ReadSrcDataGIF(file,&lpGIFDataParam->wMemLen,
							&lpGIFDataParam->dwDataLen,
							lpGIFDataParam->lpDataBuff,&lpGIFDataParam->bEOF);
				
				// 指針重新賦值
				lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
				lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff + lpGIFDataParam->wMemLen;
			}
		}
		
		// 下一個字符
		byCode      = *lpGIFDataParam->lpBgnBuff++;
		
		// 移位
		dwData     |= ((DWORD)byCode << byLeftBits);
		byLeftBits += 0x08;
		
		// 判斷是否讀完
		if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
		    !lpGIFDataParam->bEOF)
		{
			// 讀取下一個數據塊
			ReadSrcDataGIF(file,&lpGIFDataParam->wMemLen,
						&lpGIFDataParam->dwDataLen,
						lpGIFDataParam->lpDataBuff,&lpGIFDataParam->bEOF);
			
			// 指針重新賦值
			lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
			lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff + lpGIFDataParam->wMemLen;
		}
	}
	
	wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
	dwData    >>= byCurrentBits;
	byLeftBits -= byCurrentBits;
	
	// 解碼
	while(wCode != wLZW_EOI)
	{
		// 當前編碼不是LZW_EOI碼
		
		// 判斷是否是LZW_CLEAR碼
		if (wCode == wLZW_CLEAR)
		{
			// 是LZW_CLEAR,清除字串表
			
			// 重新初始化字串表
			for(wi = 0; wi < wLZW_CLEAR; wi++)
			{
				*(lpwPrefix  + wi)  = 0xFFFF;
				*(lpbySuffix + wi) = (BYTE)wi;
			}
			
			for(wi = wNowTableNdx; wi < MAX_TABLE_SIZE; wi++)
			{
				*(lpwPrefix+wi)  = 0xFFFF;
				*(lpbySuffix+wi) = 0x00;
			}
			
			byCurrentBits = byLZW_MinCodeLen + (BYTE)0x01;
			wNowTableNdx  = wLZW_CLEAR + 2;
			wTopTableNdx  = 1 << byCurrentBits;
			wOldCode      = 0xFFFF;
			
			// 獲取下一個編碼
			while(byLeftBits < byCurrentBits)
			{
				// 讀取下一個字符
				
				// 判斷是否讀完一個數據塊
				if (++byBlockNdx == byBlockSize)
				{
					// 讀取下一個數據塊
					byBlockSize = *lpGIFDataParam->lpBgnBuff++;
					byBlockNdx  = 0x00;
					
					// 判斷是否讀完
					if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
						!lpGIFDataParam->bEOF)
					{
						// 讀取下一個數據塊
						ReadSrcDataGIF(file, &lpGIFDataParam->wMemLen,
									&lpGIFDataParam->dwDataLen,
									lpGIFDataParam->lpDataBuff,
									&lpGIFDataParam->bEOF);
						
						// 指針重新賦值
						lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
						lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff +
											   lpGIFDataParam->wMemLen;
					}
				}
				byCode      = *lpGIFDataParam->lpBgnBuff++;
				dwData     |= ((DWORD)byCode << byLeftBits);
				byLeftBits += 0x08;
				
				// 判斷是否讀完
				if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
					 !lpGIFDataParam->bEOF)
				{
					// 讀取下一個數據塊
					ReadSrcDataGIF(file,&lpGIFDataParam->wMemLen,
								&lpGIFDataParam->dwDataLen,
								lpGIFDataParam->lpDataBuff,&lpGIFDataParam->bEOF);
					
					// 指針重新賦值
					lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
					lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff + lpGIFDataParam->wMemLen;
				}
			}
			wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
			dwData    >>= byCurrentBits;
			byLeftBits -= byCurrentBits;
			
			// 判斷編碼是否為LZW_EOI
			if (wCode!=wLZW_EOI)
			{
				// 這里沒有用到lpbyStack[0]
				lpbyStack  ++;
				
				// 將數據壓入堆棧
				while((*(lpwPrefix+wCode)) != 0xFFFF)
				{
					*lpbyStack++ = *(lpbySuffix+wCode);
					wCode        = *(lpwPrefix+wCode);
				}
				*lpbyStack  = *(lpbySuffix+wCode);
				byFirstChar = *lpbyStack;
				
				// 輸出數據
				while(lpbyStack>lpbyStackBgn)
				{
					byTempChar |= (*lpbyStack-- << (8-wBitCnt));
					
					if (wBitCnt==8)
					{
						*lpImage++ = byTempChar;
						byTempChar = 0x00;
						wBitCnt    = lpGIFDataParam->wBits;
					}
					else
					{
						wBitCnt   += lpGIFDataParam->wBits;
					}
					
					wWidthCnt  ++;
					
					if (wWidthCnt==lpGIFDataParam->wWidth)
					{
						if (wBitCnt!=lpGIFDataParam->wBits)
						{
							*lpImage   = byTempChar;
							byTempChar = 0x00;
							wBitCnt    = lpGIFDataParam->wBits;
						}
						
						// 圖像當前行偏移量
						dwDataNdx = (DWORD)(lpGIFDataParam->wDepth - 1 - wRowNum) * (DWORD)wWidthBytes;
						
						// 圖像當前行起始位置
						lpDst = (BYTE *)lpDIBBits + dwDataNdx;
						
						// 賦值
						memcpy(lpDst, lpImageBgn, wWidthBytes);
						
						lpImage   = lpImageBgn;
						
						// 判斷是否按照交錯方式保存
						if (lpGIFDataParam->bInterlace)
						{
							// 交錯方式
							
							// 計算下一行的行號
							wRowNum += wIncTable[byPass];
							if (wRowNum >= lpGIFDataParam->wDepth)
							{
								byPass ++;
								wRowNum = wBgnTable[byPass];
							}
						}
						else
						{
							// 非交錯方式,行號直接加1
							wRowNum ++;
						}
						wWidthCnt = 0;
					}
				}
			}
		}
		else
		{
			// 這里沒有用到lpbyStack[0]
			lpbyStack  ++;
			
			// 判斷字符串是否在字串表中
			if (wCode < wNowTableNdx)
			{
				// 不在字串表中
				wTempNdx   = wCode;
			}
			else
			{
				// 在字串表中
				wTempNdx     = wOldCode;
				*lpbyStack++ = byFirstChar;
			}
			
			// 將數據壓入堆棧
			while((*(lpwPrefix+wTempNdx)) != 0xFFFF)
			{
				*lpbyStack++ = *(lpbySuffix+wTempNdx);
				wTempNdx     = *(lpwPrefix+wTempNdx);
			}
			*lpbyStack  = *(lpbySuffix+wTempNdx);
			byFirstChar = *lpbyStack;
			
			// 將字符串添加到字串表中
			*(lpwPrefix+wNowTableNdx)  = wOldCode;
			*(lpbySuffix+wNowTableNdx) = byFirstChar;
			if (++wNowTableNdx==wTopTableNdx && byCurrentBits<12)
			{
				byCurrentBits ++;
				wTopTableNdx   = 1 << byCurrentBits;
			}
			
			// 輸出數據
			while(lpbyStack>lpbyStackBgn)
			{
				byTempChar |= (*lpbyStack-- << (8-wBitCnt));
				if (wBitCnt==8)
				{
					*lpImage++ = byTempChar;
					byTempChar = 0x00;
					wBitCnt    = lpGIFDataParam->wBits;
				}
				else
				{
					wBitCnt   += lpGIFDataParam->wBits;
				}
				
				wWidthCnt  ++;
				if (wWidthCnt==lpGIFDataParam->wWidth)
				{
					if (wBitCnt!=lpGIFDataParam->wBits)
					{
						*lpImage   = byTempChar;
						byTempChar = 0x00;
						wBitCnt    = lpGIFDataParam->wBits;
					}
					
					// 圖像當前行偏移量
					dwDataNdx = (DWORD)(lpGIFDataParam->wDepth - 1 - wRowNum) * (DWORD)wWidthBytes;
					
					// 圖像當前行起始位置
					lpDst = (BYTE *)lpDIBBits + dwDataNdx;
					
					// 賦值
					memcpy(lpDst, lpImageBgn, wWidthBytes);
					
					lpImage   = lpImageBgn;
					
					// 判斷是否按照交錯方式保存
					if (lpGIFDataParam->bInterlace)
					{
						// 交錯方式
						
						// 計算下一行的行號
						wRowNum += wIncTable[byPass];
						if (wRowNum >= lpGIFDataParam->wDepth)
						{
							byPass ++;
							wRowNum = wBgnTable[byPass];
						}
					}
					else
					{
						// 非交錯方式,行號直接加1
						wRowNum ++;
					}
					wWidthCnt = 0;
				}
			}
		}
		wOldCode = wCode;
		
		// 讀取下一個編碼
		while(byLeftBits < byCurrentBits)
		{
			// 讀取下一個字符
			
			// 判斷是否讀完一個數據塊
			if (++byBlockNdx == byBlockSize)
			{
				// 讀取下一個數據塊
				byBlockSize = *lpGIFDataParam->lpBgnBuff++;
				byBlockNdx  = 0x00;
				
				// 判斷是否讀完
				if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
					 !lpGIFDataParam->bEOF)
				{
					// 讀取下一個數據塊
					ReadSrcDataGIF(file,&lpGIFDataParam->wMemLen,
								&lpGIFDataParam->dwDataLen,
								lpGIFDataParam->lpDataBuff,&lpGIFDataParam->bEOF);
					
					// 指針重新賦值
					lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
					lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff + lpGIFDataParam->wMemLen;
				}
			}
			byCode      = *lpGIFDataParam->lpBgnBuff++;
			dwData     |= ((DWORD)byCode << byLeftBits);
			byLeftBits += 0x08;
			
			// 判斷是否讀完
			if ((lpGIFDataParam->lpBgnBuff == lpGIFDataParam->lpEndBuff) &&
				  !lpGIFDataParam->bEOF)
			{
				// 讀取下一個數據塊
				ReadSrcDataGIF(file,&lpGIFDataParam->wMemLen,
							&lpGIFDataParam->dwDataLen,
							lpGIFDataParam->lpDataBuff,&lpGIFDataParam->bEOF);
				
				// 指針重新賦值
				lpGIFDataParam->lpBgnBuff = lpGIFDataParam->lpDataBuff;
				lpGIFDataParam->lpEndBuff = lpGIFDataParam->lpBgnBuff + lpGIFDataParam->wMemLen;
			}
		}
		wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
		dwData    >>= byCurrentBits;
		byLeftBits -= byCurrentBits;
	}
	
	// 釋放內存
	GlobalUnlock(hPrefix);
	GlobalUnlock(hSuffix);
	GlobalUnlock(hStack);
	GlobalFree(hPrefix);
	GlobalFree(hSuffix);
	GlobalFree(hStack);
	
	// 返回
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品二区亚洲w码| 欧美精品丝袜久久久中文字幕| 久久99精品久久久久久动态图| 舔着乳尖日韩一区| 亚洲一区二区综合| 亚洲午夜久久久久中文字幕久| 亚洲欧洲制服丝袜| 亚洲精品国产高清久久伦理二区 | 国内精品伊人久久久久av影院| 免费成人av在线播放| 日本欧美肥老太交大片| 人人超碰91尤物精品国产| 麻豆精品国产91久久久久久| 久久国产精品免费| 国产精品一区二区三区网站| 国产剧情在线观看一区二区| 国产成人午夜高潮毛片| 成人激情免费电影网址| 成人伦理片在线| 91丨porny丨户外露出| 色综合激情久久| 欧美性生活一区| 91精品国产色综合久久久蜜香臀| 欧美一级黄色片| 久久久久久久久久久电影| 国产欧美一区二区精品性色| 最新国产成人在线观看| 一区二区三区四区视频精品免费| 亚洲成av人在线观看| 日韩中文欧美在线| 国产精品自拍在线| k8久久久一区二区三区 | 中文乱码免费一区二区| 亚洲三级视频在线观看| 日本v片在线高清不卡在线观看| 久久99精品国产麻豆不卡| 国产精品羞羞答答xxdd| 91片在线免费观看| 欧美一区二区观看视频| 中文字幕不卡一区| 夜色激情一区二区| 久久99久久99小草精品免视看| 国产成人亚洲综合a∨猫咪| 色婷婷一区二区| 日韩欧美在线影院| 国产精品色哟哟| 午夜精品国产更新| 国产福利精品导航| 欧美日韩免费一区二区三区视频| 欧美白人最猛性xxxxx69交| 中文字幕一区二区在线观看| 婷婷国产v国产偷v亚洲高清| 国产91精品免费| 欧美日韩大陆一区二区| 欧美国产综合一区二区| 亚洲成人自拍偷拍| 国产成人免费高清| 欧美狂野另类xxxxoooo| 中文字幕免费不卡在线| 日本欧美韩国一区三区| 一本大道久久a久久综合婷婷| 2017欧美狠狠色| 亚洲国产日韩一区二区| 成人免费视频视频在线观看免费 | 中文字幕在线观看不卡视频| 视频一区在线播放| 91亚洲精品一区二区乱码| 日韩一级片在线播放| 亚洲女人****多毛耸耸8| 国内精品久久久久影院色| 欧美日韩一本到| 亚洲桃色在线一区| 国产精品一区在线观看你懂的| 欧美日韩视频在线一区二区| 国产精品久久久久毛片软件| 另类小说一区二区三区| 在线免费亚洲电影| 国产精品成人免费精品自在线观看| 青椒成人免费视频| 欧美三级中文字| 亚洲天天做日日做天天谢日日欢 | 欧美日韩aaaaaa| 亚洲人快播电影网| 粉嫩aⅴ一区二区三区四区五区| 欧美一区二区三区啪啪| 亚洲午夜久久久久久久久久久 | 一本久久a久久免费精品不卡| 国产欧美日韩视频在线观看| 男人的天堂亚洲一区| 在线不卡中文字幕| 亚洲综合免费观看高清完整版在线| 成人免费观看男女羞羞视频| 久久综合久久综合久久| 麻豆精品视频在线观看| 91精品国产黑色紧身裤美女| 性欧美大战久久久久久久久| 欧美亚洲一区二区在线| 亚洲免费观看高清| 91麻豆视频网站| 亚洲日本在线看| 一本色道久久综合狠狠躁的推荐| 专区另类欧美日韩| 91免费国产在线| 亚洲少妇屁股交4| 91社区在线播放| 亚洲激情中文1区| 91福利资源站| 亚洲va欧美va天堂v国产综合| 欧美在线视频你懂得| 亚洲午夜成aⅴ人片| 欧美少妇性性性| 午夜视频在线观看一区二区三区| 欧美色图第一页| 日韩精品亚洲一区二区三区免费| 欧美精品一二三| 日韩成人精品在线| 精品盗摄一区二区三区| 国产一区二区精品久久| 国产亚洲一区二区三区在线观看 | 色欧美日韩亚洲| 一区二区三区.www| 欧美伊人久久久久久久久影院| 亚洲一级电影视频| 7777精品伊人久久久大香线蕉的| 奇米影视一区二区三区| 久久综合久久久久88| 国产成人精品在线看| 国产精品传媒视频| 欧美日本在线播放| 麻豆91在线播放免费| 国产精品视频一二| 欧美性videosxxxxx| 日韩av一级电影| 久久综合精品国产一区二区三区| 成人美女视频在线看| 亚洲国产综合在线| 精品久久久久久久久久久院品网| 成人性生交大片| 亚洲午夜电影网| 久久亚区不卡日本| 一本到不卡精品视频在线观看| 日韩电影网1区2区| 国产精品福利影院| 欧美嫩在线观看| 韩国v欧美v亚洲v日本v| 亚洲人成网站色在线观看| 91精品国产一区二区人妖| 成人精品国产福利| 视频一区在线播放| 国产精品久久久久影院色老大| 欧美剧情片在线观看| 岛国一区二区三区| 午夜精品久久久久久久久久| 欧美精彩视频一区二区三区| 日本高清无吗v一区| 极品少妇xxxx偷拍精品少妇| 中文字幕一区二区三区av | 制服.丝袜.亚洲.中文.综合| 精品一区二区久久| 亚洲欧美综合另类在线卡通| 日韩欧美一区二区免费| 97超碰欧美中文字幕| 久久疯狂做爰流白浆xx| 伊人夜夜躁av伊人久久| 337p粉嫩大胆噜噜噜噜噜91av | 欧美日韩中文一区| 丰满岳乱妇一区二区三区| 亚瑟在线精品视频| 日韩久久一区二区| 欧美不卡一二三| 成人免费黄色大片| 久久99精品国产麻豆婷婷洗澡| 亚洲视频免费在线观看| 欧美sm美女调教| 欧美日韩国产123区| 国产99久久久久久免费看农村| 亚洲一区二区三区小说| 91激情五月电影| 欧美性猛交一区二区三区精品| 欧美猛男超大videosgay| 欧美久久久久久蜜桃| 国产精品天美传媒| 午夜电影一区二区三区| 久久9热精品视频| av中文一区二区三区| 欧美在线一区二区| 欧美日韩mp4| 日韩精品五月天| 国产一区二区在线影院| 亚洲一区二区视频| 中文字幕成人av| 国产日产亚洲精品系列| 日韩一区二区影院| 91国产精品成人| 在线视频综合导航| 成人高清在线视频| 国产一区二区三区在线观看免费 | 亚洲成人精品在线观看| 欧美成人精品福利| 欧美日韩精品久久久|