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