1 // DlgAttributes.cpp : implementation file
6 #include "DlgAttributes.h"
8 #include "AISDisplayModeApp.h"
10 #include <AISDialogs.h>
11 #include <OCC_3dView.h>
13 #include <Graphic3d_MaterialAspect.hxx>
18 static char THIS_FILE[] = __FILE__;
21 /////////////////////////////////////////////////////////////////////////////
22 // DlgAttributes dialog
25 DlgAttributes::DlgAttributes(CWnd* pParent)
26 : CDialog(DlgAttributes::IDD, pParent)
28 //{{AFX_DATA_INIT(DlgAttributes)
29 // NOTE: the ClassWizard will add member initialization here
34 void DlgAttributes::DoDataExchange(CDataExchange* pDX)
36 CDialog::DoDataExchange(pDX);
37 //{{AFX_DATA_MAP(DlgAttributes)
38 // NOTE: the ClassWizard will add DDX and DDV calls here
43 BEGIN_MESSAGE_MAP(DlgAttributes, CDialog)
44 //{{AFX_MSG_MAP(DlgAttributes)
45 ON_BN_CLICKED(ID_OBJECT_MATERIAL_ALUMINIUM, OnObjectMaterialAluminium)
46 ON_BN_CLICKED(ID_OBJECT_MATERIAL_BRASS, OnObjectMaterialBrass)
47 ON_BN_CLICKED(ID_OBJECT_MATERIAL_BRONZE, OnObjectMaterialBronze)
48 ON_BN_CLICKED(ID_OBJECT_MATERIAL_CHROME, OnObjectMaterialChrome)
49 ON_BN_CLICKED(ID_OBJECT_MATERIAL_COPPER, OnObjectMaterialCopper)
50 ON_BN_CLICKED(ID_OBJECT_MATERIAL_GOLD, OnObjectMaterialGold)
51 ON_BN_CLICKED(ID_OBJECT_MATERIAL_JADE, OnObjectMaterialJade)
52 ON_BN_CLICKED(ID_OBJECT_MATERIAL_METALIZED, OnObjectMaterialMetalized)
53 ON_BN_CLICKED(ID_OBJECT_MATERIAL_NEON_GNC, OnObjectMaterialNeonGNC)
54 ON_BN_CLICKED(ID_OBJECT_MATERIAL_NEON_PHC, OnObjectMaterialNeonPHC)
55 ON_BN_CLICKED(ID_OBJECT_MATERIAL_OBSIDIAN, OnObjectMaterialObsidian)
56 ON_BN_CLICKED(ID_OBJECT_MATERIAL_PEWTER, OnObjectMaterialPewter)
57 ON_BN_CLICKED(ID_OBJECT_MATERIAL_PLASTER, OnObjectMaterialPlaster)
58 ON_BN_CLICKED(ID_OBJECT_MATERIAL_PLASTIC, OnObjectMaterialPlastic)
59 ON_BN_CLICKED(ID_OBJECT_MATERIAL_SATIN, OnObjectMaterialSatin)
60 ON_BN_CLICKED(ID_OBJECT_MATERIAL_SHINY_PLASTIC, OnObjectMaterialShinyPlastic)
61 ON_BN_CLICKED(ID_OBJECT_MATERIAL_SILVER, OnObjectMaterialSilver)
62 ON_BN_CLICKED(ID_OBJECT_MATERIAL_STEEL, OnObjectMaterialSteel)
63 ON_BN_CLICKED(ID_OBJECT_MATERIAL_STONE, OnObjectMaterialStone)
64 ON_BN_CLICKED(ID_OBJECT_MATERIAL_DEFAULT, OnObjectMaterialDefault)
65 ON_BN_CLICKED(ID_OBJECT_COLOR, OnColor)
66 ON_BN_CLICKED(ID_OBJECT_SHADING, OnShading)
67 ON_BN_CLICKED(ID_OBJECT_WIREFRAME, OnWireframe)
68 ON_COMMAND(ID_OBJECT_TRANSPARENCY, OnTransparency)
69 ON_UPDATE_COMMAND_UI(ID_OBJECT_TRANSPARENCY, OnUpdateObjectTransparency)
73 /////////////////////////////////////////////////////////////////////////////
74 // DlgAttributes message handlers
77 void DlgAttributes::OnColor()
79 Handle_AIS_InteractiveObject Current ;
80 Quantity_Color CSFColor ;
83 myAISContext->InitCurrent();
84 if (myAISContext->MoreCurrent()) {
85 Current = myAISContext->Current() ;
86 if ( Current->HasColor () ) {
87 CSFColor = Current->Color () ;
88 MSColor = RGB (CSFColor.Red()*255.,
89 CSFColor.Green()*255.,
90 CSFColor.Blue()*255.);
93 MSColor = RGB (255,255,255) ;
96 CColorDialog dlgColor(MSColor);
97 if (dlgColor.DoModal() == IDOK) {
98 MSColor = dlgColor.GetColor();
99 CSFColor = Quantity_Color (GetRValue(MSColor)/255.,
100 GetGValue(MSColor)/255.,
101 GetBValue(MSColor)/255.,Quantity_TOC_RGB);
102 for (myAISContext->InitCurrent();
103 myAISContext->MoreCurrent ();
104 myAISContext->NextCurrent ())
105 myAISContext->SetColor (myAISContext->Current(),
110 TCollection_AsciiString Message ("\
112 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent (); \n\
113 myAISContext->NextCurrent ()) \n\
114 myAISContext->SetColor (myAISContext->Current(), CSFColor.Name()); \n\
117 CString text(Message.ToCString());
118 (*myCResultDialog).SetTitle(CString("Setting Color"));
119 (*myCResultDialog).SetText(text);
123 void DlgAttributes::OnWireframe()
125 for(myAISContext->InitCurrent(); myAISContext->MoreCurrent();
126 myAISContext->NextCurrent())
127 myAISContext->SetDisplayMode(myAISContext->Current(), 0);
129 TCollection_AsciiString Message ("\
131 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent (); \n\
132 myAISContext->NextCurrent ()) \n\
133 myAISContext->SetDisplayMode(myAISContext->Current(), 0); \n\
136 CString text(Message.ToCString());
137 (*myCResultDialog).SetTitle(CString("Wireframe"));
138 (*myCResultDialog).SetText(text);
141 void DlgAttributes::Set(Handle ( AIS_InteractiveContext ) & acontext, CResultDialog& aResultDialog)
143 myAISContext = acontext;
144 myCResultDialog=&aResultDialog;
147 void DlgAttributes::OnTransparency()
150 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent ();
151 myAISContext->NextCurrent ()) {
154 int ival = (int) ((double) myAISContext->Current()->Transparency()*10.) ;
155 double rval = ((double) ival)/10.;
156 CDialogTransparency Dlg(NULL, rval);
157 if(Dlg.DoModal()== IDOK)
158 myAISContext->SetTransparency (myAISContext->Current(),Dlg.m_transvalue);
163 CDialogTransparency DialBox(myAISContext);
165 CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
166 CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
167 OCC_3dView *pView = (OCC_3dView *) pChild->GetActiveView();
170 myAISContext->InitCurrent();
171 if(myAISContext->NbCurrents() > 0){
172 CDialogTransparency DialBox(myAISContext, AfxGetMainWnd());
174 CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
175 CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
176 OCC_3dView *pView = (OCC_3dView *) pChild->GetActiveView();
180 TCollection_AsciiString Message ("\
182 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent (); \n\
183 myAISContext->NextCurrent ()) \n\
184 myAISContext->SetTransparency (myAISContext->Current(),Dlg.m_transvalue); \n\
187 CString text(Message.ToCString());
188 (*myCResultDialog).SetTitle(CString("Setting Transparency"));
189 (*myCResultDialog).SetText(text);
194 void DlgAttributes::OnObjectMaterialAluminium () { SetMaterial ( Graphic3d_NOM_ALUMINIUM ) ; }
195 void DlgAttributes::OnObjectMaterialBrass () { SetMaterial ( Graphic3d_NOM_BRASS ) ; }
196 void DlgAttributes::OnObjectMaterialBronze () { SetMaterial ( Graphic3d_NOM_BRONZE ) ; }
197 void DlgAttributes::OnObjectMaterialChrome () { SetMaterial ( Graphic3d_NOM_CHROME ) ; }
198 void DlgAttributes::OnObjectMaterialCopper () { SetMaterial ( Graphic3d_NOM_COPPER ) ; }
199 void DlgAttributes::OnObjectMaterialGold () { SetMaterial ( Graphic3d_NOM_GOLD ) ; }
200 void DlgAttributes::OnObjectMaterialJade () { SetMaterial ( Graphic3d_NOM_JADE ) ; }
201 void DlgAttributes::OnObjectMaterialMetalized () { SetMaterial ( Graphic3d_NOM_METALIZED ) ; }
202 void DlgAttributes::OnObjectMaterialNeonGNC () { SetMaterial ( Graphic3d_NOM_NEON_GNC ) ; }
203 void DlgAttributes::OnObjectMaterialNeonPHC () { SetMaterial ( Graphic3d_NOM_NEON_PHC ) ; }
204 void DlgAttributes::OnObjectMaterialObsidian () { SetMaterial ( Graphic3d_NOM_OBSIDIAN ) ; }
205 void DlgAttributes::OnObjectMaterialPewter () { SetMaterial ( Graphic3d_NOM_PEWTER ) ; }
206 void DlgAttributes::OnObjectMaterialPlaster () { SetMaterial ( Graphic3d_NOM_PLASTER ) ; }
207 void DlgAttributes::OnObjectMaterialPlastic () { SetMaterial ( Graphic3d_NOM_PLASTIC ) ; }
208 void DlgAttributes::OnObjectMaterialSatin () { SetMaterial ( Graphic3d_NOM_SATIN ) ; }
209 void DlgAttributes::OnObjectMaterialShinyPlastic () { SetMaterial ( Graphic3d_NOM_SHINY_PLASTIC ) ; }
210 void DlgAttributes::OnObjectMaterialSilver () { SetMaterial ( Graphic3d_NOM_SILVER ) ; }
211 void DlgAttributes::OnObjectMaterialSteel () { SetMaterial ( Graphic3d_NOM_STEEL ) ; }
212 void DlgAttributes::OnObjectMaterialStone () { SetMaterial ( Graphic3d_NOM_STONE ) ; }
213 void DlgAttributes::OnObjectMaterialDefault () { SetMaterial ( Graphic3d_NOM_DEFAULT ) ; }
215 void DlgAttributes::SetMaterial(Graphic3d_NameOfMaterial Material)
217 for (myAISContext->InitCurrent();myAISContext->MoreCurrent ();myAISContext->NextCurrent ())
218 myAISContext->SetMaterial (myAISContext->Current(),
219 (Graphic3d_NameOfMaterial)(Material));
221 TCollection_AsciiString aString;
222 TCollection_AsciiString Message1 ("\
224 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent (); \n\
225 myAISContext->NextCurrent ()) \n\
226 myAISContext->SetMaterial (myAISContext->Current(), ");
228 TCollection_AsciiString Message2("); \n\
232 aString = "Graphic3d_NOM_BRASS";
235 aString = "Graphic3d_NOM_BRONZE";
238 aString = "Graphic3d_NOM_COPPER";
241 aString = "Graphic3d_NOM_GOLD";
244 aString = "Graphic3d_NOM_PEWTER";
247 aString = "Graphic3d_NOM_PLASTER";
250 aString = "Graphic3d_NOM_PLASTIC";
253 aString = "Graphic3d_NOM_SILVER";
256 aString = "Graphic3d_NOM_STEEL";
259 aString = "Graphic3d_NOM_STONE";
262 aString = "Graphic3d_NOM_SHINY_PLASTIC";
265 aString = "Graphic3d_NOM_SATIN";
268 aString = "Graphic3d_NOM_METALIZED";
271 aString = "Graphic3d_NOM_NEON_GNC";
274 aString = "Graphic3d_NOM_CHROME";
277 aString = "Graphic3d_NOM_ALUMINIUM";
280 aString = "Graphic3d_NOM_OBSIDIAN";
283 aString = "Graphic3d_NOM_NEON_PHC";
286 aString = "Graphic3d_NOM_JADE";
289 aString = "Graphic3d_NOM_DEFAULT";
295 Message1 = Message1 +aString +Message2;
296 //Graphic3d_MaterialAspect aAspect (Material);
297 //Standard_CString aString = aAspect.MaterialName();
299 CString text(Message1.ToCString());
300 (*myCResultDialog).SetTitle(CString("Setting Material"));
301 (*myCResultDialog).SetText(text);
305 void DlgAttributes::OnUpdateObjectTransparency(CCmdUI* pCmdUI)
307 bool OneOrMoreInShading = false;
308 for (myAISContext->InitCurrent();myAISContext->MoreCurrent ();myAISContext->NextCurrent ())
309 if (myAISContext->IsDisplayed(myAISContext->Current(),1)) OneOrMoreInShading=true;
310 pCmdUI->Enable (OneOrMoreInShading);
315 void DlgAttributes::OnShading()
317 for(myAISContext->InitCurrent(); myAISContext->MoreCurrent();
318 myAISContext->NextCurrent())
319 myAISContext->SetDisplayMode(myAISContext->Current(), 1);
322 TCollection_AsciiString Message ("\
324 for (myAISContext->InitCurrent(); myAISContext->MoreCurrent (); \n\
325 myAISContext->NextCurrent ()) \n\
326 myAISContext->SetDisplayMode(myAISContext->Current(), 1); \n\
329 CString text(Message.ToCString());
330 (*myCResultDialog).SetTitle(CString("Shading"));
331 (*myCResultDialog).SetText(text);