00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef G4MODELCOLOURMAP_HH
00034 #define G4MODELCOLOURMAP_HH
00035
00036 #include "G4Colour.hh"
00037 #include "G4String.hh"
00038 #include <map>
00039
00040 template <typename T>
00041 class G4ModelColourMap {
00042
00043 public:
00044
00045 G4ModelColourMap();
00046
00047 virtual ~G4ModelColourMap();
00048
00049
00050 void Set(const T&, const G4Colour&);
00051 void Set(const T&, const G4String&);
00052 G4Colour& operator[](const T& quantity);
00053
00054
00055 bool GetColour(const T&, G4Colour&) const;
00056 void Print(std::ostream& ostr) const;
00057
00058 private:
00059
00060
00061 std::map<T, G4Colour> fMap;
00062
00063 };
00064
00065 template <typename T>
00066 G4Colour&
00067 G4ModelColourMap<T>::operator[](const T& quantity) {return fMap[quantity];}
00068
00069 template <typename T>
00070 G4ModelColourMap<T>::G4ModelColourMap() {}
00071
00072 template <typename T>
00073 G4ModelColourMap<T>::~G4ModelColourMap() {}
00074
00075 template <typename T>
00076 void
00077 G4ModelColourMap<T>::Set(const T& quantity, const G4String& colour)
00078 {
00079 G4Colour myColour;
00080
00081
00082 if (!G4Colour::GetColour(colour, myColour)) {
00083 G4ExceptionDescription ed;
00084 ed << "G4Colour with key "<<colour<<" does not exist ";
00085 G4Exception
00086 ("G4ColourMap::Set(Charge charge, const G4String& colour)",
00087 "modeling0108", JustWarning, ed);
00088 return;
00089 }
00090
00091
00092
00093 Set(quantity, myColour);
00094 }
00095
00096 template <typename T>
00097 void
00098 G4ModelColourMap<T>::Set(const T& quantity, const G4Colour& colour)
00099 {
00100 fMap[quantity] = colour;
00101 }
00102
00103 template <typename T>
00104 bool
00105 G4ModelColourMap<T>::GetColour(const T& quantity, G4Colour& colour) const
00106 {
00107 typename std::map<T, G4Colour>::const_iterator iter = fMap.find(quantity);
00108
00109 if (iter != fMap.end()) {
00110 colour = iter->second;
00111 return true;
00112 }
00113
00114 return false;
00115 }
00116
00117 template <typename T>
00118 void
00119 G4ModelColourMap<T>::Print(std::ostream& ostr) const
00120 {
00121 typename std::map<T, G4Colour>::const_iterator iter = fMap.begin();
00122
00123 while (iter != fMap.end()) {
00124 ostr<< iter->first <<" : "<< iter->second <<G4endl;
00125 iter++;
00126 }
00127 }
00128 #endif