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

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

?? my_directdraw.cpp

?? 這是紙牌游戲斗地主,算法完整,可以單機(jī),網(wǎng)絡(luò)連線玩.
?? CPP
字號:

#include "stdafx.h"
#include "MainFrm.h"

#include "Game.h"
#include "My_DirectInput.h"
#include "my_directdraw.h"

#include "Draw_Cards_Engine.h"

#include "Playing_Cards.h"


#include <io.h>

CMyDirectDraw::CMyDirectDraw()
{
	lpdd         = NULL;   // dd object
	lpddclipper  = NULL;   // dd clipper

	bitmap.buffer = NULL; //記住!!!!!!初始化!!!!!永遠(yuǎn)的傷
	start_clock_count = 0; // used for timing

	SCREEN_BPP = 32;

}


int CMyDirectDraw::Flip_Bitmap(UCHAR *image, int bytes_per_line, int height)
{
// 將數(shù)據(jù)讀入表面

	UCHAR *buffer; // used to perform the image processing
	int index;  

	if (!(buffer = (UCHAR *)new UCHAR[bytes_per_line*height]) )
		return(0);

	memcpy(buffer,image,bytes_per_line*height);

	for (index=0; index < height; index++)
	{
	    memcpy(&image[((height-1) - index)*bytes_per_line],
			   &buffer[index*bytes_per_line], bytes_per_line);
	}

// release the memory
	delete(buffer);

	return(1);

} // end Flip_Bitmap

//讀取位圖的方法:

int CMyDirectDraw::Load_Bitmap_File(BITMAP_FILE_PTR bitmap, char *filename)
{
//
	int file_handle;  // the file handle
       
	UCHAR   *temp_buffer = NULL; 
	OFSTRUCT file_data;     

// 打開文件如果它存在;
	if ((file_handle = OpenFile(filename,&file_data,OF_READ))==-1)
	   return(0);


	_lread(file_handle, &bitmap->bitmapfileheader,sizeof(BITMAPFILEHEADER));


	if (bitmap->bitmapfileheader.bfType!=BITMAP_ID)
	{
		//如果不是位圖,則關(guān)閉文件,返回;
	  _lclose(file_handle);
	  return(0);
    } // end if

// 發(fā)現(xiàn)是位圖,繼續(xù);

// 讀取文件頭;
	_lread(file_handle, &bitmap->bitmapinfoheader,sizeof(BITMAPINFOHEADER));

//如果是8位位圖,則返回;
	if (bitmap->bitmapinfoheader.biBitCount == 8)
	{
		AfxMessageBox("本游戲不能讀取8位位圖!");
		return 0;
	} // end if

	//從文件結(jié)尾反向搜位圖數(shù)據(jù)字節(jié)大小的長度;
	_lseek(file_handle,(int)(sizeof(BITMAPFILEHEADER)+
	   sizeof(BITMAPINFOHEADER)),SEEK_SET);

	int Image_Size = bitmap->bitmapfileheader.bfSize-
		(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER));

	if (bitmap->bitmapinfoheader.biBitCount==8 || bitmap->bitmapinfoheader.biBitCount==16 || 
	    bitmap->bitmapinfoheader.biBitCount==24)
    {
//如果位圖存在,則先釋放;
	   if (bitmap->buffer)
	       free(bitmap->buffer);


	   if ( !(bitmap->buffer = (UCHAR *)new UCHAR [Image_Size]) )
	      {
 
			_lclose(file_handle);
			return(0);
	      } 
	   _lread(file_handle,bitmap->buffer,Image_Size);

	} 
	else
	{
   //見鬼了!
	   return(0);
    } 

	_lclose(file_handle);

// flip the bitmap
	Flip_Bitmap(bitmap->buffer, 
	            bitmap->bitmapinfoheader.biWidth*(bitmap->bitmapinfoheader.biBitCount/8), 
	            bitmap->bitmapinfoheader.biHeight);

	return(1);

} 

int CMyDirectDraw::Unload_Bitmap_File(BITMAP_FILE_PTR bitmap)
{
// this function releases all memory associated with "bitmap"
	if (bitmap->buffer)
	{
   // release memory
	   delete(bitmap->buffer);

	   bitmap->buffer = NULL;
    } 
	return(1);

} 

int CMyDirectDraw::Scan_Image_Bitmap(BITMAP_FILE_PTR bitmap,     // bitmap file to scan image data from
				                      LPDIRECTDRAWSURFACE7 lpdds, // surface to hold data
				                      int cx, int cy)             // cell to scan image from
{
//將位圖像素寫到表面去!
	DDSURFACEDESC2 ddsd;  //  direct draw surface description 
 
// set size of the structure
	ddsd.dwSize = sizeof(ddsd);

// lock the display surface
	lpdds->Lock(NULL,
	            &ddsd,
	            DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR,
	            NULL);

	cx = cx*(ddsd.dwWidth+1) + 1;
	cy = cy*(ddsd.dwHeight+1) + 1;

	DWORD *dest_ptr;
	UCHAR blue,green,red;
	dest_ptr = (DWORD *)ddsd.lpSurface;

	for (DWORD index_y = 0; index_y < ddsd.dwHeight; index_y++)
	{
		for (DWORD index_x = 0; index_x < ddsd.dwWidth; index_x++)
		{
        // get BGR values;;;;
			int index = index_y*(bitmap->bitmapinfoheader.biWidth)*3 + index_x*3;

			blue  = bitmap->buffer[index + 0];
			green = bitmap->buffer[index + 1];
			red   = bitmap->buffer[index + 2];

        // 32位RGB數(shù);
			DWORD pixel = _RGB32BIT(0,red,green,blue);

			dest_ptr[index_x + (index_y*ddsd.lPitch >> 2)] = pixel;
		} 
			
	} 

	// unlock the surface 
	lpdds->Unlock(NULL);

	return(1);
}

//填充表面的方法
int CMyDirectDraw::FillSurface(LPDIRECTDRAWSURFACE7 lpdds,int color)
{
	DDBLTFX ddbltfx;

//初始化ddbltfx結(jié)構(gòu);
	DDRAW_INIT_STRUCT(ddbltfx);

// 需要填空全屏的顏色值;
	ddbltfx.dwFillColor = color; 

// blt to surface
	lpdds->Blt(
			   NULL,       // ptr to dest rectangle
	           NULL,       // ptr to source surface, NA            
	           NULL,       // ptr to source rectangle, NA
	           DDBLT_COLORFILL | DDBLT_WAIT,   // fill and wait                   
		       &ddbltfx
			   );  // ptr to DDBLTFX structure


	return(1);
} // end FillSurface

//根據(jù)傳入?yún)?shù)建立相應(yīng)的表面
LPDIRECTDRAWSURFACE7 CMyDirectDraw::CreateSurface(
										  int width,
										  int height,
										  int mem_flags,
										  int color = 0)
{
// this function creates an offscreen plain surface

	DDSURFACEDESC2 ddsd;         // working description
	LPDIRECTDRAWSURFACE7 lpdds;  // temporary surface
    
// set to access caps, width, and height
	memset(&ddsd,0,sizeof(ddsd));
	ddsd.dwSize  = sizeof(ddsd);
	ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;

// set dimensions of the new bitmap surface
	ddsd.dwWidth  =  width;
	ddsd.dwHeight =  height;

// set surface to offscreen plain
	ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | mem_flags;

// create the surface
	if (FAILED(lpdd->CreateSurface(&ddsd,&lpdds,NULL)))
	   return(NULL);

// test if user wants a color key
	if (color >= 0)
    {
   // set color key to color 0
	   DDCOLORKEY color_key; // used to set color key
	   color_key.dwColorSpaceLowValue  = color;
	   color_key.dwColorSpaceHighValue = color;

   // now set the color key for source blitting
	   lpdds->SetColorKey(DDCKEY_SRCBLT, &color_key);
	}  // end if

// return surface
	return(lpdds);
} // end CreateSurface

int CMyDirectDraw::DrawSurface(
					  LPDIRECTDRAWSURFACE7 source, // source surface to draw
                      int x, int y,                 // position to draw at
                      int width, int height,        // size of source surface
                      LPDIRECTDRAWSURFACE7 dest,    // surface to draw the surface on
                      int transparent = 1)          // transparency flag
{
// draw a bob at the x,y defined in the BOB
// on the destination surface defined in dest

	RECT dest_rect,   // the destination rectangle
		 source_rect; // the source rectangle                             

// fill in the destination rect
	dest_rect.left   = x;
	dest_rect.top    = y;
	dest_rect.right  = x+width;
	dest_rect.bottom = y+height;

// fill in the source rect
	source_rect.left    = 0;
	source_rect.top     = 0;
	source_rect.right   = width;
	source_rect.bottom  = height;

// test transparency flag

	if (transparent)
    {
   // enable color key blit
   // blt to destination surface
	   if (FAILED(dest->Blt(&dest_rect, source,
                     &source_rect,(DDBLT_WAIT | DDBLT_KEYSRC),
                     NULL)))
            return(0);

	} // end if
	else
    {
   // perform blit without color key
   // blt to destination surface
		if (FAILED(dest->Blt(&dest_rect, source,
                     &source_rect,(DDBLT_WAIT),
                     NULL)))
           return(0);

	} // end if

// return success
	return(1);

} // end DrawSurface
//創(chuàng)建剪切的方法:
LPDIRECTDRAWCLIPPER CMyDirectDraw::AttachClipper(
										 LPDIRECTDRAWSURFACE7 lpdds,
                                         int num_rects,
                                         LPRECT clip_list)

{
// this function creates a clipper from the sent clip list and attaches
// it to the sent surface

	int index;                         // looping var
	LPDIRECTDRAWCLIPPER lpddclipper;   // pointer to the newly created dd clipper
	LPRGNDATA region_data;             // pointer to the region data that contains
                                   // the header and clip list

// first create the direct draw clipper
	if (FAILED(lpdd->CreateClipper(0,&lpddclipper,NULL)))
	   return(NULL);

// now create the clip list from the sent data

// first allocate memory for region data
	region_data = (LPRGNDATA)malloc(sizeof(RGNDATAHEADER)+num_rects*sizeof(RECT));

// now copy the rects into region data
	memcpy(region_data->Buffer, clip_list, sizeof(RECT)*num_rects);

// set up fields of header
	region_data->rdh.dwSize          = sizeof(RGNDATAHEADER);
	region_data->rdh.iType           = RDH_RECTANGLES;
	region_data->rdh.nCount          = num_rects;
	region_data->rdh.nRgnSize        = num_rects*sizeof(RECT);

	region_data->rdh.rcBound.left    =  64000;
	region_data->rdh.rcBound.top     =  64000;
	region_data->rdh.rcBound.right   = -64000;
	region_data->rdh.rcBound.bottom  = -64000;

// find bounds of all clipping regions
	for (index=0; index<num_rects; index++)
    {
    // test if the next rectangle unioned with the current bound is larger
	    if (clip_list[index].left < region_data->rdh.rcBound.left)
	        region_data->rdh.rcBound.left = clip_list[index].left;

	    if (clip_list[index].right > region_data->rdh.rcBound.right)
	        region_data->rdh.rcBound.right = clip_list[index].right;

	    if (clip_list[index].top < region_data->rdh.rcBound.top)
	        region_data->rdh.rcBound.top = clip_list[index].top;

	    if (clip_list[index].bottom > region_data->rdh.rcBound.bottom)
	        region_data->rdh.rcBound.bottom = clip_list[index].bottom;

    } // end for index

// now we have computed the bounding rectangle region and set up the data
// now let's set the clipping list

	if (FAILED(lpddclipper->SetClipList(region_data, 0)))
    {
   // release memory and return error
		free(region_data);
		return(NULL);
	} // end if

// now attach the clipper to the surface
	if (FAILED(lpdds->SetClipper(lpddclipper)))
    {
   // release memory and return error
	   free(region_data);
	   return(NULL);
	} // end if

// all is well, so release memory and send back the pointer to the new clipper
	free(region_data);
	return(lpddclipper);

} 
//調(diào)試用;
int CMyDirectDraw::DebugText(char* text,int time)
{
	HDC xdc; // the working dc


	if (FAILED(lpddsprimary->GetDC(&xdc)))
	   return(0);

	SetBkMode(xdc, TRANSPARENT);

	TextOut(xdc,140,500,text,strlen(text));

	lpddsprimary->ReleaseDC(xdc);

	::Sleep(time);

	return 1;
}

int CMyDirectDraw::TextGDI(
								char *text,
								int x,
								int y,
								COLORREF color,
								int size,
								char* type,
								LPDIRECTDRAWSURFACE7 lpdds)
{	
	HDC xdc; 
	if (FAILED(lpdds->GetDC(&xdc)))
	   return(0);

	LOGFONT my_font;
	memset(&my_font,0,sizeof(LOGFONT));

	my_font.lfCharSet = DEFAULT_CHARSET;
	my_font.lfHeight = size;
//	lstrcpyn(my_font.lfFaceName, type, _countof(my_font.lfFaceName));
	sprintf(my_font.lfFaceName,type);

	POINT pt;
	pt.y = ::GetDeviceCaps(xdc, LOGPIXELSY) * my_font.lfHeight;
	pt.y /= 720;    // 72 points/inch, 10 decipoints/point
	::DPtoLP(xdc, &pt, 1);
	POINT ptOrg = { 0, 0 };
	::DPtoLP(xdc, &ptOrg, 1);
	my_font.lfHeight = -abs(pt.y - ptOrg.y);


	HFONT hFont;
	hFont = ::CreateFontIndirect(&my_font);

//	dc.m_hDC  = xdc;
	//新字體對象及指針;
//	CFont my_font;
	//把新建字體選進(jìn)描述中;
//	my_font.CreatePointFont(size,type,NULL);//創(chuàng)建自己的字體;
//	old_font = dc.SelectObject(&my_font);  //選擇新的字體;


	SelectObject(xdc,hFont);
	SetTextColor(xdc,color);
	SetBkMode(xdc,TRANSPARENT);
	TextOut(xdc,x,y,text,strlen(text));

	//恢復(fù)原設(shè)備描述符表的字體;
	DeleteObject(hFont);
	lpdds->ReleaseDC(xdc);

	return 1;
}
//初始化DD平臺;
int CMyDirectDraw::Init()
{
//	pCMainFrame = *)AfxGetMainWnd();

	if (FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL)))
	{
		   return(0);
	}
// set cooperation to full screen
	if(FAILED(lpdd->SetCooperativeLevel(::pCMainFrame->m_hWnd, 
									 DDSCL_ALLOWMODEX | DDSCL_FULLSCREEN |
                                     DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)) )  // 
	{
		   return(0);
	}

	if (FAILED(lpdd->SetDisplayMode(Screen_Width, Screen_Height, SCREEN_BPP,0,0)))
	{
		   return(0);
	}

	DDRAW_INIT_STRUCT(ddsd);  //清零的宏;

	// enable valid fields
	ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;

// set the backbuffer count field to 1, use 2 for triple buffering
	ddsd.dwBackBufferCount = 1;

// request a complex, flippable
	ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;

// 創(chuàng)建主表面;
	if (FAILED(lpdd->CreateSurface(&ddsd, &lpddsprimary, NULL)))
			return(0);

	ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;

	if (FAILED(lpddsprimary->GetAttachedSurface(&ddsd.ddsCaps, &lpddsback)))
		  return(0);

//設(shè)置后備緩沖區(qū)的剪裁區(qū);
	RECT screen_rect= {0,0,Screen_Width,Screen_Height};
	lpddclipper = AttachClipper(lpddsback,1,&screen_rect);


	return 1;
} 

int CMyDirectDraw::BitmapToSurface(
						LPDIRECTDRAWSURFACE7 Dest_Surface,  //目的表面;
						int Dest_x,		//目的表面x座標(biāo);
						int Dest_y,		//目的表面y座標(biāo);
						char* filename,	//源位圖文件名;	
						int Bitmap_Width,	//位圖寬;
						int Bitmap_Height	//位圖長;
						)
{
	HBITMAP hbitmap;
	HDC hdc;   //接受當(dāng)前設(shè)備環(huán)境句柄;
	HDC dhdc;
	CString str;

	hdc = ::CreateCompatibleDC(NULL);

	hbitmap = (HBITMAP)::LoadImage(NULL,filename,IMAGE_BITMAP,Bitmap_Width,Bitmap_Height,LR_LOADFROMFILE); 

	if(hbitmap==NULL)
	{
		str.Format("無法載入位圖%s",filename);
		AfxMessageBox(str);
		return 0;
	}

	::SelectObject(hdc,hbitmap);

	Dest_Surface->GetDC( &dhdc );
	::BitBlt( dhdc , Dest_x , Dest_y ,Bitmap_Width,Bitmap_Height, hdc , 0 , 0 , SRCCOPY );
	Dest_Surface->ReleaseDC(dhdc);

	return 1;
}

CMyDirectDraw::~CMyDirectDraw()
{
// now the primary surface
//	if (lpddsprimary)
 //   {
//		lpddsprimary->Release();
//		lpddsprimary = NULL;
//	} // end if
//后備緩沖
//	if(lpddsback)
//	{
//		lpddsback->Release();
//		lpddsback = NULL;
//	}
//離屏表面;
//	if(lpddsbackground)
//	{
//		lpddsbackground->Release();
//		lpddsbackground = NULL;
//	}	
// now blow away the IDirectDraw4 interface
	if (lpdd)
    {
		lpdd->Release();
		lpdd = NULL;
    } // end if
} 


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡老阿姨| 亚洲欧美一区二区久久| 美脚の诱脚舐め脚责91 | 亚洲私人影院在线观看| 国产成人午夜精品5599| 国产精品日韩成人| 91久久线看在观草草青青| 亚洲福利视频三区| 精品嫩草影院久久| 成人av在线资源| 亚洲午夜久久久久久久久电影网| 欧美猛男gaygay网站| 欧美韩日一区二区三区四区| 在线播放中文一区| 日本成人在线电影网| 欧美一级一区二区| 国产91色综合久久免费分享| 国产精品麻豆网站| 777亚洲妇女| 丁香亚洲综合激情啪啪综合| 亚洲四区在线观看| 日韩美女视频一区二区在线观看| 风间由美中文字幕在线看视频国产欧美| 中文字幕制服丝袜一区二区三区| 在线观看视频一区二区欧美日韩| 久久丁香综合五月国产三级网站| 国产精品久久久久久久午夜片 | 26uuu国产一区二区三区| 成人免费va视频| 日韩高清不卡在线| 国产精品久久免费看| 91精品午夜视频| 99精品视频一区二区三区| 免费的成人av| 夜夜嗨av一区二区三区| 久久久久久免费网| 欧美天天综合网| 风流少妇一区二区| 久久99热99| 五月综合激情网| 国产精品不卡视频| xnxx国产精品| 欧美一级高清大全免费观看| 国产成人精品亚洲777人妖| 青草av.久久免费一区| 一区二区三区四区激情| 国产欧美视频一区二区| 欧美一二三在线| 欧美日韩精品免费| 91丝袜美女网| 成人激情小说乱人伦| 国产在线乱码一区二区三区| 午夜国产精品一区| 一区二区视频在线| 亚洲欧洲日本在线| 国产精品视频一二三区| 久久噜噜亚洲综合| 欧美精品一区二区三区蜜臀 | 日韩精品在线一区二区| 欧美二区在线观看| 欧美色成人综合| 在线亚洲一区二区| 99国产精品久久久久久久久久久| 国产成人啪免费观看软件| 精一区二区三区| 奇米精品一区二区三区在线观看 | 成人免费视频app| 韩国女主播一区| 精品无码三级在线观看视频| 日本不卡一二三| 日韩av电影免费观看高清完整版 | 一区二区在线观看免费视频播放| 国产精品国产自产拍高清av| 国产亚洲成av人在线观看导航| 日韩午夜在线观看视频| 欧美一区二区三区公司| 日韩一级高清毛片| 精品久久久久久无| 国产亚洲欧美激情| 国产精品女同互慰在线看| 国产精品久久毛片a| 国产精品久久久久久久裸模| 亚洲视频一二三区| 亚洲图片有声小说| 亚洲成人激情自拍| 日本欧美一区二区| 国产一区二区三区在线观看免费视频| 极品少妇xxxx精品少妇偷拍 | 精东粉嫩av免费一区二区三区| 裸体在线国模精品偷拍| 亚洲欧美另类在线| 性做久久久久久免费观看| 天天爽夜夜爽夜夜爽精品视频 | 国产一区二区精品在线观看| 国产成人精品一区二区三区四区| 丁香婷婷综合激情五月色| 9l国产精品久久久久麻豆| 91一区二区在线| 欧美精品高清视频| 精品久久久久久久久久久久久久久| 国产亚洲污的网站| 日韩理论片中文av| 日本v片在线高清不卡在线观看| 国产在线播放一区三区四| 成人黄色免费短视频| 欧美性一级生活| 久久亚洲综合色| 亚洲乱码一区二区三区在线观看| 丝袜a∨在线一区二区三区不卡| 激情欧美一区二区三区在线观看| 成人av先锋影音| 欧美日韩另类一区| 欧美激情在线看| 性做久久久久久久免费看| 国产一区二区女| 欧美午夜精品久久久久久孕妇| 日韩三级高清在线| 日韩一区有码在线| 久久国产三级精品| 欧美影视一区在线| 久久久久亚洲综合| 五月天精品一区二区三区| 风间由美中文字幕在线看视频国产欧美| 欧美色欧美亚洲另类二区| 久久无码av三级| 亚洲123区在线观看| 国产suv精品一区二区6| 91精品久久久久久久99蜜桃| 国产精品丝袜在线| 久久国产夜色精品鲁鲁99| 欧美在线一二三| 亚洲欧洲在线观看av| 国产在线精品一区二区三区不卡| 欧美欧美午夜aⅴ在线观看| 国产精品免费久久久久| 久久疯狂做爰流白浆xx| 欧美日韩卡一卡二| 亚洲人吸女人奶水| 成人精品小蝌蚪| 国产偷国产偷精品高清尤物| 男女男精品网站| 欧美男男青年gay1069videost| 亚洲品质自拍视频| 成人综合婷婷国产精品久久免费| 日韩欧美一区中文| 午夜欧美视频在线观看 | 欧美精品亚洲一区二区在线播放| 欧美亚洲自拍偷拍| 国产女同性恋一区二区| 亚洲国产精品麻豆| 色婷婷综合久久久久中文| 中文在线资源观看网站视频免费不卡| 蜜臀久久99精品久久久画质超高清 | aaa国产一区| 国产女人aaa级久久久级| 精品亚洲porn| 久久在线观看免费| 激情亚洲综合在线| 欧美成人bangbros| 久久国产精品99久久久久久老狼| 日韩午夜在线观看视频| 免费在线观看不卡| 精品影院一区二区久久久| 国产成人自拍网| 久久综合av免费| 国模套图日韩精品一区二区| 欧美第一区第二区| 久久er精品视频| 精品久久久三级丝袜| 国产真实乱对白精彩久久| 久久这里都是精品| 国产成人在线观看免费网站| 国产日产欧美一区二区视频| 国产成人午夜高潮毛片| 国产精品国产三级国产| 91在线云播放| 一区二区三区日本| 欧美影视一区在线| 五月天亚洲婷婷| 精品伦理精品一区| 日韩av电影天堂| 欧美一区二区黄色| 久草精品在线观看| 欧美激情一区二区三区在线| 99久免费精品视频在线观看| 自拍偷拍国产亚洲| 欧美日韩免费一区二区三区 | 精品视频全国免费看| 五月婷婷综合网| 久久综合色综合88| 成人高清视频在线观看| 一区二区三区欧美日韩| 日韩欧美中文字幕精品| 粉嫩久久99精品久久久久久夜| 亚洲精品欧美专区| 欧美一级精品在线| 国产99久久久精品| 五月婷婷久久丁香| 国产精品水嫩水嫩| 欧美日韩一区二区三区免费看|