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

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

?? formcommandview.cpp

?? 詳細介紹c++編程
?? CPP
字號:
#include "stdafx.h"
#include "Tool.h"
#include "MainFrm.h"
#include "FormCommandView.h"
#include "ToolDoc.h"
#include "RenderView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFormCommandView

IMPLEMENT_DYNCREATE(CFormCommandView, CFormView)

CFormCommandView::CFormCommandView()
: CFormView(CFormCommandView::IDD)
{
	//{{AFX_DATA_INIT(CFormCommandView)

	BackColor = RGB(255,255,255);
	AmbientColor = RGB(128,128,128);

	m_Lighting = TRUE;
	m_Smooth = FALSE;
	m_Antialias = FALSE;
	m_VRotate = FALSE;
	m_LinkScale = FALSE;
	//}}AFX_DATA_INIT
}

CFormCommandView::~CFormCommandView()
{
}

void CFormCommandView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFormCommandView)
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT3, m_ControlColorLightSpecular);
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT2, m_ControlColorLightDiffuse);
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT, m_ControlColorLightAmbient);
	DDX_Control(pDX, IDC_SLIDER_Z, m_SliderScaleZ);
	DDX_Control(pDX, IDC_SLIDER_Y, m_SliderScaleY);
	DDX_Control(pDX, IDC_SLIDER_X, m_SliderScaleX);
	DDX_Control(pDX, IDC_FRAME_COLOR_BACK, m_ControlBackColor);
	DDX_Control(pDX,IDC_RADIO_MODEL0,m_ControlModel0);
	DDX_Control(pDX,IDC_RADIO_MODEL1,m_ControlModel1);
	DDX_Control(pDX,IDC_RADIO_MODEL2,m_ControlModel2);
	DDX_Check(pDX, IDC_CHECK_LIGHTING, m_Lighting);
	DDX_Check(pDX, IDC_CHECK_SMOOTH, m_Smooth);
	DDX_Check(pDX, IDC_CHECK_ANTIALIAS, m_Antialias);
	DDX_Check(pDX, IDC_CHECK_VROTATION, m_VRotate);
	DDX_Check(pDX, IDC_CHECK_LINK_SCALE, m_LinkScale);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFormCommandView, CFormView)
	//{{AFX_MSG_MAP(CFormCommandView)
	ON_WM_PAINT()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_RADIO_MODEL0, OnRadioModel0)
	ON_BN_CLICKED(IDC_RADIO_MODEL1, OnRadioModel1)
	ON_BN_CLICKED(IDC_RADIO_MODEL2, OnRadioModel2)
	ON_BN_CLICKED(IDC_CHECK_LIGHTING, OnCheckLighting)
	ON_BN_CLICKED(IDC_CHECK_SMOOTH, OnCheckSmooth)
	ON_BN_CLICKED(IDC_CHECK_VROTATION, OnCheckVrotation)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_CHECK_LINK_SCALE, OnCheckLinkScale)
	ON_BN_CLICKED(IDC_CHECK_ANTIALIAS, OnCheckAntialias)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFormCommandView diagnostics

#ifdef _DEBUG
void CFormCommandView::AssertValid() const
{
	CFormView::AssertValid();
}

void CFormCommandView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CToolDoc* CFormCommandView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolDoc)));
	return (CToolDoc*)m_pDocument;
}

#endif //_DEBUG

//********************************************
// OnPaint
//********************************************
void CFormCommandView::OnPaint() 
{
	// Device context for painting
	CPaintDC dc(this); 
	
	// Options are stored in Application
	CToolApp *pApp = (CToolApp *)AfxGetApp();
	CRect rect;
	
	// Color back
	m_ControlBackColor.GetWindowRect(&rect);
	ScreenToClient(&rect);
	CBrush BrushBack(BackColor);
	dc.FillRect(&rect,&BrushBack);
	
	// Color light ambient
	m_ControlColorLightAmbient.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightAmbient(AmbientColor);
	dc.FillRect(&rect,&BrushLightAmbient);

	// Color light diffuse
	m_ControlColorLightDiffuse.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightDiffuse(DiffuseColor);
	dc.FillRect(&rect,&BrushLightDiffuse);

	// Color light specular
	m_ControlColorLightSpecular.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightSpecular(SpecularColor);
	dc.FillRect(&rect,&BrushLightSpecular);
}

//********************************************
// OnLButtonUp
//********************************************
void CFormCommandView::OnLButtonUp(UINT nFlags, 
																	 CPoint point) 
{
	CRect rect;
	CToolApp *pApp = (CToolApp *)AfxGetApp();
	float r,g,b;

	// back color
	m_ControlBackColor.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(BackColor);
		if(dlg.DoModal()==IDOK)
		{
			BackColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			r = (float)GetRValue(BackColor) / 255.0f;
			g = (float)GetGValue(BackColor) / 255.0f;
			b = (float)GetBValue(BackColor) / 255.0f;
			pView->m_ClearColorRed   = r;
			pView->m_ClearColorGreen = g;
			pView->m_ClearColorBlue  = b;
			glClearColor(r,g,b,1.0f);
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE);
		}
	}

	// ambient light color
	m_ControlColorLightAmbient.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(AmbientColor);
		if(dlg.DoModal()==IDOK)
		{
			AmbientColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			r = (float)GetRValue(AmbientColor) / 255.0f;
			g = (float)GetGValue(AmbientColor) / 255.0f;
			b = (float)GetBValue(AmbientColor) / 255.0f;
			float	ambientProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_AMBIENT, ambientProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		
	
	// specular light color
	m_ControlColorLightSpecular.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(SpecularColor);
		if(dlg.DoModal()==IDOK)
		{
			SpecularColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			float r = (float)GetRValue(SpecularColor) / 255.0f;
			float g = (float)GetGValue(SpecularColor) / 255.0f;
			float b = (float)GetBValue(SpecularColor) / 255.0f;
			float	specularProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_DIFFUSE, specularProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		

	// diffuse light color
	m_ControlColorLightDiffuse.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(DiffuseColor);
		if(dlg.DoModal()==IDOK)
		{
			DiffuseColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			float r = (float)GetRValue(DiffuseColor) / 255.0f;
			float g = (float)GetGValue(DiffuseColor) / 255.0f;
			float b = (float)GetBValue(DiffuseColor) / 255.0f;
			float	diffuseProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		
	CFormView::OnLButtonUp(nFlags, point);
}


//********************************************
// GetRenderView
//********************************************
CView *CFormCommandView::GetRenderView() 
{
	CToolApp *pApp = (CToolApp *)AfxGetApp();
	CMainFrame *pFrame = (CMainFrame *)pApp->m_pMainWnd;
	CView *pView = (CView *)pFrame->m_wndSplitter.GetPane(0,1);
	return pView;
}

//********************************************
// Model
//********************************************
void CFormCommandView::OnRadioModel0() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

void CFormCommandView::OnRadioModel1() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

void CFormCommandView::OnRadioModel2() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

//********************************************
// OnCheckLighting
//********************************************
void CFormCommandView::OnCheckLighting() 
{
	m_Lighting = !m_Lighting;
	if(m_Lighting)
		glEnable(GL_LIGHTING);
	else
		glDisable(GL_LIGHTING);
	
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

//********************************************
// OnCheckSmooth
//********************************************
void CFormCommandView::OnCheckSmooth() 
{
	m_Smooth = !m_Smooth;
	if(m_Smooth)
		glShadeModel(GL_SMOOTH);
	else
		glShadeModel(GL_FLAT);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
	
}

void CFormCommandView::OnCheckVrotation() 
{
	m_VRotate = !m_VRotate;
	CRenderView *pView = (CRenderView *)GetRenderView();
	if(m_VRotate)
		pView->SetTimer(1,10,NULL);
	else
		pView->KillTimer(1);
}

//********************************************
// OnInitialUpdate
//********************************************
void CFormCommandView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// Slider
	TRACE("Sliders : updating...\n");
	m_SliderScaleX.SetRange(1,100,TRUE);
	m_SliderScaleY.SetRange(1,100,TRUE);
	m_SliderScaleZ.SetRange(1,100,TRUE);

	m_SliderScaleX.SetPos(50);
	m_SliderScaleY.SetPos(50);
	m_SliderScaleZ.SetPos(50);

	m_ControlModel1.SetCheck(1);
	
}

//********************************************
// OnHScroll
//********************************************
void CFormCommandView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	UpdateScale();
	GetRenderView()->InvalidateRect(NULL,FALSE); 
	CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}


BOOL CFormCommandView::UpdateScale() 
{
	CRenderView *pView = (CRenderView *)GetRenderView();
	pView->m_xScaling = (float)m_SliderScaleX.GetPos()/50.0f;
	pView->m_yScaling = (float)m_SliderScaleY.GetPos()/50.0f;
	pView->m_zScaling = (float)m_SliderScaleZ.GetPos()/50.0f;

	if(m_LinkScale)
	{
		m_SliderScaleY.SetPos(m_SliderScaleX.GetPos());
		m_SliderScaleZ.SetPos(m_SliderScaleX.GetPos());
		pView->m_yScaling = pView->m_zScaling = pView->m_xScaling;
	}

	return TRUE;
}

void CFormCommandView::OnCheckLinkScale() 
{
	m_LinkScale = !m_LinkScale;	

	if(m_LinkScale)
	{
		CRenderView *pView = (CRenderView *)GetRenderView();
		m_SliderScaleY.SetPos(m_SliderScaleX.GetPos());
		m_SliderScaleZ.SetPos(m_SliderScaleX.GetPos());
		pView->m_yScaling = pView->m_zScaling = pView->m_xScaling;
	}

	m_SliderScaleY.EnableWindow(!m_LinkScale);
	m_SliderScaleZ.EnableWindow(!m_LinkScale);
	GetRenderView()->InvalidateRect(NULL,FALSE);
	
}

//********************************************
// OnCheckAntialias
// Toggle antialiased lines
//********************************************
void CFormCommandView::OnCheckAntialias() 
{
	m_Antialias = !m_Antialias;

	if(m_Antialias)
	{
		glEnable(GL_LINE_SMOOTH);
		glEnable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
		glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
		glLineWidth(1.5f);
	}
	else
	{
		glDisable(GL_LINE_SMOOTH);
		glDisable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
		glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
		glLineWidth(1.0f);
	}
	GetRenderView()->InvalidateRect(NULL,FALSE); 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利在线观看| 亚洲欧洲色图综合| 宅男在线国产精品| 欧美天堂一区二区三区| 色天使色偷偷av一区二区| 成人美女视频在线看| 国产成人午夜视频| 波多野结衣视频一区| 成人99免费视频| 色网综合在线观看| 在线观看欧美黄色| 欧美色视频在线观看| 欧美日本在线播放| 51精品久久久久久久蜜臀| 日韩三级视频中文字幕| 日韩免费性生活视频播放| 精品国一区二区三区| 国产亚洲综合在线| 国产精品美女久久久久久久久久久 | 亚洲免费在线播放| 一区二区欧美视频| 亚洲国产精品麻豆| 奇米一区二区三区| 国产精品综合一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 在线观看一区二区精品视频| 欧美三级视频在线| 日韩三级视频在线看| 久久精品这里都是精品| 中文字幕色av一区二区三区| 亚洲在线视频一区| 麻豆精品蜜桃视频网站| 国产成人精品一区二区三区四区| 91亚洲国产成人精品一区二区三| 欧美在线|欧美| 精品电影一区二区三区| 中文字幕在线播放不卡一区| 午夜精品久久久久久久久| 国产曰批免费观看久久久| 99re热这里只有精品视频| 欧美日韩久久不卡| 国产三级欧美三级日产三级99| 亚洲丝袜制服诱惑| 日韩中文字幕一区二区三区| 国产综合成人久久大片91| 91网站在线播放| 精品国产成人在线影院 | 亚洲国产一区二区视频| 精品一二三四区| 91女神在线视频| 日韩免费视频线观看| 亚洲精品综合在线| 国产综合久久久久久鬼色| 91国偷自产一区二区三区观看| 欧美成人三级在线| 一区二区三区中文在线观看| 久久电影网站中文字幕| 99re66热这里只有精品3直播 | 中文字幕日韩一区| 蜜桃精品视频在线| av午夜一区麻豆| 日韩欧美123| 亚洲综合免费观看高清完整版在线| 精品一区二区影视| 欧美色图一区二区三区| 国产精品久久777777| 六月丁香综合在线视频| 在线视频一区二区三| 国产欧美综合色| 日本在线播放一区二区三区| 91免费观看视频在线| 久久精品免视看| 久久国产欧美日韩精品| 欧美日韩三级视频| 亚洲人成亚洲人成在线观看图片 | 欧美三级欧美一级| 国产精品你懂的| 精品在线观看视频| 欧美一级久久久| 亚洲一级二级在线| 91在线精品秘密一区二区| 欧美大片在线观看一区二区| 亚洲国产精品综合小说图片区| 高清不卡在线观看| 国产欧美一区二区精品性色超碰| 另类欧美日韩国产在线| 91精品综合久久久久久| 亚洲精选视频在线| 色狠狠一区二区| 成人欧美一区二区三区白人 | 欧美成人aa大片| 日韩精品三区四区| 欧美日韩精品欧美日韩精品一 | 亚洲欧美福利一区二区| 成人激情开心网| 国产精品免费久久| 国产精品1024久久| 国产色综合久久| 国产成人夜色高潮福利影视| 欧美成人性福生活免费看| 美女视频黄频大全不卡视频在线播放 | 波波电影院一区二区三区| 国产亚洲精品资源在线26u| 狠狠狠色丁香婷婷综合激情| 日韩一区二区在线观看视频| 日韩国产精品大片| 91.麻豆视频| 免费高清成人在线| 精品国产一区二区三区忘忧草| 精品写真视频在线观看| 久久新电视剧免费观看| 国产精品资源站在线| 国产欧美日韩精品一区| 成人午夜av在线| 亚洲视频在线一区| 国产99久久久精品| 久久精品国产秦先生| 欧美高清在线精品一区| 色视频欧美一区二区三区| 日韩电影网1区2区| 中文字幕日韩一区| 日本一区二区视频在线观看| 精品国产a毛片| 91免费在线视频观看| 久久国产乱子精品免费女| 亚洲综合在线第一页| 2020国产成人综合网| 欧美性做爰猛烈叫床潮| 91国产成人在线| 久久精品视频免费| 午夜电影一区二区三区| 欧美极品美女视频| 91麻豆国产在线观看| 在线视频一区二区免费| 色国产精品一区在线观看| 91网站视频在线观看| 99riav久久精品riav| av一本久道久久综合久久鬼色| 91在线观看下载| 欧美在线free| 欧美丰满少妇xxxxx高潮对白| 久久在线免费观看| 一区在线中文字幕| 亚洲午夜免费电影| 午夜精品国产更新| 国产原创一区二区三区| 成人av资源站| 在线不卡免费欧美| 日韩精品影音先锋| 亚洲精品一区二区精华| 精品国产成人在线影院| 欧美激情一区二区三区| 国产精品久久久久久亚洲伦| 日韩av中文字幕一区二区 | 爽爽淫人综合网网站| 91女神在线视频| 一区二区三区资源| 国产一区二区h| 色乱码一区二区三区88| 在线观看欧美日本| 欧美一区二区在线观看| 日韩欧美高清一区| 国产精品电影院| 午夜影院久久久| 日本道精品一区二区三区| 亚洲激情图片qvod| 欧美精品一区二区久久久| 国产精品一区二区久久精品爱涩 | 欧美精品一区二区三区四区| 色综合色综合色综合| 精品一区二区在线播放| 一区二区三区波多野结衣在线观看| 久久女同精品一区二区| 欧美精品在线视频| 97久久超碰国产精品| 精品一区二区三区在线观看 | 国产高清一区日本| 亚洲福利一区二区| 日韩一区有码在线| 国产人伦精品一区二区| 日韩免费高清av| 91精品国产乱码久久蜜臀| 91黄色免费看| 99国产精品久久久久久久久久久| 精品一区二区三区香蕉蜜桃| 亚洲不卡av一区二区三区| 中文字幕一区二区三区四区| 久久久精品国产免费观看同学| 国产亚洲一区二区三区在线观看| 日韩午夜激情视频| 欧美日韩国产美| 欧美日韩亚洲另类| 欧美性生活久久| 色综合天天性综合| 99久久99精品久久久久久| 福利一区福利二区| 成人一道本在线| 国产mv日韩mv欧美| 国产iv一区二区三区| 成人综合婷婷国产精品久久蜜臀 |