ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VGraphicsSystem.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VGraphicsSystem.cc
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 27th March 1996
30 // Abstract interface class for graphics systems.
31 
32 #include "G4VGraphicsSystem.hh"
33 
34 #include "G4VisManager.hh"
35 
37 
40  fName (name),
41  fDescription ("No description"),
42  fFunctionality (f)
43 {
44  fNicknames.push_back("No Nickname");
45 }
46 
48  const G4String& nickname,
50  fName (name),
51  fDescription ("No description"),
52  fFunctionality (f)
53 {
54  fNicknames.push_back(nickname);
55 }
56 
58  const G4String& nickname,
59  const G4String& description,
61  fName (name),
62  fDescription (description),
63  fFunctionality (f)
64 {
65  fNicknames.push_back(nickname);
66 }
67 
69 {
70  return true;
71 }
72 
73 std::ostream& operator << (std::ostream& os, const G4VGraphicsSystem& gs)
74 {
75  os << "Graphics System: " << gs.GetName ();
76  os << ", nicknames:"; for (const auto& nickname: gs.GetNicknames())
77  {os << ' ' << nickname;}
78  os << "\n Description: " << gs.GetDescription ();
79  os << "\n Functionality: ";
80  switch (gs.GetFunctionality()) {
82  os << "None";
83  break;
85  os << "nonEuclidian, e.g., tree representation of geometry hierarchy.";
86  break;
88  os << "twoD: Simple 2D, e.g., X (no stored structures).";
89  break;
91  os << "twoDStore: 2D with stored structures.";
92  break;
94  os << "threeD: Passive 3D (with stored structures)";
95  break;
97  os << "threeDInteractive: 3D with mouse control and \"pick\" functionality.";
98  break;
100  os << "virtualReality";
101  break;
103  os << "fileWriter";
104  break;
105  default:
106  os << "unknown";
107  break;
108  }
109 
111  const G4SceneHandlerList& scenes = pVMan -> GetAvailableSceneHandlers ();
112  if (pVMan -> GetVerbosity() >= G4VisManager::parameters) {
113  size_t nScenes = scenes.size ();
114  if (nScenes) {
115  G4int nScenesOfThisSystem = 0;
116  for (size_t i = 0; i < nScenes; i++) {
117  if (scenes [i] -> GetGraphicsSystem () == &gs) {
118  nScenesOfThisSystem++;
119  }
120  }
121  if (nScenesOfThisSystem) {
122  os << "\n Its scenes are: ";
123  for (size_t i = 0; i < nScenes; i++) {
124  if (scenes [i] -> GetGraphicsSystem () == &gs) {
125  os << "\n " << *(scenes [i]);
126  }
127  }
128  }
129  else {
130  os << "\n It has no scenes at present.";
131  }
132  }
133  else {
134  os << "\n There are no scenes instantiated at present.";
135  }
136  }
137 
138  return os;
139 }