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
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
static G4Colour Blue()
Definition: G4Colour.hh:163
void SetRed(G4double)
Definition: G4Colour.cc:52
static G4Colour Gray()
Definition: G4Colour.hh:157
friend std::ostream & operator<<(std::ostream &, const G4Colour &)
Definition: G4Colour.cc:80
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