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

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

?? hmi.c

?? STM32,5110液晶顯示超聲波測距探魚器200KHz,帶電路圖,精確到厘米
?? C
?? 第 1 頁 / 共 5 頁
字號:
	}

	// All conditions are OK, we can start to work
	*HMI_CMD_Stream = pointX | X_COORDINATE_MASK;
	*(HMI_CMD_Stream + 1)= (pointY / HMI_ROW_WIDTH) | Y_COORDINATE_MASK;
	HMI_CMD_Para->DataLen = HMI_LOCATE_CMD_STREAM_SIZE;
	HMI_CMD_Para->DataList = HMI_CMD_Stream;

	HMI_Draw_Para->color = color;
	HMI_Draw_Para->pointX = pointX;
	HMI_Draw_Para->pointY = pointY;

	foundQueueSlot_CMD->HMI_Func_Para = HMI_CMD_Para;
	foundQueueSlot_Data->HMI_Func_Para = HMI_Draw_Para;

	return SUCCESS;
}

WorkingStatus HMI_Draw_Line_Data(void *HMI_Draw_Para)
{
	uint8_t temp_Row, temp_i, temp_Width, temp_Height, bestSuitDivider, 
					temp_Mask, temp_Y, temp_X, tempRowRemain_Start, tempRowNUM;
	// Robust Check, make sure no out border
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX >= HMI_WIDTH_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX = 0;
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + HMI_ROW_WIDTH;
	}
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY >= HMI_HEIGHT_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY = 0;
	}	
	
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX >= HMI_WIDTH_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX = 0;
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY + HMI_ROW_WIDTH;
	}
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY >= HMI_HEIGHT_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY = 0;
	}	

	GPIO_SetBits(LCD_DC_PORT, LCD_DC_PIN);	// Pull up D/_C to enter data mode

	temp_Width = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX - ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + 1;
	temp_Height = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY - ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + 1;
	// Fuck, I'm not clever enough to find a algorithm to handle or, at least need to seperate it into 2 TYEP:
	// 1. Width is largger than height
	// 2. Width is smaller than height
	// So, straightforward I seperate it in 5 to easy the logic
	// Point type is already excluded in HMI_Draw_Line()
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX)
	{
		// Vertical line
		for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY; temp_i <= ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY; temp_i++)
		{
			if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
			{
				sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX] &= ~(0x01 << (temp_i % HMI_ROW_WIDTH));
			}
			else
			{
				sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX] |= 0x01 << (temp_i % HMI_ROW_WIDTH);
			}		
		}
	}
	else if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY)
	{	
		// Horizon line
		temp_Row = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY / HMI_ROW_WIDTH;
		temp_Mask = 0x01 << (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY % HMI_ROW_WIDTH);
		for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX; temp_i <= ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX; temp_i++)
		{
			if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
			{
				sta_LCD_Graphic_BUF[temp_Row][temp_i] &= ~temp_Mask;
			}
			else
			{
				sta_LCD_Graphic_BUF[temp_Row][temp_i] |= temp_Mask;
			}		
		}
	}
	else if (temp_Width == temp_Height)
	{
		// 45 degree line
		for (temp_i = 0; temp_i < temp_Width; temp_i++)
		{
			if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
			{
				sta_LCD_Graphic_BUF[(((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + temp_i) / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + temp_i] 
					&= ~(0x01 << ((((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + temp_i) % HMI_ROW_WIDTH));
			}
			else
			{
				sta_LCD_Graphic_BUF[(((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + temp_i) / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + temp_i] 
					&= ~(0x01 << ((((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + temp_i) % HMI_ROW_WIDTH));
			}		
		}
	}
	else if (temp_Width > temp_Height)
	{
		// Get bestSuitDivider
		bestSuitDivider = temp_Width / temp_Height;
		// Check if one dot more per Y axis is better
		bestSuitDivider = (((bestSuitDivider + 1) * temp_Height - temp_Width) < (temp_Width % temp_Height)) ? (bestSuitDivider + 1) : bestSuitDivider;
		// So Y axis will add 1 every X axis add bestSuitDivider
		for (temp_i = 0; temp_i < temp_Width; temp_i++)
		{
			temp_Y = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + temp_i / bestSuitDivider;
			if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
			{
				sta_LCD_Graphic_BUF[temp_Y / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + temp_i] 
					&= ~(0x01 << (temp_Y % HMI_ROW_WIDTH));
			}
			else
			{
				sta_LCD_Graphic_BUF[temp_Y / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + temp_i] 
					&= ~(0x01 << (temp_Y % HMI_ROW_WIDTH));
			}	
		}
	}
	else
	{
		// Get bestSuitDivider
		bestSuitDivider = temp_Height / temp_Width;
		// Check if one dot more per Y axis is better
		bestSuitDivider = (((bestSuitDivider + 1) * temp_Width - temp_Height) < (temp_Height % temp_Width)) ? (bestSuitDivider + 1) : bestSuitDivider;
		// So X axis will add 1 every Y axis add bestSuitDivider
		for (temp_i = 0; temp_i < temp_Height; temp_i++)
		{
			temp_X = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + temp_i / bestSuitDivider;
			if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
			{
				sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][temp_X] &= ~(0x01 << (temp_i % HMI_ROW_WIDTH));
			}
			else
			{
				sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][temp_X] &= ~(0x01 << (temp_i % HMI_ROW_WIDTH));
			}	
		}
	}

	tempRowRemain_Start = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY % HMI_ROW_WIDTH;
	tempRowNUM = (temp_Height - tempRowRemain_Start) / HMI_ROW_WIDTH;
	tempRowNUM += (0 == tempRowRemain_Start ? 0 : 1);
	tempRowNUM += (0 == ((temp_Height - tempRowRemain_Start) % HMI_ROW_WIDTH) ? 0 : 1);
	HMI_Data_TX(sta_LCD_Graphic_BUF[((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY / HMI_ROW_WIDTH] + ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX, 
				(tempRowNUM  - 1) * HMI_WIDTH_PIX + temp_Width);
				//(HMI_WIDTH_PIX - ((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->startX) + (tempRowNUM - 2) * HMI_WIDTH_PIX + 
				//(((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->startX + ((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->width));

	return FINISHED;
}

ErrorStatus HMI_Draw_Line(uint8_t startX, uint8_t startY, uint8_t endX, uint8_t endY, HMIDrawColor color)
{
	struct_HMI_Queue *foundQueueSlot_CMD = NULL;
	struct_HMI_Queue *foundQueueSlot_Data = NULL;
	struct_HMI_Draw_Para_Line *HMI_Draw_Para = NULL;
	struct_HMI_CMD_Para *HMI_CMD_Para = NULL;
	uint8_t *HMI_CMD_Stream = NULL;

	// First make sure it's not a point
	if ((endX == startX) && (endY == startY))
	{
		return HMI_Draw_Point(startX, startY, color);
	}

	// Prepare to get all necessary space
	foundQueueSlot_CMD = HMI_Find_Queue_Slot(HMI_TASK_TYPE_BUS);
	if ((foundQueueSlot_CMD != NULL))
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_CMD_STREAM;
	}
	else
	{
		FLAG_HMI_QUEUE_FULL = SET;
		return ERROR;
	}

	foundQueueSlot_Data = HMI_Find_Queue_Slot(HMI_TASK_TYPE_BUS);
	if (foundQueueSlot_Data != NULL)
	{
		foundQueueSlot_Data->HMI_Function_Index = ENUM_HMI_DRAW_LINE_DATA;
	}
	else
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_NULL;
		FLAG_HMI_QUEUE_FULL = SET;
		return ERROR;
	}

	// To here queue slots are available and occupied
	HMI_CMD_Stream = malloc(HMI_LOCATE_CMD_STREAM_SIZE);
	if (NULL == HMI_CMD_Stream)
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_NULL;
		foundQueueSlot_Data->HMI_Function_Index = ENUM_HMI_NULL;
		FLAG_HEAP_FULL = SET;
		return ERROR;
	}
	HMI_CMD_Para = malloc(sizeof(struct_HMI_CMD_Para));
	if (NULL == HMI_CMD_Para)
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_NULL;
		foundQueueSlot_Data->HMI_Function_Index = ENUM_HMI_NULL;
		free(HMI_CMD_Stream);
		FLAG_HEAP_FULL = SET;
		return ERROR;
	}
	HMI_Draw_Para = malloc(sizeof(struct_HMI_Draw_Para_Line));
	if (NULL == HMI_Draw_Para)
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_NULL;
		foundQueueSlot_Data->HMI_Function_Index = ENUM_HMI_NULL;
		free(HMI_CMD_Stream);
		free(HMI_CMD_Para);
		FLAG_HEAP_FULL = SET;
		return ERROR;
	}

	// All conditions are OK, we can start to work
	*HMI_CMD_Stream = startX | X_COORDINATE_MASK;
	*(HMI_CMD_Stream + 1)= (startY / HMI_ROW_WIDTH) | Y_COORDINATE_MASK;
	HMI_CMD_Para->DataLen = HMI_LOCATE_CMD_STREAM_SIZE;
	HMI_CMD_Para->DataList = HMI_CMD_Stream;

	HMI_Draw_Para->color = color;
	HMI_Draw_Para->startX = startX;
	HMI_Draw_Para->startY = startY;
	HMI_Draw_Para->endX = endX;
	HMI_Draw_Para->endY = endY;

	foundQueueSlot_CMD->HMI_Func_Para = HMI_CMD_Para;
	foundQueueSlot_Data->HMI_Func_Para = HMI_Draw_Para;

	return SUCCESS;
}

WorkingStatus HMI_Draw_Rect_Data(void *HMI_Draw_Para)
{
	uint8_t temp_Row, temp_i, tempRowRemain_Start, tempRowNUM, temp_Mask, temp_Width, temp_Height;
	// Robust Check, make sure no out border
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX >= HMI_WIDTH_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX = 0;
	}
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY >= HMI_HEIGHT_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY = 0;
	}	

	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX >= HMI_WIDTH_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX = HMI_WIDTH_PIX - 1;
	}
	if (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY >= HMI_HEIGHT_PIX)
	{
		((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY = HMI_HEIGHT_PIX - 1;
	}	

	temp_Width = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX - ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX + 1;
	temp_Height = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY - ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + 1;
	// 4 Lines

	GPIO_SetBits(LCD_DC_PORT, LCD_DC_PIN);	// Pull up D/_C to enter data mode

	// 1st Vertical line
	for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + 1; temp_i < ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY; temp_i++)
	{
		if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
		{
			sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX] &= ~(0x01 << (temp_i % HMI_ROW_WIDTH));
		}
		else
		{
			sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX] |= 0x01 << (temp_i % HMI_ROW_WIDTH);
		}		
	}

	// 2nd Vertical line
	for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY + 1; temp_i < ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY; temp_i++)
	{
		if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
		{
			sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX] &= ~(0x01 << (temp_i % HMI_ROW_WIDTH));
		}
		else
		{
			sta_LCD_Graphic_BUF[temp_i / HMI_ROW_WIDTH][((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX] |= 0x01 << (temp_i % HMI_ROW_WIDTH);
		}		
	}

	// 1st Horizon line
	temp_Row = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY / HMI_ROW_WIDTH;
	temp_Mask = 0x01 << (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY % HMI_ROW_WIDTH);
	for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX; temp_i <= ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX; temp_i++)
	{
		if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
		{
			sta_LCD_Graphic_BUF[temp_Row][temp_i] &= ~temp_Mask;
		}
		else
		{
			sta_LCD_Graphic_BUF[temp_Row][temp_i] |= temp_Mask;
		}		
	}
	// 2nd Horizon line
	temp_Row = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY / HMI_ROW_WIDTH;
	temp_Mask = 0x01 << (((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endY % HMI_ROW_WIDTH);
	for (temp_i = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX; temp_i <= ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->endX; temp_i++)
	{
		if (HMI_COLOR_WHITE == ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->color)
		{
			sta_LCD_Graphic_BUF[temp_Row][temp_i] &= ~temp_Mask;
		}
		else
		{
			sta_LCD_Graphic_BUF[temp_Row][temp_i] |= temp_Mask;
		}		
	}

	tempRowRemain_Start = ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY % HMI_ROW_WIDTH;
	tempRowNUM = (temp_Height - tempRowRemain_Start) / HMI_ROW_WIDTH;
	tempRowNUM += (0 == tempRowRemain_Start ? 0 : 1);
	tempRowNUM += (0 == ((temp_Height - tempRowRemain_Start) % HMI_ROW_WIDTH) ? 0 : 1);
	HMI_Data_TX(sta_LCD_Graphic_BUF[((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startY / HMI_ROW_WIDTH] + ((struct_HMI_Draw_Para_Line *)HMI_Draw_Para)->startX, 
				(tempRowNUM  - 1) * HMI_WIDTH_PIX + temp_Width);
				//(HMI_WIDTH_PIX - ((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->startX) + (tempRowNUM - 2) * HMI_WIDTH_PIX + 
				//(((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->startX + ((struct_HMI_Draw_Para_Pic *)HMI_Draw_Para)->width));

	return FINISHED;
}

ErrorStatus HMI_Draw_Rect(uint8_t startX, uint8_t startY, uint8_t endX, uint8_t endY, HMIDrawColor color)
{
	struct_HMI_Queue *foundQueueSlot_CMD = NULL;
	struct_HMI_Queue *foundQueueSlot_Data = NULL;
	struct_HMI_Draw_Para_Rect *HMI_Draw_Para = NULL;
	struct_HMI_CMD_Para *HMI_CMD_Para = NULL;
	uint8_t *HMI_CMD_Stream = NULL;

	// Prepare to get all necessary space
	foundQueueSlot_CMD = HMI_Find_Queue_Slot(HMI_TASK_TYPE_BUS);
	if ((foundQueueSlot_CMD != NULL))
	{
		foundQueueSlot_CMD->HMI_Function_Index = ENUM_HMI_CMD_STREAM;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美在线观看| 国产亚洲欧美一区在线观看| 国产一区二区日韩精品| 七七婷婷婷婷精品国产| 亚洲靠逼com| 亚洲专区一二三| 一级女性全黄久久生活片免费| 欧美国产成人在线| 自拍av一区二区三区| 亚洲人吸女人奶水| 一区二区三区国产精华| 亚洲国产精品久久久男人的天堂| 亚洲国产中文字幕在线视频综合| 亚洲图片一区二区| 日韩成人精品在线观看| 久久疯狂做爰流白浆xx| 国产在线不卡视频| 成人av在线一区二区三区| 99国产精品一区| 欧美日韩高清不卡| 欧美第一区第二区| 国产精品久久一级| 亚洲一二三区在线观看| 偷拍亚洲欧洲综合| 黄一区二区三区| 成人av免费在线观看| 在线日韩国产精品| 精品日产卡一卡二卡麻豆| 久久久亚洲综合| 亚洲激情综合网| 久久精品国产999大香线蕉| 国产成人精品免费网站| 在线观看免费一区| 久久综合视频网| 亚洲欧美精品午睡沙发| 日韩av一区二区三区四区| 国产高清在线观看免费不卡| 在线免费不卡视频| 久久精品视频免费观看| 亚洲成人免费视| 国产成人午夜精品影院观看视频 | 精品国产91亚洲一区二区三区婷婷| 日本不卡一区二区三区高清视频| 国内外成人在线视频| 色琪琪一区二区三区亚洲区| 日韩欧美在线1卡| 亚洲欧洲日韩女同| 久久精品理论片| 91成人在线观看喷潮| 久久久精品一品道一区| 三级欧美韩日大片在线看| av不卡在线播放| 精品毛片乱码1区2区3区| 夜夜精品视频一区二区| 成人动漫视频在线| 精品国产凹凸成av人网站| 亚洲午夜在线视频| 99精品视频中文字幕| 欧美精品一区二区三区四区 | 99久久综合99久久综合网站| 欧美一级二级三级乱码| 一区二区免费在线播放| 欧美日韩精品一区二区三区 | 欧美日韩亚洲综合| 国产精品久久国产精麻豆99网站| 精品在线视频一区| 日韩美女一区二区三区四区| 亚洲成av人片观看| 欧美午夜精品理论片a级按摩| 国产精品免费视频观看| 国产91色综合久久免费分享| 日韩三级高清在线| 蜜臀久久99精品久久久久久9 | 欧美嫩在线观看| 玉米视频成人免费看| 91网站最新网址| 国产精品久久精品日日| 成人白浆超碰人人人人| 国产精品成人免费| 99久久久无码国产精品| 亚洲丝袜制服诱惑| 91老司机福利 在线| 亚洲人成网站色在线观看| 91在线国内视频| 亚洲精品欧美综合四区| 欧美综合天天夜夜久久| 亚洲一区二区在线免费观看视频| 一本色道a无线码一区v| 亚洲主播在线观看| 制服.丝袜.亚洲.中文.综合| 日韩激情视频网站| 精品精品国产高清a毛片牛牛| 国产一区视频在线看| 亚洲一区二区三区四区五区黄| 在线日韩一区二区| 免费成人美女在线观看.| 久久久电影一区二区三区| 成人丝袜高跟foot| 一区二区三区日韩欧美精品| 欧美日韩国产综合视频在线观看| 日日骚欧美日韩| 久久精品夜夜夜夜久久| 99久久精品免费看| 亚洲444eee在线观看| 精品久久国产97色综合| 成人在线视频首页| 亚洲成人综合在线| 久久免费国产精品| 色老汉一区二区三区| 韩日av一区二区| 亚洲欧美激情插 | 99国产精品99久久久久久| 亚洲成人av免费| 国产欧美日韩三级| 精品视频1区2区| 国产成人免费在线观看| 亚洲伊人色欲综合网| 精品国产一区二区三区av性色| 不卡的电影网站| 免费在线看一区| 亚洲日本韩国一区| 日韩欧美一二区| 色菇凉天天综合网| 国产盗摄一区二区| 亚洲成人自拍一区| 国产区在线观看成人精品| 欧美亚洲日本国产| 丁香五精品蜜臀久久久久99网站| 午夜av一区二区三区| 综合久久久久综合| 久久一区二区三区四区| 4438x亚洲最大成人网| av在线这里只有精品| 黄一区二区三区| 欧美aⅴ一区二区三区视频| 国产精品久久久一区麻豆最新章节| 日韩欧美中文字幕公布| 久久精品一区四区| 制服丝袜亚洲播放| 欧美视频日韩视频| 色婷婷精品久久二区二区蜜臂av| 国产一区二区福利视频| 蜜臀国产一区二区三区在线播放| 一区二区三区精品久久久| 亚洲国产经典视频| 欧美韩日一区二区三区四区| 日韩精品专区在线| 日韩三级视频在线看| 欧美一卡二卡三卡四卡| 91精品麻豆日日躁夜夜躁| 欧美综合亚洲图片综合区| 色综合夜色一区| 99r国产精品| 色又黄又爽网站www久久| 94色蜜桃网一区二区三区| caoporm超碰国产精品| 丁香网亚洲国际| 成人国产电影网| av激情综合网| 色综合久久中文字幕综合网| 91香蕉视频污| 欧美系列在线观看| 欧美日韩www| 欧美一三区三区四区免费在线看| 欧美人与性动xxxx| 日韩一本二本av| 欧美大胆人体bbbb| 久久蜜桃av一区精品变态类天堂 | 国产激情偷乱视频一区二区三区| 久久精品国产亚洲一区二区三区| 日韩电影网1区2区| 国产一区二区影院| 99国内精品久久| 欧美色视频在线观看| 91精品国产欧美一区二区| 久久亚洲私人国产精品va媚药| 国产校园另类小说区| 国产精品无码永久免费888| 亚洲欧美电影院| 五月天中文字幕一区二区| 九九在线精品视频| 99re这里只有精品视频首页| 欧美日韩在线一区二区| 精品精品国产高清一毛片一天堂| 日本一区免费视频| 亚洲曰韩产成在线| 麻豆传媒一区二区三区| 成人av网址在线| 欧美喷潮久久久xxxxx| 欧美激情一区在线| 性感美女久久精品| 成人自拍视频在线| 91麻豆精品国产91久久久资源速度| 精品电影一区二区| 亚洲一区欧美一区| 国产成人在线电影| 欧美一区二区三区在线观看| 中文字幕视频一区| 精品综合免费视频观看| 欧美在线免费观看亚洲|