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 // John Allison 5th April 2001 30 // A template for a simplest possible graphics driver. 31 //?? Lines or sections marked like this require specialisation for your driver. 32 33 #ifndef G4VTKSCENEHANDLER_HH 34 #define G4VTKSCENEHANDLER_HH 35 36 #include "G4VSceneHandler.hh" 37 #include "G4VtkStore.hh" 38 #include "G4VtkViewer.hh" 39 40 #include <map> 41 #include <vector> 42 43 #ifndef WIN32 44 #pragma GCC diagnostic push 45 #pragma GCC diagnostic ignored "-Wextra-semi" 46 #endif 47 48 #include <vtkActor.h> 49 #include <vtkBillboardTextActor3D.h> 50 #include <vtkCleanPolyData.h> 51 #include <vtkDoubleArray.h> 52 #include <vtkFeatureEdges.h> 53 #include <vtkFollower.h> 54 #include <vtkGlyph2D.h> 55 #include <vtkGlyph3D.h> 56 #include <vtkImageData.h> 57 #include <vtkLine.h> 58 #include <vtkMatrix4x4.h> 59 #include <vtkNamedColors.h> 60 #include <vtkOpenGLGPUVolumeRayCastMapper.h> 61 #include <vtkPointData.h> 62 #include <vtkPolyData.h> 63 #include <vtkPolyDataMapper.h> 64 #include <vtkPolyDataNormals.h> 65 #include <vtkProperty.h> 66 #include <vtkRegularPolygonSource.h> 67 #include <vtkScalarsToColors.h> 68 #include <vtkSmartPointer.h> 69 #include <vtkSphereSource.h> 70 #include <vtkTensorGlyph.h> 71 #include <vtkTensorGlyphColor.h> 72 #include <vtkTextActor.h> 73 #include <vtkTextProperty.h> 74 #include <vtkTriangleFilter.h> 75 #include <vtkVertexGlyphFilter.h> 76 #include <vtkVolume.h> 77 78 #ifndef WIN32 79 #pragma GCC diagnostic pop 80 #endif 81 82 class G4VtkSceneHandler : public G4VSceneHandler 83 { 84 public: 85 G4VtkSceneHandler(G4VGraphicsSystem& system, const G4String& name); 86 ~G4VtkSceneHandler() override = default; 87 88 //////////////////////////////////////////////////////////////// 89 // Required implementation of pure virtual functions... 90 91 using G4VSceneHandler::AddPrimitive; 92 void AddPrimitive(const G4Polyline&) override; 93 void AddPrimitive(const G4Text&) override; 94 void AddPrimitive(const G4Circle&) override; 95 void AddPrimitive(const G4Square&) override; 96 void AddPrimitive(const G4Polyhedron&) override; 97 98 // Further optional AddPrimitive methods. Explicitly invoke base 99 // class methods if not otherwise defined to avoid warnings about 100 // hiding of base class methods. 101 void AddPrimitive(const G4Polymarker& polymarker) override 102 { 103 G4VSceneHandler::AddPrimitive(polymarker); 104 } 105 106 using G4VSceneHandler::AddSolid; 107 void AddSolid(const G4Box& box) override; 108 109 using G4VSceneHandler::AddCompound; 110 void AddCompound(const G4Mesh& mesh) override; 111 112 void Modified(); 113 void ClearStore() override; 114 void ClearTransientStore() override; 115 G4VtkVisContext MakeDefaultVisContext(); 116 G4VtkStore& GetStore() { return store; } 117 G4VtkStore& GetTransientStore() { return transientStore; } 118 119 virtual void Print(); 120 121 void SetPolyhedronPipeline(const G4String& str); 122 123 protected: 124 static G4int fSceneIdCount; // Counter for Vtk scene handlers. 125 126 G4VtkStore store = G4VtkStore("perm"); 127 G4VtkStore transientStore = G4VtkStore("trans"); 128 129 G4String polyhedronPipelineType; 130 131 private: 132 friend class G4VtkViewer; 133 }; 134 135 #endif 136