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

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

?? cubeview.cpp

?? fpga介紹及其相關實驗代碼等等,fpga介紹及其相關實驗代碼
?? CPP
字號:
// cubeview.cpp : implementation of the CCubeView class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"
#include "cube.h"

#include "cubedoc.h"
#include "cubeview.h"

#include "InputDialog.h"

#include "gl\gl.h"
#include "gl\glu.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

unsigned char threeto8[8] =
{
	0, 0111>>1, 0222>>1, 0333>>1, 0444>>1, 0555>>1, 0666>>1, 0377
};

unsigned char twoto8[4] =
{
	0, 0x55, 0xaa, 0xff
};

unsigned char oneto8[2] =
{
	0, 255
};

static int defaultOverride[13] =
{
	0, 3, 24, 27, 64, 67, 88, 173, 181, 236, 247, 164, 91
};

static PALETTEENTRY defaultPalEntry[20] =
{
	{ 0,   0,   0,    0 },
	{ 0x80,0,   0,    0 },
	{ 0,   0x80,0,    0 },
	{ 0x80,0x80,0,    0 },
	{ 0,   0,   0x80, 0 },
	{ 0x80,0,   0x80, 0 },
	{ 0,   0x80,0x80, 0 },
	{ 0xC0,0xC0,0xC0, 0 },

	{ 192, 220, 192,  0 },
	{ 166, 202, 240,  0 },
	{ 255, 251, 240,  0 },
	{ 160, 160, 164,  0 },

	{ 0x80,0x80,0x80, 0 },
	{ 0xFF,0,   0,    0 },
	{ 0,   0xFF,0,    0 },
	{ 0xFF,0xFF,0,    0 },
	{ 0,   0,   0xFF, 0 },
	{ 0xFF,0,   0xFF, 0 },
	{ 0,   0xFF,0xFF, 0 },
	{ 0xFF,0xFF,0xFF, 0 }
};

/////////////////////////////////////////////////////////////////////////////
// CCubeView

IMPLEMENT_DYNCREATE(CCubeView, CView)

BEGIN_MESSAGE_MAP(CCubeView, CView)
	//{{AFX_MSG_MAP(CCubeView)
	ON_COMMAND(ID_FILE_PLAY, OnFilePlay)
	ON_UPDATE_COMMAND_UI(ID_FILE_PLAY, OnUpdateFilePlay)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_WM_TIMER()
	ON_WM_ERASEBKGND()
	ON_COMMAND(ID_FILE_SET_PASSWORD, OnFileSetPassword)
	ON_COMMAND(ID_FILE_OPEN_DEVICE, OnFileOpenDevice)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCubeView construction/destruction

CCubeView::CCubeView()
{
	m_pDC = NULL;
	m_pOldPalette = NULL;
	m_play = FALSE;
	memset(m_szPassword, 0, PASSWORD_LENGTH);
}

CCubeView::~CCubeView()
{
}

/////////////////////////////////////////////////////////////////////////////
// CCubeView drawing

void CCubeView::OnDraw(CDC* pDC)
{
	CCubeDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	DrawScene();
}

/////////////////////////////////////////////////////////////////////////////
// CCubeView diagnostics

#ifdef _DEBUG
void CCubeView::AssertValid() const
{
	CView::AssertValid();
}

void CCubeView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CCubeDoc* CCubeView::GetDocument() // non-debug version is inline
{
	return STATIC_DOWNCAST(CCubeDoc, m_pDocument);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCubeView message handlers

void CCubeView::OnFilePlay()
{
	if (!m_softLock.IsDeviceOpened()) {
		MessageBox("USBSoftLock is not opened yet!\n");
		return ;
	}

	m_play = m_play ? FALSE : TRUE;
	if (m_play) {
		CInputDialog inputDlg;
		if (inputDlg.DoModal() != IDOK) {
			m_play = FALSE;
			return ;
		}
		memcpy(m_szPassword, inputDlg.m_szPassword, PASSWORD_LENGTH);
		
		SetTimer(1, 15, NULL);
		SetTimer(2, 1000, NULL);
	}
	else {
		KillTimer(1);
		KillTimer(2);
	}
}

void CCubeView::OnUpdateFilePlay(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck(m_play);
}

BOOL CCubeView::PreCreateWindow(CREATESTRUCT& cs)
{
	// An OpenGL window must be created with the following flags and must not
	// include CS_PARENTDC for the class style. Refer to SetPixelFormat
	// documentation in the "Comments" section for further information.
	cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;

	return CView::PreCreateWindow(cs);
}

int CCubeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	Init(); // initialize OpenGL

	return 0;
}

void CCubeView::OnDestroy()
{
	HGLRC   hrc;

	KillTimer(1);

	hrc = ::wglGetCurrentContext();

	::wglMakeCurrent(NULL,  NULL);

	if (hrc)
		::wglDeleteContext(hrc);

	if (m_pOldPalette)
		m_pDC->SelectPalette(m_pOldPalette, FALSE);

	if (m_pDC)
		delete m_pDC;

	CView::OnDestroy();
}

void CCubeView::OnSize(UINT nType, int cx, int cy)
{
	CView::OnSize(nType, cx, cy);

	if(cy > 0)
	{
		glViewport(0, 0, cx, cy);

		if((m_oldRect.right > cx) || (m_oldRect.bottom > cy))
			RedrawWindow();

		m_oldRect.right = cx;
		m_oldRect.bottom = cy;

		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		gluPerspective(45.0f, (GLdouble)cx/cy, 3.0f, 7.0f);
		glMatrixMode(GL_MODELVIEW);
	}
}

void CCubeView::OnTimer(UINT nIDEvent)
{
	if (nIDEvent == 1) {
		DrawScene();
	}
	else if (nIDEvent == 2) {
		char temp[16];
		memset(temp, 0, 16);
		if (!m_softLock.GetPassword(temp)) {
			OnFilePlay();
			MessageBox("Password check failed.\nProgram teminated!\n");
		}
		else {
 			if (memcmp(temp, m_szPassword, PASSWORD_LENGTH) != 0){
				OnFilePlay();
				MessageBox("Password check failed.\nProgram teminated!\n");
			}
		}
	}

	CView::OnTimer(nIDEvent);

	// Eat spurious WM_TIMER messages
	MSG msg;
	while(::PeekMessage(&msg, m_hWnd, WM_TIMER, WM_TIMER, PM_REMOVE));
}

/////////////////////////////////////////////////////////////////////////////
// GL helper functions

void CCubeView::Init()
{
	PIXELFORMATDESCRIPTOR pfd;
	int         n;
	HGLRC       hrc;
	GLfloat     fMaxObjSize, fAspect;
	GLfloat     fNearPlane, fFarPlane;

	m_pDC = new CClientDC(this);

	ASSERT(m_pDC != NULL);

	if (!bSetupPixelFormat())
		return;

	n = ::GetPixelFormat(m_pDC->GetSafeHdc());
	::DescribePixelFormat(m_pDC->GetSafeHdc(), n, sizeof(pfd), &pfd);

	CreateRGBPalette();

	hrc = wglCreateContext(m_pDC->GetSafeHdc());
	wglMakeCurrent(m_pDC->GetSafeHdc(), hrc);

	GetClientRect(&m_oldRect);
	glClearDepth(1.0f);
	glEnable(GL_DEPTH_TEST);

	if (m_oldRect.bottom)
		fAspect = (GLfloat)m_oldRect.right/m_oldRect.bottom;
	else    // don't divide by zero, not that we should ever run into that...
		fAspect = 1.0f;
	fNearPlane = 3.0f;
	fFarPlane = 7.0f;
	fMaxObjSize = 3.0f;
	m_fRadius = fNearPlane + fMaxObjSize / 2.0f;

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45.0f, fAspect, fNearPlane, fFarPlane);
	glMatrixMode(GL_MODELVIEW);
}

BOOL CCubeView::bSetupPixelFormat()
{
	static PIXELFORMATDESCRIPTOR pfd =
	{
		sizeof(PIXELFORMATDESCRIPTOR),  // size of this pfd
		1,                              // version number
		PFD_DRAW_TO_WINDOW |            // support window
		  PFD_SUPPORT_OPENGL |          // support OpenGL
		  PFD_DOUBLEBUFFER,             // double buffered
		PFD_TYPE_RGBA,                  // RGBA type
		24,                             // 24-bit color depth
		0, 0, 0, 0, 0, 0,               // color bits ignored
		0,                              // no alpha buffer
		0,                              // shift bit ignored
		0,                              // no accumulation buffer
		0, 0, 0, 0,                     // accum bits ignored
		32,                             // 32-bit z-buffer
		0,                              // no stencil buffer
		0,                              // no auxiliary buffer
		PFD_MAIN_PLANE,                 // main layer
		0,                              // reserved
		0, 0, 0                         // layer masks ignored
	};
	int pixelformat;

	if ( (pixelformat = ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd)) == 0 )
	{
		MessageBox("ChoosePixelFormat failed");
		return FALSE;
	}

	if (SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd) == FALSE)
	{
		MessageBox("SetPixelFormat failed");
		return FALSE;
	}

	return TRUE;
}

unsigned char CCubeView::ComponentFromIndex(int i, UINT nbits, UINT shift)
{
	unsigned char val;

	val = (unsigned char) (i >> shift);
	switch (nbits)
	{

	case 1:
		val &= 0x1;
		return oneto8[val];
	case 2:
		val &= 0x3;
		return twoto8[val];
	case 3:
		val &= 0x7;
		return threeto8[val];

	default:
		return 0;
	}
}


void CCubeView::CreateRGBPalette()
{
	PIXELFORMATDESCRIPTOR pfd;
	LOGPALETTE *pPal;
	int n, i;

	n = ::GetPixelFormat(m_pDC->GetSafeHdc());
	::DescribePixelFormat(m_pDC->GetSafeHdc(), n, sizeof(pfd), &pfd);

	if (pfd.dwFlags & PFD_NEED_PALETTE)
	{
		n = 1 << pfd.cColorBits;
		pPal = (PLOGPALETTE) new char[sizeof(LOGPALETTE) + n * sizeof(PALETTEENTRY)];

		ASSERT(pPal != NULL);

		pPal->palVersion = 0x300;
		pPal->palNumEntries = n;
		for (i=0; i<n; i++)
		{
			pPal->palPalEntry[i].peRed =
					ComponentFromIndex(i, pfd.cRedBits, pfd.cRedShift);
			pPal->palPalEntry[i].peGreen =
					ComponentFromIndex(i, pfd.cGreenBits, pfd.cGreenShift);
			pPal->palPalEntry[i].peBlue =
					ComponentFromIndex(i, pfd.cBlueBits, pfd.cBlueShift);
			pPal->palPalEntry[i].peFlags = 0;
		}

		/* fix up the palette to include the default GDI palette */
		if ((pfd.cColorBits == 8)                           &&
			(pfd.cRedBits   == 3) && (pfd.cRedShift   == 0) &&
			(pfd.cGreenBits == 3) && (pfd.cGreenShift == 3) &&
			(pfd.cBlueBits  == 2) && (pfd.cBlueShift  == 6)
		   )
		{
			for (i = 1 ; i <= 12 ; i++)
				pPal->palPalEntry[defaultOverride[i]] = defaultPalEntry[i];
		}

		m_cPalette.CreatePalette(pPal);
		delete pPal;

		m_pOldPalette = m_pDC->SelectPalette(&m_cPalette, FALSE);
		m_pDC->RealizePalette();
	}
}

void CCubeView::DrawScene(void)
{
	static BOOL     bBusy = FALSE;
	static GLfloat  wAngleY = 10.0f;
	static GLfloat  wAngleX = 1.0f;
	static GLfloat  wAngleZ = 5.0f;

	if(bBusy)
		return;
	bBusy = TRUE;

	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glPushMatrix();

		glTranslatef(0.0f, 0.0f, -m_fRadius);
		glRotatef(wAngleX, 1.0f, 0.0f, 0.0f);
		glRotatef(wAngleY, 0.0f, 1.0f, 0.0f);
		glRotatef(wAngleZ, 0.0f, 0.0f, 1.0f);

		wAngleX += 1.0f;
		wAngleY += 10.0f;
		wAngleZ += 5.0f;


		glBegin(GL_QUAD_STRIP);
			glColor3f(1.0f, 0.0f, 1.0f);
			glVertex3f(-0.5f, 0.5f, 0.5f);

			glColor3f(1.0f, 0.0f, 0.0f);
			glVertex3f(-0.5f, -0.5f, 0.5f);

			glColor3f(1.0f, 1.0f, 1.0f);
			glVertex3f(0.5f, 0.5f, 0.5f);

			glColor3f(1.0f, 1.0f, 0.0f);
			glVertex3f(0.5f, -0.5f, 0.5f);

			glColor3f(0.0f, 1.0f, 1.0f);
			glVertex3f(0.5f, 0.5f, -0.5f);

			glColor3f(0.0f, 1.0f, 0.0f);
			glVertex3f(0.5f, -0.5f, -0.5f);

			glColor3f(0.0f, 0.0f, 1.0f);
			glVertex3f(-0.5f, 0.5f, -0.5f);

			glColor3f(0.0f, 0.0f, 0.0f);
			glVertex3f(-0.5f, -0.5f,  -0.5f);

			glColor3f(1.0f, 0.0f, 1.0f);
			glVertex3f(-0.5f, 0.5f, 0.5f);

			glColor3f(1.0f, 0.0f, 0.0f);
			glVertex3f(-0.5f, -0.5f, 0.5f);

		glEnd();

		glBegin(GL_QUADS);
			glColor3f(1.0f, 0.0f, 1.0f);
			glVertex3f(-0.5f, 0.5f, 0.5f);

			glColor3f(1.0f, 1.0f, 1.0f);
			glVertex3f(0.5f, 0.5f, 0.5f);

			glColor3f(0.0f, 1.0f, 1.0f);
			glVertex3f(0.5f, 0.5f, -0.5f);

			glColor3f(0.0f, 0.0f, 1.0f);
			glVertex3f(-0.5f, 0.5f, -0.5f);
		glEnd();

		glBegin(GL_QUADS);
			glColor3f(1.0f, 0.0f, 0.0f);
			glVertex3f(-0.5f, -0.5f, 0.5f);

			glColor3f(1.0f, 1.0f, 0.0f);
			glVertex3f(0.5f, -0.5f, 0.5f);

			glColor3f(0.0f, 1.0f, 0.0f);
			glVertex3f(0.5f, -0.5f, -0.5f);

			glColor3f(0.0f, 0.0f, 0.0f);
			glVertex3f(-0.5f, -0.5f,  -0.5f);
		glEnd();

	glPopMatrix();

	glFinish();
	SwapBuffers(wglGetCurrentDC());

	bBusy = FALSE;
}

BOOL CCubeView::OnEraseBkgnd(CDC* pDC)
{
	return TRUE;
}

void CCubeView::OnFileSetPassword() 
{
	// TODO: Add your command handler code here
	if (!m_softLock.IsDeviceOpened()) {
		MessageBox("USBSoftLock is not opened yet!\n");
		return ;
	}

	CInputDialog inputDlg;
	if (inputDlg.DoModal() != IDOK) {
		m_play = FALSE;
		return ;
	}
	memcpy(m_szPassword, inputDlg.m_szPassword, PASSWORD_LENGTH);
	m_softLock.SetPassword(m_szPassword);
}

void CCubeView::OnFileOpenDevice() 
{
	// TODO: Add your command handler code here
	if (!m_softLock.OpenDevice()) {
		MessageBox("Failed to open USBSoftLock device.\n");
		::PostMessage(AfxGetMainWnd()->m_hWnd, WM_CLOSE, 0, 0);
	}	
	else {
		MessageBox("Device Opened!\n");
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色porny蝌蚪| 亚洲午夜国产一区99re久久| 亚洲一区二区在线观看视频| 成人高清视频免费观看| 日本一区二区三区国色天香| 成人av电影免费在线播放| 国产精品久久久久久亚洲伦| 成人美女视频在线看| 国产精品乱人伦中文| 91女厕偷拍女厕偷拍高清| 一区二区中文视频| 在线免费观看日本欧美| 亚洲国产毛片aaaaa无费看| 欧美日韩精品免费| 国产精品夜夜嗨| 亚洲黄色小说网站| 精品少妇一区二区三区在线播放 | 欧美日韩中字一区| 秋霞国产午夜精品免费视频| 精品国产1区2区3区| 成人高清免费观看| 一区二区国产盗摄色噜噜| 欧美日韩中文国产| 成人av午夜影院| 亚洲国产成人av好男人在线观看| 337p亚洲精品色噜噜狠狠| 久久国产精品72免费观看| 国产欧美综合在线观看第十页| 99久久夜色精品国产网站| 亚洲综合色丁香婷婷六月图片| 欧美日韩激情一区二区| 粉嫩在线一区二区三区视频| 亚洲高清免费视频| 欧美激情一区二区| 日韩一区二区电影在线| 91豆麻精品91久久久久久| 韩国v欧美v日本v亚洲v| 舔着乳尖日韩一区| 成人欧美一区二区三区小说 | 色婷婷av久久久久久久| 国产一区啦啦啦在线观看| 综合激情成人伊人| 国产午夜精品美女毛片视频| 欧美日韩一区三区四区| 成人黄色软件下载| 国产精品69毛片高清亚洲| 日韩精品欧美精品| 一区二区成人在线观看| 欧美日韩在线播放三区四区| 国产在线视频精品一区| 日本最新不卡在线| 日av在线不卡| 亚洲综合久久久| 亚洲视频资源在线| 国产精品你懂的| 国产精品成人免费在线| 久久精品亚洲一区二区三区浴池| 在线观看欧美精品| 欧美欧美午夜aⅴ在线观看| 色婷婷综合久久久久中文| 在线精品观看国产| 欧美性猛片aaaaaaa做受| 欧美日韩另类一区| 在线观看91av| 久久久久国产一区二区三区四区| 久久日韩粉嫩一区二区三区| 久久嫩草精品久久久精品| 欧美激情一区二区三区蜜桃视频| 国产人伦精品一区二区| 国产精品私人自拍| 五月天中文字幕一区二区| 天天综合色天天| 国产91精品在线观看| 欧美日本高清视频在线观看| 日韩欧美中文字幕一区| 国产三级精品三级在线专区| 亚洲视频你懂的| 蜜桃一区二区三区在线| 不卡av免费在线观看| 欧美日韩久久久久久| 日韩免费看的电影| 亚洲午夜免费电影| 成人黄色网址在线观看| 欧美一二三区在线| 自拍av一区二区三区| 韩国视频一区二区| 欧美日韩国产片| 国产欧美一区二区精品仙草咪| 视频一区中文字幕国产| 色悠悠久久综合| 国产日韩欧美电影| 激情综合一区二区三区| 91精品在线免费观看| 亚洲一区二区三区精品在线| 成人动漫中文字幕| 中文在线一区二区| 国产精品一区二区免费不卡| 日韩三级视频在线看| 中文字幕精品三区| 91网站在线播放| 国产精品色眯眯| 91免费观看视频在线| 国产精品久久久久久久久免费相片 | 亚洲午夜在线视频| 色综合久久久网| 亚洲日本电影在线| 91丨国产丨九色丨pron| 国产精品女同一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 国产亲近乱来精品视频| 国产91丝袜在线播放九色| 国产日产亚洲精品系列| 91污片在线观看| 亚洲国产一区二区a毛片| 欧美妇女性影城| 国产一区二区精品久久99| 国产色综合久久| 国产白丝精品91爽爽久久| 亚洲免费视频中文字幕| 色先锋资源久久综合| 日韩电影免费在线观看网站| 精品欧美黑人一区二区三区| 成人晚上爱看视频| 亚洲久草在线视频| 777午夜精品视频在线播放| 久久精品国产亚洲5555| 自拍偷在线精品自拍偷无码专区| av不卡在线观看| 国产综合成人久久大片91| 亚洲美女电影在线| 久久―日本道色综合久久 | 亚洲一区二区三区在线播放| 制服丝袜亚洲精品中文字幕| 国产精品一品二品| 五月婷婷另类国产| 亚洲欧美福利一区二区| 久久亚洲精精品中文字幕早川悠里 | 国内精品自线一区二区三区视频| 一区二区免费视频| 国产欧美中文在线| 日韩欧美www| 精品视频一区三区九区| 顶级嫩模精品视频在线看| 青椒成人免费视频| 亚洲成在人线在线播放| 中文字幕中文字幕在线一区 | 国产精品高潮久久久久无| 亚洲精品一区二区三区四区高清| 久久男人中文字幕资源站| 欧美日韩一区在线观看| 日本黄色一区二区| 91色porny蝌蚪| 91麻豆自制传媒国产之光| 国产在线视频一区二区三区| 国产大片一区二区| 国产经典欧美精品| 粉嫩av亚洲一区二区图片| 国产宾馆实践打屁股91| 岛国精品在线播放| 97久久超碰精品国产| 欧洲中文字幕精品| 欧美一区二区三区免费观看视频| 欧美日本免费一区二区三区| 91精品国产综合久久小美女| 欧美一区二区国产| 久久久久久久久蜜桃| 国产精品久久久一本精品| 中文字幕精品一区| 亚洲成人福利片| 激情六月婷婷久久| av成人老司机| 日韩欧美久久一区| 亚洲日本va午夜在线电影| 亚洲成人精品影院| 国产一区二区在线观看免费| 成人av网站在线观看| 欧美三级视频在线观看| 日韩一区二区在线观看视频 | 午夜精品久久久久| 国产成人免费网站| 欧美色综合天天久久综合精品| 日韩一区二区免费在线观看| 亚洲同性gay激情无套| 久久国产精品区| 欧美区视频在线观看| 国产精品麻豆久久久| 老鸭窝一区二区久久精品| 一区二区三区美女| 成人做爰69片免费看网站| 国产日韩欧美精品一区| 成人综合婷婷国产精品久久蜜臀| 日韩免费观看高清完整版| 亚洲精品视频免费看| 国产一区二区三区| 欧美电视剧免费观看| 亚洲妇女屁股眼交7| 欧美日韩三级一区| 日本一区中文字幕| 日韩欧美国产wwwww| 看电视剧不卡顿的网站|