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

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

?? entityrenderer.cpp

?? mtext,編輯器,支持潛入對象
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* G:\ICADDEV\PRJ\ICAD\ENTITYRENDERER.CPP
 * Copyright (C) 1997-1998 Visio Corporation. All rights reserved.
 * 
 * Abstract
 * 
 * <TODO : Add Abstract here>
 * 
 */ 
#undef	ASSERT
#undef	VERIFY

#include <afxwin.h>         // MFC core and standard components
#include "icad.h"/*DNT*/
#include "EntityRenderer.h"/*DNT*/
#include "db.h"/*DNT*/
#include "gr.h"/*DNT*/
#include "viewport.h"/*DNT*/
#include "IcadView.h"/*DNT*/

#if defined(USE_SMARTHEAP)
	#include "smrtheap.h"/*DNT*/
#endif

// globals that formerly were in icaddraw.cpp
bool           SDS_DontDrawVPGuts;
bool           SDS_DrawVPGutsOnly;

POINT CEntityRenderer::s_PointsBuffer[ePointsBufferSize];

#ifdef _USE_DISP_OBJ_PTS_3D_
/*------------------------------------------------------------------------*//**
@author Denis Petrov
Rewritten for use with 3D display objects.
*//*-------------------------------------------------------------------------*/
void CEntityRenderer::DrawEntity(db_handitem* elp,
								 CDrawDevice* pDrawDevice, 
								 db_drawing* flp, 
								 struct gr_view* gView, 
								 POINT BltArea[2], 
								 int* FstPt, 
								 int xor, 
								 int hl, 
								 int undraw, 
								 int undrawcol, 
								 int fillmode, 
								 int norecurs, 
								 db_viewport* pViewportForVpLayerSettings, 
								 bool bRedraw, 
								 int width)
{
	db_handitem *telp;
	
	// get the target DC in case we have any TrueType text
	CDC*		pDC = pDrawDevice->getCDC();
	CIcadView*	pIcadView = SDS_CMainWindow->GetIcadView();

	gr_displayobject* pOriginal = (struct gr_displayobject *)elp->ret_disp();
	gr_displayobject* pEnd = NULL;
	if(pOriginal == NULL)
	{
		telp = elp;
		// As an optimization, only use the VpLayerSettings if they really are going to matter
		//
		db_viewport *pViewport = NULL;
		if ( ( pViewportForVpLayerSettings != NULL ) &&
			( pViewportForVpLayerSettings->GetVpLayerFrozenLayerCount( ) > 0 ) )
		{
			pViewport = pViewportForVpLayerSettings;
		}
		
		// get the display objects
		int result = gr_getdispobjs(flp,
			NULL,
			&telp,
			&pOriginal,
			&pEnd,
			NULL,
			flp,
			gView,
			0,
			pDC,
			pViewport);

		if(pOriginal == NULL)
			return;

		elp->set_disp(pOriginal);
	}

	int i, j;
	gr_displayobject* pCurDO;
	int rop;
	bool bUsingGDIPath = false;
	bool bNeedToDelete;
	sds_point projectedPoint;
	
	POINT* pPolyPts; 
	int	iFillColor;
	
    //<alm>
    int hl_store = hl;
    //</alm>

	for(pCurDO = pOriginal; pCurDO; pCurDO = pCurDO->next) 
	{
		if(pCurDO->npts < 2 || !pCurDO->chain)
			continue;
		ASSERT(pCurDO->type & DISP_OBJ_PTS_3D);

		if((pCurDO->color == -1 || xor) && !undraw) 
		{
			rop = R2_XORPEN;
			pDrawDevice->SetDrawMode(RasterConstants::MODE_XOR);
		}
		else
		{
			rop = R2_COPYPEN;
			pDrawDevice->SetDrawMode(RasterConstants::MODE_COPY);
		}

		if(pDrawDevice->is3D())
		{
	        if((pCurDO->type & DISP_OBJ_PTS_GDI_FILLPATH ||
				pCurDO->type & DISP_OBJ_PTS_GDI_TRUETYPE) && !bUsingGDIPath)
			{
				SetDcFillColorMem(undraw ? undrawcol : pCurDO->color, hl, rop, pDrawDevice);
				SetDcColorMem(undraw ? undrawcol : pCurDO->color, width, hl, rop, pDrawDevice);
				pDrawDevice->Polygon(NULL, 0, false);
				bUsingGDIPath = true;
			}

			if(bUsingGDIPath)
			{
				pDrawDevice->Polygon((POINT*)pCurDO->chain, -pCurDO->npts, false);
			}
			else
			{
				SetDcFillColorMem(undraw ? undrawcol : pCurDO->color, hl, rop, pDrawDevice);
				SetDcColorMem(undraw ? undrawcol : pCurDO->color, width, hl, rop, pDrawDevice);
				if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
					pDrawDevice->Polygon((POINT*)pCurDO->chain, pCurDO->npts, true);
				else
					pDrawDevice->Polyline((POINT*)pCurDO->chain, pCurDO->npts);
			}

			if(bUsingGDIPath && (!pCurDO->next || pCurDO->GetSourceEntity() != pCurDO->next->GetSourceEntity() ||
				(!(pCurDO->next->type & DISP_OBJ_PTS_GDI_FILLPATH) &&
				!(pCurDO->next->type & DISP_OBJ_PTS_GDI_TRUETYPE))))
			{
				pDrawDevice->Polygon(NULL, 0, false);
				bUsingGDIPath = false;
			}
			continue;
		}
		
		if(pCurDO->type & DISP_OBJ_SPECIAL)
		{
			// DP: currently only IMAGEs special display objects can be drawn
			ASSERT(pCurDO->GetSourceEntity()->ret_type() == DB_IMAGE);

			// DP: don't draw during real time operations (probably for performance reason)
			if(pIcadView->GetRealTime() != NULL)
				continue;

			if(!drawEntitySpecial(pCurDO, pDrawDevice, flp, gView, hl, xor, undraw))
				ASSERT(FALSE); 
			continue;
		}

        //<alm>
        if (pCurDO->type & DISP_OBJ_HIGHLIGHTED)
            hl = 1;
        else
            hl = hl_store;
        //</alm>
	
        if((pCurDO->type & DISP_OBJ_PTS_GDI_FILLPATH ||
			pCurDO->type & DISP_OBJ_PTS_GDI_TRUETYPE) && !bUsingGDIPath)
		{
			// Prepare a GDI path for filling.
			pDC->SetPolyFillMode(ALTERNATE);
			pDC->BeginPath();
			iFillColor = pCurDO->color;
			bUsingGDIPath = true;
		}
		
		if(pCurDO->npts + 2 > ePointsBufferSize)
		{
			pPolyPts = new POINT[pCurDO->npts + 2];
			bNeedToDelete = true;
		}
		else
		{
			pPolyPts = s_PointsBuffer;
			bNeedToDelete = false;
		}
		SetDcFillColorMem(undraw ? undrawcol : pCurDO->color, hl, rop, pDrawDevice);
		SetDcColorMem(undraw ? undrawcol : pCurDO->color, width, hl, rop, pDrawDevice);
		
		// Now draw it!
		if(((pCurDO->type & DISP_OBJ_PTS_FILLABLE) || (pCurDO->type & DISP_OBJ_PTS_GDI_FILLPATH)) && fillmode)
        {
			for(i = 0, j = 0; i < pCurDO->npts; ++i, j += 3)
			{
				gr_ucs2rp(&(pCurDO->chain[j]), projectedPoint, gView);
				gr_rp2pix(gView, projectedPoint[0], projectedPoint[1], (int*)&pPolyPts[i].x, (int*)&pPolyPts[i].y);
				if(BltArea)
				{
					if(*FstPt) 
					{
						BltArea[0].x = pPolyPts[i].x;  
						BltArea[0].y = pPolyPts[i].y;
						BltArea[1].x = pPolyPts[i].x;  
						BltArea[1].y = pPolyPts[i].y;
						*FstPt=0;
					} 
					else 
					{
						if(BltArea[0].x > pPolyPts[i].x)
							BltArea[0].x = pPolyPts[i].x;
						else
							if(BltArea[1].x < pPolyPts[i].x)
								BltArea[1].x = pPolyPts[i].x;
						if(BltArea[0].y > pPolyPts[i].y)
							BltArea[0].y = pPolyPts[i].y;
						else
							if(BltArea[1].y < pPolyPts[i].y)
								BltArea[1].y = pPolyPts[i].y;
					}
				}
			}
			if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
			{
				gr_ucs2rp(&(pCurDO->chain[0]), projectedPoint, gView);
				gr_rp2pix(gView, projectedPoint[0], projectedPoint[1], (int*)&pPolyPts[pCurDO->npts].x, (int*)&pPolyPts[pCurDO->npts].y);
				if(BltArea)
				{
					if(BltArea[0].x > pPolyPts[i].x)
						BltArea[0].x = pPolyPts[i].x;
					else
						if(BltArea[1].x < pPolyPts[i].x)
							BltArea[1].x = pPolyPts[i].x;
					if(BltArea[0].y > pPolyPts[i].y)
						BltArea[0].y = pPolyPts[i].y;
					else
						if(BltArea[1].y < pPolyPts[i].y)
							BltArea[1].y = pPolyPts[i].y;
				}
			}
			
			// Solid Fill or a path for a Solid hatch or for a TTF text contour
			if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
				pDrawDevice->Polygon(pPolyPts, pCurDO->npts + 1, !(pCurDO->type & DISP_OBJ_PTS_GDI_FILLPATH));
			else
				pDrawDevice->Polygon(pPolyPts, pCurDO->npts, !(pCurDO->type & DISP_OBJ_PTS_GDI_FILLPATH));
        }
		else
		{
			if(pCurDO->type & DISP_OBJ_PTS_GDI_TRUETYPE)
			{
				for(i = 0, j = 0; i < pCurDO->npts; ++i, j += 3)
				{
					gr_ucs2rp(&(pCurDO->chain[j]), projectedPoint, gView);
					gr_rp2pix(gView, projectedPoint[0], projectedPoint[1], (int*)&pPolyPts[i].x, (int*)&pPolyPts[i].y);
					if(BltArea)
					{
						if(*FstPt) 
						{
							BltArea[0].x = pPolyPts[i].x;  
							BltArea[0].y = pPolyPts[i].y;
							BltArea[1].x = pPolyPts[i].x;  
							BltArea[1].y = pPolyPts[i].y;
							*FstPt=0;
						} 
						else 
						{
							if(BltArea[0].x > pPolyPts[i].x)
								BltArea[0].x = pPolyPts[i].x;
							else
								if(BltArea[1].x < pPolyPts[i].x)
									BltArea[1].x = pPolyPts[i].x;
							if(BltArea[0].y > pPolyPts[i].y)
								BltArea[0].y = pPolyPts[i].y;
							else
								if(BltArea[1].y < pPolyPts[i].y)
									BltArea[1].y = pPolyPts[i].y;
						}
					}
				}
				if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
				{
					gr_ucs2rp(&(pCurDO->chain[0]), projectedPoint, gView);
					gr_rp2pix(gView, projectedPoint[0], projectedPoint[1], (int*)&pPolyPts[pCurDO->npts].x, (int*)&pPolyPts[pCurDO->npts].y);
					if(BltArea)
					{
						if(BltArea[0].x > pPolyPts[i].x)
							BltArea[0].x = pPolyPts[i].x;
						else
							if(BltArea[1].x < pPolyPts[i].x)
								BltArea[1].x = pPolyPts[i].x;
						if(BltArea[0].y > pPolyPts[i].y)
							BltArea[0].y = pPolyPts[i].y;
						else
							if(BltArea[1].y < pPolyPts[i].y)
								BltArea[1].y = pPolyPts[i].y;
					}
				}
				
				if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
					pDrawDevice->PolyBezier(pPolyPts, pCurDO->npts + 1);
				else
					pDrawDevice->PolyBezier(pPolyPts, pCurDO->npts);
			}
			else
			{
				int k = 0;
				int clipResult;
				sds_point projectedPoint2;
				// Convert the points into the poly list.
				gr_ucs2rp(&(pCurDO->chain[0]), projectedPoint, gView);
				for (i = 1, j = 3; i < pCurDO->npts; ++i, j += 3) 
				{
					gr_ucs2rp(&(pCurDO->chain[j]), projectedPoint2, gView);
					clipResult = gr_vect_rp2pix(projectedPoint, projectedPoint2,
						(int*)&pPolyPts[k].x,  /* Filling 4 ints. */
						gView);
					memcpy(projectedPoint, projectedPoint2, sizeof(sds_point));
					
					if(BltArea && (clipResult==0 || clipResult==2))
					{
						if(k == 0)
						{
							if(*FstPt) 
							{
								BltArea[0].x = pPolyPts[0].x;  
								BltArea[0].y = pPolyPts[0].y;
								BltArea[1].x = pPolyPts[0].x;  
								BltArea[1].y = pPolyPts[0].y;
								*FstPt = 0;
							} 
							else 
							{
								if(BltArea[0].x > pPolyPts[0].x)
									BltArea[0].x = pPolyPts[0].x;
								else
									if(BltArea[1].x < pPolyPts[0].x)
										BltArea[1].x = pPolyPts[0].x;
								if(BltArea[0].y > pPolyPts[0].y)
									BltArea[0].y = pPolyPts[0].y;
								else
									if(BltArea[1].y < pPolyPts[0].y)
										BltArea[1].y = pPolyPts[0].y;
							}
						}
						if(BltArea[0].x > pPolyPts[k + 1].x)
							BltArea[0].x = pPolyPts[k + 1].x;
						else
							if(BltArea[1].x < pPolyPts[k + 1].x)
								BltArea[1].x = pPolyPts[k + 1].x;
						if(BltArea[0].y > pPolyPts[k + 1].y)
							BltArea[0].y = pPolyPts[k + 1].y;
						else
							if(BltArea[1].y < pPolyPts[k + 1].y)
								BltArea[1].y = pPolyPts[k + 1].y;
					} // end of if(BltArea && ...
					
					++k;	
					// each of the cases clipresult==1 and clipresult==2 sets chainidx to 0, which keeps the next code block
					// from executing, so commenting out the continues is valid
					//
					if(clipResult == 1) 
					{
						if(k > 1) // Off the screen.
							pDrawDevice->Polyline(pPolyPts, k);
						// Reset the beg poly point counter.
						k = 0;
					}
					else 
						if(clipResult==2) 
						{  // Chopped it
							pDrawDevice->Polyline(pPolyPts, k + 1);
							// Reset the beg poly point counter.
							k = 0;
						}
						
				} // end of loop over points in poly list
				
				if(pCurDO->type & DISP_OBJ_PTS_CLOSED)
				{
					gr_ucs2rp(&(pCurDO->chain[0]), projectedPoint2, gView);
					clipResult = gr_vect_rp2pix(projectedPoint, projectedPoint2,
						(int*)&pPolyPts[k].x,  /* Filling 4 ints. */
						gView);
					
					if(BltArea && (clipResult==0 || clipResult==2))
					{
						if(BltArea[0].x > pPolyPts[k + 1].x)
							BltArea[0].x = pPolyPts[k + 1].x;
						else
							if(BltArea[1].x < pPolyPts[k + 1].x)
								BltArea[1].x = pPolyPts[k + 1].x;
						if(BltArea[0].y > pPolyPts[k + 1].y)
							BltArea[0].y = pPolyPts[k + 1].y;
						else
							if(BltArea[1].y < pPolyPts[k + 1].y)
								BltArea[1].y = pPolyPts[k + 1].y;
					} // end of if(BltArea && ...
					
					++k;
					// each of the cases clipresult==1 and clipresult==2 sets chainidx to 0, which keeps the next code block
					// from executing, so commenting out the continues is valid
					//
					if(clipResult == 1) 
					{
						if(k > 1) // Off the screen.
							pDrawDevice->Polyline(pPolyPts, k);
						// Reset the beg poly point counter.
						k = 0;
					}
					else 
						if(clipResult==2) 
						{  // Chopped it
							pDrawDevice->Polyline(pPolyPts, k + 1);
							// Reset the beg poly point counter.
							k = 0;
						}
						
				} // end of loop over points in poly list
				
				if(k) 
					pDrawDevice->Polyline(pPolyPts, k + 1);
				
			}
		}
		
	/*
		if(bUsingGDIPath && (!pCurDO->next || pCurDO->GetSourceEntity() != pCurDO->next->GetSourceEntity() ||
				(!(pCurDO->next->type & DISP_OBJ_PTS_GDI_FILLPATH) &&
				!(pCurDO->next->type & DISP_OBJ_PTS_GDI_TRUETYPE))))*/
		//gaowen NO2003-11-17-11:01[	
			if(bUsingGDIPath && (!pCurDO->next || pCurDO->GetSourceEntity() != pCurDO->next->GetSourceEntity() ||
				(!(pCurDO->next->type & DISP_OBJ_PTS_GDI_FILLPATH) &&
				!(pCurDO->next->type & DISP_OBJ_PTS_GDI_TRUETYPE)))||
				(pCurDO->next&&pCurDO->color!=pCurDO->next->color)
				)
		//gaowen NO2003-11-17-11:01]
		{
			// Now let's fill the GDI path.
			pDC->EndPath();
			
			if(IsPrinting())
				SetDcFillColorMem(undraw ? undrawcol : iFillColor, hl, rop, pDrawDevice);
			else
			{
				HBRUSH hBrush;
				if(hl)
				{
					resbuf	rb;
					sds_getvar("BKGCOLOR", &rb);
					int		BGColor = SDS_RGBFromACADColor(rb.resval.rint);
					hBrush = ::CreateHatchBrush(HS_DIAGCROSS, BGColor);
				}
				else
					hBrush = ::CreateSolidBrush(::SDS_BrushColorFromACADColor(undraw ? undrawcol : iFillColor));
				
				::DeleteObject(::SelectObject(pDC->m_hDC, hBrush));
			}
			
			if(hl)
			{
				int	oldBackMode = pDC->SetBkMode(TRANSPARENT);
				pDC->StrokeAndFillPath();
				pDC->SetBkMode(oldBackMode);
			}
			else
				pDC->StrokeAndFillPath();
			
			bUsingGDIPath = false;
		}

		if(bNeedToDelete)
			delete[] pPolyPts;
	} // end of loop over items (DispObjs) to draw
}
#endif

void CEntityRenderer::outputPolygon(int ndims, 
									int face, 
									struct gr_displayobject *tdo1, 
									CDrawDevice *pDrawDevice,
									struct gr_view *gView, 
									POINT BltArea[2], 
									int *FstPt,
									int undraw,
									int undrawcol,
									int rop,
									int hl,
									int width, 
									bool onlyFill)
{
	int fi1,fi2,fi4;
	
	fi2=(tdo1->npts+face)*ndims;
	
	const int BufferSize = 100;
	bool NeedToDelete;
	
	POINT * pPolyPts; 
	POINT PointBuffer[BufferSize];
	
	if (fi2/ndims > BufferSize)
	{
		pPolyPts = new POINT[fi2/ndims];
		NeedToDelete = true;
	}
	else
	{
		pPolyPts = PointBuffer;
		NeedToDelete = false;
	}
	
	for (fi1=0; fi1<fi2; fi1+=ndims) 
	{
		if (face && fi1>=fi2-ndims) 
		{
			gr_rp2pix(gView,tdo1->chain[0],tdo1->chain[1],(int *)&pPolyPts[fi1/ndims].x,(int *)&pPolyPts[fi1/ndims].y);
		} 
		else 
		{
			gr_rp2pix(gView,tdo1->chain[fi1],tdo1->chain[fi1+1],(int *)&pPolyPts[fi1/ndims].x,(int *)&pPolyPts[fi1/ndims].y);
		}
	} // end of for(fi1=0...
	
	// Expand the Bitblt area if needed.
	if(BltArea) 
	{		
		for (fi1=0; fi1<fi2; fi1+=ndims) 
		{
			fi4=fi1/ndims;
			if(*FstPt) 
			{
				BltArea[0].x=pPolyPts[fi4].x;  
				BltArea[0].y=pPolyPts[fi4].y;
				BltArea[1].x=pPolyPts[fi4].x;  
				BltArea[1].y=pPolyPts[fi4].y;
				*FstPt=0;
			} 
			else 
			{
				if(BltArea[0].x>pPolyPts[fi4].x)
					BltArea[0].x=pPolyPts[fi4].x;
				if(BltArea[0].y>pPolyPts[fi4].y)
					BltArea[0].y=pPolyPts[fi4].y;
				if(BltArea[1].x<pPolyPts[fi4].x)
					BltArea[1].x=pPolyPts[fi4].x;
				if(BltArea[1].y<pPolyPts[fi4].y)
					BltArea[1].y=pPolyPts[fi4].y;
			}
		}
	} // end of if (BltArea)
	SetDcFillColorMem(undraw ? undrawcol : tdo1->color,hl,rop,pDrawDevice);
	SetDcColorMem(undraw ? undrawcol : tdo1->color,width,hl,rop,pDrawDevice);
	pDrawDevice->Polygon(pPolyPts,tdo1->npts+face, onlyFill);
	
	if (NeedToDelete)
	{
		delete [] pPolyPts;
	}
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情文学综合网| 精品一区二区三区香蕉蜜桃| 亚洲精品日产精品乱码不卡| 国产精品国产三级国产专播品爱网| 国产精品天干天干在线综合| 尤物在线观看一区| 免费成人在线播放| 成人动漫在线一区| 国产亚洲人成网站| 亚洲一区在线观看视频| 久久国产欧美日韩精品| 国产露脸91国语对白| 欧美亚一区二区| 国产午夜精品在线观看| 日韩中文字幕91| 国产自产视频一区二区三区| eeuss鲁一区二区三区| 欧美剧情片在线观看| 国产精品高清亚洲| 国内成人免费视频| 欧美日韩精品三区| 中文字幕一区视频| 韩国精品免费视频| 日韩一区二区三区视频| 一区二区三区波多野结衣在线观看 | 成人激情视频网站| 久久久国产午夜精品| 麻豆久久一区二区| 日韩一区二区免费在线电影| 午夜精品久久久久久久久久| 色老汉一区二区三区| 国产精品欧美一区喷水| 国产福利一区在线| 国产亚洲欧美日韩俺去了| 激情欧美一区二区| 久久综合视频网| 麻豆成人免费电影| 久久影音资源网| 成人免费三级在线| 夜夜嗨av一区二区三区四季av| 一本色道亚洲精品aⅴ| 亚洲综合色婷婷| 日韩一级大片在线观看| 国产91精品入口| 亚洲欧美色图小说| 91麻豆精品国产综合久久久久久 | 91性感美女视频| 亚洲麻豆国产自偷在线| 日韩欧美中文字幕精品| 国产成人免费视频网站| 亚洲成人精品一区| 久久精品免视看| 欧美日韩精品一区二区在线播放| 蜜桃精品视频在线观看| 亚洲色图清纯唯美| 精品少妇一区二区三区在线视频| 成人av影院在线| 麻豆成人久久精品二区三区小说| 国产精品久久久久四虎| 欧美不卡激情三级在线观看| 欧美色网站导航| 成人av在线网站| 激情文学综合插| 亚洲永久精品大片| 国产精品乱码一区二三区小蝌蚪| 欧美日韩一区在线观看| 91在线视频观看| 国产真实乱对白精彩久久| 亚洲国产综合91精品麻豆| 国产精品国产精品国产专区不蜜| 精品99999| 精品国产免费人成电影在线观看四季| 不卡的av电影在线观看| 国产成人aaa| 国内偷窥港台综合视频在线播放| 亚洲一级二级在线| 亚洲欧美日韩在线播放| 亚洲另类在线视频| 亚洲欧美日韩系列| 日韩伦理免费电影| 亚洲摸摸操操av| 一区二区三区四区不卡在线| 亚洲色图制服丝袜| 午夜成人免费视频| 蜜臀国产一区二区三区在线播放| 婷婷开心久久网| 日韩精品电影在线观看| 精品一区免费av| 粉嫩av一区二区三区| 色天使色偷偷av一区二区| 色一情一乱一乱一91av| 91精品国产综合久久久久久| 欧美一区二区在线播放| 国产亚洲一区二区三区在线观看| 亚洲国产精品高清| 亚洲一区二区三区免费视频| 亚洲国产视频一区| 美女网站在线免费欧美精品| 久久国产精品色| 日本韩国欧美一区| 日韩精品一区二区三区视频在线观看 | 欧美xxxx在线观看| 亚洲欧美区自拍先锋| 亚洲.国产.中文慕字在线| 国产精品一区专区| 8v天堂国产在线一区二区| 国产日韩视频一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 蜜臀91精品一区二区三区| 91视频观看免费| 国产亲近乱来精品视频| 精品亚洲成a人在线观看| 在线一区二区三区做爰视频网站| 欧美成人bangbros| 蜜桃视频一区二区| 欧美一区二区免费视频| 亚洲午夜电影在线观看| 91久久精品一区二区三区| 欧美国产视频在线| 国产91精品欧美| 国产亚洲综合在线| 丁香啪啪综合成人亚洲小说| 久久精品一区二区三区不卡牛牛| 蜜桃视频免费观看一区| 日韩亚洲欧美高清| 免费成人在线观看| 精品久久久久香蕉网| 日本美女视频一区二区| 91精品国产麻豆国产自产在线 | 在线观看日韩电影| 一区二区三区在线播放| 在线亚洲一区观看| 午夜欧美2019年伦理| 精品国产亚洲在线| 成人黄色综合网站| 亚洲国产视频a| 中文字幕欧美日本乱码一线二线 | 日本一区二区三级电影在线观看 | 久久久91精品国产一区二区三区| 国产不卡视频在线播放| 亚洲女子a中天字幕| 欧美色国产精品| 激情伊人五月天久久综合| 亚洲欧洲日本在线| 日韩天堂在线观看| 91香蕉视频在线| 国产乱淫av一区二区三区 | 色婷婷亚洲综合| 精油按摩中文字幕久久| 一区在线中文字幕| 国产女主播视频一区二区| 欧美视频自拍偷拍| av一区二区三区在线| 久久精品国产澳门| 天天射综合影视| 一区二区三区**美女毛片| 久久久99久久| 日韩欧美成人一区二区| 欧美在线一二三| 色综合久久66| 91啪九色porn原创视频在线观看| 久久国产免费看| 黄色精品一二区| 精品一区在线看| 国产麻豆精品在线观看| 精品一区二区在线视频| 久久精品免费观看| 久久精品国产第一区二区三区| 亚洲福利视频三区| 一区二区三区欧美日| 一区二区日韩电影| 亚洲永久精品国产| 午夜影视日本亚洲欧洲精品| 伊人开心综合网| 日韩激情视频网站| 国产一区二区不卡在线 | 中文乱码免费一区二区| 国产日韩精品一区| 亚洲国产精品成人久久综合一区| 国产精品乱码久久久久久| 国产婷婷色一区二区三区| 中文字幕一区二区三区av | 91精品福利视频| 欧美一区二区视频在线观看| 日韩精品中午字幕| 国产精品久久777777| 亚洲美女一区二区三区| 日韩和欧美的一区| 成人激情综合网站| 在线观看亚洲a| 久久久久国产精品麻豆ai换脸 | 成人91在线观看| 欧美一级一级性生活免费录像| 国产日产精品一区| 午夜伦理一区二区| 91麻豆福利精品推荐| 国产亚洲精品福利| 日本不卡视频在线| 欧美日韩国产首页| 亚洲欧洲日韩一区二区三区|