Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Guy Barrand 12th March 2021 27 28 #include "G4ToolsSGXtGLES.hh" 29 30 #include "G4ToolsSGViewer.hh" 31 #include <toolx/Xt/sg_viewer> 32 33 #include "G4Xt.hh" 34 35 class session : public toolx::Xt::session { 36 using parent = toolx::Xt::session; 37 public: 38 session(std::ostream& a_out) 39 :parent(a_out) 40 { 41 m_app_widget = (Widget)G4Xt::getInstance() 42 m_app_context = ::XtWidgetToApplicationCon 43 m_app_owner = false; 44 } 45 virtual ~session() {} 46 protected: 47 session(const session& a_from):parent(a_from 48 session& operator=(const session& a_from){pa 49 }; 50 51 G4ToolsSGXtGLES::G4ToolsSGXtGLES(): 52 parent 53 ("TOOLSSG_XT_GLES", 54 "TSG_XT_GLES", 55 "TOOLSSG_XT_GLES is a graphics driver based o 56 the rendering is done with GLES and the windo 57 parent::threeDInteractive) 58 ,fSGSession(nullptr) 59 {} 60 61 G4ToolsSGXtGLES::~G4ToolsSGXtGLES() { 62 delete fSGSession; 63 } 64 65 void G4ToolsSGXtGLES::Initialise() { 66 if(fSGSession) return; //done. 67 fSGSession = new session(G4cout); 68 if(!fSGSession->is_valid()) { 69 G4cerr << "G4ToolsSGXtGLES::Initialise : s 70 delete fSGSession; 71 fSGSession = nullptr; 72 return; 73 } 74 } 75 76 G4VSceneHandler* G4ToolsSGXtGLES::CreateSceneH 77 G4VSceneHandler* pScene = new G4ToolsSGScene 78 return pScene; 79 } 80 81 G4VViewer* G4ToolsSGXtGLES::CreateViewer(G4VSc 82 if(!fSGSession) Initialise(); 83 if(!fSGSession) return nullptr; 84 G4VViewer* pView = 85 new G4ToolsSGViewer<toolx::Xt::session,too 86 if (pView) { 87 if (pView->GetViewId() < 0) { 88 G4cerr << 89 "G4ToolsSGXtGLES::CreateViewer: ERROR fl 90 " view id in G4ToolsSGViewer creation." 91 "\n Destroying view and returning null p 92 << G4endl; 93 delete pView; 94 pView = nullptr; 95 } 96 } 97 if (!pView) { 98 G4cerr << 99 "G4ToolsSGXtGLES::CreateViewer: ERROR: nul 100 << G4endl; 101 } 102 return pView; 103 } 104