Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VGraphicsScene.hh
Go to the documentation of this file.
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// John Allison 19th July 1996
28//
29// Class Description:
30// Abstract interface class for a graphics scene handler.
31// It is a minimal scene handler for the GEANT4 kernel.
32// See G4VSceneHandler for a fuller description. G4VSceneHandler is
33// the full abstract interface to graphics systems.
34
35#ifndef G4VGRAPHICSSCENE_HH
36#define G4VGRAPHICSSCENE_HH
37
38#include "globals.hh"
39#include "G4Transform3D.hh"
40
41class G4VisAttributes;
42class G4VSolid;
43class G4Box;
44class G4Cons;
45class G4Orb;
46class G4Para;
47class G4Torus;
48class G4Trap;
49class G4Trd;
50class G4Tubs;
51class G4Sphere;
52
53class G4Ellipsoid;
54class G4Polycone;
55class G4Polyhedra;
57
59class G4VTrajectory;
60class G4VHit;
61class G4VDigi;
62template <typename T> class G4THitsMap;
63class G4Polyline;
64class G4Text;
65class G4Circle;
66class G4Square;
67class G4Polymarker;
68class G4Polyhedron;
69class G4VisExtent;
70class G4StatDouble;
71class G4Mesh;
72class G4Plotter;
73
75
76public: // With description
77
80
81 ///////////////////////////////////////////////////////////////////
82 // Methods for adding solids to the scene handler. They
83 // must always be called in the triplet PreAddSolid, AddSolid and
84 // PostAddSolid. The transformation and visualization attributes
85 // must be set by the call to PreAddSolid. A possible default
86 // implementation is to request the solid to provide a G4Polyhedron
87 // or similar primitive - see, for example, G4VSceneHandler in the
88 // Visualization Category.
89
90 virtual void PreAddSolid (const G4Transform3D& objectTransformation,
91 const G4VisAttributes& visAttribs) = 0;
92 // objectTransformation is the transformation in the world
93 // coordinate system of the object about to be added, and
94 // visAttribs is its visualization attributes.
95
96 virtual void PostAddSolid () = 0;
97
98 // From geometry/solids/CSG
99 virtual void AddSolid (const G4Box&) = 0;
100 virtual void AddSolid (const G4Cons&) = 0;
101 virtual void AddSolid (const G4Orb&) = 0;
102 virtual void AddSolid (const G4Para&) = 0;
103 virtual void AddSolid (const G4Sphere&) = 0;
104 virtual void AddSolid (const G4Torus&) = 0;
105 virtual void AddSolid (const G4Trap&) = 0;
106 virtual void AddSolid (const G4Trd&) = 0;
107 virtual void AddSolid (const G4Tubs&) = 0;
108
109 // From geometry/solids/specific
110 virtual void AddSolid (const G4Ellipsoid&) = 0;
111 virtual void AddSolid (const G4Polycone&) = 0;
112 virtual void AddSolid (const G4Polyhedra&) = 0;
113 virtual void AddSolid (const G4TessellatedSolid&) = 0;
114
115 // For solids not above
116 virtual void AddSolid (const G4VSolid&) = 0;
117
118 ///////////////////////////////////////////////////////////////////
119 // Methods for adding "compound" GEANT4 objects to the scene
120 // handler. These methods may either (a) invoke "user code" that
121 // uses the "user interface", G4VVisManager (see, for example,
122 // G4VSceneHandler in the Visualization Category, which for
123 // trajectories uses G4VTrajectory::DrawTrajectory, via
124 // G4TrajectoriesModel in the Modeling Category) or (b) invoke
125 // AddPrimitives below (between calls to Begin/EndPrimitives) or (c)
126 // use graphics-system-specific code or (d) any combination of the
127 // above.
128
129 virtual void AddCompound (const G4VTrajectory&) = 0;
130 virtual void AddCompound (const G4VHit&) = 0;
131 virtual void AddCompound (const G4VDigi&) = 0;
132 virtual void AddCompound (const G4THitsMap<G4double>&) = 0;
133 virtual void AddCompound (const G4THitsMap<G4StatDouble>&) = 0;
134 virtual void AddCompound (const G4Mesh&) = 0;
135
136 ///////////////////////////////////////////////////////////////////
137 // Methods for adding graphics primitives to the scene handler. A
138 // sequence of calls to AddPrimitive must be sandwiched between
139 // calls to BeginPrimitives and EndPrimitives. A sequence is any
140 // number of calls that have the same transformation.
141
142 virtual void BeginPrimitives
143 (const G4Transform3D& objectTransformation = G4Transform3D()) = 0;
144 // objectTransformation is the transformation in the world
145 // coordinate system of the object about to be added.
146
147 virtual void EndPrimitives () = 0;
148
149 virtual void BeginPrimitives2D
150 (const G4Transform3D& objectTransformation = G4Transform3D()) = 0;
151
152 virtual void EndPrimitives2D () = 0;
153 // The x,y coordinates of the primitives passed to AddPrimitive are
154 // intrepreted as screen coordinates, -1 < x,y < 1. The
155 // z-coordinate is ignored.
156
157 virtual void AddPrimitive (const G4Polyline&) = 0;
158 virtual void AddPrimitive (const G4Text&) = 0;
159 virtual void AddPrimitive (const G4Circle&) = 0;
160 virtual void AddPrimitive (const G4Square&) = 0;
161 virtual void AddPrimitive (const G4Polymarker&) = 0;
162 virtual void AddPrimitive (const G4Polyhedron&) = 0;
163 virtual void AddPrimitive (const G4Plotter&) = 0;
164
165 virtual const G4VisExtent& GetExtent() const;
166 // The concrete class should overload this or a null extent will be returned.
167 // See G4VScenHandler for example.
168
169};
170
171#endif
HepGeom::Transform3D G4Transform3D
Definition: G4Box.hh:56
Definition: G4Cons.hh:78
Definition: G4Mesh.hh:48
Definition: G4Orb.hh:56
Definition: G4Para.hh:79
Definition: G4Text.hh:72
Definition: G4Trd.hh:63
Definition: G4Tubs.hh:75
virtual void BeginPrimitives2D(const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void AddPrimitive(const G4Square &)=0
virtual void AddPrimitive(const G4Text &)=0
virtual void EndPrimitives2D()=0
virtual void AddPrimitive(const G4Polymarker &)=0
virtual void AddCompound(const G4VHit &)=0
virtual void AddSolid(const G4Orb &)=0
virtual void AddCompound(const G4VTrajectory &)=0
virtual void AddCompound(const G4Mesh &)=0
virtual void AddSolid(const G4Cons &)=0
virtual void AddCompound(const G4VDigi &)=0
virtual void AddSolid(const G4Tubs &)=0
virtual void AddSolid(const G4Trd &)=0
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void PostAddSolid()=0
virtual void AddPrimitive(const G4Polyline &)=0
virtual const G4VisExtent & GetExtent() const
virtual void AddPrimitive(const G4Plotter &)=0
virtual void AddPrimitive(const G4Polyhedron &)=0
virtual void AddSolid(const G4Polyhedra &)=0
virtual void AddSolid(const G4VSolid &)=0
virtual void AddCompound(const G4THitsMap< G4double > &)=0
virtual void AddCompound(const G4THitsMap< G4StatDouble > &)=0
virtual void AddSolid(const G4Box &)=0
virtual void EndPrimitives()=0
virtual void AddSolid(const G4Para &)=0
virtual void AddSolid(const G4TessellatedSolid &)=0
virtual void AddPrimitive(const G4Circle &)=0
virtual void AddSolid(const G4Polycone &)=0
virtual void AddSolid(const G4Ellipsoid &)=0
virtual ~G4VGraphicsScene()
virtual void AddSolid(const G4Trap &)=0
virtual void AddSolid(const G4Sphere &)=0
virtual void PreAddSolid(const G4Transform3D &objectTransformation, const G4VisAttributes &visAttribs)=0
virtual void AddSolid(const G4Torus &)=0
Definition: G4VHit.hh:48