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
G4VisAttributes.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//
28//
29// John Allison 23rd October 1996
30
31// Class Description:
32// Visualization attributes are a set of information associated with the
33// visualizable objects. This information is necessary only for
34// visualization, and is not included in geometrical information such
35// as shapes, position, and orientation.
36// A typical example of a visualization attribute is "colour".
37// For example, in visualizing a box, the Visualization Manager must know
38// its colour. If an object to be visualized has not been assigned a set of
39// visualization attributes, then a proper default set is used
40// automatically. A set of visualization attributes is held by an
41// instance of class G4VisAttributes defined in the graphics_reps
42// category. The followings are commonly-used attributes:
43// - visibility
44// - visibility of daughters
45// - force style
46// - force auxiliary edge visibility
47// - force line segments per circle
48// - colour
49// Class Description - End:
50
51
52#ifndef __G4VISATTRIBUTES_HH__
53#define __G4VISATTRIBUTES_HH__
54
55#include "globals.hh"
56#include <vector>
57#include <map>
58
59#include "graphics_reps_defs.hh"
60
61#include "G4Colour.hh"
62#include "G4Color.hh"
63
64class G4AttValue;
65class G4AttDef;
66
68
70
71 friend std::ostream& operator << (std::ostream& os, const G4VisAttributes& a);
72
73public: // With description
74
77
79 G4VisAttributes (G4bool visibility);
80 G4VisAttributes (const G4Colour& colour);
81 G4VisAttributes (G4bool visibility, const G4Colour& colour);
82 G4VisAttributes (const G4VisAttributes&) = default;
83 ~G4VisAttributes () = default;
85
86 static const G4VisAttributes& GetInvisible();
87
88 G4bool operator != (const G4VisAttributes& a) const;
89 G4bool operator == (const G4VisAttributes& a) const;
90
91 void SetVisibility (G4bool = true);
93 void SetColour (const G4Colour&);
94 void SetColor (const G4Color&);
95 void SetColour (G4double red, G4double green, G4double blue,
96 G4double alpha = 1.);
97 void SetColor (G4double red, G4double green, G4double blue,
98 G4double alpha = 1.);
101 void SetForceWireframe (G4bool = true);
102 void SetForceSolid (G4bool = true);
103 void SetForceCloud (G4bool = true);
104 void SetForceNumberOfCloudPoints (G4int nPoints);
105 // nPoints <= 0 means under control of viewer
106 void SetForceAuxEdgeVisible (G4bool = true);
107 void SetForceLineSegmentsPerCircle (G4int nSegments);
108 // Allows choice of circle approximation. A circle of 360 degrees
109 // will be composed of nSegments line segments. If your solid has
110 // curves of D degrees that you need to divide into N segments,
111 // specify nSegments = N * 360 / D.
114 void SetAttValues (const std::vector<G4AttValue>*);
115 void SetAttDefs (const std::map<G4String,G4AttDef>*);
116
119 const G4Colour& GetColour () const;
120 const G4Color& GetColor () const;
133 // Returns an expendable copy of the G4AttValues...
134 const std::vector<G4AttValue>* CreateAttValues () const;
135 // Returns the orginal long life G4AttDefs...
136 const std::map<G4String,G4AttDef>* GetAttDefs () const;
137
138 static constexpr G4int fMinLineSegmentsPerCircle = 3;
139 // Minumum number of sides per circle
140
141 static constexpr G4double fVeryLongTime = 1.e100 * CLHEP::ns;
142 // About 1.e75 billion years!! Used as default for start and end time.
143
144private:
145
146 G4bool fVisible; // Visibility flag
147 G4bool fDaughtersInvisible; // Make daughters invsibile.
148 G4Colour fColour;
149 LineStyle fLineStyle;
150 G4double fLineWidth; // Units of "normal" device linewidth, e.g.,
151 // pixels for screen, 0.1 mm for paper.
152 G4bool fForceDrawingStyle; // To switch on forced drawing style.
153 ForcedDrawingStyle fForcedStyle; // Value of forced drawing style.
154 G4int fForcedNumberOfCloudPoints; // Number of points used for cloud style.
155 // <=0 means take viewer default
156 G4bool fForceAuxEdgeVisible; // To switch on a forced auxiliary edge mode.
157 G4bool fForcedAuxEdgeVisible; // Whether aux edges are visible or not.
158 G4int fForcedLineSegmentsPerCircle; // Forced lines segments per
159 // circle. <=0 means not forced.
160 G4double fStartTime, fEndTime; // Time range.
161 const std::vector<G4AttValue>* fAttValues; // For picking, etc.
162 const std::map<G4String,G4AttDef>* fAttDefs; // Corresponding definitions.
163};
164
165#include "G4VisAttributes.icc"
166
167#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const std::map< G4String, G4AttDef > * GetAttDefs() const
G4bool IsForceLineSegmentsPerCircle() const
G4int GetForcedNumberOfCloudPoints() const
G4double GetLineWidth() const
const G4Color & GetColor() const
G4double GetStartTime() const
G4bool IsDaughtersInvisible() const
void SetColour(const G4Colour &)
void SetColour(G4double red, G4double green, G4double blue, G4double alpha=1.)
void SetVisibility(G4bool=true)
void SetForceAuxEdgeVisible(G4bool=true)
friend std::ostream & operator<<(std::ostream &os, const G4VisAttributes &a)
void SetForceCloud(G4bool=true)
G4int GetForcedLineSegmentsPerCircle() const
void SetForceWireframe(G4bool=true)
void SetLineWidth(G4double)
void SetAttValues(const std::vector< G4AttValue > *)
LineStyle GetLineStyle() const
G4VisAttributes(const G4VisAttributes &)=default
const std::vector< G4AttValue > * CreateAttValues() const
void SetAttDefs(const std::map< G4String, G4AttDef > *)
const G4Colour & GetColour() const
G4bool IsVisible() const
G4bool IsForceAuxEdgeVisible() const
static constexpr G4int fMinLineSegmentsPerCircle
static constexpr G4double fVeryLongTime
G4bool IsForcedAuxEdgeVisible() const
static const G4VisAttributes & GetInvisible()
G4bool operator!=(const G4VisAttributes &a) const
ForcedDrawingStyle GetForcedDrawingStyle() const
static G4int GetMinLineSegmentsPerCircle()
void SetEndTime(G4double)
void SetForceSolid(G4bool=true)
void SetColor(G4double red, G4double green, G4double blue, G4double alpha=1.)
void SetLineStyle(LineStyle)
void SetForceLineSegmentsPerCircle(G4int nSegments)
G4VisAttributes & operator=(const G4VisAttributes &)
void SetDaughtersInvisible(G4bool=true)
G4bool operator==(const G4VisAttributes &a) const
void SetStartTime(G4double)
void SetForceNumberOfCloudPoints(G4int nPoints)
G4double GetEndTime() const
~G4VisAttributes()=default
G4bool IsForceDrawingStyle() const
void SetColor(const G4Color &)