// // ******************************************************************** // * License and Disclaimer * // * * // * The Geant4 software is copyright of the Copyright Holders of * // * the Geant4 Collaboration. It is provided under the terms and * // * conditions of the Geant4 Software License, included in the file * // * LICENSE and available at http://cern.ch/geant4/license . These * // * include a list of copyright holders. * // * * // * Neither the authors of this software system, nor their employing * // * institutes,nor the agencies providing financial support for this * // * work make any representation or warranty, express or implied, * // * regarding this software system or assume any liability for its * // * use. Please see the license in the file LICENSE and URL above * // * for the full disclaimer and the limitation of liability. * // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration. * // * By using, copying, modifying or distributing the software (or * // * any work based on the software) you agree to acknowledge its * // * use in resulting scientific publications, and indicate your * // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // // // // // John Allison 24th January 1998. #ifndef G4VISEXECUTIVE_ICC #define G4VISEXECUTIVE_ICC // Filter/Model Factories #include "G4HitFilterFactories.hh" #include "G4DigiFilterFactories.hh" #include "G4TrajectoryFilterFactories.hh" #include "G4TrajectoryModelFactories.hh" // Supported drivers... // Not needing external packages or libraries... #include "G4ASCIITree.hh" // no_geant4_module_check #include "G4DAWNFILE.hh" // no_geant4_module_check #include "G4HepRepFile.hh" // no_geant4_module_check #include "G4RayTracer.hh" // no_geant4_module_check #include "G4VRML2File.hh" // no_geant4_module_check #include "G4GMocrenFile.hh" // no_geant4_module_check #include "G4ToolsSGOffscreen.hh" // no_geant4_module_check // Needing external packages or libraries... #ifdef G4VIS_USE_OPENGLX #include "G4OpenGLImmediateX.hh" // no_geant4_module_check #include "G4OpenGLStoredX.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OPENGLWIN32 #include "G4OpenGLImmediateWin32.hh" // no_geant4_module_check #include "G4OpenGLStoredWin32.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OPENGLXM #include "G4OpenGLImmediateXm.hh" // no_geant4_module_check #include "G4OpenGLStoredXm.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OPENGLQT #include "G4OpenGLImmediateQt.hh" // no_geant4_module_check #include "G4OpenGLStoredQt.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OIX #include "G4OpenInventorX.hh" // no_geant4_module_check #include "G4OpenInventorXtExtended.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OIQT #include "G4OpenInventorQt.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_OIWIN32 #include "G4OpenInventorWin32.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_RAYTRACERX #include "G4RayTracerX.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_QT3D #include "G4Qt3D.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_TOOLSSG_X11_GLES #include "G4ToolsSGX11GLES.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_TOOLSSG_WINDOWS_GLES #include "G4ToolsSGWindowsGLES.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_TOOLSSG_XT_GLES #include "G4ToolsSGXtGLES.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_TOOLSSG_QT_GLES #include "G4ToolsSGQtGLES.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_VTK #include "G4Vtk.hh" // no_geant4_module_check #endif #ifdef G4VIS_USE_VTK_QT #include "G4VtkQt.hh" // no_geant4_module_check #endif // The inline keyword prevents the compiler making an external // reference even though they cannot actually be inlined since they // are virtual functions. This prevents a "multiple definition" error // if it is included in more than one file. However, as explained in // the class description in G4VisExecutive.hh, it should never be // necessary to #include "G4VisExecutive.hh" in more than one file // since after instantiation the object can be treated as a // G4VisManager. inline G4VisExecutive::G4VisExecutive (const G4String& verbosityString): G4VisManager(verbosityString) {} inline void G4VisExecutive::RegisterGraphicsSystems () { // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); RegisterGraphicsSystem (new G4DAWNFILE); RegisterGraphicsSystem (new G4HepRepFile); RegisterGraphicsSystem (new G4RayTracer); RegisterGraphicsSystem (new G4VRML2File); RegisterGraphicsSystem (new G4GMocrenFile); RegisterGraphicsSystem (new G4ToolsSGOffscreen); G4VGraphicsSystem* tsg_offscreen = new G4ToolsSGOffscreen; RegisterGraphicsSystem(tsg_offscreen); tsg_offscreen->AddNickname("TSG_FILE"); // Graphics systems needing external packages or libraries... // Register OGL family of drivers with their normal names, // super-abbreviated names and fallback names where approproiate. #ifdef G4VIS_USE_OPENGLQT G4VGraphicsSystem* ogliqt = new G4OpenGLImmediateQt; G4VGraphicsSystem* oglsqt = new G4OpenGLStoredQt; RegisterGraphicsSystem(ogliqt); RegisterGraphicsSystem(oglsqt); ogliqt->AddNickname("OGLI"); oglsqt->AddNickname("OGL"); oglsqt->AddNickname("OGLS"); #endif #ifdef G4VIS_USE_OPENGLXM G4VGraphicsSystem* oglixm = new G4OpenGLImmediateXm; G4VGraphicsSystem* oglsxm = new G4OpenGLStoredXm; RegisterGraphicsSystem(oglixm); RegisterGraphicsSystem(oglsxm); # ifdef G4VIS_USE_OPENGLQT oglixm->AddNickname("OGLIQt_FALLBACK"); oglsxm->AddNickname("OGLSQt_FALLBACK"); # else oglixm->AddNickname("OGLI"); oglsxm->AddNickname("OGL"); oglsxm->AddNickname("OGLS"); # endif #endif #ifdef G4VIS_USE_OPENGLX G4VGraphicsSystem* oglix = new G4OpenGLImmediateX; G4VGraphicsSystem* oglsx = new G4OpenGLStoredX; RegisterGraphicsSystem(oglix); RegisterGraphicsSystem(oglsx); # ifdef G4VIS_USE_OPENGLQT oglix->AddNickname("OGLIQt_FALLBACK"); oglsx->AddNickname("OGLSQt_FALLBACK"); # endif # ifdef G4VIS_USE_OPENGLXM oglix->AddNickname("OGLIXm_FALLBACK"); oglsx->AddNickname("OGLSXm_FALLBACK"); # endif # if defined(G4VIS_USE_OPENGLQT) || (G4VIS_USE_OPENGLXM) # else oglix->AddNickname("OGLI"); oglsx->AddNickname("OGL"); oglsx->AddNickname("OGLS"); # endif #endif #ifdef G4VIS_USE_OPENGLWIN32 G4VGraphicsSystem* ogliwin32 = new G4OpenGLImmediateWin32; G4VGraphicsSystem* oglswin32 = new G4OpenGLStoredWin32; RegisterGraphicsSystem(ogliwin32); RegisterGraphicsSystem(oglswin32); # ifdef G4VIS_USE_OPENGLQT ogliwin32->AddNickname("OGLIQt_FALLBACK"); oglswin32->AddNickname("OGLSQt_FALLBACK"); # else ogliwin32->AddNickname("OGLI"); oglswin32->AddNickname("OGL"); oglswin32->AddNickname("OGLS"); # endif #endif // Register OI graphics system with super-abbreviated nickname #ifdef G4VIS_USE_OI G4VGraphicsSystem* oi = 0; # ifdef G4VIS_USE_OIX oi = new G4OpenInventorX; # elif defined(G4VIS_USE_OIQT) oi = new G4OpenInventorQt; # elif defined(G4VIS_USE_OIWIN32) oi = new G4OpenInventorWin32; # endif if(oi) { RegisterGraphicsSystem(oi); oi->AddNickname("OI"); } #endif // The new, extended OI is registered separately for now. #ifdef G4VIS_USE_OIX RegisterGraphicsSystem(new G4OpenInventorXtExtended); #endif #ifdef G4VIS_USE_RAYTRACERX RegisterGraphicsSystem(new G4RayTracerX); #endif #ifdef G4VIS_USE_QT3D RegisterGraphicsSystem(new G4Qt3D); #endif #ifdef G4VIS_USE_TOOLSSG_X11_GLES G4VGraphicsSystem* tsg_x11_gles = new G4ToolsSGX11GLES; RegisterGraphicsSystem(tsg_x11_gles); tsg_x11_gles->AddNickname("TSGX11"); #ifdef G4VIS_USE_TOOLSSG_XT_GLES tsg_x11_gles->AddNickname("TSG_XT_GLES_FALLBACK"); #endif #ifdef G4VIS_USE_TOOLSSG_QT_GLES #ifndef G4VIS_USE_TOOLSSG_XT_GLES tsg_x11_gles->AddNickname("TSG_QT_GLES_FALLBACK"); #endif #endif #endif #ifdef G4VIS_USE_TOOLSSG_XT_GLES G4VGraphicsSystem* tsg_xt_gles = new G4ToolsSGXtGLES; RegisterGraphicsSystem(tsg_xt_gles); tsg_xt_gles->AddNickname("TSGXt"); #ifdef G4VIS_USE_TOOLSSG_QT_GLES tsg_xt_gles->AddNickname("TSG_QT_GLES_FALLBACK"); #endif #endif #ifdef G4VIS_USE_TOOLSSG_QT_GLES G4VGraphicsSystem* tsg_qt_gles = new G4ToolsSGQtGLES; RegisterGraphicsSystem(tsg_qt_gles); tsg_qt_gles->AddNickname("TSGQt"); #endif #ifdef G4VIS_USE_TOOLSSG_WINDOWS_GLES G4VGraphicsSystem* tsg_windows_gles = new G4ToolsSGWindowsGLES; RegisterGraphicsSystem(tsg_windows_gles); #endif #ifdef G4VIS_USE_TOOLSSG_QT_GLES tsg_qt_gles->AddNickname("TSG"); #elif defined(G4VIS_USE_TOOLSSG_XT_GLES) tsg_xt_gles->AddNickname("TSG"); #elif defined(G4VIS_USE_TOOLSSG_X11_GLES) tsg_x11_gles->AddNickname("TSG"); #elif defined(G4VIS_USE_TOOLSSG_WINDOWS_GLES) tsg_windows_gles->AddNickname("TSG"); #endif #ifdef G4VIS_USE_VTK G4Vtk* vtkN = new G4Vtk(); RegisterGraphicsSystem(vtkN); # ifdef G4VIS_USE_VTK_QT vtkN->AddNickname("VTKQt_FALLBACK"); # endif #endif #ifdef G4VIS_USE_VTK_QT G4VtkQt* vtkQt = new G4VtkQt(); RegisterGraphicsSystem(vtkQt); vtkQt->AddNickname("VTKQt"); #endif #ifdef G4VIS_USE_VTK_QT vtkQt->AddNickname("Vtk"); vtkQt->AddNickname("VTK"); #elif defined(G4VIS_USE_VTK) vtkN->AddNickname("Vtk"); vtkN->AddNickname("VTK"); #endif } // See comments about inlining above. inline void G4VisExecutive::RegisterModelFactories() { // Trajectory draw models RegisterModelFactory(new G4TrajectoryGenericDrawerFactory()); RegisterModelFactory(new G4TrajectoryDrawByAttributeFactory()); RegisterModelFactory(new G4TrajectoryDrawByChargeFactory()); RegisterModelFactory(new G4TrajectoryDrawByOriginVolumeFactory()); RegisterModelFactory(new G4TrajectoryDrawByParticleIDFactory()); RegisterModelFactory(new G4TrajectoryDrawByEncounteredVolumeFactory()); // Trajectory filter models RegisterModelFactory(new G4TrajectoryAttributeFilterFactory()); RegisterModelFactory(new G4TrajectoryChargeFilterFactory()); RegisterModelFactory(new G4TrajectoryOriginVolumeFilterFactory()); RegisterModelFactory(new G4TrajectoryParticleFilterFactory()); RegisterModelFactory(new G4TrajectoryEncounteredVolumeFilterFactory()); // Hit filter models RegisterModelFactory(new G4HitAttributeFilterFactory()); // Digi filter models RegisterModelFactory(new G4DigiAttributeFilterFactory()); } #endif