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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 3dmeterctrl.cpp

?? 在PC上通過USB與C8051通信
?? 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();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区视频| 免费成人av资源网| 91黄视频在线观看| 亚洲一级不卡视频| 欧美视频在线一区二区三区| 午夜欧美电影在线观看| 日韩视频免费观看高清完整版在线观看| 首页欧美精品中文字幕| 欧美www视频| 成人av影院在线| 亚洲一区视频在线| 亚洲视频 欧洲视频| xfplay精品久久| 精品久久久久久亚洲综合网| 国产精品成人在线观看| 91丝袜美腿高跟国产极品老师| 亚洲精品久久嫩草网站秘色| 欧美妇女性影城| 国产精品66部| 一区二区三区四区在线播放| 91麻豆精品国产91久久久久久| 麻豆视频观看网址久久| 中文字幕在线观看不卡| 欧美少妇xxx| 国产伦精一区二区三区| 自拍偷拍欧美精品| 日韩区在线观看| 99久久婷婷国产综合精品| 日韩高清中文字幕一区| 国产欧美一区视频| 91精品国模一区二区三区| 国产成人亚洲综合a∨猫咪| 亚洲va欧美va人人爽| 美洲天堂一区二卡三卡四卡视频| 欧美一区二区三区视频在线| 樱花影视一区二区| 久久久久久电影| 欧美日韩亚州综合| 99久久99久久综合| 韩国毛片一区二区三区| 亚洲网友自拍偷拍| 自拍视频在线观看一区二区| 精品国一区二区三区| 欧美在线你懂的| 99久久久久免费精品国产| 麻豆91免费观看| 亚洲精品日韩一| 国产欧美一区二区三区在线看蜜臀| 欧美日本韩国一区二区三区视频| 99久久婷婷国产综合精品| 激情综合一区二区三区| 热久久免费视频| 亚洲va欧美va国产va天堂影院| 中文字幕av一区 二区| 久久一区二区视频| 日韩欧美亚洲一区二区| 在线91免费看| 欧美在线免费视屏| 色综合一个色综合| 99在线精品一区二区三区| 国产精华液一区二区三区| 美女网站在线免费欧美精品| 调教+趴+乳夹+国产+精品| 亚洲猫色日本管| 国产精品激情偷乱一区二区∴| 欧美mv日韩mv国产网站app| 欧美一区午夜精品| 精品视频资源站| 欧美日韩国产经典色站一区二区三区| 成人免费视频网站在线观看| 国产麻豆视频一区二区| 久久99精品国产| 国产综合色产在线精品| 精品一区二区在线播放| 国产自产高清不卡| 国产一区二区三区不卡在线观看| 久久精品噜噜噜成人av农村| 麻豆精品视频在线观看视频| 美女被吸乳得到大胸91| 久久精品国产久精国产| 蜜桃视频免费观看一区| 蜜桃视频在线观看一区| 国内成人免费视频| 国产一区二区视频在线| 国产成人精品在线看| 丰满白嫩尤物一区二区| www.av精品| 欧美三级午夜理伦三级中视频| 欧美三级日韩三级国产三级| 69堂成人精品免费视频| 精品国产髙清在线看国产毛片| 久久久国产一区二区三区四区小说| 国产区在线观看成人精品| 成人免费在线视频观看| 亚洲一卡二卡三卡四卡无卡久久| 亚洲成人精品影院| 捆绑紧缚一区二区三区视频| 国产精品白丝jk白祙喷水网站| 成人自拍视频在线| 欧美日本乱大交xxxxx| 日韩一级免费一区| 日本一区二区三区国色天香| 亚洲欧美综合在线精品| 亚洲成人动漫一区| 精品一区二区免费视频| 不卡影院免费观看| 欧美巨大另类极品videosbest| 7777精品伊人久久久大香线蕉经典版下载 | 丁香另类激情小说| 在线亚洲高清视频| 欧美一级视频精品观看| 国产女主播在线一区二区| 亚洲影院在线观看| 加勒比av一区二区| 色综合久久综合网97色综合| 日韩一级片在线播放| 亚洲色图一区二区| 久久精品国产99国产精品| 91蜜桃在线观看| 这里只有精品电影| 国产精品福利一区| 乱一区二区av| 欧美三区在线视频| 国产精品久久久久影院色老大 | 日韩一级高清毛片| 国产精品成人一区二区艾草| 青青草成人在线观看| 成人福利在线看| 日韩一级在线观看| 亚洲精品成人在线| 国产精品综合视频| 91精品在线免费| 亚洲精品免费在线播放| 国产经典欧美精品| 日韩三级在线免费观看| 亚洲婷婷国产精品电影人久久| 韩国精品免费视频| 欧美疯狂做受xxxx富婆| 亚洲欧美一区二区三区极速播放 | 国产午夜精品一区二区三区视频 | 欧美三区免费完整视频在线观看| 久久久国产综合精品女国产盗摄| 午夜精品福利一区二区三区av| 91婷婷韩国欧美一区二区| 欧美国产激情一区二区三区蜜月| 久久精工是国产品牌吗| 欧美伊人精品成人久久综合97| **欧美大码日韩| 国产成人综合自拍| 久久免费视频色| 国内精品视频666| 欧美成人伊人久久综合网| 奇米色一区二区| 欧美一区日韩一区| 日本最新不卡在线| 欧美日韩激情在线| 亚洲午夜电影网| 欧美日韩综合在线免费观看| 亚洲五月六月丁香激情| 欧美综合亚洲图片综合区| 玉米视频成人免费看| 在线观看欧美黄色| 亚洲小说欧美激情另类| 在线观看一区二区精品视频| 亚洲永久精品大片| 9191国产精品| 精品亚洲国内自在自线福利| 日韩免费性生活视频播放| 久久精品国产**网站演员| 欧美sm美女调教| 国产乱子伦一区二区三区国色天香| 欧美变态凌虐bdsm| 国产乱人伦精品一区二区在线观看| 精品国产乱码久久久久久浪潮 | 色综合久久综合网97色综合| 亚洲色大成网站www久久九九| 91女人视频在线观看| 一本大道久久a久久综合婷婷| 国产露脸91国语对白| 亚洲一区二区三区在线看| 亚洲精品国产a| 欧美综合色免费| 免费人成网站在线观看欧美高清| 91麻豆精品国产自产在线 | 国产偷国产偷精品高清尤物| 国产在线视视频有精品| 国产日韩欧美制服另类| 成人久久18免费网站麻豆| 亚洲欧美一区二区三区久本道91 | 成人小视频在线| 一区二区三区四区中文字幕| 欧美精品自拍偷拍| 精品系列免费在线观看| 国产三级欧美三级日产三级99 | 91麻豆国产精品久久| 亚洲一区二区黄色| 久久综合狠狠综合| 99久久综合99久久综合网站| 亚洲欧洲韩国日本视频| 国产麻豆精品视频|