Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4Colour.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 20th October 1996
30
31// Class Description:
32// Class G4Colour has 4 fields, which represent the RGBA (red, green, blue,
33// and alpha) components of colour. Each component takes a value between
34// 0 and 1. If an irrelevant value, i.e., a value less than 0 or greater
35// than 1, is given as an argument of the constructor, such a value is
36// automatically clipped to 0 or 1. Alpha is opacity (1 = opaque).
37//
38// A G4Colour object is instantiated by giving red, green, and blue
39// components to its constructor, i.e.,
40//
41// G4Colour::G4Colour ( G4double r = 1.0,
42// G4double g = 1.0,
43// G4double b = 1.0,
44// G4double a = 1.0);
45// // 0<=red, green, blue <= 1.0
46//
47// The default value of each component is 1.0. That is to say, the default
48// colour is "white". For example, colours which are often used can be
49// instantiated as follows:
50//
51// G4Colour white () ; // white
52// G4Colour white (1.0, 1.0, 1.0) ; // white
53// G4Colour gray (0.5, 0.5, 0.5) ; // gray
54// G4Colour black (0.0, 0.0, 0.0) ; // black
55// G4Colour brown (0.45,0.25,0.0) ; // G4 logo brown
56// G4Colour red (1.0, 0.0, 0.0) ; // red
57// G4Colour green (0.0, 1.0, 0.0) ; // green
58// G4Colour blue (0.0, 0.0, 1.0) ; // blue
59// G4Colour cyan (0.0, 1.0, 1.0) ; // cyan
60// G4Colour magenta (1.0, 0.0, 1.0) ; // magenta
61// G4Colour yellow (1.0, 1.0, 0.0) ; // yellow
62//
63// For convenience, static member functions are also defined for the above colours.
64//
65// After instantiation of a G4Colour object, you can access to its components
66// with the following access functions:
67//
68// G4double G4Colour::GetRed () const ; // Get the red component.
69// G4double G4Colour::GetGreen () const ; // Get the green component.
70// G4double G4Colour::GetBlue () const ; // Get the blue component.
71//
72// Class Description - End:
73
74#ifndef G4COLOUR_HH
75#define G4COLOUR_HH
76
77#include "globals.hh"
78#include "G4ThreeVector.hh"
79#include <iostream>
80#include <map>
81
82class G4Colour {
83
84 friend std::ostream& operator << (std::ostream&, const G4Colour&);
85
86public: // With description
87
88 G4Colour (G4double r_ = 1., G4double g_ = 1., G4double b_ = 1.,
89 G4double a_ = 1.);
90
92 // Converts the components of the 3-vector into red, green, blue.
93 // The opacity, alpha = 1.
94
95 operator G4ThreeVector();
96 // Converts red, green, blue into the components of a 3-vector.
97
98 G4bool operator != (const G4Colour& c) const;
99 G4bool operator == (const G4Colour& c) const {return !(operator != (c));}
100
101 G4Colour& operator += (const G4Colour& rhs) {*this = rhs; return *this;}
102 // Note: This is required by RayTracer in its use of G4THitsMap.
103 // Adding colours, without also taking brightness into account, does not make
104 // sense, so let us make it synonymous with operator=, which is, I guess,
105 // equivalent to covering the old colour with the new, like a coat of paint.
106
107 G4double GetRed () const;
108 G4double GetGreen () const;
109 G4double GetBlue () const;
110 G4double GetAlpha () const; // alpha = opacity = 1. - transparency.
111
112 void SetRed (G4double);
113 void SetGreen (G4double);
114 void SetBlue (G4double);
115 void SetAlpha (G4double); // alpha = opacity = 1. - transparency.
116
117 static G4Colour White();
118 static G4Colour Gray();
119 static G4Colour Grey();
120 static G4Colour Black();
121 static G4Colour Brown(); // G4 logo brown
122 static G4Colour Red();
123 static G4Colour Green();
124 static G4Colour Blue();
125 static G4Colour Cyan();
126 static G4Colour Magenta();
127 static G4Colour Yellow();
128
129 static G4bool GetColour(const G4String& key, G4Colour& result);
130 // Get colour for given key, placing it in result.
131 // The key is usually the name of the colour.
132 // The key is not case sensitive.
133 // Returns false if key doesn't exist, leaving result unchanged.
134
135 static void AddToMap(const G4String& key, const G4Colour& colour);
136 // Add user defined colour to colour map with given key. Standard
137 // colours are added to map by default.
138
139 static void InitialiseColourMap();
140 static const std::map<G4String, G4Colour>& GetMap();
141
142 G4bool operator< (const G4Colour& rhs) const;
143
144private:
145 G4double red, green, blue, alpha;
146
147 static std::map<G4String, G4Colour> fColourMap;
148 static G4bool fInitColourMap;
149
150};
151
152inline G4double G4Colour::GetRed () const {return red;}
153inline G4double G4Colour::GetGreen () const {return green;}
154inline G4double G4Colour::GetBlue () const {return blue;}
155inline G4double G4Colour::GetAlpha () const {return alpha;}
156inline G4Colour G4Colour::White() {return G4Colour(1.0, 1.0, 1.0);}
157inline G4Colour G4Colour::Gray() {return G4Colour(0.5, 0.5, 0.5);}
158inline G4Colour G4Colour::Grey() {return G4Colour(0.5, 0.5, 0.5);}
159inline G4Colour G4Colour::Black() {return G4Colour(0.0, 0.0, 0.0);}
160inline G4Colour G4Colour::Brown() {return G4Colour(0.45,0.25,0.0);}
161inline G4Colour G4Colour::Red() {return G4Colour(1.0, 0.0, 0.0);}
162inline G4Colour G4Colour::Green() {return G4Colour(0.0, 1.0, 0.0);}
163inline G4Colour G4Colour::Blue() {return G4Colour(0.0, 0.0, 1.0);}
164inline G4Colour G4Colour::Cyan() {return G4Colour(0.0, 1.0, 1.0);}
165inline G4Colour G4Colour::Magenta() {return G4Colour(1.0, 0.0, 1.0);}
166inline G4Colour G4Colour::Yellow() {return G4Colour(1.0, 1.0, 0.0);}
167
168#endif
CLHEP::Hep3Vector G4ThreeVector
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
static G4Colour White()
Definition G4Colour.hh:156
static G4bool GetColour(const G4String &key, G4Colour &result)
Definition G4Colour.cc:155
void SetAlpha(G4double)
Definition G4Colour.cc:70
static G4Colour Yellow()
Definition G4Colour.hh:166
static G4Colour Green()
Definition G4Colour.hh:162
static void AddToMap(const G4String &key, const G4Colour &colour)
Definition G4Colour.cc:106
static void InitialiseColourMap()
Definition G4Colour.cc:135
static G4Colour Red()
Definition G4Colour.hh:161
static G4Colour Brown()
Definition G4Colour.hh:160
static G4Colour Grey()
Definition G4Colour.hh:158
G4Colour & operator+=(const G4Colour &rhs)
Definition G4Colour.hh:101
void SetGreen(G4double)
Definition G4Colour.cc:58
static const std::map< G4String, G4Colour > & GetMap()
Definition G4Colour.cc:173
static G4Colour Black()
Definition G4Colour.hh:159
G4bool operator!=(const G4Colour &c) const
Definition G4Colour.cc:96
static G4Colour Magenta()
Definition G4Colour.hh:165
G4double GetBlue() const
Definition G4Colour.hh:154
friend std::ostream & operator<<(std::ostream &, const G4Colour &)
Definition G4Colour.cc:80
static G4Colour Blue()
Definition G4Colour.hh:163
void SetRed(G4double)
Definition G4Colour.cc:52
static G4Colour Gray()
Definition G4Colour.hh:157
G4Colour(G4double r_=1., G4double g_=1., G4double b_=1., G4double a_=1.)
Definition G4Colour.cc:35
void SetBlue(G4double)
Definition G4Colour.cc:64
G4bool operator<(const G4Colour &rhs) const
Definition G4Colour.cc:181
G4double GetAlpha() const
Definition G4Colour.hh:155
G4bool operator==(const G4Colour &c) const
Definition G4Colour.hh:99
G4double GetRed() const
Definition G4Colour.hh:152
G4double GetGreen() const
Definition G4Colour.hh:153
static G4Colour Cyan()
Definition G4Colour.hh:164