// // ******************************************************************** // * 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. * // ******************************************************************** // // Created by Stewart Boogert on 13/11/2021. // #ifndef G4VTKSTORE_HH #define G4VTKSTORE_HH #include "G4Transform3D.hh" #include "G4ViewParameters.hh" #include "vtkActor.h" #include "vtkActor2D.h" #include "vtkCellArray.h" #include "vtkCellData.h" #include "vtkCleanPolyData.h" #include "vtkClipClosedSurface.h" #include "vtkClipPolyData.h" #include "vtkDataSetMapper.h" #include "vtkDoubleArray.h" #include "vtkFeatureEdges.h" #include "vtkNamedColors.h" #include "vtkPlane.h" #include "vtkPlaneCollection.h" #include "vtkPointData.h" #include "vtkPoints.h" #include "vtkPolyData.h" #include "vtkPolyDataAlgorithm.h" #include "vtkPolyDataMapper.h" #include "vtkPolyDataMapper2D.h" #include "vtkPolyDataNormals.h" #include "vtkProperty.h" #include "vtkRenderer.h" #include "vtkStripper.h" #include "vtkStructuredGrid.h" #include "vtkTensorGlyphColor.h" #include "vtkTriangleFilter.h" #include "vtkVertexGlyphFilter.h" #include #include #include class G4VViewer; class G4VtkViewer; class G4Polyline; class G4Text; class G4Circle; class G4Square; class G4Polyhedron; class G4VisAttributes; class G4VtkVisContext; class G4Mesh; class G4VtkPolydataPipeline; class G4VtkPolydataPolylinePipeline; class G4VtkPolydataPolyline2DPipeline; class G4VtkPolydataSpherePipeline; class G4VtkPolydataPolygonPipeline; class G4VtkPolydataInstanceTensorPipeline; class G4VtkPolydataInstanceAppendPipeline; class G4VtkPolydataInstanceBakePipeline; class G4VtkClipCloseSurfacePipeline; class G4VtkImagePipeline; class G4VtkTextPipeline; class G4VtkText2DPipeline; class G4VtkUnstructuredGridPipeline; template class vtkSmartPointer; class G4VtkTensorGlyphPolydataPipeline; class G4VtkStore { public: G4VtkStore(G4String name); ~G4VtkStore(); void Modified(); void Clear(); void ClearNonG4(); void Print(); void AddPrimitive(const G4Polyline& polyline, const G4VtkVisContext& vc); void AddPrimitive(const G4Text& text, const G4VtkVisContext& vc); void AddPrimitive(const G4Circle& circle, const G4VtkVisContext& vc); void AddPrimitive(const G4Square& square, const G4VtkVisContext& vc); void AddPrimitiveSeparate(const G4Polyhedron& polyhedron, const G4VtkVisContext& vc); void AddPrimitiveTensorGlyph(const G4Polyhedron& polyhedron, const G4VtkVisContext& vc); void AddPrimitiveAppend(const G4Polyhedron& polyhedron, const G4VtkVisContext& vc); void AddPrimitiveTransformBake(const G4Polyhedron& polyhedron, const G4VtkVisContext& vc); void AddCompound(const G4Mesh& mesh, const G4VtkVisContext& vc); void UpdatePlanePipelines(G4String name, G4String type, const G4Plane3D); void AddClipper(G4String name, const G4Plane3D& plane); void UpdateClipper(G4String name, const G4Plane3D& plane); void RemoveClipper(G4String name); void AddCutter(G4String name, const G4Plane3D& plane); void UpdateCutter(G4String name, const G4Plane3D& plane); void RemoveCutter(G4String name); void AddNonG4ObjectImage(const G4String& fileName, const G4VtkVisContext& vc); void AddNonG4ObjectPolydata(const G4String fileName, const G4VtkVisContext& vc); void GetBounds(G4double maxBound[6]); void AddToRenderer(vtkRenderer* renderer); std::map>& GetPolylinePipeMap() { return polylinePipeMap; } std::map>& GetPolyline2DPipeMap() { return polyline2DPipeMap; } std::map>& GetPolydataSpherePipeMap() { return circlePipeMap; } std::map>& GetPolydataPolygonPipeMap() { return squarePipeMap; } std::map>& GetSeparatePipeMap() { return separatePipeMap; } std::map>& GetTensorPipeMap() { return tensorGlyphPipeMap; } std::map>& GetAppendPipeMap() { return appendPipeMap; } std::map>& GetBakePipeMap() { return bakePipeMap; } private: G4String name; std::map> polylinePipeMap; std::map> polyline2DPipeMap; std::map> circlePipeMap; std::map> squarePipeMap; std::map> textPipeMap; std::map> text2DPipeMap; std::map> separatePipeMap; std::map> tensorGlyphPipeMap; std::map> appendPipeMap; std::map> bakePipeMap; std::map> ugridPipeMap; std::map> imagePipeMap; std::map> sideloadPipeMap; }; #endif // G4VTKSTORE_HH