1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-16 10:08:36 +03:00
occt/samples/mfc/standard/04_Viewer3d/src/TrihedronDlg.cpp
2012-03-05 19:23:40 +04:00

292 lines
7.8 KiB
C++
Executable File

// TrihedronDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Viewer3dApp.h"
#include "Viewer3dView.h"
#include "TrihedronDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void round(double &value, unsigned char digits)
{
char neg = 1;
if(value < 0){
neg = (-1);
value *= (-1);
}
double inc(1.0);
while(digits){ inc*=10; --digits; }
double dg(value*inc*100);
value = floor(floor(dg)/100);
if((dg-(value*100)) > 49.9) value+=1;
value = (value*neg)/inc;
}
/////////////////////////////////////////////////////////////////////////////
// CTrihedronDlg dialog
//CTrihedronDlg::CTrihedronDlg(CWnd* pParent /*=NULL*/)
//: CDialog(CTrihedronDlg::IDD, pParent)
CTrihedronDlg::CTrihedronDlg(Handle_V3d_View Current_V3d_View, CViewer3dDoc* pDoc, CWnd* pParent /*=NULL*/)
: CDialog(CTrihedronDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTrihedronDlg)
m_TrihedronScale = 0.1;
myDoc=pDoc;
myCurrent_V3d_View = Current_V3d_View;
/*m_*/Color = Quantity_NOC_WHITE;
/*m_*/Position = Aspect_TOTP_LEFT_UPPER;
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CTrihedronDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTrihedronDlg)
DDX_Control(pDX, IDC_COMBOTRIHEDRPOS, m_ComboTrihedronPosList);
DDX_Control(pDX, IDC_COMBOTRIHEDRCOLOR, m_ComboTrihedronColorList);
DDX_Text(pDX, IDC_EDITTRIHEDRSCALE, m_TrihedronScale);
DDV_MinMaxDouble(pDX, m_TrihedronScale, 0., 1.);
DDX_Control(pDX, IDC_SPINTRIHEDRSCALE, m_SpinTrihedronScale);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTrihedronDlg, CDialog)
//{{AFX_MSG_MAP(CTrihedronDlg)
ON_CBN_SELCHANGE(IDC_COMBOTRIHEDRCOLOR, OnSelchangeCombotrihedrcolor)
ON_CBN_SELCHANGE(IDC_COMBOTRIHEDRPOS, OnSelchangeCombotrihedrpos)
ON_EN_CHANGE(IDC_EDITTRIHEDRSCALE, OnChangeEdittrihedrscale)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINTRIHEDRSCALE, OnDeltaposSpintrihedrscale)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTrihedronDlg message handlers
void CTrihedronDlg::OnSelchangeCombotrihedrcolor()
{
UpdateData(TRUE);
int a = m_ComboTrihedronColorList.GetCurSel();
if( a==0)
Color=Quantity_NOC_BLACK;
else if(a==1)
Color=Quantity_NOC_MATRABLUE;
else if(a==2)
Color=Quantity_NOC_MATRAGRAY;
// else if(a==3)
// Color=Quantity_NOC_ALICEBLUE;
else if(a==3)
Color=Quantity_NOC_ANTIQUEWHITE;
//else if(a==4)
// Color=Quantity_NOC_BISQUE;
UpdateData(FALSE);
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
myCurrent_V3d_View->Update();
}
void CTrihedronDlg::OnSelchangeCombotrihedrpos()
{
UpdateData(TRUE);
int b = m_ComboTrihedronPosList.GetCurSel();
if( b==0)
Position=Aspect_TOTP_CENTER;
else if(b==1)
Position=Aspect_TOTP_LEFT_LOWER;
else if(b==2)
Position=Aspect_TOTP_LEFT_UPPER;
else if(b==3)
Position=Aspect_TOTP_RIGHT_LOWER;
else if(b==4)
Position=Aspect_TOTP_RIGHT_UPPER;
UpdateData(FALSE);
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
myCurrent_V3d_View->Update();
}
BOOL CTrihedronDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(TRUE);
// Initializing the ComboBox : Position
m_ComboTrihedronPosList.InsertString(-1,"Center");
m_ComboTrihedronPosList.InsertString(-1,"Left Lower");
m_ComboTrihedronPosList.InsertString(-1,"Left Upper");
m_ComboTrihedronPosList.InsertString(-1,"Right Lower");
m_ComboTrihedronPosList.InsertString(-1,"Right Upper");
// Initializing the ComboBox : Color
/*
m_ComboTrihedronColorList.InsertString(-1,"BLACK");
m_ComboTrihedronColorList.InsertString(-1,"MATRABLUE");
m_ComboTrihedronColorList.InsertString(-1,"MATRAGRAY");
m_ComboTrihedronColorList.InsertString(-1,"ALICE BLUE");
m_ComboTrihedronColorList.InsertString(-1,"WHITE");
m_ComboTrihedronColorList.InsertString(-1,"BISQUE");
*/
m_ComboTrihedronColorList.InsertString(-1,"Black");
m_ComboTrihedronColorList.InsertString(-1,"Blue");
m_ComboTrihedronColorList.InsertString(-1,"Gray");
m_ComboTrihedronColorList.InsertString(-1,"White");
//m_ComboTrihedronColorList.InsertString(-1,"Bisque");
UpdateData(FALSE);
/* if (CDemoVisualizationView::slinitialisation())
{
AfxMessageBox("debut");
if(m_Position==Aspect_TOTP_CENTER)
m_ComboTrihedronPosList.SetCurSel(0);
else if(m_Position==Aspect_TOTP_LEFT_LOWER)
m_ComboTrihedronPosList.SetCurSel(1);
else if(m_Position==Aspect_TOTP_LEFT_UPPER)
m_ComboTrihedronPosList.SetCurSel(2);
else if(m_Position==Aspect_TOTP_RIGHT_LOWER)
m_ComboTrihedronPosList.SetCurSel(3);
else if(m_Position==Aspect_TOTP_RIGHT_UPPER)
m_ComboTrihedronPosList.SetCurSel(4);
if(m_Color==Quantity_NOC_BLACK)
m_ComboTrihedronColorList.SetCurSel(0);
else if(m_Color==Quantity_NOC_MATRABLUE)
m_ComboTrihedronColorList.SetCurSel(1);
else if(m_Color==Quantity_NOC_MATRAGRAY)
m_ComboTrihedronColorList.SetCurSel(2);
else if(m_Color==Quantity_NOC_ALICEBLUE)
m_ComboTrihedronColorList.SetCurSel(3);
else if(m_Color==Quantity_NOC_WHITE)
m_ComboTrihedronColorList.SetCurSel(4);
else if(m_Color==Quantity_NOC_BISQUE)
m_ComboTrihedronColorList.SetCurSel(5);
Position = m_Position;
Color = m_Color;
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
myCurrent_V3d_View->Update();
Initialisation = Standard_False;
}
else
{*/
if(Position==Aspect_TOTP_CENTER)
m_ComboTrihedronPosList.SetCurSel(0);
else if(Position==Aspect_TOTP_LEFT_LOWER)
m_ComboTrihedronPosList.SetCurSel(1);
else if(Position==Aspect_TOTP_LEFT_UPPER)
m_ComboTrihedronPosList.SetCurSel(2);
else if(Position==Aspect_TOTP_RIGHT_LOWER)
m_ComboTrihedronPosList.SetCurSel(3);
else if(Position==Aspect_TOTP_RIGHT_UPPER)
m_ComboTrihedronPosList.SetCurSel(4);
if(Color==Quantity_NOC_BLACK)
m_ComboTrihedronColorList.SetCurSel(0);
else if(Color==Quantity_NOC_MATRABLUE)
m_ComboTrihedronColorList.SetCurSel(1);
else if(Color==Quantity_NOC_MATRAGRAY)
m_ComboTrihedronColorList.SetCurSel(2);
// else if(Color==Quantity_NOC_ALICEBLUE)
// m_ComboTrihedronColorList.SetCurSel(3);
else if(Color==Quantity_NOC_WHITE)
m_ComboTrihedronColorList.SetCurSel(3);
//else if(Color==Quantity_NOC_BISQUE)
// m_ComboTrihedronColorList.SetCurSel(4);
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
myCurrent_V3d_View->Update();
// }
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTrihedronDlg::OnDeltaposSpintrihedrscale(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
if (pNMUpDown->iDelta >= 1)
pNMUpDown->iDelta = 1;
else
pNMUpDown->iDelta = -1;
if ((pNMUpDown->iDelta > 0) && (m_TrihedronScale > 0))
m_TrihedronScale = m_TrihedronScale - (pNMUpDown->iDelta)*0.01;
if ((pNMUpDown->iDelta < 0) && (m_TrihedronScale < 1))
m_TrihedronScale = m_TrihedronScale - (pNMUpDown->iDelta)*0.01;
m_TrihedronScale = m_TrihedronScale*100;
m_TrihedronScale = floor(m_TrihedronScale );
m_TrihedronScale = m_TrihedronScale /100;
// round(m_TrihedronScale,2);
if (fabs(m_TrihedronScale) < 0.001)
m_TrihedronScale =0;
UpdateData(FALSE);
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
*pResult = 0;
myCurrent_V3d_View->Update();
}
void CTrihedronDlg::OnChangeEdittrihedrscale()
{
if (UpdateData()){
myCurrent_V3d_View->TriedronDisplay(Position, Color, m_TrihedronScale);
myCurrent_V3d_View->Update();
}
}
void CTrihedronDlg::OnCancel()
{
myCurrent_V3d_View->TriedronErase();
myCurrent_V3d_View->Update();
myDoc -> SetMyStaticTrihedronAxisIsDisplayed(FALSE);
// Initialisation = Standard_True;
CDialog::OnCancel();
}
void CTrihedronDlg::OnOK()
{
myDoc -> SetMyStaticTrihedronAxisIsDisplayed(TRUE);
CDialog::OnOK();
}