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 // G4VRML2FileSceneHandler.hh 29 // Satoshi Tanaka & Yasuhide Sawada 30 31 #ifndef G4VRML2FILE_SCENE_HANDLER_HH 32 #define G4VRML2FILE_SCENE_HANDLER_HH 33 34 #include <fstream> 35 36 #include "globals.hh" 37 #include "G4LogicalVolume.hh" 38 #include "G4VSceneHandler.hh" 39 40 class G4VRML2File; 41 class G4VisAttributes; 42 43 class G4VRML2FileSceneHandler : public G4VSceneHandler 44 { 45 friend class G4VRML2FileViewer; 46 47 // methods (public) 48 public: 49 G4VRML2FileSceneHandler(G4VRML2File& system, const G4String& name = ""); 50 virtual ~G4VRML2FileSceneHandler(); 51 52 using G4VSceneHandler::AddSolid; 53 void AddSolid(const G4Box&); 54 void AddSolid(const G4Cons&); 55 void AddSolid(const G4Tubs&); 56 void AddSolid(const G4Trd&); 57 void AddSolid(const G4Trap&); 58 void AddSolid(const G4Sphere&); 59 void AddSolid(const G4Para&); 60 void AddSolid(const G4Torus&); 61 void AddSolid(const G4VSolid&); 62 63 using G4VSceneHandler::AddCompound; 64 65 void BeginPrimitives(const G4Transform3D& objectTransformation); 66 void EndPrimitives(); 67 68 using G4VSceneHandler::AddPrimitive; 69 void AddPrimitive(const G4Polyline&); 70 void AddPrimitive(const G4Polyhedron&); 71 void AddPrimitive(const G4Text&); 72 void AddPrimitive(const G4Circle&); 73 void AddPrimitive(const G4Square&); 74 75 void ClearTransientStore(); // Used for triggering detector re-drawing. 76 77 void BeginModeling(); 78 void EndModeling(); 79 80 void VRMLBeginModeling(); 81 void VRMLEndModeling(); 82 83 void connectPort(); 84 void closePort(); 85 86 // methods (private) 87 private: 88 void SendMaterialNode(const G4VisAttributes* pAV); 89 void SendMaterialNode(); 90 91 void SendLineColor(const G4VisAttributes* pAV); 92 void SendMarkerColor(const G4VMarker& mark); 93 void SendMarkerWorldPosition(const G4VMarker& mark); 94 95 G4double GetMarkerHalfSize(const G4VMarker& mark); 96 void GetMarkerWorldPosition(const G4VMarker& mark, double* pX, double* pY, 97 double* pZ); 98 99 G4bool isConnected() { return fFlagDestOpen; } 100 101 G4bool IsPVPickable() { return fPVPickable; } 102 void SetPVPickability(G4bool on_off) { fPVPickable = on_off; } 103 G4double SetPVTransparency(); 104 G4double GetPVTransparency() { return fPVTransparency; } 105 106 // data 107 private: 108 char fVRMLFileDestDir[256]; 109 char fVRMLFileName[256]; 110 111 G4VRML2File& fSystem; // Graphics system for this scene. 112 G4bool fFlagDestOpen; 113 114 G4int fMaxFileNum; 115 116 G4bool fPVPickable; 117 G4double fPVTransparency; 118 119 static G4int fSceneIdCount; 120 121 public: 122 std::ofstream fDest; 123 }; 124 125 #endif // G4VRML2FILE_SCENE_HANDLER_HH 126