Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 28 // 29 // J Kallenbach 27th Aug 1996 30 // OpenInventor scene handler - creates OpenInventor Display lists. 31 // 20 dec 1996 jck Add HEPVis primitives - trd, box, etc. 32 33 #ifndef G4OPENINVENTORSCENEHANDLER_HH 34 #define G4OPENINVENTORSCENEHANDLER_HH 35 36 // Inheritance : 37 #include "G4VSceneHandler.hh" 38 39 #include "G4PhysicalVolumeModel.hh" 40 41 #include <map> 42 43 class G4OpenInventor; 44 class SoSeparator; 45 class Geant4_SoStyleCache; 46 class G4VisAttributes; 47 48 // Base class for various OpenInventorScene classes. 49 class G4OpenInventorSceneHandler: public G4VSceneHandler { 50 51 friend class G4OpenInventorViewer; 52 53 public: 54 55 G4OpenInventorSceneHandler (G4OpenInventor& system, const G4String& name = ""); 56 virtual ~G4OpenInventorSceneHandler (); 57 58 using G4VSceneHandler::AddPrimitive; 59 void AddPrimitive (const G4Polyline& line); 60 void AddPrimitive (const G4Text&); 61 void AddPrimitive (const G4Circle&); 62 void AddPrimitive (const G4Square&); 63 void AddPrimitive (const G4Polyhedron& p); 64 void AddPrimitive (const G4Polymarker&); 65 66 using G4VSceneHandler::AddCompound; 67 void AddCompound (const G4Mesh&); 68 69 /////////////////////////////////////////////////////////////// 70 // Other inherited functions. 71 void ClearStore (); 72 void ClearTransientStore (); 73 74 // 75 // Primitives for use of HEPVis 76 // 77 void PreAddSolid (const G4Transform3D& objectTransformation, 78 const G4VisAttributes& visAttribs); 79 void BeginPrimitives (const G4Transform3D& objectTransformation); 80 81 private: 82 83 static G4int fSceneIdCount; // static counter for OpenInventor scenes. 84 enum G4OIMarker {G4OICircle, G4OISquare}; 85 void AddCircleSquare (G4OIMarker markerType, const G4VMarker&); 86 void GeneratePrerequisites(); 87 void AddProperties(const G4VisAttributes*); 88 // AddTransform takes fObjectTransformation and "adds" a translation. 89 void AddTransform(const G4Point3D& translation = G4Point3D()); 90 std::map <G4LogicalVolume*, SoSeparator*, 91 std::less <G4LogicalVolume*> > fSeparatorMap; 92 SoSeparator* fRoot; 93 SoSeparator* fDetectorRoot; 94 SoSeparator* fTransientRoot; 95 SoSeparator* fCurrentSeparator; 96 G4bool fModelingSolid; 97 G4bool fReducedWireFrame; 98 Geant4_SoStyleCache* fStyleCache; 99 bool fPreviewAndFull; 100 }; 101 102 #endif 103