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
DLGPROPERTIES.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++
- // DlgProperties.cpp : implementation file
- //
- #include "stdafx.h"
- #include "3DEditor.h"
- #include "3DEditorDoc.h"
- #include "3DEditorView.h"
- #include "DlgProperties.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // DlgProperties dialog
- DlgProperties::DlgProperties(CWnd* pParent /*=NULL*/)
- : CDialog(DlgProperties::IDD, pParent)
- {
- //{{AFX_DATA_INIT(DlgProperties)
- //}}AFX_DATA_INIT
- }
- void DlgProperties::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(DlgProperties)
- DDX_Control(pDX, IDC_ELEM, m_elem);
- DDX_Control(pDX, IDC_DETAIL, m_detail);
- DDX_Control(pDX, IDC_VERT, m_vert);
- DDX_Control(pDX, IDC_FACES, m_faces);
- DDX_Control(pDX, IDC_OBJ, m_obj);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(DlgProperties, CDialog)
- //{{AFX_MSG_MAP(DlgProperties)
- ON_CBN_SELCHANGE(IDC_OBJ, OnSelchangeObj)
- ON_EN_KILLFOCUS(IDC_FACES, OnKillfocusFaces)
- ON_WM_CLOSE()
- ON_CBN_SELCHANGE(IDC_ELEM, OnSelchangeElem)
- ON_EN_KILLFOCUS(IDC_VERT, OnKillfocusVert)
- ON_BN_CLICKED(IDC_CROP, OnCrop)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // DlgProperties message handlers
- BOOL DlgProperties::OnInitDialog()
- {
- CDialog::OnInitDialog();
- winpos1.left=-1;
- winpos1.top=-1;
- CString s;
- s.LoadString(IDS_ALLOBJ);
- m_obj.AddString(s);
- object *o=doc->obj0;
- while( o )
- {
- m_obj.AddString(o->name);
- o=o->next;
- }
- m_obj.SetCurSel(0);
- slideron=1;
- OnSelchangeObj();
- if (winpos1.left!=-1)
- SetWindowPos(0,winpos1.left,winpos1.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
- return TRUE;
- }
- void DlgProperties::OnSelchangeObj()
- {
- int s=m_obj.GetCurSel();
- char str[256];
- m_obj.GetLBText(s,str);
- int nv=0,nf=0;
- doc->ncoef=0;
- doc->cur_ncoef=-1;
- object *o=doc->obj0;
- while( o )
- {
- if (!strcmp(str,o->name))
- {
- nv=o->nrv;
- nf=o->nrf;
- break;
- }
- nv+=o->nrv;
- nf+=o->nrf;
- doc->ncoef+=o->ncoef;
- doc->cur_ncoef+=o->cur_ncoef+1;
- o=o->next;
- }
- obj=o;
- if (o)
- {
- doc->selobj=o;
- doc->selface=-1;
- m_vert.EnableWindow(1);
- m_faces.EnableWindow(1);
- m_elem.ResetContent();
- CString s;
- s.LoadString(IDS_ALLELEM);
- m_elem.AddString(s);
- int e;
- s.LoadString(IDS_ELEM_N);
- for( e=0;e<o->nelem;e++ )
- {
- sprintf(str,s,e+1);
- m_elem.AddString(str);
- }
- m_elem.SetCurSel(0);
- sel=-1;
- slideron=0;
- m_elem.EnableWindow(1);
- m_detail.EnableWindow(obj->ncoef>0);
- m_detail.SetRange(0,obj->ncoef?obj->ncoef:1);
- m_detail.SetPos(obj->cur_ncoef+1);
- m_detail.ClearSel(1);
- slideron=1;
- }
- else
- {
- doc->selobj=0;
- doc->selface=-1;
- m_vert.EnableWindow(1);
- m_faces.EnableWindow(1);
- m_elem.ResetContent();
- m_elem.EnableWindow(0);
- slideron=0;
- doc->nv=nv;
- doc->nf=nf;
- m_detail.EnableWindow(doc->ncoef>0);
- m_detail.SetRange(0,doc->ncoef?doc->ncoef:1);
- m_detail.SetPos(doc->cur_ncoef+1);
- m_detail.ClearSel(1);
- slideron=1;
- }
- sprintf(str,"%i",nv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",nf);
- m_faces.SetWindowText(str);
- InvalidateDoc(0);
- }
- void DlgProperties::InvalidateDoc(int inv_oc)
- {
- doc->UpdateAllViews(0);
- if (doc->dlgmap)
- doc->dlgmap->Invalidate(0);
- if (inv_oc && doc->oc)
- {
- delete doc->oc;
- doc->oc=0;
- }
- }
- BOOL DlgProperties::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
- {
- char str[256];
- NMHDR *nm=(NMHDR *)lParam;
- if (wParam==IDC_DETAIL)
- if (slideron)
- if (obj)
- {
- if (sel!=-1)
- {
- int pos = m_detail.GetPos()-1;
- if (obj->elem[sel].cur_ncoef!=pos)
- {
- doc->SetModifiedFlag();
- int d = pos - obj->elem[sel].cur_ncoef;
- if (d>0)
- while(obj->elem[sel].cur_ncoef<pos)
- obj->AddCoef(sel);
- else while(obj->elem[sel].cur_ncoef>pos)
- obj->DelCoef(sel);
- sprintf(str,"%i",obj->elem[sel].nrf);
- m_faces.SetWindowText(str);
- sprintf(str,"%i",obj->elem[sel].nrv);
- m_vert.SetWindowText(str);
- }
- }
- else
- {
- int pos = m_detail.GetPos()-1;
- if (obj->cur_ncoef!=pos)
- {
- doc->SetModifiedFlag();
- int d = pos - obj->cur_ncoef;
- if (d>0)
- while(obj->cur_ncoef<pos)
- obj->AddCoef();
- else while(obj->cur_ncoef>pos)
- obj->DelCoef();
- sprintf(str,"%i",obj->nrv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",obj->nrf);
- m_faces.SetWindowText(str);
- }
- }
- InvalidateDoc(1);
- }
- else
- {
- int pos = m_detail.GetPos()-1;
- if (doc->cur_ncoef!=pos)
- {
- doc->SetModifiedFlag();
- int d = pos - doc->cur_ncoef;
- if (d>0)
- while(doc->cur_ncoef<pos)
- {
- doc->AddCoef();
- doc->nf++;
- doc->nf++;
- doc->nv++;
- doc->cur_ncoef++;
- }
- else while(doc->cur_ncoef>pos)
- {
- doc->DelCoef();
- doc->nf--;
- doc->nf--;
- doc->nv--;
- doc->cur_ncoef--;
- }
- sprintf(str,"%i",doc->nv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",doc->nf);
- m_faces.SetWindowText(str);
- }
- InvalidateDoc(1);
- }
- return CDialog::OnNotify(wParam, lParam, pResult);
- }
- void DlgProperties::OnKillfocusVert()
- {
- char str[256];
- if (m_faces.m_hWnd==0)
- return ;
- int tmp=GetDlgItemInt(IDC_VERT);
- if (obj)
- if (sel==-1)
- {
- if (tmp!=obj->nrv)
- doc->SetModifiedFlag();
- if (tmp>obj->nrv)
- while( obj->nrv<tmp )
- if (obj->AddCoef()==0)
- break;
- else;
- else
- while( obj->nrv>tmp )
- if (obj->DelCoef()==0)
- break;
- sprintf(str,"%i",obj->nrv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",obj->nrf);
- m_faces.SetWindowText(str);
- m_detail.SetPos(obj->cur_ncoef+1);
- }
- else
- {
- if (tmp!=obj->elem[sel].nrv)
- doc->SetModifiedFlag();
- if (tmp>obj->elem[sel].nrv)
- while( obj->elem[sel].nrv<tmp )
- if (obj->AddCoef(sel)==0)
- break;
- else;
- else
- while( obj->elem[sel].nrv>tmp )
- if (obj->DelCoef(sel)==0)
- break;
- sprintf(str,"%i",obj->elem[sel].nrv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",obj->elem[sel].nrf);
- m_faces.SetWindowText(str);
- m_detail.SetPos(obj->elem[sel].cur_ncoef+1);
- }
- else
- {
- if (tmp!=doc->nv)
- doc->SetModifiedFlag();
- if (tmp>doc->nv)
- while( doc->nv<tmp )
- if (doc->AddCoef()==0)
- break;
- else { doc->nv++; doc->nf++; doc->nf++; doc->cur_ncoef++; }
- else
- while( doc->nv>tmp )
- if (doc->DelCoef()==0)
- break;
- else { doc->nv--; doc->nf--; doc->nf--; doc->cur_ncoef--; }
- sprintf(str,"%i",doc->nv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",doc->nf);
- m_faces.SetWindowText(str);
- m_detail.SetPos(doc->cur_ncoef+1);
- }
- InvalidateDoc(1);
- }
- void DlgProperties::OnKillfocusFaces()
- {
- char str[256];
- if (m_vert.m_hWnd==0)
- return ;
- int tmp=GetDlgItemInt(IDC_FACES);
- if (obj)
- if (sel==-1)
- {
- if (tmp!=obj->nrf)
- doc->SetModifiedFlag();
- if (tmp>obj->nrf)
- while( obj->nrf<tmp )
- if (obj->AddCoef()==0)
- break;
- else ;
- else
- while( obj->nrf>tmp )
- if (obj->DelCoef()==0)
- break;
- sprintf(str,"%i",obj->nrv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",obj->nrf);
- m_faces.SetWindowText(str);
- m_detail.SetPos(obj->cur_ncoef+1);
- }
- else
- {
- if (tmp!=obj->elem[sel].nrf)
- doc->SetModifiedFlag();
- if (tmp>obj->elem[sel].nrf)
- while( obj->elem[sel].nrf<tmp )
- if (obj->AddCoef(sel)==0)
- break;
- else ;
- else
- while( obj->elem[sel].nrf>tmp )
- if (obj->DelCoef(sel)==0)
- break;
- sprintf(str,"%i",obj->elem[sel].nrf);
- m_faces.SetWindowText(str);
- sprintf(str,"%i",obj->elem[sel].nrv);
- m_vert.SetWindowText(str);
- m_detail.SetPos(obj->elem[sel].cur_ncoef+1);
- }
- else
- {
- if (tmp!=doc->nf)
- doc->SetModifiedFlag();
- if (tmp>doc->nf)
- while( doc->nf<tmp )
- if (doc->AddCoef()==0)
- break;
- else { doc->nv++; doc->nf++; doc->nf++; doc->cur_ncoef++; }
- else
- while( doc->nf>tmp )
- if (doc->DelCoef()==0)
- break;
- else { doc->nv--; doc->nf--; doc->nf--; doc->cur_ncoef--; }
- sprintf(str,"%i",doc->nv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",doc->nf);
- m_faces.SetWindowText(str);
- m_detail.SetPos(doc->cur_ncoef+1);
- }
- InvalidateDoc(1);
- }
- void DlgProperties::Close()
- {
- OnClose();
- }
- void DlgProperties::OnClose()
- {
- GetWindowRect(&winpos1);
- doc->selobj=0;
- doc->selface=-1;
- InvalidateDoc(0);
- CDialog **d=&doc->dlgprop;
- delete doc->dlgprop;
- *d=0;
- }
- void DlgProperties::OnOK()
- {
- }
- void DlgProperties::OnCancel()
- {
- }
- void DlgProperties::OnSelchangeElem()
- {
- char str[256];
- sel=m_elem.GetCurSel()-1;
- doc->selface=sel;
- if (obj)
- if (sel>=0)
- {
- sprintf(str,"%i",obj->elem[sel].nrv);
- m_vert.SetWindowText(str);
- sprintf(str,"%i",obj->elem[sel].nrf);
- m_faces.SetWindowText(str);
- slideron=0;
- m_detail.EnableWindow(obj->elem[sel].ncoef>0);
- m_detail.SetRange(0,obj->elem[sel].ncoef?obj->elem[sel].ncoef:1,1);
- m_detail.SetPos(obj->elem[sel].cur_ncoef+1);
- m_detail.ClearSel(1);
- slideron=1;
- m_vert.EnableWindow(1);
- m_faces.EnableWindow(1);
- InvalidateDoc(0);
- }
- else OnSelchangeObj();
- }
- void DlgProperties::CropElement(object *o,int e)
- {
- if (o->elem[e].cur_ncoef==o->elem[e].ncoef-1)
- return;
- doc->SetModifiedFlag();
- if (o->elem[e].cur_coef==0)
- {
- o->ncoef-=o->elem[e].ncoef;
- doc->ncoef-=o->elem[e].ncoef;
- delete o->elem[e].coef;
- o->elem[e].coef=0;
- o->elem[e].ncoef=0;
- }
- else
- {
- delete o->elem[e].cur_coef->next;
- o->elem[e].cur_coef->next=0;
- o->ncoef-=o->elem[e].ncoef-o->elem[e].cur_ncoef-1;
- doc->ncoef-=o->elem[e].ncoef-o->elem[e].cur_ncoef-1;
- o->elem[e].ncoef-=o->elem[e].ncoef-o->elem[e].cur_ncoef-1;
- }
- }
- void DlgProperties::OnCrop()
- {
- if (obj)
- if (sel>=0)
- {
- CropElement(obj,sel);
- OnSelchangeElem();
- }
- else
- {
- int e;
- for( e=0;e<obj->nelem;e++ )
- CropElement(obj,e);
- slideron=0;
- m_detail.EnableWindow(obj->ncoef>0);
- m_detail.SetRange(0,obj->ncoef?obj->ncoef:1);
- m_detail.SetPos(obj->cur_ncoef+1);
- m_detail.ClearSel(1);
- slideron=1;
- }
- else
- {
- object *o=doc->obj0;
- while(o)
- {
- int e;
- for( e=0;e<o->nelem;e++ )
- CropElement(o,e);
- o=o->next;
- }
- slideron=0;
- m_detail.EnableWindow(doc->ncoef>0);
- m_detail.SetRange(0,doc->ncoef?doc->ncoef:1);
- m_detail.SetPos(doc->cur_ncoef+1);
- m_detail.ClearSel(1);
- slideron=1;
- }
- }
- void DlgProperties::step_slider(int i)
- {
- int p=m_detail.GetPos( );
- int m=m_detail.GetRangeMax( );
- int n=p+i*m/20;
- if (n<0)
- n=0;
- if (n>m)
- n=m;
- if (n!=p)
- m_detail.SetPos(n);
- }