Geant4_10
G4XXXSceneHandler.cc
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 // $Id: G4XXXSceneHandler.cc 66870 2013-01-14 23:38:59Z adotti $
28 //
29 //
30 // John Allison 5th April 2001
31 // A template for a simplest possible graphics driver.
32 //?? Lines or sections marked like this require specialisation for your driver.
33 
34 #include "G4XXXSceneHandler.hh"
35 
36 #include "G4PhysicalVolumeModel.hh"
37 #include "G4LogicalVolumeModel.hh"
38 #include "G4VPhysicalVolume.hh"
39 #include "G4LogicalVolume.hh"
40 #include "G4Polyline.hh"
41 #include "G4Text.hh"
42 #include "G4Circle.hh"
43 #include "G4Square.hh"
44 #include "G4Polyhedron.hh"
45 #include "G4UnitsTable.hh"
46 
48 // Counter for XXX scene handlers.
49 
51  const G4String& name):
52  G4VSceneHandler(system, fSceneIdCount++, name)
53 {}
54 
56 
57 #ifdef G4XXXDEBUG
58 void G4XXXSceneHandler::PrintThings() {
59  G4cout <<
60  " with transformation "
61  << (void*)fpObjectTransformation;
62  if (fpModel) {
63  G4cout << " from " << fpModel->GetCurrentDescription()
64  << " (tag " << fpModel->GetCurrentTag()
65  << ')';
66  } else {
67  G4cout << "(not from a model)";
68  }
69  G4PhysicalVolumeModel* pPVModel =
70  dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
71  if (pPVModel) {
72  G4cout <<
73  "\n current physical volume: "
74  << pPVModel->GetCurrentPV()->GetName() <<
75  "\n current logical volume: "
76 // There might be a problem with the LV pointer if this is a G4LogicalVolumeModel
77  << pPVModel->GetCurrentLV()->GetName() <<
78  "\n current depth of geometry tree: "
79  << pPVModel->GetCurrentDepth();
80  }
81  G4cout << G4endl;
82 }
83 #endif
84 
86 #ifdef G4XXXDEBUG
87  polyline
88 #endif
89 ) {
90 #ifdef G4XXXDEBUG
91  G4cout <<
92  "G4XXXSceneHandler::AddPrimitive(const G4Polyline& polyline) called.\n"
93  << polyline
94  << G4endl;
95  PrintThings();
96 #endif
97  // Get vis attributes - pick up defaults if none.
98  //const G4VisAttributes* pVA =
99  // fpViewer -> GetApplicableVisAttributes (polyline.GetVisAttributes ());
100  //?? Process polyline.
101 }
102 
104 #ifdef G4XXXDEBUG
105  text
106 #endif
107 ) {
108 #ifdef G4XXXDEBUG
109  G4cout <<
110  "G4XXXSceneHandler::AddPrimitive(const G4Text& text) called.\n"
111  << text
112  << G4endl;
113  PrintThings();
114 #endif
115  // Get text colour - special method since default text colour is
116  // determined by the default text vis attributes, which may be
117  // specified independent of default vis attributes of other types of
118  // visible objects.
119  //const G4Colour& c = GetTextColour (text); // Picks up default if none.
120  //?? Process text.
121 }
122 
124 #ifdef G4XXXDEBUG
125  circle
126 #endif
127 ) {
128 #ifdef G4XXXDEBUG
129  G4cout <<
130  "G4XXXSceneHandler::AddPrimitive(const G4Circle& circle) called.\n"
131  << circle
132  << G4endl;
133  MarkerSizeType sizeType;
134  G4double size = GetMarkerSize (circle, sizeType);
135  switch (sizeType) {
136  default:
137  case screen:
138  // Draw in screen coordinates.
139  G4cout << "screen";
140  break;
141  case world:
142  // Draw in world coordinates.
143  G4cout << "world";
144  break;
145  }
146  G4cout << " size: " << size << G4endl;
147  PrintThings();
148 #endif
149  // Get vis attributes - pick up defaults if none.
150  //const G4VisAttributes* pVA =
151  // fpViewer -> GetApplicableVisAttributes (circle.GetVisAttributes ());
152  //?? Process circle.
153 }
154 
156 #ifdef G4XXXDEBUG
157  square
158 #endif
159 ) {
160 #ifdef G4XXXDEBUG
161  G4cout <<
162  "G4XXXSceneHandler::AddPrimitive(const G4Square& square) called.\n"
163  << square
164  << G4endl;
165  MarkerSizeType sizeType;
166  G4double size = GetMarkerSize (square, sizeType);
167  switch (sizeType) {
168  default:
169  case screen:
170  // Draw in screen coordinates.
171  G4cout << "screen";
172  break;
173  case world:
174  // Draw in world coordinates.
175  G4cout << "world";
176  break;
177  }
178  G4cout << " size: " << size << G4endl;
179  PrintThings();
180 #endif
181  // Get vis attributes - pick up defaults if none.
182  //const G4VisAttributes* pVA =
183  // fpViewer -> GetApplicableVisAttributes (square.GetVisAttributes ());
184  //?? Process square.
185 }
186 
188 #ifdef G4XXXDEBUG
189  G4cout <<
190  "G4XXXSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called.\n"
191  << polyhedron
192  << G4endl;
193  PrintThings();
194 #endif
195  //?? Process polyhedron. Here are some ideas...
196  //Assume all facets are convex quadrilaterals.
197  //Draw each G4Facet individually
198 
199  //Get colour, etc..
200  if (polyhedron.GetNoFacets() == 0) return;
201 
202  // Get vis attributes - pick up defaults if none.
203  const G4VisAttributes* pVA =
204  fpViewer -> GetApplicableVisAttributes (polyhedron.GetVisAttributes ());
205 
206  // Get view parameters that the user can force through the vis
207  // attributes, thereby over-riding the current view parameter.
208  G4ViewParameters::DrawingStyle drawing_style = GetDrawingStyle (pVA);
209  //G4bool isAuxEdgeVisible = GetAuxEdgeVisible (pVA);
210 
211  //Get colour, etc..
212  //const G4Colour& c = pVA -> GetColour ();
213 
214  // Initial action depending on drawing style.
215  switch (drawing_style) {
216  case (G4ViewParameters::hsr):
217  {
218  break;
219  }
220  case (G4ViewParameters::hlr):
221  {
222  break;
223  }
225  {
226  break;
227  }
228  default:
229  {
230  break;
231  }
232  }
233 
234  // Loop through all the facets...
235 
236  // Look at G4OpenGLSceneHandler::AddPrimitive(const G4Polyhedron&)
237  // for an example of how to get facets out of a G4Polyhedron,
238  // including how to cope with triangles if that's a problem.
239 }
Definition: G4Text.hh:73
G4String GetName() const
G4VViewer * fpViewer
const XML_Char * name
Definition: expat.h:151
const G4VisAttributes * GetVisAttributes() const
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const
static G4int fSceneIdCount
G4XXXSceneHandler(G4VGraphicsSystem &system, const G4String &name)
virtual G4String GetCurrentTag() const
Definition: G4VModel.cc:49
virtual ~G4XXXSceneHandler()
system("rm -rf dna.root")
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
#define G4endl
Definition: G4ios.hh:61
virtual G4String GetCurrentDescription() const
Definition: G4VModel.cc:54
void AddPrimitive(const G4Polyline &)
double G4double
Definition: G4Types.hh:76
G4LogicalVolume * GetCurrentLV() const
G4VPhysicalVolume * GetCurrentPV() const
G4int GetNoFacets() const