Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4VisAttributes.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$
28//
29//
30// John Allison 23rd October 1996
31
32#include "G4VisAttributes.hh"
33
34#include "G4AttValue.hh"
35#include "G4AttDef.hh"
36
38fVisible (va.fVisible),
39fDaughtersInvisible (va.fDaughtersInvisible),
40fColour (va.fColour),
41fLineStyle (va.fLineStyle),
42fLineWidth (va.fLineWidth),
43fForceDrawingStyle (va.fForceDrawingStyle),
44fForcedStyle (va.fForcedStyle),
45fForceAuxEdgeVisible (va.fForceAuxEdgeVisible),
46fForcedLineSegmentsPerCircle (va.fForcedLineSegmentsPerCircle),
47fStartTime (va.fStartTime),
48fEndTime (va.fEndTime),
49// AttValues are created afresh for each object (using the
50// CreateAttValues message), but deletion is the responsibility of
51// the creator. So just copy pointer.
52fAttValues (va.fAttValues),
53// AttDefs, if any, belong to the object from which they were obtained
54// (with a GetAttDefs message), so just copy pointer.
55fAttDefs (va.fAttDefs)
56{}
57
59fVisible (true),
60fDaughtersInvisible (false),
61fColour (G4Colour ()),
62fLineStyle (unbroken),
63fLineWidth (1.),
64fForceDrawingStyle (false),
65fForcedStyle (wireframe),
66fForceAuxEdgeVisible (false),
67fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
68fStartTime (-DBL_MAX),
69fEndTime (DBL_MAX),
70fAttValues (0),
71fAttDefs (0)
72{}
73
75fVisible (visibility),
76fDaughtersInvisible (false),
77fColour (G4Colour ()),
78fLineStyle (unbroken),
79fLineWidth (1.),
80fForceDrawingStyle (false),
81fForcedStyle (wireframe),
82fForceAuxEdgeVisible (false),
83fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
84fStartTime (-DBL_MAX),
85fEndTime (DBL_MAX),
86fAttValues (0),
87fAttDefs (0)
88{}
89
91fVisible (true),
92fDaughtersInvisible (false),
93fColour (colour),
94fLineStyle (unbroken),
95fLineWidth (1.),
96fForceDrawingStyle (false),
97fForcedStyle (wireframe),
98fForceAuxEdgeVisible (false),
99fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
100fStartTime (-DBL_MAX),
101fEndTime (DBL_MAX),
102fAttValues (0),
103fAttDefs (0)
104{}
105
107 const G4Colour& colour):
108fVisible (visibility),
109fDaughtersInvisible (false),
110fColour (colour),
111fLineStyle (unbroken),
112fLineWidth (1.),
113fForceDrawingStyle (false),
114fForcedStyle (wireframe),
115fForceAuxEdgeVisible (false),
116fForcedLineSegmentsPerCircle (0), // <=0 means not forced.
117fStartTime (-DBL_MAX),
118fEndTime (DBL_MAX),
119fAttValues (0),
120fAttDefs (0)
121{}
122
124{
125}
126
128{
129 if (&rhs == this) return *this;
130 fVisible = rhs.fVisible;
131 fDaughtersInvisible = rhs.fDaughtersInvisible;
132 fColour = rhs.fColour;
133 fLineStyle = rhs.fLineStyle;
134 fLineWidth = rhs.fLineWidth;
135 fForceDrawingStyle = rhs.fForceDrawingStyle;
136 fForcedStyle = rhs.fForcedStyle;
137 fForceAuxEdgeVisible = rhs.fForceAuxEdgeVisible;
138 fForcedLineSegmentsPerCircle = rhs.fForcedLineSegmentsPerCircle;
139 fStartTime = rhs.fStartTime;
140 fEndTime = rhs.fEndTime;
141 // AttValues are created afresh for each object (using the
142 // CreateAttValues message), but deletion is the responsibility of
143 // the creator. So just copy pointer.
144 fAttValues = rhs.fAttValues;
145 // AttDefs, if any, belong to the object from which they were obtained
146 // (with a GetAttDefs message), so just copy pointer.
147 fAttDefs = rhs.fAttDefs;
148 return *this;
149}
150
152
153const std::vector<G4AttValue>* G4VisAttributes::CreateAttValues () const {
154 // Create an expendable copy on the heap...
155 return new std::vector<G4AttValue>(*fAttValues);
156}
157
159 const G4int nSegmentsMin = 12;
160 if (nSegments > 0 && nSegments < nSegmentsMin) {
161 nSegments = nSegmentsMin;
162 G4cout <<
163 "G4VisAttributes::SetForcedLineSegmentsPerCircle: attempt to set the"
164 "\nnumber of line segements per circle < " << nSegmentsMin
165 << "; forced to " << nSegments << G4endl;
166 }
167 fForcedLineSegmentsPerCircle = nSegments;
168}
169
170std::ostream& operator << (std::ostream& os, const G4VisAttributes& a) {
171
172 os << "G4VisAttributes: ";
173 if (&a){
174 if (!a.fVisible) os << "in";
175 os << "visible, daughters ";
176 if (a.fDaughtersInvisible) os << "in";
177 os << "visible, colour: " << a.fColour;
178 os << "\n linestyle: ";
179 switch (a.fLineStyle) {
181 os << "solid"; break;
183 os << "dashed"; break;
184 case G4VisAttributes::dotted: os << "dotted"; break;
185 default: os << "unrecognised"; break;
186 }
187 os << ", line width: " << a.fLineWidth;
188 os << "\n drawing style: ";
189 if (a.fForceDrawingStyle) {
190 os << "forced to: ";
191 switch (a.fForcedStyle) {
193 os << "wireframe"; break;
195 os << "solid"; break;
196 default: os << "unrecognised"; break;
197 }
198 }
199 else {
200 os << "not forced";
201 }
202 os << ", auxiliary edge visibility: ";
203 if (!a.fForceAuxEdgeVisible) {
204 os << "not ";
205 }
206 os << "forced";
207 os << "\n line segments per circle: ";
208 if (a.fForcedLineSegmentsPerCircle > 0) {
209 os << "forced to " << a.fForcedLineSegmentsPerCircle;
210 } else {
211 os << "not forced.";
212 }
213 os << "\n time range: (" << a.fStartTime << ',' << a.fEndTime << ')';
214 os << "\n G4AttValue pointer is ";
215 if (a.fAttValues) {
216 os << "non-";
217 }
218 os << "zero";
219 os << ", G4AttDef pointer is ";
220 if (a.fAttDefs) {
221 os << "non-";
222 }
223 os << "zero";
224 }
225 else os << " zero G4VisAttributes pointer";
226 return os;
227}
228
230
231 if (
232 (fVisible != a.fVisible) ||
233 (fDaughtersInvisible != a.fDaughtersInvisible) ||
234 (fColour != a.fColour) ||
235 (fLineStyle != a.fLineStyle) ||
236 (fLineWidth != a.fLineWidth) ||
237 (fForceDrawingStyle != a.fForceDrawingStyle) ||
238 (fForceAuxEdgeVisible!= a.fForceAuxEdgeVisible)||
239 (fForcedLineSegmentsPerCircle != a.fForcedLineSegmentsPerCircle) ||
240 (fStartTime != a.fStartTime) ||
241 (fEndTime != a.fEndTime) ||
242 (fAttValues != a.fAttValues) ||
243 (fAttDefs != a.fAttDefs)
244 )
245 return true;
246
247 if (fForceDrawingStyle) {
248 if (fForcedStyle != a.fForcedStyle) return true;
249 }
250
251 return false;
252}
253
256}
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
std::ostream & operator<<(std::ostream &os, const G4VisAttributes &a)
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
const std::vector< G4AttValue > * CreateAttValues() const
G4bool operator!=(const G4VisAttributes &a) const
void SetForceLineSegmentsPerCircle(G4int nSegments)
G4VisAttributes & operator=(const G4VisAttributes &)
static const G4VisAttributes Invisible
G4bool operator==(const G4VisAttributes &a) const
#define DBL_MAX
Definition: templates.hh:83