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

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

?? 3dmeterctrl.cpp

?? F320單片機實現于上位機USB接口通信的源代碼
?? CPP
字號:
// 3DMeterCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "math.h"
#include "3DMeterCtrl.h"
#include "MemDC.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// C3DMeterCtrl

C3DMeterCtrl::C3DMeterCtrl()
{
	m_dCurrentValue  =  0.0;
	m_dMaxValue      =  5.0;
	m_dMinValue      = -5.0;
	m_nScaleDecimals = 1;
	m_nValueDecimals = 3;
	m_strUnits.Format("Volts");
	m_colorNeedle = RGB(255, 0, 0);
}

C3DMeterCtrl::~C3DMeterCtrl()
{
	if ((m_pBitmapOldBackground) && (m_bitmapBackground.GetSafeHandle()) && (m_dcBackground.GetSafeHdc()))
		m_dcBackground.SelectObject(m_pBitmapOldBackground);
}

BEGIN_MESSAGE_MAP(C3DMeterCtrl, CStatic)
	//{{AFX_MSG_MAP(C3DMeterCtrl)
	ON_WM_PAINT()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// C3DMeterCtrl message handlers

void C3DMeterCtrl::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
		
	// Find out how big we are
	GetClientRect (&m_rectCtrl);

	// make a memory dc
	CMemDC memDC(&dc, &m_rectCtrl);

	// set up a memory dc for the background stuff 
	// if one isn't being used
	if ((m_dcBackground.GetSafeHdc() == NULL) || (m_bitmapBackground.m_hObject == NULL))
	{
		m_dcBackground.CreateCompatibleDC(&dc);
		m_bitmapBackground.CreateCompatibleBitmap(&dc, m_rectCtrl.Width(), m_rectCtrl.Height());
		m_pBitmapOldBackground = m_dcBackground.SelectObject(&m_bitmapBackground);

		// Fill this bitmap with the background.
		// Note: This requires some serious drawing and calculating, 
		// therefore it is drawn "once" to a bitmap and 
		// the bitmap is stored and blt'd when needed.
		DrawMeterBackground(&m_dcBackground, m_rectCtrl);
	}

	// drop in the background
	memDC.BitBlt(0, 0, m_rectCtrl.Width(), m_rectCtrl.Height(), &m_dcBackground, 0, 0, SRCCOPY);

	// add the needle to the background
	DrawNeedle(&memDC);

	// add the value to the background
	DrawValue(&memDC);
}

void C3DMeterCtrl::DrawValue(CDC *pDC)
{
	CFont *pFontOld;
	CString strTemp;

	// Pick up the font.
	// Note: the font was determined in the drawing
	// of the background
	pFontOld = pDC->SelectObject(&m_fontValue);

	// set the colors based on the system colors
	pDC->SetTextColor(m_colorText);
	pDC->SetBkColor(m_colorButton);

	// draw the text in the recessed rectangle
	pDC->SetTextAlign(TA_CENTER|TA_BASELINE);
	strTemp.Format("%.*f", m_nValueDecimals, m_dCurrentValue);
	pDC->TextOut(m_nValueCenter, m_nValueBaseline, strTemp);

	// restore the color and the font
	pDC->SetBkColor(m_colorWindow);
	pDC->SelectObject(pFontOld);
}

void C3DMeterCtrl::UpdateNeedle(double dValue)
{
	m_dCurrentValue = dValue;
	Invalidate();
}

void C3DMeterCtrl::DrawNeedle(CDC *pDC)
{
	int nResult;
	
	double dAngleRad;
	double dTemp;
	CBrush brushFill, *pBrushOld;
	CPen penDraw, *pPenOld;
	CPoint pointNeedle[3];

	// This function draws a triangular needle.
	// The base of the needle is a horizontal line
	// that runs through the center point of the arcs
	// that make up the face of the meter.
	// The tip of the needle is at an angle that is 
	// calculated based on the current value and the scale.

	// The needle is constructed as a 3-point polygon
	// (i.e. triangle).  The triangle is drawn to the 
	// screen based on a clipping region that is derived
	// from the meter face.  See "DrawMeterBackground".

	// calculate the first and last points of the needle.
	pointNeedle[0].x = m_nBottomCX + m_nBottomRadius/20;
	pointNeedle[0].y = m_nBottomCY;
	pointNeedle[2].x = m_nBottomCX - m_nBottomRadius/20;
	pointNeedle[2].y = m_nBottomCY;

	// calculate the angle for the tip of the needle
	dAngleRad = (m_dCurrentValue-m_dMinValue)*(m_dRightAngleRad-m_dLeftAngleRad)/(m_dMaxValue-m_dMinValue) + m_dLeftAngleRad;

	// if the angle is beyond the meter, draw the needle
	// at the limit (as if it is "pegged")
	dAngleRad = max(dAngleRad, m_dRightAngleRad);
	dAngleRad = min(dAngleRad, m_dLeftAngleRad);

	// calculate the X position of the tip
	dTemp = m_nBottomCX + m_nTopRadius*cos(dAngleRad);
	pointNeedle[1].x = ROUND(dTemp);

	// calculate the Y position of the tip
	dTemp = m_nBottomCY - m_nTopRadius*sin(dAngleRad);
	pointNeedle[1].y = ROUND(dTemp);

	// select the clipping region based on the meter
	pDC->SelectClipRgn(&m_rgnBoundary);

	// create a pen and brush based on the needle color
	brushFill.CreateSolidBrush(m_colorNeedle);
	penDraw.CreatePen(PS_SOLID, 1, m_colorNeedle);

	// select the pen and brush
	pPenOld = pDC->SelectObject(&penDraw);
	pBrushOld = pDC->SelectObject(&brushFill);

	// draw the needle
	pDC->Polygon(pointNeedle, 3);

	// restore the clipping region
	nResult = pDC->SelectClipRgn(NULL);

	// restore the pen and brush
	pDC->SelectObject(pPenOld);
	pDC->SelectObject(pBrushOld);
}

void C3DMeterCtrl::DrawMeterBackground(CDC *pDC, CRect &rect)
{
	int i, nAngleDeg, nRef;
	int nHeight;
	int nHalfPoints;
	int nStartAngleDeg, nEndAngleDeg;
	int nTickDeg;
	int nAngleIncrementDeg;
	double dTemp, dAngleRad, dX, dY;
	double dRadPerDeg;
	CString strTemp;
	CPoint pointRecess[BOUNDARY_POINTS];
	CBrush brushFill, *pBrushOld;
	CFont *pFontOld;
	CPen penDraw, *pPenOld;
	TEXTMETRIC tm;

	// determine the centerpoint of the radii for
	// the meter face.
	m_nBottomCX = (rect.left+rect.right)/2;
	m_nBottomCY = rect.bottom - rect.Height()/16;

	// determine the radii for the top of the meter
	// and the bottom of the meter
	m_nTopRadius = rect.Height()*6/8;
	m_nBottomRadius = m_nTopRadius/2;

	// Radians per Degree
	// This helps me lay things out in degrees
	// which are more intuitive than radians.
	dRadPerDeg = 4.0*atan(1.0)/180.0;

	// set the left and right limits for the meter face
	nStartAngleDeg =  60;
	nEndAngleDeg   = 120;
	nTickDeg       =  15;

	// this is the density of points along the arcs
	nAngleIncrementDeg = 5;

	// convert these to radians 
	// for computer (rather than human) use!
	m_dLeftAngleRad = nEndAngleDeg*dRadPerDeg;
	m_dRightAngleRad = nStartAngleDeg*dRadPerDeg; 

	// construct the meter face region
	// This is a polygon starting at the top right of
	// the meter face and moving across the top arc.
	nRef = 0;
	for (nAngleDeg=nStartAngleDeg; nAngleDeg<=nEndAngleDeg; nAngleDeg+=nAngleIncrementDeg)
	{
		// determine the current angle in radians
		dAngleRad = nAngleDeg*dRadPerDeg;

		// determine the X position
		dTemp = m_nBottomCX + m_nTopRadius*cos(dAngleRad);
		m_pointBoundary[nRef].x = ROUND(dTemp);

		// determine the Y position
		dTemp = m_nBottomCY - m_nTopRadius*sin(dAngleRad);
		m_pointBoundary[nRef].y = ROUND(dTemp);
		nRef++;
	}

	// at this point we have constructed the entire
	// top arc of the meter face
	nHalfPoints = nRef;   // hold onto this for later use

	// now add points to the polygon starting at the 
	// left side of the lower arc.
	for (nAngleDeg=nEndAngleDeg; nAngleDeg>=nStartAngleDeg; nAngleDeg-=nAngleIncrementDeg)
	{
		dAngleRad = nAngleDeg*dRadPerDeg;
		dTemp = m_nBottomCX + m_nBottomRadius*cos(dAngleRad);
		m_pointBoundary[nRef].x = ROUND(dTemp);
		dTemp = m_nBottomCY - m_nBottomRadius*sin(dAngleRad);
		m_pointBoundary[nRef].y = ROUND(dTemp);
		nRef++;
	}
	
	// Now construct a polygon that is just outside 
	// the meter face to use in drawing a "recess"
	// around the meter face.
	for (i=0; i<nRef; i++)
	{
		pointRecess[i].x = m_pointBoundary[i].x;
		pointRecess[i].y = m_pointBoundary[i].y-1;
	}
	pointRecess[0].x = pointRecess[0].x + 1;
	pointRecess[nRef-1].x = pointRecess[nRef-1].x - 1;
	for (i=nHalfPoints; i<nRef; i++)
	{
		pointRecess[i].x = m_pointBoundary[i].x;
		pointRecess[i].y = m_pointBoundary[i].y+1;
	}
	pointRecess[nHalfPoints].x = pointRecess[nHalfPoints].x - 1;
	pointRecess[nRef-1].x = pointRecess[nRef-1].x + 1;

	// create a region based on the meter face
	// (to be used lated in clipping the needle)
	m_rgnBoundary.DeleteObject();
	m_rgnBoundary.CreatePolygonRgn(m_pointBoundary, nRef, ALTERNATE);

	// locate a rectangle below the meter face
	m_rectValue.left = rect.left + rect.Width()/20;
	m_rectValue.right = rect.right - rect.Width()/20;
	m_rectValue.bottom = rect.bottom - rect.Width()/20; 
	m_rectValue.top = rect.bottom - (rect.bottom - pointRecess[nRef-1].y)*60/100;

	// get the relevant system colors
	m_colorWindow    = GetSysColor(COLOR_WINDOW);
	m_colorButton    = GetSysColor(COLOR_BTNFACE);
	m_colorShadow    = GetSysColor(COLOR_BTNSHADOW);
	m_colorHighlight = GetSysColor(COLOR_BTNHIGHLIGHT);
	m_colorText			 = GetSysColor(COLOR_BTNTEXT);

	// fill the background with the button color
	brushFill.DeleteObject();
	brushFill.CreateSolidBrush(m_colorButton);
	pBrushOld = pDC->SelectObject(&brushFill);
	pDC->Rectangle(rect);
	pDC->SelectObject(pBrushOld);

	// Draw the meter recess.
	// This happens by first drawing the 
	// top and left sides in the shadow color.
	penDraw.DeleteObject();
	penDraw.CreatePen(PS_SOLID, 1, m_colorShadow);
	pPenOld = pDC->SelectObject(&penDraw);
	pDC->MoveTo(pointRecess[0]);
	pDC->PolylineTo(pointRecess, nHalfPoints+1);
	pDC->SelectObject(pPenOld);

	// and then drawing the 
	// left and bottom sides in the shadow color.
	penDraw.DeleteObject();
	penDraw.CreatePen(PS_SOLID, 1, m_colorHighlight);
	pPenOld = pDC->SelectObject(&penDraw);
	// draw the bottom arc
	pDC->PolylineTo(&pointRecess[nHalfPoints], nHalfPoints);
	pDC->LineTo(pointRecess[0]);  // connect it to the top
	pDC->SelectObject(pPenOld);

	// Draw the meter face
	// use the text color for the border
	penDraw.DeleteObject();
	penDraw.CreatePen(PS_SOLID, 1, m_colorText);
	pPenOld = pDC->SelectObject(&penDraw);

	// use the current window color for filling
	brushFill.DeleteObject();
	brushFill.CreateSolidBrush(m_colorWindow);
	pBrushOld = pDC->SelectObject(&brushFill);

	// draw the meter face
	pDC->Polygon(m_pointBoundary, nRef);

	// restore the brush (but keep the pen!)
	pDC->SelectObject(pBrushOld);

	// Draw the tick marks.
	// Make the tick marks extend down 10% of the face
	dTemp = m_nTopRadius - 0.1*(m_nTopRadius-m_nBottomRadius);

	// draw the right side tick marks
	for (nAngleDeg=90; nAngleDeg>nStartAngleDeg; nAngleDeg-=nTickDeg)
	{
		dAngleRad = nAngleDeg*dRadPerDeg;

		// move to the top of the tick mark
		dX = m_nBottomCX + m_nTopRadius*cos(dAngleRad);
		dY = m_nBottomCY - m_nTopRadius*sin(dAngleRad);
		pDC->MoveTo(ROUND(dX), ROUND(dY));

		// move to the bottom of the tick mark
		dX = m_nBottomCX + dTemp*cos(dAngleRad);
		dY = m_nBottomCY - dTemp*sin(dAngleRad);
		pDC->LineTo(ROUND(dX), ROUND(dY));
	}

	// draw the left side tick marks
	for (nAngleDeg=90+nTickDeg; nAngleDeg<nEndAngleDeg; nAngleDeg+=nTickDeg)
	{
		dAngleRad = nAngleDeg*dRadPerDeg;

		// move to the top of the tick mark
		dX = m_nBottomCX + m_nTopRadius*cos(dAngleRad);
		dY = m_nBottomCY - m_nTopRadius*sin(dAngleRad);
		pDC->MoveTo(ROUND(dX), ROUND(dY));

		// move to the bottom of the tick mark
		dX = m_nBottomCX + dTemp*cos(dAngleRad);
		dY = m_nBottomCY - dTemp*sin(dAngleRad);
		pDC->LineTo(ROUND(dX), ROUND(dY));
	}

	// now we're done with the pen!
	pDC->SelectObject(pPenOld);

	// Draw the recessed rectangle 
	// for the numerical value.
	// draw the left and top sides with the shadow
	penDraw.DeleteObject();
	penDraw.CreatePen(PS_SOLID, 1, m_colorShadow);
	pPenOld = pDC->SelectObject(&penDraw);
	pDC->MoveTo(m_rectValue.left, m_rectValue.bottom);
	pDC->LineTo(m_rectValue.left, m_rectValue.top);
	pDC->LineTo(m_rectValue.right, m_rectValue.top);
	pDC->SelectObject(pPenOld);

	// draw the right and bottom sides with the highlight
	penDraw.DeleteObject();
	penDraw.CreatePen(PS_SOLID, 1, m_colorHighlight);
	pPenOld = pDC->SelectObject(&penDraw);
	pDC->LineTo(m_rectValue.right, m_rectValue.bottom);
	pDC->LineTo(m_rectValue.left, m_rectValue.bottom);
	pDC->SelectObject(pPenOld);

	// determine the font size
	nHeight = m_rectValue.Height()*85/100;
	m_fontValue.DeleteObject();
	m_fontValue.CreateFont (nHeight, 0, 0, 0, 400,
							FALSE, FALSE, 0, ANSI_CHARSET,
							OUT_DEFAULT_PRECIS, 
							CLIP_DEFAULT_PRECIS,
							DEFAULT_QUALITY, 
							DEFAULT_PITCH|FF_SWISS, "Arial");

	// Now select this font and calculate the 
	// actual height to see what Windows gave us.
	pFontOld = pDC->SelectObject(&m_fontValue);
	pDC->GetTextMetrics(&tm);
	m_nValueFontHeight = tm.tmHeight;
 
	// determine the location for the value within
	// the rectangele based on the font height
	m_nValueBaseline = m_rectValue.bottom - m_nValueFontHeight/4;
	m_nValueCenter   = m_rectValue.left + m_rectValue.Width()/2;

	// now we need to use the font to draw some text
	// set the colors (based on system colors)
	pDC->SetTextColor(m_colorText);
	pDC->SetBkColor(m_colorButton);

	// draw the units below the meter face
	pDC->SetTextAlign(TA_CENTER|TA_BASELINE);
	pDC->TextOut(m_nValueCenter, m_rectValue.top - m_nValueFontHeight/4, m_strUnits);

	// draw the value on the minimum side of the meter
	pDC->SetTextAlign(TA_LEFT|TA_BASELINE);
	strTemp.Format("%.*lf", m_nScaleDecimals, m_dMinValue);
	pDC->TextOut((rect.left+m_pointBoundary[nHalfPoints-1].x)/2, m_pointBoundary[nHalfPoints/2].y-m_nValueFontHeight*25/100, strTemp);

	// draw the value on the maximum side of the meter
	pDC->SetTextAlign(TA_RIGHT|TA_BASELINE);
	strTemp.Format("%.*lf", m_nScaleDecimals, m_dMaxValue);
	pDC->TextOut((rect.right+m_pointBoundary[0].x)/2, m_pointBoundary[nHalfPoints/2].y-m_nValueFontHeight*25/100, strTemp);

	// restore the font and background color
	pDC->SelectObject(pFontOld);
	pDC->SetBkColor(m_colorWindow);
}

void C3DMeterCtrl::OnSize(UINT nType, int cx, int cy) 
{
	CStatic::OnSize(nType, cx, cy);
	ReconstructControl();
}

void C3DMeterCtrl::ReconstructControl() 
{
	// if we've got a stored background - remove it!
	if ((m_pBitmapOldBackground) && (m_bitmapBackground.GetSafeHandle()) && (m_dcBackground.GetSafeHdc()))
	{
		m_dcBackground.SelectObject(m_pBitmapOldBackground);
		m_dcBackground.DeleteDC();
		m_bitmapBackground.DeleteObject();
	}

	Invalidate ();
}

void C3DMeterCtrl::SetRange(double dMin, double dMax) 
{
	m_dMaxValue = dMax;
	m_dMinValue = dMin;
	ReconstructControl();
}

void C3DMeterCtrl::SetScaleDecimals(int nDecimals) 
{
	m_nScaleDecimals = nDecimals;
	ReconstructControl();
}

void C3DMeterCtrl::SetValueDecimals(int nDecimals) 
{
	m_nValueDecimals = nDecimals;
	ReconstructControl();
}

void C3DMeterCtrl::SetUnits(CString &strUnits) 
{
	m_strUnits = strUnits;
	ReconstructControl();
}

void C3DMeterCtrl::SetNeedleColor (COLORREF colorNeedle)
{
	m_colorNeedle = colorNeedle;
	ReconstructControl();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色妞www精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人中文字幕电影| 国产欧美日韩麻豆91| 99免费精品视频| 亚洲精品水蜜桃| 在线播放欧美女士性生活| 丝袜美腿成人在线| 久久精品视频在线看| 成人综合在线视频| 亚洲欧美日韩在线不卡| 欧美日韩高清一区二区不卡 | 欧美日韩国产天堂| 毛片av中文字幕一区二区| 久久久99精品免费观看不卡| 99久久免费国产| 午夜精品一区二区三区电影天堂| 精品国产凹凸成av人导航| 成人免费视频一区| 亚洲成a人在线观看| 久久久蜜臀国产一区二区| 色欧美日韩亚洲| 精品在线观看免费| 亚洲精品大片www| 日韩欧美在线1卡| 91猫先生在线| 黄页视频在线91| 一区二区三区在线免费视频 | 国产精品正在播放| 亚洲综合色视频| 久久久亚洲国产美女国产盗摄| 色综合久久综合| 国产在线不卡视频| 亚洲成在线观看| 国产精品久久777777| 日韩一区二区三区视频| 成人app网站| 日本中文字幕一区二区有限公司| 国产视频一区二区三区在线观看 | 制服.丝袜.亚洲.另类.中文| 懂色av一区二区三区蜜臀| 日韩在线a电影| 亚洲色图欧美激情| 国产亚洲制服色| 日韩精品影音先锋| 欧美在线制服丝袜| 成人免费不卡视频| 国产一区二区美女| 日产精品久久久久久久性色| 一区二区在线免费观看| 国产精品麻豆99久久久久久| 精品国产乱码久久| 日韩一级大片在线| 欧美羞羞免费网站| 91免费版pro下载短视频| 国产精品1024| 久久99精品国产麻豆不卡| 洋洋成人永久网站入口| 日韩视频在线永久播放| 欧美日韩精品欧美日韩精品一| 97成人超碰视| 99vv1com这只有精品| 懂色av一区二区在线播放| 国产乱人伦偷精品视频不卡| 麻豆精品久久精品色综合| 日本中文一区二区三区| 舔着乳尖日韩一区| 日韩影院精彩在线| 日韩精品视频网站| 日韩电影网1区2区| 日本不卡视频一二三区| 日本欧美韩国一区三区| 日韩成人一级大片| 久久精品国产99国产| 麻豆国产欧美日韩综合精品二区 | 久久精品一区二区| 国产三级精品视频| 精品久久久久99| 精品国内二区三区| 国产三级精品三级| 国产精品美女久久久久久久久| 国产偷国产偷精品高清尤物| 国产欧美精品一区二区色综合| 久久久久久久综合狠狠综合| 国产调教视频一区| 中文字幕日本不卡| 亚洲午夜三级在线| 青青草原综合久久大伊人精品| 美女爽到高潮91| 国产在线精品一区二区夜色| 国产精品综合网| 97se亚洲国产综合自在线| 在线观看国产91| 日韩午夜精品电影| 久久久国产精华| 亚洲欧洲日韩av| 亚洲一区二区欧美| 久久aⅴ国产欧美74aaa| 成人理论电影网| 欧美性受极品xxxx喷水| 欧美一级一级性生活免费录像| 精品精品欲导航| 国产精品毛片无遮挡高清| 亚洲制服欧美中文字幕中文字幕| 日韩成人一区二区三区在线观看| 国产一区二区三区观看| 一本一道波多野结衣一区二区| 欧美四级电影在线观看| 26uuu国产日韩综合| 亚洲色欲色欲www| 国产成人精品www牛牛影视| 在线观看日韩av先锋影音电影院| 欧美视频一区二区三区四区| 日韩欧美一区在线观看| **网站欧美大片在线观看| 国产精品久久久久久久久搜平片| 久久午夜电影网| 蜜桃一区二区三区四区| 91在线无精精品入口| 欧美tickling挠脚心丨vk| 国产精品无遮挡| 国产乱一区二区| 日本二三区不卡| 日韩欧美一级片| 国产精品入口麻豆原神| 日韩国产精品91| av激情亚洲男人天堂| 亚洲欧美日韩国产成人精品影院| 精品理论电影在线观看| 懂色中文一区二区在线播放| 免费在线观看精品| 91麻豆国产精品久久| 久久久久综合网| 天天色综合天天| 91一区在线观看| 国产女人aaa级久久久级| 五月天视频一区| 色综合天天综合色综合av | 亚洲国产日韩精品| 国产成人在线视频网址| 91精品视频网| 亚洲影视资源网| jizzjizzjizz欧美| 欧美国产精品中文字幕| 精品午夜久久福利影院 | 91网站黄www| 国产欧美一区二区精品性 | 免费在线看成人av| 欧美日韩精品一区二区三区四区 | 欧美日韩一级黄| 亚洲人成在线观看一区二区| 国产黄人亚洲片| 久久久久亚洲蜜桃| 蜜桃视频免费观看一区| 91 com成人网| 日韩电影在线一区| 欧美日韩精品三区| 亚洲国产精品欧美一二99| 欧美亚洲动漫制服丝袜| 亚洲一区在线观看免费观看电影高清| 波多野结衣一区二区三区| 日本一区二区成人| 国产精品综合在线视频| 久久免费美女视频| 国内精品伊人久久久久av一坑 | 成人一区二区三区视频在线观看 | 国产老女人精品毛片久久| 国产99久久久精品| 久久综合资源网| 国产综合一区二区| 久久久久国产精品人| 国产麻豆91精品| 亚洲国产精品ⅴa在线观看| 国产凹凸在线观看一区二区| 久久综合九色综合97_久久久 | 国产精品一线二线三线精华| 日韩美女一区二区三区四区| 美腿丝袜一区二区三区| 精品国产乱码久久久久久免费| 久久疯狂做爰流白浆xx| 欧美成人精品1314www| 国产精品亚洲第一| 国产精品成人一区二区三区夜夜夜 | 99久久99久久精品免费观看| 中文字幕欧美一区| 欧美三级电影在线看| 男女男精品视频| 亚洲欧美另类久久久精品2019 | 91在线一区二区三区| 一区二区三区欧美在线观看| 欧美最猛性xxxxx直播| 亚洲午夜免费视频| 精品少妇一区二区三区日产乱码| 国产成人免费xxxxxxxx| 亚洲免费观看在线观看| 6080yy午夜一二三区久久| 精品影视av免费| 亚洲丝袜美腿综合| 91麻豆精品国产综合久久久久久| 久久91精品久久久久久秒播|