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

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

?? 3dmeterctrl.cpp

?? cp2102 官方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一区二区三区免费野_久草精品视频
丁香五精品蜜臀久久久久99网站| 欧美精品一区二区三区在线| 亚洲精品免费在线播放| 午夜久久久影院| 国产91丝袜在线播放0| 欧美伦理视频网站| 国产精品成人在线观看| 精品亚洲porn| 欧美日韩高清一区二区三区| 国产精品久久久久影院亚瑟| 国产麻豆欧美日韩一区| 91精品免费在线观看| 尤物av一区二区| 不卡视频在线观看| 国产女人18毛片水真多成人如厕| 亚洲1区2区3区4区| 在线精品视频一区二区| 国产精品久久影院| 风间由美一区二区av101| 欧美大片在线观看一区二区| 午夜av一区二区三区| 色婷婷综合久久久中文字幕| 综合久久久久久| 91丨九色丨蝌蚪丨老版| 中文字幕不卡的av| 成人午夜看片网址| 日本一区二区不卡视频| 成人永久免费视频| 国产日韩av一区二区| 国产高清久久久| 26uuuu精品一区二区| 国产在线观看一区二区| 精品第一国产综合精品aⅴ| 日韩va亚洲va欧美va久久| 欧美一区二区三区视频免费| 日韩极品在线观看| 日韩视频一区二区三区| 激情av综合网| 久久精品一区蜜桃臀影院| 大尺度一区二区| 一区在线观看视频| 91国偷自产一区二区三区成为亚洲经典| 欧美亚州韩日在线看免费版国语版| 亚洲三级免费观看| 欧美在线一区二区| 日本91福利区| 久久久无码精品亚洲日韩按摩| 国产电影精品久久禁18| 中文字幕一区二区在线观看| 91久久免费观看| 丝袜美腿亚洲色图| 亚洲精品在线三区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲欧洲一区二区在线播放| 欧美日韩国产影片| 黑人巨大精品欧美黑白配亚洲| 国产精品美女久久久久久久久| av亚洲精华国产精华精| 一区二区在线免费观看| 4438x亚洲最大成人网| 国产一区二区三区久久悠悠色av| 中文字幕中文字幕一区| 欧美伊人精品成人久久综合97| 乱一区二区av| 国产精品久久久久三级| 欧美精品乱码久久久久久| 国产麻豆视频一区二区| 亚洲一区二区四区蜜桃| 精品国产一二三| 91激情五月电影| 国产一区免费电影| 亚洲精品乱码久久久久久久久 | 亚洲国产精品久久人人爱蜜臀| 欧美精品 国产精品| 粉嫩绯色av一区二区在线观看| 亚洲影院理伦片| 国产视频一区二区在线| 欧美日韩一二三| 成人av在线一区二区三区| 日韩成人伦理电影在线观看| 国产精品第五页| 日韩免费高清视频| 欧美私人免费视频| 成人精品鲁一区一区二区| 美腿丝袜亚洲综合| 一区二区三区不卡视频| 国产精品人成在线观看免费| 欧美大尺度电影在线| 欧美日韩精品二区第二页| kk眼镜猥琐国模调教系列一区二区| 美女一区二区视频| 午夜久久福利影院| 一区二区三区中文字幕在线观看| 国产亚洲欧洲997久久综合| 91超碰这里只有精品国产| 色婷婷狠狠综合| 99久久国产免费看| 丁香桃色午夜亚洲一区二区三区| 麻豆精品久久精品色综合| 亚洲成年人影院| 夜夜精品视频一区二区| 亚洲欧美在线视频观看| 国产日韩欧美在线一区| 精品国产一区二区三区不卡| 51久久夜色精品国产麻豆| 欧美日韩国产精品成人| 91久久精品网| 在线观看一区日韩| 色94色欧美sute亚洲线路一ni| av一区二区三区| 成人黄动漫网站免费app| 国产精品影视天天线| 国产一区二区三区在线看麻豆| 老司机一区二区| 九九**精品视频免费播放| 蓝色福利精品导航| 韩国三级在线一区| 国产一区久久久| 成人小视频免费在线观看| 成人天堂资源www在线| 高清不卡在线观看av| 成人av在线网| 色综合久久中文综合久久牛| 欧美性高清videossexo| 7777女厕盗摄久久久| 日韩午夜中文字幕| 久久久综合视频| 国产精品情趣视频| 亚洲人吸女人奶水| 午夜欧美视频在线观看| 日本午夜精品视频在线观看| 免费在线看成人av| 国产福利一区二区| av一区二区三区在线| 欧美日韩五月天| 精品国产麻豆免费人成网站| 久久精品欧美一区二区三区麻豆| 中文字幕在线观看不卡| 亚洲成人av中文| 国模一区二区三区白浆| 91免费看视频| 91精品中文字幕一区二区三区| 日韩三级中文字幕| 中文字幕va一区二区三区| 午夜影院久久久| 国产呦萝稀缺另类资源| 91久久精品日日躁夜夜躁欧美| 在线播放国产精品二区一二区四区 | 欧美三级电影在线观看| 日韩色在线观看| 国产精品电影一区二区| 婷婷丁香激情综合| 国产1区2区3区精品美女| 欧美日韩国产免费| 欧美国产视频在线| 日韩国产在线观看一区| 成人免费视频视频在线观看免费| 欧美视频中文字幕| 国产喷白浆一区二区三区| 亚洲成人动漫在线观看| 成人永久看片免费视频天堂| 777奇米四色成人影色区| 中文字幕在线播放不卡一区| 男男视频亚洲欧美| 91国产精品成人| 国产视频在线观看一区二区三区 | 老鸭窝一区二区久久精品| 色综合一区二区| 精品不卡在线视频| 性做久久久久久免费观看欧美| 懂色av一区二区三区蜜臀| 91精品国产一区二区| ㊣最新国产の精品bt伙计久久| 精品一区二区三区在线播放视频| 色嗨嗨av一区二区三区| 国产精品女主播av| 韩日欧美一区二区三区| 宅男在线国产精品| 亚洲综合视频网| 色综合久久六月婷婷中文字幕| 欧美激情一二三区| 国产九色sp调教91| 日韩精品一区二区三区视频播放 | 91精品国产综合久久久久久久久久 | 麻豆成人久久精品二区三区红| 欧美午夜免费电影| 亚洲乱码中文字幕综合| 成人h版在线观看| 中文子幕无线码一区tr| 国产制服丝袜一区| 精品久久久久久久久久久久久久久 | 色av一区二区| 亚洲日本va午夜在线电影| 成人综合在线观看| 国产亚洲欧洲997久久综合| 国产精品中文字幕欧美| 国产偷v国产偷v亚洲高清| 韩国av一区二区三区在线观看| 欧美videos中文字幕| 激情国产一区二区|