Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
DLGMATERIAL.CPP
Package: openglsystem.rar [view]
Upload User: nthssl
Upload Date: 2022-04-05
Package Size: 25357k
Code Size: 11k
Category:
OpenCV
Development Platform:
Visual C++
- // DlgMaterial.cpp : implementation file
- //
- #include "stdafx.h"
- #include "3DEditor.h"
- #include "3DEditorDoc.h"
- #include "3DEditorView.h"
- #include "DlgMaterial.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // DlgMaterial dialog
- DlgMaterial::DlgMaterial(CWnd* pParent /*=NULL*/)
- : CDialog(DlgMaterial::IDD, pParent)
- {
- //{{AFX_DATA_INIT(DlgMaterial)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- curmat=0;
- }
- void DlgMaterial::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(DlgMaterial)
- DDX_Control(pDX, IDC_NAME, m_names);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(DlgMaterial, CDialog)
- //{{AFX_MSG_MAP(DlgMaterial)
- ON_WM_CLOSE()
- ON_WM_LBUTTONDOWN()
- ON_CBN_SELCHANGE(IDC_NAME, OnSelchangeName)
- ON_WM_PAINT()
- ON_EN_KILLFOCUS(IDC_OPACITY, OnKillfocusOpacity)
- ON_EN_KILLFOCUS(IDC_SELFILLUM, OnKillfocusSelfillum)
- ON_EN_KILLFOCUS(IDC_SHININESS, OnKillfocusShininess)
- ON_EN_KILLFOCUS(IDC_STRENGTH, OnKillfocusStrength)
- ON_BN_CLICKED(IDC_BUT_OPACITY, OnButOpacity)
- ON_BN_CLICKED(IDC_BUT_SELFILLUM, OnButSelfillum)
- ON_BN_CLICKED(IDC_BUT_BUMP, OnButBump)
- ON_BN_CLICKED(IDC_BUT_TEXT1, OnButText1)
- ON_EN_KILLFOCUS(IDC_REFLECTION, OnKillfocusReflection)
- ON_EN_KILLFOCUS(IDC_REFRACTION, OnKillfocusRefraction)
- ON_EN_KILLFOCUS(IDC_AM_BUMP, OnKillfocusAmBump)
- ON_EN_KILLFOCUS(IDC_AM_OPACITY, OnKillfocusAmOpacity)
- ON_EN_KILLFOCUS(IDC_AM_SELFILLUM, OnKillfocusAmSelfillum)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // DlgMaterial message handlers
- BOOL DlgMaterial::OnInitDialog()
- {
- CDialog::OnInitDialog();
- winpos2.left=-1;
- winpos2.top=-1;
- int i,j;
- for( i=0;i<doc->nmatlib;i++ )
- {
- j=m_names.AddString(doc->matlib[i].name);
- m_names.SetItemData(j,i);
- }
- if (winpos2.left!=-1)
- SetWindowPos(0,winpos2.left,winpos2.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
- m_names.SetCurSel(0);
- curmat=&doc->matlib[m_names.GetItemData(0)];
- FillDlg();
- FillColors();
- return TRUE;
- }
- void DlgMaterial::OnOK()
- {
- }
- void DlgMaterial::OnCancel()
- {
- }
- void DlgMaterial::Close()
- {
- OnClose();
- }
- void DlgMaterial::OnClose()
- {
- GetWindowRect(&winpos2);
- CDialog **d=&doc->dlgmat;
- delete doc->dlgmat;
- *d=0;
- }
- void DlgMaterial::OnLButtonDown(UINT nFlags, CPoint point)
- {
- CRect rect;
- CPoint p;
- float *v=0;
- GetDlgItem(IDC_AMBIENT)->GetClientRect(&rect);
- GetDlgItem(IDC_AMBIENT)->MapWindowPoints( this, &rect);
- if (rect.left<=point.x && rect.right>=point.x && rect.top<=point.y && rect.bottom>=point.y)
- v=&curmat->ambient[0];
- GetDlgItem(IDC_DIFFUSE)->GetClientRect(&rect);
- GetDlgItem(IDC_DIFFUSE)->MapWindowPoints( this, &rect);
- if (rect.left<=point.x && rect.right>=point.x && rect.top<=point.y && rect.bottom>=point.y)
- v=&curmat->diffuse[0];
- GetDlgItem(IDC_SPECULAR)->GetClientRect(&rect);
- GetDlgItem(IDC_SPECULAR)->MapWindowPoints( this, &rect);
- if (rect.left<=point.x && rect.right>=point.x && rect.top<=point.y && rect.bottom>=point.y)
- v=&curmat->specular[0];
- if (v)
- {
- COLORREF cr=RGB(v[0]*255,v[1]*255,v[2]*255);
- CColorDialog c(cr);
- if (c.DoModal()==IDOK)
- {
- cr=c.GetColor();
- v[0]=GetRValue(cr)/(float)255;
- v[1]=GetGValue(cr)/(float)255;
- v[2]=GetBValue(cr)/(float)255;
- FillColors();
- doc->UpdateAllViews(0);
- }
- }
- CDialog::OnLButtonDown(nFlags, point);
- }
- void DlgMaterial::FillDlg()
- {
- SetDlgItemInt(IDC_AM_OPACITY,curmat->map_opacity.amount);
- SetDlgItemInt(IDC_AM_BUMP,curmat->map_bump.amount);
- SetDlgItemInt(IDC_AM_SELFILLUM,curmat->map_selfillum.amount);
- SetDlgItemText(IDC_TEXT1_MAP,curmat->map_texture1.filename);
- SetDlgItemText(IDC_OPACITY_MAP,curmat->map_opacity.filename);
- SetDlgItemText(IDC_BUMP_MAP,curmat->map_bump.filename);
- SetDlgItemText(IDC_SELFILLUM_MAP,curmat->map_selfillum.filename);
- GetDlgItem(IDC_AM_OPACITY)->EnableWindow(curmat->map_opacity.filename[0]!=0);
- GetDlgItem(IDC_OPACITY)->EnableWindow(curmat->map_opacity.filename[0]==0);
- GetDlgItem(IDC_AM_BUMP)->EnableWindow(curmat->map_bump.filename[0]!=0);
- GetDlgItem(IDC_AM_SELFILLUM)->EnableWindow(curmat->map_selfillum.filename[0]!=0);
- GetDlgItem(IDC_SELFILLUM)->EnableWindow(curmat->map_selfillum.filename[0]==0);
- char str[256];
- sprintf(str,"%4.2f",1-curmat->transparency);
- SetDlgItemText(IDC_OPACITY,str);
- sprintf(str,"%4.2f",curmat->shininess);
- SetDlgItemText(IDC_SHININESS,str);
- sprintf(str,"%4.2f",curmat->shininess_strength);
- SetDlgItemText(IDC_STRENGTH,str);
- sprintf(str,"%4.2f",curmat->self_illum);
- SetDlgItemText(IDC_SELFILLUM,str);
- sprintf(str,"%4.2f",curmat->reflection);
- SetDlgItemText(IDC_REFLECTION,str);
- sprintf(str,"%4.2f",curmat->refraction);
- SetDlgItemText(IDC_REFRACTION,str);
- FillColors();
- }
- void DlgMaterial::FillColors()
- {
- CBrush *b;
- CRect rect;
- CDC *dc;
- COLORREF c;
- c=RGB((int)(curmat->ambient[0]*255),(int)(curmat->ambient[1]*255),(int)(curmat->ambient[2]*255));
- b=new CBrush(c);
- GetDlgItem(IDC_AMBIENT)->GetClientRect(&rect);
- rect.DeflateRect(3,3);
- dc=GetDlgItem(IDC_AMBIENT)->GetDC();
- dc->FillRect(rect,b);
- GetDlgItem(IDC_AMBIENT)->ReleaseDC(dc);
- delete b;
- c=RGB(curmat->diffuse[0]*255,curmat->diffuse[1]*255,curmat->diffuse[2]*255);
- b=new CBrush(c);
- GetDlgItem(IDC_DIFFUSE)->GetClientRect(&rect);
- rect.DeflateRect(3,3);
- dc=GetDlgItem(IDC_DIFFUSE)->GetDC();
- dc->FillRect(rect,b);
- GetDlgItem(IDC_DIFFUSE)->ReleaseDC(dc);
- delete b;
- c=RGB(curmat->specular[0]*255,curmat->specular[1]*255,curmat->specular[2]*255);
- b=new CBrush(c);
- GetDlgItem(IDC_SPECULAR)->GetClientRect(&rect);
- rect.DeflateRect(3,3);
- dc=GetDlgItem(IDC_SPECULAR)->GetDC();
- dc->FillRect(rect,b);
- GetDlgItem(IDC_SPECULAR)->ReleaseDC(dc);
- delete b;
- }
- void DlgMaterial::OnSelchangeName()
- {
- curmat=&doc->matlib[m_names.GetItemData(m_names.GetCurSel())];
- FillDlg();
- }
- void DlgMaterial::OnPaint()
- {
- CPaintDC dc(this);
- if (curmat) FillColors();
- }
- void DlgMaterial::OnKillfocusOpacity()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_OPACITY,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (fabs(f-(1-curmat->transparency))>0.0001)
- doc->SetModifiedFlag();
- curmat->transparency=1-f;
- }
- sprintf(str,"%4.2f",1-curmat->transparency);
- SetDlgItemText(IDC_OPACITY,str);
- }
- void DlgMaterial::OnKillfocusSelfillum()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_SELFILLUM,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (f!=curmat->self_illum)
- {
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- curmat->self_illum=f;
- }
- sprintf(str,"%4.2f",curmat->self_illum);
- SetDlgItemText(IDC_SELFILLUM,str);
- }
- void DlgMaterial::OnKillfocusShininess()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_SHININESS,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (f!=curmat->shininess)
- {
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- curmat->shininess=f;
- }
- sprintf(str,"%4.2f",curmat->shininess);
- SetDlgItemText(IDC_SHININESS,str);
- }
- void DlgMaterial::OnKillfocusStrength()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_STRENGTH,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (f!=curmat->shininess_strength)
- {
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- curmat->shininess_strength=f;
- }
- sprintf(str,"%4.2f",curmat->shininess_strength);
- SetDlgItemText(IDC_STRENGTH,str);
- }
- void DlgMaterial::LoadMap(struct mapping *mapp)
- {
- CString s;
- s.LoadString(IDS_FD_TGAJPGBMP);
- CFileDialog fd(TRUE,0,mapp->filename,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST,s);
- if(fd.DoModal()==IDOK)
- strcpy(mapp->filename,(char *)(LPCSTR)fd.GetFileName());
- else strcpy(mapp->filename,"");
- if (mapp->filename[0])
- {
- BeginWaitCursor();
- mapp->piclibindx=doc->find_image(mapp->filename);
- EndWaitCursor();
- }
- else
- {
- mapp->piclibindx=-1;
- strcpy(mapp->filename,"");
- }
- }
- void DlgMaterial::OnButOpacity()
- {
- LoadMap(&curmat->map_opacity);
- GetDlgItem(IDC_OPACITY_MAP)->SetWindowText(curmat->map_opacity.filename);
- GetDlgItem(IDC_AM_OPACITY)->EnableWindow(curmat->map_opacity.piclibindx!=-1);
- GetDlgItem(IDC_OPACITY)->EnableWindow(curmat->map_opacity.piclibindx==-1);
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- void DlgMaterial::OnButSelfillum()
- {
- LoadMap(&curmat->map_selfillum);
- GetDlgItem(IDC_SELFILLUM_MAP)->SetWindowText(curmat->map_selfillum.filename);
- GetDlgItem(IDC_AM_SELFILLUM)->EnableWindow(curmat->map_selfillum.piclibindx!=-1);
- GetDlgItem(IDC_SELFILLUM)->EnableWindow(curmat->map_selfillum.piclibindx==-1);
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- void DlgMaterial::OnButBump()
- {
- LoadMap(&curmat->map_bump);
- GetDlgItem(IDC_BUMP_MAP)->SetWindowText(curmat->map_bump.filename);
- GetDlgItem(IDC_AM_BUMP)->EnableWindow(curmat->map_bump.piclibindx!=-1);
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- void DlgMaterial::OnButText1()
- {
- LoadMap(&curmat->map_texture1);
- GetDlgItem(IDC_TEXT1_MAP)->SetWindowText(curmat->map_texture1.filename);
- doc->SetModifiedFlag();
- doc->UpdateAllViews(0);
- }
- void DlgMaterial::OnKillfocusReflection()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_REFLECTION,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (f!=curmat->reflection)
- doc->SetModifiedFlag();
- curmat->reflection=f;
- }
- sprintf(str,"%4.2f",curmat->reflection);
- SetDlgItemText(IDC_REFLECTION,str);
- }
- void DlgMaterial::OnKillfocusRefraction()
- {
- float f;
- char str[256];
- GetDlgItemText(IDC_REFRACTION,str,255);
- if (sscanf(str,"%f",&f))
- {
- if (f!=curmat->refraction)
- doc->SetModifiedFlag();
- curmat->refraction=f;
- }
- sprintf(str,"%4.2f",curmat->refraction);
- SetDlgItemText(IDC_REFRACTION,str);
- }
- void DlgMaterial::OnKillfocusAmBump()
- {
- int i;
- char str[256];
- GetDlgItemText(IDC_AM_BUMP,str,255);
- if (sscanf(str,"%i",&i))
- {
- if (i!=curmat->map_bump.amount)
- doc->SetModifiedFlag();
- curmat->map_bump.amount=i;
- }
- sprintf(str,"%i",curmat->map_bump.amount);
- SetDlgItemText(IDC_AM_BUMP,str);
- }
- void DlgMaterial::OnKillfocusAmOpacity()
- {
- int i;
- char str[256];
- GetDlgItemText(IDC_AM_OPACITY,str,255);
- if (sscanf(str,"%i",&i))
- {
- if (i!=curmat->map_opacity.amount)
- doc->SetModifiedFlag();
- curmat->map_opacity.amount=i;
- }
- sprintf(str,"%i",curmat->map_opacity.amount);
- SetDlgItemText(IDC_AM_OPACITY,str);
- }
- void DlgMaterial::OnKillfocusAmSelfillum()
- {
- int i;
- char str[256];
- GetDlgItemText(IDC_AM_SELFILLUM,str,255);
- if (sscanf(str,"%i",&i))
- {
- if (i!=curmat->map_selfillum.amount)
- doc->SetModifiedFlag();
- curmat->map_selfillum.amount=i;
- }
- sprintf(str,"%i",curmat->map_selfillum.amount);
- SetDlgItemText(IDC_AM_SELFILLUM,str);
- }