Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // John Allison 19th July 1996 28 // 29 // Class Description: 30 // Abstract interface class for a graphics sce 31 // It is a minimal scene handler for the GEANT 32 // See G4VSceneHandler for a fuller descriptio 33 // the full abstract interface to graphics sys 34 35 #ifndef G4VGRAPHICSSCENE_HH 36 #define G4VGRAPHICSSCENE_HH 37 38 #include "globals.hh" 39 #include "G4Transform3D.hh" 40 41 class G4VisAttributes; 42 class G4VSolid; 43 class G4Box; 44 class G4Cons; 45 class G4Orb; 46 class G4Para; 47 class G4Torus; 48 class G4Trap; 49 class G4Trd; 50 class G4Tubs; 51 class G4Sphere; 52 53 class G4Ellipsoid; 54 class G4Polycone; 55 class G4Polyhedra; 56 class G4TessellatedSolid; 57 58 class G4PhysicalVolumeModel; 59 class G4VTrajectory; 60 class G4VHit; 61 class G4VDigi; 62 template <typename T> class G4THitsMap; 63 class G4Polyline; 64 class G4Text; 65 class G4Circle; 66 class G4Square; 67 class G4Polymarker; 68 class G4Polyhedron; 69 class G4VisExtent; 70 class G4StatDouble; 71 class G4Mesh; 72 class G4Plotter; 73 74 class G4VGraphicsScene { 75 76 public: // With description 77 78 G4VGraphicsScene(); 79 virtual ~G4VGraphicsScene(); 80 81 //////////////////////////////////////////// 82 // Methods for adding solids to the scene ha 83 // must always be called in the triplet PreA 84 // PostAddSolid. The transformation and vis 85 // must be set by the call to PreAddSolid. 86 // implementation is to request the solid to 87 // or similar primitive - see, for example, 88 // Visualization Category. 89 90 virtual void PreAddSolid (const G4Transform3 91 const G4VisAttribu 92 // objectTransformation is the transformatio 93 // coordinate system of the object about to 94 // visAttribs is its visualization attribute 95 96 virtual void PostAddSolid () = 0; 97 98 // From geometry/solids/CSG 99 virtual void AddSolid (const G4Box&) = 100 virtual void AddSolid (const G4Cons&) = 101 virtual void AddSolid (const G4Orb&) = 102 virtual void AddSolid (const G4Para&) = 103 virtual void AddSolid (const G4Sphere&) = 104 virtual void AddSolid (const G4Torus&) = 105 virtual void AddSolid (const G4Trap&) = 106 virtual void AddSolid (const G4Trd&) = 107 virtual void AddSolid (const G4Tubs&) = 108 109 // From geometry/solids/specific 110 virtual void AddSolid (const G4Ellipsoid&) 111 virtual void AddSolid (const G4Polycone&) 112 virtual void AddSolid (const G4Polyhedra&) 113 virtual void AddSolid (const G4TessellatedSo 114 115 // For solids not above 116 virtual void AddSolid (const G4VSolid&) = 0; 117 118 //////////////////////////////////////////// 119 // Methods for adding "compound" GEANT4 obje 120 // handler. These methods may either (a) in 121 // uses the "user interface", G4VVisManager 122 // G4VSceneHandler in the Visualization Cate 123 // trajectories uses G4VTrajectory::DrawTraj 124 // G4TrajectoriesModel in the Modeling Categ 125 // AddPrimitives below (between calls to Beg 126 // use graphics-system-specific code or (d) 127 // above. 128 129 virtual void AddCompound (const G4VTrajector 130 virtual void AddCompound (const G4VHit&) 131 virtual void AddCompound (const G4VDigi&) 132 virtual void AddCompound (const G4THitsMap<G 133 virtual void AddCompound (const G4THitsMap<G 134 virtual void AddCompound (const G4Mesh&) 135 136 //////////////////////////////////////////// 137 // Methods for adding graphics primitives to 138 // sequence of calls to AddPrimitive must be 139 // calls to BeginPrimitives and EndPrimitive 140 // number of calls that have the same transf 141 142 virtual void BeginPrimitives 143 (const G4Transform3D& objectTransformation = 144 // objectTransformation is the transformatio 145 // coordinate system of the object about to 146 147 virtual void EndPrimitives () = 0; 148 149 virtual void BeginPrimitives2D 150 (const G4Transform3D& objectTransformation = 151 152 virtual void EndPrimitives2D () = 0; 153 // The x,y coordinates of the primitives pas 154 // intrepreted as screen coordinates, -1 < x 155 // z-coordinate is ignored. 156 157 virtual void AddPrimitive (const G4Polyline& 158 virtual void AddPrimitive (const G4Text&) 159 virtual void AddPrimitive (const G4Circle&) 160 virtual void AddPrimitive (const G4Square&) 161 virtual void AddPrimitive (const G4Polymarke 162 virtual void AddPrimitive (const G4Polyhedro 163 virtual void AddPrimitive (const G4Plotter&) 164 165 virtual const G4VisExtent& GetExtent() const 166 // The concrete class should overload this o 167 // See G4VScenHandler for example. 168 169 }; 170 171 #endif 172