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

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

?? genpadslibdlg.cpp

?? 格式轉換的軟件
?? CPP
字號:
// GenPadsLibDlg.cpp : implementation file
//

#include "stdafx.h"
#include "string.h"
#include "afxtempl.h"


#include "GenPadsLib.h"
#include "GenPadsLibDlg.h"
//#include "math.h"



#include "common.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGenPadsLibDlg dialog

CGenPadsLibDlg::CGenPadsLibDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CGenPadsLibDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CGenPadsLibDlg)
	m_partName = _T("");
	m_pcbDecal = _T("");
	m_numPins = 0;
	m_alphaNumeric = _T("");
	m_gateName = _T("");
	m_numSignals = 0;
	m_unit = _T("");
	m_fileName = _T("");
	m_log = _T("");
	m_numGatePins = 0;
	m_flag = -1;
	m_logicType = _T("");
	m_chkAlpha = FALSE;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CGenPadsLibDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGenPadsLibDlg)
	DDX_Control(pDX, ID_REMOVE, m_C_remove);
	DDX_Control(pDX, ID_INSERT, m_C_insert);
	DDX_Control(pDX, ID_EDIT, m_C_EDIT);
	DDX_Control(pDX, IDC_LIST_GATE, m_C_listGate);
	DDX_Control(pDX, IDC_E_ALPHANUM, m_C_alphaNumeric);
	DDX_Text(pDX, IDC_E_PARTNAME, m_partName);
	DDX_Text(pDX, IDC_E_PCBDECAL, m_pcbDecal);
	DDX_Text(pDX, IDC_E_NUMPINS, m_numPins);
	DDV_MinMaxUInt(pDX, m_numPins, 1, 32767);
	DDX_Text(pDX, IDC_E_ALPHANUM, m_alphaNumeric);
	DDX_Text(pDX, IDC_E_GATENAME, m_gateName);
	DDX_Text(pDX, IDC_E_NUMSIGNALS, m_numSignals);
	DDV_MinMaxUInt(pDX, m_numSignals, 0, 1024);
	DDX_Text(pDX, IDC_E_UNIT, m_unit);
	DDV_MaxChars(pDX, m_unit, 1);
	DDX_Text(pDX, IDC_E_FILENAME, m_fileName);
	DDX_Text(pDX, IDC_E_STATE, m_log);
	DDX_Text(pDX, IDC_E_GATEPINS, m_numGatePins);
	DDV_MinMaxUInt(pDX, m_numGatePins, 0, 32767);
	DDX_CBIndex(pDX, IDC_CB_FLAG, m_flag);
	DDX_CBString(pDX, IDC_CB_LOGCITYPE, m_logicType);
	DDV_MaxChars(pDX, m_logicType, 3);
	DDX_Check(pDX, IDC_CHECK_ALPH, m_chkAlpha);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CGenPadsLibDlg, CDialog)
	//{{AFX_MSG_MAP(CGenPadsLibDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDGen, OnGen)
	ON_BN_CLICKED(IDC_OPENFILE, OnOpenfile)
	ON_BN_CLICKED(IDC_CHECK_ALPH, OnCheckAlph)
	ON_BN_CLICKED(ID_ADD, OnAdd)
	ON_LBN_SELCHANGE(IDC_LIST_GATE, OnSelchangeListGate)
	ON_BN_CLICKED(ID_REMOVE, OnRemove)
	ON_BN_CLICKED(ID_INSERT, OnInsert)
	ON_BN_CLICKED(ID_EDIT, OnEdit)
	ON_EN_CHANGE(IDC_E_NUMPINS, OnChangeENumpins)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGenPadsLibDlg message handlers

BOOL CGenPadsLibDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	// ****user initiation***

	//************************
	m_partName="NEW_PART";
	m_pcbDecal="NEW_PCB";
	m_numPins=2;
	m_logicType="UND";
	m_flag=0;
	m_unit='I';
	
	m_chkAlpha=0;
	m_gateName="GATEA";
	m_numGatePins=2;
	m_log="Input base information of part !";
		
	UpdateData(false);
	// ***********************
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CGenPadsLibDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CGenPadsLibDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);

	//	m_numGatePins=m_numPins;
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CGenPadsLibDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CGenPadsLibDlg::OnGen() 
{
	// TODO: Add your control notification handler code here
	CString tmpStr,fileBuffer,srcDefStr;
	CString fileName;
	CFile srcFile;
	char* buffer;
	//****Get inforamtion from the Dialog
	UpdateData(true);
	part.partName=m_partName;
	part.pcbDecal=m_pcbDecal;
	part.numPins=m_numPins;
	part.flag=m_flag;
	part.type=m_logicType;
	part.UNIT=m_unit;
	part.numCpins=0;
	part.numGates=part.gateCA.GetSize();
	part.alphaNumeric=m_alphaNumeric;
	
	if(part.numGates==0)
	{
		AfxMessageBox("The number of GATES is wrong",0);
		return;
	}
	if(m_fileName=="")
		OnOpenfile();
	srcFile.Open(m_fileName,CFile::modeRead);
	buffer=tmpStr.GetBuffer(srcFile.GetLength());
	srcFile.Read(buffer,srcFile.GetLength());
	srcDefStr=buffer;
	tmpStr.ReleaseBuffer();	

	if(srcDefStr=="")
	{
		m_log="File is empty";
		UpdateData(false);
		return;
	}
	
	// Get alphaNumeric pinNumer
	if(part.isalpha && m_alphaNumeric.GetLength()!=0)
	{
		if(part.GetAlphaNumeric(&part)==false)
		{
			AfxMessageBox("The number of alphaNumeric is not equal with the number of pins",0);
			//UpdateData(false);
			return;
		}
	}
	else if(m_alphaNumeric.GetLength()==0)
	{
		AfxMessageBox("The lenghte of alphaNumeric string is 0",0);		
		return;
	}
	//generate imformation of pin from source file
	if(part.GetPinDef(&part,srcDefStr))
	{					// print
		if(WriteFile(&part,fileName))
		{
			m_log="Successful on generating PADS Library!\13\10 Please check file ";
			m_log+=fileName;
		}
	}
	else
	{
		m_log="Unsuccessful at generating pads library !";
		return;
	}
	UpdateData(false);
	part.alphaNumericCA.RemoveAll();
	UpdateData(false);
	
}
LRESULT CGenPadsLibDlg::WriteFile(struct _PARTDEF* pPart,CString fileName)
{
	CString fileBuffer,tmpStr;
	CFile outputFile;
	UINT pinSequence=0;
	//Head of part file
	fileBuffer="*PADS-LIBRARY-PART-TYPES-V4*";
	tmpStr.Format("%c%c",13,10);
	fileBuffer+=tmpStr+tmpStr;
	fileBuffer+=part.partName+' '+part.pcbDecal+' ';	
	fileBuffer+=part.UNIT+' '+part.type+" 0 ";
	tmpStr.Format("%d",part.gateCA.GetSize());
	fileBuffer+=tmpStr+" 0 ";
	tmpStr.Format("%d",part.alphaNumericCA.GetSize());
	fileBuffer+=tmpStr+" 0 0";
	tmpStr.Format("%c%c",13,10);
	fileBuffer+=tmpStr;
	//Head of Gate_x 
	for(int gateIndex=0;gateIndex<pPart->gateCA.GetSize();gateIndex++)
	{
		fileBuffer+="G:"+pPart->gateCA.GetAt(gateIndex)->gateDecals+" 0 ";
		tmpStr.Format("%d%c%c",pPart->gateCA.GetAt(gateIndex)->pins,13,10);
		fileBuffer+=tmpStr;
		for(UINT pinIndex=0;pinIndex<part.gateCA.GetAt(gateIndex)->pins;pinIndex++)
		{
			if((int)pinSequence<pPart->pinStrCA.GetSize())
				fileBuffer+=pPart->pinStrCA.GetAt(pinSequence);
			else
			{
				AfxMessageBox("Number of pin in SrcFile Erro!",0);
				return false;
			}

			tmpStr.Format("%c%c",13,10);
			fileBuffer+=tmpStr;			
			pinSequence++;
		}
	}
	fileBuffer+=part.alphaNumeric;
	tmpStr.Format("%c%c%C%C",13,10,13,10);
	fileBuffer+=tmpStr;	
	fileBuffer+="*END*";
	fileName=m_fileName.Left(m_fileName.ReverseFind('.')+1);
	fileName+="p";
	outputFile.Open(fileName,CFile::modeCreate|CFile::modeWrite);
	outputFile.WriteHuge(fileBuffer,fileBuffer.GetLength());
	outputFile.Close();
	return true;

}
//	int numPins=partDefCA.GetSize();
//	for(UINT sequence=0;sequence<m_numPins;sequence++)
//	{
//		pinAttr=pinAttr+part.GetAt(sequence);
//		tmpStr.Format("%c%c",13,10);
//		pinAttr+=tmpStr;
//	}
//	}




void CGenPadsLibDlg::OnOpenfile() 
{
	// TODO: Add your control notification handler code here
	CString fileName,tmpStr;
	CFile sourceFile;
	char *filebuffer;
	int fileLen;


	static char szFilter[] = "Ascii file(*.txt)|*.txt|DxDesigner library List file(*.csv)|*.csv|All Files (*.*)|*.*||";
	static char DefExt[]="csv";
	UpdateData(true);
	//static char DefExt[]="csv";
	CFileDialog OpenDlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT ,szFilter,AfxGetMainWnd());
	OpenDlg.DoModal();						//打開文件對話框	
	fileName=OpenDlg.GetPathName();
	m_fileName=fileName;
	if(sourceFile.Open(fileName,CFile::modeRead)==0)
		return;
	fileLen=sourceFile.GetLength();
	filebuffer=tmpStr.GetBuffer(fileLen+1);
	//m_log.Format("%d",sourceFile.Read(filebuffer,fileLen));
	sourceFile.Read(filebuffer,fileLen);
	//filebuffer[fileLen]='\0';
	m_log=filebuffer;
	//m_log=tmpStr;
	
	tmpStr.ReleaseBuffer();
	sourceFile.Close();
	UpdateData(false);
}



void CGenPadsLibDlg::OnCheckAlph() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	if(m_chkAlpha==false)
	{
		part.alphaNumeric="";
		part.alphaNumericCA.RemoveAll();
		part.numAlphaN=0;
		part.isalpha=false;
		
	}
	else
	{
		part.isalpha=true;
		m_C_alphaNumeric.EnableWindow(m_chkAlpha);
	}
}

void CGenPadsLibDlg::OnSelchangeListGate() 
{
	// TODO: Add your control notification handler code here
	int listIndex=m_C_listGate.GetCaretIndex();
	if(listIndex!=-1)
	{
		if(part.gateCA.GetSize()!=0)
		{
 			m_gateName=part.gateCA.GetAt(listIndex)->gateDecals;
			m_numGatePins=part.gateCA.GetAt(listIndex)->pins;
			UpdateData(false);
			m_C_EDIT.EnableWindow(true);	
			m_C_insert.EnableWindow(true);
			m_C_remove.EnableWindow(true);
		}
	}
}
void CGenPadsLibDlg::OnAdd() 
{
	// TODO: Add your control notification handler code here
	GateOperation('a');
}

void CGenPadsLibDlg::OnRemove() 
{
	// TODO: Add your control notification handler code here
	UINT validPins=m_numPins;
	int listIndex=m_C_listGate.GetCaretIndex();
	if(listIndex!=-1)
	{
		part.gateCA.RemoveAt(listIndex);
		m_C_listGate.DeleteString(listIndex);
		//OnSelchangeListGate();
	}
	if(m_C_listGate.GetSelCount()==-1)
	{
		m_C_remove.EnableWindow(false);
		m_C_EDIT.EnableWindow(false);
		m_C_insert.EnableWindow(false);
	}
	for(int gateIndex=0;gateIndex<part.gateCA.GetSize();gateIndex++)
	{
		validPins-=part.gateCA.GetAt(gateIndex)->pins;
	}	
	m_numGatePins=validPins;
	UpdateData(false);

}

void CGenPadsLibDlg::OnInsert() 
{
	// TODO: Add your control notification handler code here
	GateOperation('i');

	
}

void CGenPadsLibDlg::OnEdit() 
{
	// TODO: Add your control notification handler code here
	GateOperation('e');
}


void CGenPadsLibDlg::GateOperation(char flag)
{
	int listIndex=m_C_listGate.GetCaretIndex();
	int validPins;
	LPGATEDEF pGate=new GATEDEF;
	CString tmpStr,formatStr;
	UpdateData(true);
	validPins=m_numPins;
	for(int i=0;i<part.gateCA.GetSize();i++)
	{
		validPins-=part.gateCA.GetAt(i)->pins;

	}
	//m_numGatePins=validPins;
	//UpdateData(false);
	if(int(m_numGatePins)>validPins)
	{
		m_numGatePins=validPins;
		UpdateData(false);
		return;
	}
	if(validPins!=0 && m_numGatePins!=0)
	{
		tmpStr.Format("GATE_%c       NAME= ",m_C_listGate.GetCount()+65);
		tmpStr+=m_gateName;
		formatStr.Format("         PINS= %d",m_numGatePins);
		tmpStr+=formatStr;
	}
	else
	{
		AfxMessageBox("Invalid PinNumber");
		return;		
	}

	switch(flag) {
	case 'a':			//Add
	case 'A':
		m_C_listGate.AddString(tmpStr);	
		
		pGate->gateDecals=m_gateName;
		pGate->pins=m_numGatePins;
		pGate->gateswap=0;
		part.gateCA.Add(pGate);
		break;

	case 'e':
	case 'E':
		pGate->gateDecals=m_gateName;
		pGate->gateswap=0;
		pGate->pins=m_numGatePins;
		part.gateCA.SetAt(listIndex,pGate);
		m_C_listGate.DeleteString(listIndex);
		m_C_listGate.InsertString(listIndex,tmpStr);
		m_C_EDIT.EnableWindow(false);

		break;
	case 'i':
	case 'I':
		if(listIndex!=-1)
		{
			pGate->gateDecals=m_gateName;
			pGate->pins=m_numGatePins;
			pGate->gateswap=0;
			
			part.gateCA.InsertAt(listIndex+1,pGate,1);
			m_C_listGate.InsertString(listIndex+1,tmpStr);
			//OnSelchangeListGate();
		}	
		break;
	default:			//Remove
		break;
	}
	validPins=m_numPins;
	for(int gateIndex=0;gateIndex<part.gateCA.GetSize();gateIndex++)
	{
		validPins-=part.gateCA.GetAt(gateIndex)->pins;
	}	
	m_numGatePins=validPins;
	UpdateData(false);
}

void CGenPadsLibDlg::OnChangeENumpins() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
	UpdateData(true);
	UINT validPins;
	validPins=m_numPins;
	for(int gateIndex=0;gateIndex<part.gateCA.GetSize();gateIndex++)
		validPins-=part.gateCA.GetAt(gateIndex)->pins;
	m_numGatePins=validPins;
	UpdateData(false);	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜在线影院| 久久精品二区亚洲w码| 蜜臀av一区二区三区| 成人久久久精品乱码一区二区三区 | 色婷婷精品大在线视频| 日韩一本二本av| 亚洲午夜一区二区三区| 懂色av一区二区三区免费观看| 欧美日韩免费观看一区三区| 亚洲国产精品成人综合色在线婷婷| 亚洲成在人线免费| 91尤物视频在线观看| 日韩精品一区二区三区swag| 亚洲香蕉伊在人在线观| 成人深夜在线观看| 久久久国际精品| 久久国产乱子精品免费女| 制服丝袜在线91| 首页国产丝袜综合| 欧美日韩亚洲综合一区| 亚洲乱码国产乱码精品精的特点| 成人中文字幕合集| 国产婷婷精品av在线| 国产乱对白刺激视频不卡| 精品乱人伦一区二区三区| 久久久久久久久久电影| 亚洲福利一区二区三区| 91影院在线免费观看| 久久久久久久电影| 美国三级日本三级久久99| 欧美日韩精品系列| 午夜精品久久久久影视| 欧美日韩国产片| 天堂va蜜桃一区二区三区| 欧美图片一区二区三区| 亚洲动漫第一页| 欧美日韩综合色| 亚洲福利一区二区三区| 欧美高清视频不卡网| 婷婷开心激情综合| 欧美大黄免费观看| 国产精品1024久久| 国产精品不卡视频| 色婷婷av一区二区三区软件 | 精品在线视频一区| 精品福利av导航| 国产乱码字幕精品高清av | 亚洲人成人一区二区在线观看 | 欧美一区二区在线观看| 五月天精品一区二区三区| 欧美浪妇xxxx高跟鞋交| 日韩电影在线一区二区| 精品裸体舞一区二区三区| 高清不卡在线观看av| 国模冰冰炮一区二区| 久久精品这里都是精品| 成人18视频在线播放| 椎名由奈av一区二区三区| 欧美色涩在线第一页| 久久国产精品区| 亚洲欧洲国产专区| 欧美精品视频www在线观看| 日韩影视精彩在线| 中国av一区二区三区| 欧美日韩一区二区三区不卡| 精品一区二区三区免费| 一色桃子久久精品亚洲| 欧美丰满少妇xxxbbb| 高清不卡一区二区在线| 亚洲国产另类精品专区| 国产性做久久久久久| 欧美亚洲动漫精品| 国产91综合网| 天堂精品中文字幕在线| 亚洲欧洲精品一区二区三区不卡| 欧美女孩性生活视频| 国产成人小视频| 日韩专区中文字幕一区二区| 欧美国产国产综合| 亚洲国产精品影院| 国产亚洲精品超碰| 777久久久精品| 不卡一区二区在线| 久久99日本精品| 亚洲高清不卡在线| 中文字幕精品在线不卡| 在线电影一区二区三区| 91亚洲精华国产精华精华液| 久久99精品久久久久婷婷| 偷拍一区二区三区| 一区二区三区四区亚洲| 国产亚洲女人久久久久毛片| 91麻豆精品国产91久久久| 色综合久久久久综合体桃花网| 国产精品亚洲午夜一区二区三区 | 成人av电影免费在线播放| 韩国女主播一区| 麻豆国产欧美日韩综合精品二区| 一区二区三区中文字幕电影| 国产精品久久久久久久久搜平片| 精品国产一区二区三区av性色| 在线不卡一区二区| 欧美群妇大交群的观看方式| 在线一区二区观看| 一本大道av一区二区在线播放| 岛国一区二区在线观看| 国产在线不卡一区| 韩国一区二区三区| 国产在线观看免费一区| 国产精品123区| 国产91综合网| 成人va在线观看| 99国产精品一区| www.日韩精品| 91视频观看免费| 一本大道久久精品懂色aⅴ| 97久久精品人人做人人爽50路| 成人性生交大合| 成人黄色av电影| 在线免费精品视频| 欧美人动与zoxxxx乱| 日韩亚洲欧美在线观看| 日韩丝袜情趣美女图片| 精品国产乱子伦一区| 欧美精品一区二区三区高清aⅴ| 久久女同互慰一区二区三区| 久久久不卡影院| 综合欧美一区二区三区| 亚洲蜜桃精久久久久久久| 亚洲第一福利一区| 麻豆一区二区在线| 国产精品996| 色噜噜夜夜夜综合网| 欧美日韩夫妻久久| 精品国产91洋老外米糕| 国产女同性恋一区二区| 一区二区三区美女视频| 日本韩国一区二区三区视频| 欧美色爱综合网| 精品美女一区二区| 亚洲天堂成人在线观看| 日韩av一区二区在线影视| 国产一区二区精品在线观看| 成人美女在线视频| 欧美区视频在线观看| 久久精品视频网| 一二三区精品福利视频| 久久国产精品色婷婷| 91亚洲国产成人精品一区二三| 欧美日韩视频在线一区二区| 久久久综合九色合综国产精品| 伊人婷婷欧美激情| 狠狠色丁香久久婷婷综合_中| 成人福利视频网站| 91精品国产综合久久精品麻豆 | 日韩欧美国产综合一区| 国产精品国产三级国产普通话蜜臀| 亚洲午夜电影在线| 国产精品综合视频| 欧美日韩国产天堂| 国产精品久久久久影院| 日韩va亚洲va欧美va久久| 99精品欧美一区二区三区小说| 欧美一区二区在线看| 有坂深雪av一区二区精品| 国产福利一区二区三区在线视频| 欧美性受xxxx黑人xyx性爽| 国产视频一区在线播放| 日本午夜一本久久久综合| 色偷偷88欧美精品久久久| 精品国产污污免费网站入口| 亚洲成人在线观看视频| 成人永久免费视频| 亚洲精品一区二区三区香蕉| 亚洲成人黄色影院| 91日韩在线专区| 中文成人综合网| 国产乱一区二区| 久久只精品国产| 日韩精品亚洲专区| 在线免费观看一区| 一区二区三区色| 99久久精品免费看国产 | 亚洲卡通欧美制服中文| 国产伦精品一区二区三区视频青涩 | 精品奇米国产一区二区三区| 洋洋成人永久网站入口| 99久久99久久精品免费观看| 26uuu另类欧美亚洲曰本| 日韩一区精品字幕| 7777精品伊人久久久大香线蕉 | 男女男精品视频| 欧美日韩国产乱码电影| 一区二区三区在线观看动漫 | 久久久不卡影院| 韩国精品免费视频| 337p粉嫩大胆色噜噜噜噜亚洲| 免费成人美女在线观看.| 欧美一区二区成人| 美女高潮久久久|