Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // >> 27 // $Id: G4OpenInventorXtViewer.cc,v 1.24 2006/06/29 21:22:26 gunter Exp $ >> 28 // GEANT4 tag $Name: geant4-09-01-patch-03 $ 27 // 29 // 28 /* 30 /* 29 * jck 05 Feb 1997 - Initial Implementation 31 * jck 05 Feb 1997 - Initial Implementation 30 * jck 21 Apr 1997 32 * jck 21 Apr 1997 31 * Mods for SoXtHepViewer 33 * Mods for SoXtHepViewer 32 * gb : on Win32 use an SoXtExaminerViewer. 34 * gb : on Win32 use an SoXtExaminerViewer. 33 * gb 05 April 2004 : revisit to separate Wind 35 * gb 05 April 2004 : revisit to separate Windows things. 34 * gb 09 November 2004 : restore the escape bu 36 * gb 09 November 2004 : restore the escape button. 35 * gb 09 November 2004 : have a menu bar in th 37 * gb 09 November 2004 : have a menu bar in the viewer shell. 36 * gb 09 November 2004 : have gl2ps file produ 38 * gb 09 November 2004 : have gl2ps file production. 37 * gb 14 November 2004 : inherit G4OpenInvento 39 * gb 14 November 2004 : inherit G4OpenInventorViewer. 38 */ 40 */ 39 41 >> 42 #ifdef G4VIS_BUILD_OIX_DRIVER >> 43 40 // this : 44 // this : 41 #include "G4OpenInventorXtViewer.hh" 45 #include "G4OpenInventorXtViewer.hh" 42 46 43 #include <Inventor/nodes/SoSelection.h> 47 #include <Inventor/nodes/SoSelection.h> 44 48 45 #include <Inventor/Xt/SoXt.h> 49 #include <Inventor/Xt/SoXt.h> 46 #include <Inventor/Xt/viewers/SoXtExaminerView 50 #include <Inventor/Xt/viewers/SoXtExaminerViewer.h> 47 51 48 #include <X11/StringDefs.h> 52 #include <X11/StringDefs.h> 49 #include <X11/Shell.h> 53 #include <X11/Shell.h> 50 54 51 #include <Xm/Xm.h> 55 #include <Xm/Xm.h> 52 #include <Xm/PushB.h> 56 #include <Xm/PushB.h> 53 #include <Xm/Form.h> 57 #include <Xm/Form.h> 54 #include <Xm/CascadeB.h> 58 #include <Xm/CascadeB.h> 55 #include <Xm/RowColumn.h> 59 #include <Xm/RowColumn.h> 56 #include <Xm/Text.h> 60 #include <Xm/Text.h> 57 61 58 #include "HEPVis/actions/SoGL2PSAction.h" 62 #include "HEPVis/actions/SoGL2PSAction.h" 59 63 60 #include "G4OpenInventor.hh" 64 #include "G4OpenInventor.hh" 61 #include "G4OpenInventorSceneHandler.hh" 65 #include "G4OpenInventorSceneHandler.hh" 62 #include "G4VInteractorManager.hh" 66 #include "G4VInteractorManager.hh" 63 #include "G4VisManager.hh" << 64 67 65 G4OpenInventorXtViewer::G4OpenInventorXtViewer 68 G4OpenInventorXtViewer::G4OpenInventorXtViewer( 66 G4OpenInventorSceneHandler& sceneHandler 69 G4OpenInventorSceneHandler& sceneHandler 67 ,const G4String& name) 70 ,const G4String& name) 68 :G4OpenInventorViewer (sceneHandler, name) 71 :G4OpenInventorViewer (sceneHandler, name) 69 ,fShell(0) 72 ,fShell(0) 70 ,fViewer(0) 73 ,fViewer(0) 71 ,fHelpForm(0) 74 ,fHelpForm(0) 72 ,fHelpText(0) 75 ,fHelpText(0) 73 { 76 { 74 if (G4VisManager::GetVerbosity() >= G4VisMan << 77 G4cout << "Window name: " << fName << G4endl; 75 G4cout << "Window name: " << fName << G4en << 76 } << 77 << 78 78 79 void G4OpenInventorXtViewer::Initialise() { << 80 << 81 G4String wName = fName; 79 G4String wName = fName; 82 << 83 Widget parent = (Widget)fInteractorManager-> << 84 int width = 600; << 85 int height = 600; << 86 80 >> 81 #define SIZE 600 >> 82 Widget parent = (Widget)fInteractorManager->GetParentInteractor (); 87 if(!parent) { 83 if(!parent) { 88 // Check if user has specified an X-Window 84 // Check if user has specified an X-Windows-type geometry string... 89 char str[32]; << 85 char s[32]; 90 << 86 sprintf(s,"%dx%d",SIZE,SIZE); 91 G4String sgeometry = fVP.GetXGeometryStrin 87 G4String sgeometry = fVP.GetXGeometryString(); 92 if(sgeometry.empty()) { << 88 if(sgeometry.empty()) sgeometry = s; 93 G4cout << "ERROR: Geometry string \"" << 94 << sgeometry << 95 << "\" is empty. Using \"600x600 << 96 << G4endl; << 97 width = 600; << 98 height = 600; << 99 snprintf(str,sizeof str,"%dx%d",width,he << 100 sgeometry = str; << 101 } else { << 102 width = fVP.GetWindowSizeHintX(); << 103 height = fVP.GetWindowSizeHintX(); << 104 } << 105 89 106 //Create a shell window : 90 //Create a shell window : 107 G4String shellName = wName; 91 G4String shellName = wName; 108 shellName += "_shell"; 92 shellName += "_shell"; 109 Arg args[10]; 93 Arg args[10]; 110 XtSetArg(args[0],XtNgeometry,XtNewString(s 94 XtSetArg(args[0],XtNgeometry,XtNewString(sgeometry.c_str())); 111 XtSetArg(args[1],XtNborderWidth,0); 95 XtSetArg(args[1],XtNborderWidth,0); 112 XtSetArg(args[2],XtNtitle,XtNewString(wNam 96 XtSetArg(args[2],XtNtitle,XtNewString(wName.c_str())); 113 fShell = XtAppCreateShell(shellName.c_str( 97 fShell = XtAppCreateShell(shellName.c_str(),"Inventor", 114 topLevelShellWidgetClass, 98 topLevelShellWidgetClass, 115 SoXt::getDisplay(), 99 SoXt::getDisplay(), 116 args,3); 100 args,3); 117 101 118 XtSetArg(args[0],XmNtopAttachment ,XmATT 102 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_FORM); 119 XtSetArg(args[1],XmNleftAttachment ,XmATT 103 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM); 120 XtSetArg(args[2],XmNrightAttachment ,XmATT 104 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM); 121 XtSetArg(args[3],XmNbottomAttachment,XmATT 105 XtSetArg(args[3],XmNbottomAttachment,XmATTACH_FORM); 122 Widget form = XmCreateForm (fShell,(char*) 106 Widget form = XmCreateForm (fShell,(char*)"form",args,4); 123 XtManageChild (form); 107 XtManageChild (form); 124 108 125 XtSetArg(args[0],XmNtopAttachment ,XmATT 109 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_FORM); 126 XtSetArg(args[1],XmNleftAttachment ,XmATT 110 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM); 127 XtSetArg(args[2],XmNrightAttachment ,XmATT 111 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM); 128 Widget menuBar = XmCreateMenuBar (form,(ch 112 Widget menuBar = XmCreateMenuBar (form,(char*)"menuBar",args,3); 129 XtManageChild(menuBar); 113 XtManageChild(menuBar); 130 114 131 {Widget menu = AddMenu(menuBar,"File","File 115 {Widget menu = AddMenu(menuBar,"File","File"); 132 AddButton(menu,"PS (gl2ps)",PostScriptCbk) 116 AddButton(menu,"PS (gl2ps)",PostScriptCbk); 133 AddButton(menu,"PS (pixmap)",PixmapPostScr 117 AddButton(menu,"PS (pixmap)",PixmapPostScriptCbk); 134 AddButton(menu,"IV",WriteInventorCbk); 118 AddButton(menu,"IV",WriteInventorCbk); 135 AddButton(menu,"Escape",EscapeCbk);} 119 AddButton(menu,"Escape",EscapeCbk);} 136 120 137 {Widget menu = AddMenu(menuBar,"Etc","Etc") 121 {Widget menu = AddMenu(menuBar,"Etc","Etc"); 138 AddButton(menu,"Erase detector",EraseDetec 122 AddButton(menu,"Erase detector",EraseDetectorCbk); 139 AddButton(menu,"Erase event",EraseEventCbk 123 AddButton(menu,"Erase event",EraseEventCbk); 140 AddButton(menu,"Set solid",SetSolidCbk); 124 AddButton(menu,"Set solid",SetSolidCbk); 141 /* AddButton(menu,"Set (G4) wire frame",Set 125 /* AddButton(menu,"Set (G4) wire frame",SetWireFrameCbk);*/ 142 AddButton(menu,"Set (G4) reduced wire fram 126 AddButton(menu,"Set (G4) reduced wire frame",SetReducedWireFrameCbk); 143 AddButton(menu,"Set (G4) full wire frame", 127 AddButton(menu,"Set (G4) full wire frame",SetFullWireFrameCbk); 144 AddButton(menu,"Visible mothers + invisibl 128 AddButton(menu,"Visible mothers + invisible daughters",SetPreviewCbk); 145 AddButton(menu,"Visible mothers + visible 129 AddButton(menu,"Visible mothers + visible daughters",SetPreviewAndFullCbk); 146 AddButton(menu,"Update scene",UpdateSceneC 130 AddButton(menu,"Update scene",UpdateSceneCbk); 147 AddButton(menu,"Scene graph stats",SceneGr 131 AddButton(menu,"Scene graph stats",SceneGraphStatisticsCbk); 148 } 132 } 149 133 150 {Widget menu = AddMenu(menuBar,"Help","Help 134 {Widget menu = AddMenu(menuBar,"Help","Help"); 151 AddButton(menu,"Controls",HelpCbk);} 135 AddButton(menu,"Controls",HelpCbk);} 152 136 153 fViewer = new SoXtExaminerViewer(form,wNam 137 fViewer = new SoXtExaminerViewer(form,wName.c_str(),TRUE); 154 138 155 XtSetArg(args[0],XmNtopAttachment ,XmATT 139 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_WIDGET); 156 XtSetArg(args[1],XmNtopWidget ,menuB 140 XtSetArg(args[1],XmNtopWidget ,menuBar); 157 XtSetArg(args[2],XmNleftAttachment ,XmATT 141 XtSetArg(args[2],XmNleftAttachment ,XmATTACH_FORM); 158 XtSetArg(args[3],XmNrightAttachment ,XmATT 142 XtSetArg(args[3],XmNrightAttachment ,XmATTACH_FORM); 159 XtSetArg(args[4],XmNbottomAttachment,XmATT 143 XtSetArg(args[4],XmNbottomAttachment,XmATTACH_FORM); 160 XtSetValues(fViewer->getWidget(),args,5); 144 XtSetValues(fViewer->getWidget(),args,5); 161 145 162 fHelpForm = XmCreateFormDialog(fShell,(cha 146 fHelpForm = XmCreateFormDialog(fShell,(char*)"help",NULL,0); 163 XtSetArg(args[0],XmNleftAttachment ,XmATT 147 XtSetArg(args[0],XmNleftAttachment ,XmATTACH_FORM); 164 XtSetArg(args[1],XmNrightAttachment ,XmATT 148 XtSetArg(args[1],XmNrightAttachment ,XmATTACH_FORM); 165 XtSetArg(args[2],XmNbottomAttachment,XmATT 149 XtSetArg(args[2],XmNbottomAttachment,XmATTACH_FORM); 166 Widget cancel = XmCreatePushButton(fHelpFo 150 Widget cancel = XmCreatePushButton(fHelpForm,(char*)"helpCancel",args,3); 167 XtAddCallback(cancel,XmNactivateCallback,H 151 XtAddCallback(cancel,XmNactivateCallback,HelpCancelCbk,(XtPointer)this); 168 XtManageChild(cancel); 152 XtManageChild(cancel); 169 XtSetArg(args[0],XmNtopAttachment ,XmATT 153 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_FORM); 170 XtSetArg(args[1],XmNleftAttachment ,XmATT 154 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM); 171 XtSetArg(args[2],XmNrightAttachment ,XmATT 155 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM); 172 XtSetArg(args[3],XmNbottomAttachment,XmATT 156 XtSetArg(args[3],XmNbottomAttachment,XmATTACH_WIDGET); 173 XtSetArg(args[4],XmNbottomWidget ,cance 157 XtSetArg(args[4],XmNbottomWidget ,cancel); 174 fHelpText = XmCreateScrolledText(fHelpForm 158 fHelpText = XmCreateScrolledText(fHelpForm,(char*)"helpText",args,5); 175 XtManageChild(fHelpText); 159 XtManageChild(fHelpText); 176 160 177 fInteractorManager->AddShell(fShell); 161 fInteractorManager->AddShell(fShell); 178 162 179 } else { 163 } else { 180 char* str = fInteractorManager->GetCreatio 164 char* str = fInteractorManager->GetCreationString(); 181 if(str!=0) wName = str; 165 if(str!=0) wName = str; 182 fViewer = new SoXtExaminerViewer(parent,wN 166 fViewer = new SoXtExaminerViewer(parent,wName.c_str(),TRUE); 183 } 167 } 184 168 185 fViewer->setSize(SbVec2s(width,height)); << 169 fViewer->setSize(SbVec2s(SIZE,SIZE)); 186 170 187 // Have a GL2PS render action : 171 // Have a GL2PS render action : 188 const SbViewportRegion& vpRegion = fViewer-> 172 const SbViewportRegion& vpRegion = fViewer->getViewportRegion(); 189 fGL2PSAction = new SoGL2PSAction(vpRegion); 173 fGL2PSAction = new SoGL2PSAction(vpRegion); 190 fViewer->setGLRenderAction(fGL2PSAction); 174 fViewer->setGLRenderAction(fGL2PSAction); 191 175 192 // Else : 176 // Else : 193 fViewer->setSceneGraph(fSoSelection); 177 fViewer->setSceneGraph(fSoSelection); 194 fViewer->viewAll(); 178 fViewer->viewAll(); 195 fViewer->saveHomePosition(); 179 fViewer->saveHomePosition(); 196 fViewer->setTitle(fName); 180 fViewer->setTitle(fName); 197 fViewer->show(); 181 fViewer->show(); 198 if(fShell) { 182 if(fShell) { 199 SoXt::show(fShell); 183 SoXt::show(fShell); 200 fInteractorManager->FlushAndWaitExecution 184 fInteractorManager->FlushAndWaitExecution (); 201 } 185 } 202 fInteractorManager->SetCreatedInteractor (fV 186 fInteractorManager->SetCreatedInteractor (fViewer -> getWidget()); 203 fViewer->setTransparencyType(SoGLRenderActio << 204 } 187 } 205 188 206 G4OpenInventorXtViewer::~G4OpenInventorXtViewe 189 G4OpenInventorXtViewer::~G4OpenInventorXtViewer () { 207 if(fShell) fInteractorManager->RemoveShell(f 190 if(fShell) fInteractorManager->RemoveShell(fShell); 208 if(fViewer) { 191 if(fViewer) { 209 fViewer->setSceneGraph(0); 192 fViewer->setSceneGraph(0); 210 //FIXME : SGI : the below "delete" block t 193 //FIXME : SGI : the below "delete" block things. 211 //FIXME : CoinXt : the below "delete" cras 194 //FIXME : CoinXt : the below "delete" crashe in ~SoXtRenderArea. 212 //FIXME : delete fViewer; 195 //FIXME : delete fViewer; 213 } 196 } 214 if(fShell) XtDestroyWidget(fShell); 197 if(fShell) XtDestroyWidget(fShell); 215 } 198 } 216 199 217 void G4OpenInventorXtViewer::FinishView () { 200 void G4OpenInventorXtViewer::FinishView () { 218 if(!fViewer) return; 201 if(!fViewer) return; 219 fViewer->viewAll(); 202 fViewer->viewAll(); 220 fViewer->saveHomePosition(); 203 fViewer->saveHomePosition(); 221 } 204 } 222 205 223 void G4OpenInventorXtViewer::SetView () { 206 void G4OpenInventorXtViewer::SetView () { 224 G4OpenInventorViewer::SetView (); 207 G4OpenInventorViewer::SetView (); 225 if(!fViewer) return; 208 if(!fViewer) return; 226 // Background. 209 // Background. 227 G4Colour b = fVP.GetBackgroundColour (); 210 G4Colour b = fVP.GetBackgroundColour (); 228 fViewer->setBackgroundColor 211 fViewer->setBackgroundColor 229 (SbColor((float)b.GetRed(),(float)b.GetGre 212 (SbColor((float)b.GetRed(),(float)b.GetGreen(),(float)b.GetBlue())); 230 } 213 } 231 214 232 215 233 void G4OpenInventorXtViewer::ViewerRender () { 216 void G4OpenInventorXtViewer::ViewerRender () { 234 if(!fViewer) return; 217 if(!fViewer) return; 235 fViewer->render(); 218 fViewer->render(); 236 } 219 } 237 220 238 SoCamera* G4OpenInventorXtViewer::GetCamera () 221 SoCamera* G4OpenInventorXtViewer::GetCamera () { 239 if(!fViewer) return 0; 222 if(!fViewer) return 0; 240 return fViewer->getCamera(); 223 return fViewer->getCamera(); 241 } 224 } 242 225 243 Widget G4OpenInventorXtViewer::AddMenu( 226 Widget G4OpenInventorXtViewer::AddMenu( 244 Widget aMenuBar 227 Widget aMenuBar 245 ,const G4String& aName 228 ,const G4String& aName 246 ,const G4String& aLabel 229 ,const G4String& aLabel 247 ) 230 ) 248 { 231 { 249 // Pulldown menu : 232 // Pulldown menu : 250 Widget menu = XmCreatePulldownMenu(aMenuBar, 233 Widget menu = XmCreatePulldownMenu(aMenuBar,(char*)aName.c_str(),NULL,0); 251 // Cascade button : 234 // Cascade button : 252 Arg args[2]; 235 Arg args[2]; 253 XmString cps = 236 XmString cps = 254 XmStringLtoRCreate((char*)aLabel.c_str(),( << 237 XmStringLtoRCreate((char*)aLabel.c_str(),XmSTRING_DEFAULT_CHARSET); 255 XtSetArg (args[0],XmNlabelString,cps); 238 XtSetArg (args[0],XmNlabelString,cps); 256 XtSetArg (args[1],XmNsubMenuId,menu); 239 XtSetArg (args[1],XmNsubMenuId,menu); 257 Widget widget = XmCreateCascadeButton(aMenuB 240 Widget widget = XmCreateCascadeButton(aMenuBar,(char*)aName.c_str(),args,2); 258 XmStringFree (cps); 241 XmStringFree (cps); 259 XtManageChild(widget); 242 XtManageChild(widget); 260 return menu; 243 return menu; 261 } 244 } 262 void G4OpenInventorXtViewer::AddButton ( 245 void G4OpenInventorXtViewer::AddButton ( 263 Widget aMenu 246 Widget aMenu 264 ,const G4String& aLabel 247 ,const G4String& aLabel 265 ,XtCallbackProc aCallback 248 ,XtCallbackProc aCallback 266 ) 249 ) 267 { 250 { 268 Widget widget = XmCreatePushButton(aMenu,(ch 251 Widget widget = XmCreatePushButton(aMenu,(char*)aLabel.c_str(),NULL,0); 269 XtManageChild(widget); 252 XtManageChild(widget); 270 XtAddCallback(widget,XmNactivateCallback,aCa 253 XtAddCallback(widget,XmNactivateCallback,aCallback,(XtPointer)this); 271 } 254 } 272 255 273 void G4OpenInventorXtViewer::HelpCancelCbk( 256 void G4OpenInventorXtViewer::HelpCancelCbk( 274 Widget,XtPointer aData,XtPointer) { 257 Widget,XtPointer aData,XtPointer) { 275 G4OpenInventorXtViewer* This = (G4OpenInvent 258 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 276 XtUnmanageChild(This->fHelpForm); 259 XtUnmanageChild(This->fHelpForm); 277 } 260 } 278 261 279 262 280 ////////////////////////////////////////////// 263 ////////////////////////////////////////////////////////////////////////////// 281 ////////////////////////////////////////////// 264 ////////////////////////////////////////////////////////////////////////////// 282 ////////////////////////////////////////////// 265 ////////////////////////////////////////////////////////////////////////////// 283 266 284 void G4OpenInventorXtViewer::EscapeCbk( 267 void G4OpenInventorXtViewer::EscapeCbk( 285 Widget,XtPointer aData,XtPointer) { 268 Widget,XtPointer aData,XtPointer) { 286 G4OpenInventorXtViewer* This = (G4OpenInvent 269 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 287 This->Escape(); 270 This->Escape(); 288 } 271 } 289 272 290 void G4OpenInventorXtViewer::PostScriptCbk( 273 void G4OpenInventorXtViewer::PostScriptCbk( 291 Widget,XtPointer aData,XtPointer) { 274 Widget,XtPointer aData,XtPointer) { 292 G4OpenInventorXtViewer* This = (G4OpenInvent 275 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 293 This->WritePostScript(); 276 This->WritePostScript(); 294 } 277 } 295 278 296 void G4OpenInventorXtViewer::PixmapPostScriptC 279 void G4OpenInventorXtViewer::PixmapPostScriptCbk( 297 Widget,XtPointer aData,XtPointer) { 280 Widget,XtPointer aData,XtPointer) { 298 G4OpenInventorXtViewer* This = (G4OpenInvent 281 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 299 This->WritePixmapPostScript(); 282 This->WritePixmapPostScript(); 300 } 283 } 301 284 302 void G4OpenInventorXtViewer::SceneGraphStatist 285 void G4OpenInventorXtViewer::SceneGraphStatisticsCbk( 303 Widget,XtPointer aData,XtPointer) { 286 Widget,XtPointer aData,XtPointer) { 304 G4OpenInventorXtViewer* This = (G4OpenInvent 287 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 305 This->SceneGraphStatistics(); 288 This->SceneGraphStatistics(); 306 } 289 } 307 290 308 void G4OpenInventorXtViewer::WriteInventorCbk( 291 void G4OpenInventorXtViewer::WriteInventorCbk( 309 Widget,XtPointer aData,XtPointer) { 292 Widget,XtPointer aData,XtPointer) { 310 G4OpenInventorXtViewer* This = (G4OpenInvent 293 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 311 This->WriteInventor(); 294 This->WriteInventor(); 312 } 295 } 313 296 314 void G4OpenInventorXtViewer::EraseDetectorCbk( 297 void G4OpenInventorXtViewer::EraseDetectorCbk( 315 Widget,XtPointer aData,XtPointer) { 298 Widget,XtPointer aData,XtPointer) { 316 G4OpenInventorXtViewer* This = (G4OpenInvent 299 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 317 This->EraseDetector(); 300 This->EraseDetector(); 318 } 301 } 319 302 320 void G4OpenInventorXtViewer::EraseEventCbk( 303 void G4OpenInventorXtViewer::EraseEventCbk( 321 Widget,XtPointer aData,XtPointer) { 304 Widget,XtPointer aData,XtPointer) { 322 G4OpenInventorXtViewer* This = (G4OpenInvent 305 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 323 This->EraseEvent(); 306 This->EraseEvent(); 324 } 307 } 325 308 326 void G4OpenInventorXtViewer::SetSolidCbk( 309 void G4OpenInventorXtViewer::SetSolidCbk( 327 Widget,XtPointer aData,XtPointer) { 310 Widget,XtPointer aData,XtPointer) { 328 G4OpenInventorXtViewer* This = (G4OpenInvent 311 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 329 This->SetSolid(); 312 This->SetSolid(); 330 } 313 } 331 314 332 void G4OpenInventorXtViewer::SetWireFrameCbk( 315 void G4OpenInventorXtViewer::SetWireFrameCbk( 333 Widget,XtPointer aData,XtPointer) { 316 Widget,XtPointer aData,XtPointer) { 334 G4OpenInventorXtViewer* This = (G4OpenInvent 317 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 335 This->SetWireFrame(); 318 This->SetWireFrame(); 336 } 319 } 337 320 338 void G4OpenInventorXtViewer::SetReducedWireFra 321 void G4OpenInventorXtViewer::SetReducedWireFrameCbk( 339 Widget,XtPointer aData,XtPointer) { 322 Widget,XtPointer aData,XtPointer) { 340 G4OpenInventorXtViewer* This = (G4OpenInvent 323 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 341 This->SetReducedWireFrame(true); 324 This->SetReducedWireFrame(true); 342 } 325 } 343 326 344 void G4OpenInventorXtViewer::SetFullWireFrameC 327 void G4OpenInventorXtViewer::SetFullWireFrameCbk( 345 Widget,XtPointer aData,XtPointer) { 328 Widget,XtPointer aData,XtPointer) { 346 G4OpenInventorXtViewer* This = (G4OpenInvent 329 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 347 This->SetReducedWireFrame(false); 330 This->SetReducedWireFrame(false); 348 } 331 } 349 332 350 void G4OpenInventorXtViewer::UpdateSceneCbk( 333 void G4OpenInventorXtViewer::UpdateSceneCbk( 351 Widget,XtPointer aData,XtPointer) { 334 Widget,XtPointer aData,XtPointer) { 352 G4OpenInventorXtViewer* This = (G4OpenInvent 335 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 353 This->UpdateScene(); 336 This->UpdateScene(); 354 } 337 } 355 338 356 void G4OpenInventorXtViewer::SetPreviewCbk( 339 void G4OpenInventorXtViewer::SetPreviewCbk( 357 Widget,XtPointer aData,XtPointer) { 340 Widget,XtPointer aData,XtPointer) { 358 G4OpenInventorXtViewer* This = (G4OpenInvent 341 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 359 This->SetPreview(); 342 This->SetPreview(); 360 } 343 } 361 344 362 void G4OpenInventorXtViewer::SetPreviewAndFull 345 void G4OpenInventorXtViewer::SetPreviewAndFullCbk( 363 Widget,XtPointer aData,XtPointer) { 346 Widget,XtPointer aData,XtPointer) { 364 G4OpenInventorXtViewer* This = (G4OpenInvent 347 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 365 This->SetPreviewAndFull(); 348 This->SetPreviewAndFull(); 366 } 349 } 367 350 368 void G4OpenInventorXtViewer::HelpCbk( 351 void G4OpenInventorXtViewer::HelpCbk( 369 Widget,XtPointer aData,XtPointer) { 352 Widget,XtPointer aData,XtPointer) { 370 G4OpenInventorXtViewer* This = (G4OpenInvent 353 G4OpenInventorXtViewer* This = (G4OpenInventorXtViewer*)aData; 371 XtManageChild(This->fHelpForm); 354 XtManageChild(This->fHelpForm); 372 XmTextSetString(This->fHelpText,(char*)This- 355 XmTextSetString(This->fHelpText,(char*)This->Help().c_str()); 373 } 356 } >> 357 >> 358 >> 359 #endif >> 360 >> 361 374 362