Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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