//ROMTEAM WorldEditor //////////////////////////////////////////////////////////////////////////////////////// // File : CDlgITSphere.cpp: implementation of the CDlgITSphere class. // Author : Ionut Grozea // Date : 97.11 // Description : //////////////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "ACP_Base.h" #include "ITF.h" #include "incGAM.h" #include "GLI.h" #include "DPT.h" #undef CPA_WANTS_IMPORT #undef CPA_EXPORT #define CPA_WANTS_EXPORT #include "OGD.h" #undef CPA_WANTS_EXPORT #define CPA_WANTS_IMPORT #include "3dinterf.hpp" #include "DlgITSphere.h" ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : CDlgITSphere::CDlgITSphere // Date : 97.11 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : constructor to create a new dialog // Author : Ionut Grozea ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// CDlgITSphere::CDlgITSphere(float radius,int m_Ns,int m_Nt , ITSphere3D*pSphere, CWnd* pParent /*=NULL*/) : CDialog(CDlgITSphere::IDD, pParent) { //{{AFX_DATA_INIT(CDlgITSphere) m_fRadius = 0.0f; m_Nx = 0; m_Ny = 0; //}}AFX_DATA_INIT m_Nx = m_Ns; m_Ny = m_Nt; m_fRadius = radius; m_NxOld = m_Ns; m_NyOld = m_Nt; m_fRadiusOld = radius; m_poSphere=pSphere; } void CDlgITSphere::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgITSphere) //}}AFX_DATA_MAP if (!pDX->m_bSaveAndValidate) { mfn_poGetSlider1()->SetPos(mfn_iGetIntPos(m_fRadius)); mfn_poGetSlider2()->SetPos(m_Nx); mfn_poGetSlider3()->SetPos(m_Ny); } if (!pDX->m_bSaveAndValidate) { DDX_Text(pDX, IDC_EDIT1, m_fRadius); DDX_Text(pDX, IDC_EDIT2, m_Nx); DDX_Text(pDX, IDC_EDIT3, m_Ny); } else { CString csText1; GetDlgItem(IDC_EDIT1)->GetWindowText(csText1); m_fRadius=(float)atof(csText1); CString csText2; GetDlgItem(IDC_EDIT2)->GetWindowText(csText2); m_Nx= atoi(csText2); CString csText3; GetDlgItem(IDC_EDIT3)->GetWindowText(csText3); m_Ny= atoi(csText3); } DDV_MinMaxFloat(pDX, m_fRadius, 0.f, 10.f); //show the effect } BEGIN_MESSAGE_MAP(CDlgITSphere, CDialog) //{{AFX_MSG_MAP(CDlgITSphere) ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1) ON_WM_HSCROLL() ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2) ON_EN_CHANGE(IDC_EDIT3, OnChangeEdit3) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgITSphere message handlers BOOL CDlgITSphere::OnInitDialog() { mfn_poGetSlider1()->SetRange(0,100); mfn_poGetSlider2()->SetRange(4,20); mfn_poGetSlider3()->SetRange(4,20); CDialog::OnInitDialog(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } int CDlgITSphere::mfn_iGetIntPos(float radius) { return (int) ( radius * 10); } float CDlgITSphere::mfn_fSliderInt2Float(int sliderVal) { return sliderVal/10.0f; } CSliderCtrl* CDlgITSphere::mfn_poGetSlider1() { return (CSliderCtrl* )GetDlgItem(IDC_SLIDER1); } CSliderCtrl* CDlgITSphere::mfn_poGetSlider2() { return (CSliderCtrl* )GetDlgItem(IDC_SLIDER2); } CSliderCtrl* CDlgITSphere::mfn_poGetSlider3() { return (CSliderCtrl* )GetDlgItem(IDC_SLIDER3); } void CDlgITSphere::OnChangeEdit1() { UpdateData(); mfn_poGetSlider1()->SetPos(mfn_iGetIntPos(m_fRadius)); m_poSphere->SetRadius(m_fRadius); (((DEV_MultiDevice*)g_oFrameGest.ma_p_oWinArray[2][2]->GetActiveView())->DrawObject()); } void CDlgITSphere::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { CDialog::OnHScroll(nSBCode, nPos, pScrollBar); CWnd *m_Slider1 ,*m_Slider3 , *m_Slider2; m_Slider1 = GetDlgItem(IDC_SLIDER1); m_Slider2 = GetDlgItem(IDC_SLIDER2); m_Slider3 = GetDlgItem(IDC_SLIDER3); if (m_Slider1 == pScrollBar) { m_fRadius=mfn_fSliderInt2Float(mfn_poGetSlider1()->GetPos()); if ( !m_fRadius) m_fRadius+=0.1f; UpdateData(FALSE); m_poSphere->SetRadius(m_fRadius); } if (m_Slider2 == pScrollBar) { m_Nx= (mfn_poGetSlider2()->GetPos()); UpdateData(FALSE); m_poSphere->SetSamplingRate(m_Nx,m_Ny); } if (m_Slider3 == pScrollBar) { m_Ny= (mfn_poGetSlider3()->GetPos()); UpdateData(FALSE); m_poSphere->SetSamplingRate(m_Nx,m_Ny); } (((DEV_MultiDevice*)g_oFrameGest.ma_p_oWinArray[2][2]->GetActiveView())->DrawObject()); } void CDlgITSphere::OnChangeEdit2() { UpdateData(); mfn_poGetSlider2()->SetPos(m_Nx); m_poSphere->SetSamplingRate(m_Nx,m_Ny); (((DEV_MultiDevice*)g_oFrameGest.ma_p_oWinArray[2][2]->GetActiveView())->DrawObject()); } void CDlgITSphere::OnChangeEdit3() { UpdateData(); mfn_poGetSlider3()->SetPos(m_Ny); m_poSphere->SetSamplingRate(m_Nx,m_Ny); (((DEV_MultiDevice*)g_oFrameGest.ma_p_oWinArray[2][2]->GetActiveView())->DrawObject()); } void CDlgITSphere::OnCancel() { m_Nx = m_NxOld; m_Ny = m_NyOld; m_fRadius = m_fRadiusOld; m_poSphere->SetSamplingRate(m_Nx,m_Ny); m_poSphere->SetRadius(m_fRadius); CDialog::OnCancel(); }