src/rcrt/RGBColor.cpp

Go to the documentation of this file.
00001 #include "RGBColor.h"
00002 
00003 namespace rcrt
00004 {
00005 
00006 
00007 RGBColor::RGBColor(float c)
00008 {
00009         values[0] = values[1] = values[2] = c;
00010 }
00011 
00012 RGBColor::RGBColor(float r, float g, float b)
00013 {
00014         values[0] = r;
00015         values[1] = g;
00016         values[2] = b;
00017 }
00018 
00019 RGBColor::RGBColor(const RGBColor& col)
00020 {
00021         assign(col);
00022 }
00023 
00024 RGBColor::~RGBColor()
00025 {
00026 }
00027 
00028 void RGBColor::assign(const RGBColor& col)
00029 {
00030         if(&col != this){
00031                 values[0] = col.values[0];
00032                 values[1] = col.values[1];
00033                 values[2] = col.values[2];
00034         }
00035 }
00036 
00037 const RGBColor& RGBColor::operator= (const RGBColor& col)
00038 {
00039         assign(col);
00040         
00041         return *this;
00042 }
00043 
00044 RGBColor RGBColor::operator+ (const RGBColor& col) const
00045 {
00046         return RGBColor(values[0]+col.values[0],values[1]+col.values[1],values[2]+col.values[2]);
00047 }
00048 
00049 RGBColor RGBColor::operator- (const RGBColor& col) const
00050 {
00051         return RGBColor(values[0]-col.values[0],values[1]-col.values[1],values[2]-col.values[2]);
00052 }
00053 
00054 RGBColor RGBColor::operator* (float f) const
00055 {
00056         return RGBColor(values[0]*f,values[1]*f,values[2]*f);
00057 }
00058 
00059 RGBColor RGBColor::operator/ (float f) const
00060 {
00061         float g = 1/f;
00062         return RGBColor(values[0]*g,values[1]*g,values[2]*g);
00063 }
00064 
00065 RGBColor RGBColor::operator* (const RGBColor& col) const
00066 {
00067         return RGBColor(values[0]*col.values[0],
00068                         values[1]*col.values[1],
00069                         values[2]*col.values[2]);
00070 }
00071 
00072 bool RGBColor::operator== (const RGBColor& col) const
00073 {
00074         return values[0] == col.values[0] && values[1] == col.values[1]
00075                         && values[2] == col.values[2];
00076 }
00077 
00078 float RGBColor::r() const
00079 {
00080         return values[0];
00081 }
00082 
00083 float RGBColor::g() const
00084 {
00085         return values[1];
00086 }
00087 
00088 float RGBColor::b() const
00089 {
00090         return values[2];
00091 }
00092 
00093 float RGBColor::avg() const
00094 {
00095         return (values[0]+values[1]+values[2])/3;
00096 }
00097 
00098 float RGBColor::sum() const
00099 {
00100         return values[0]+values[1]+values[2];
00101 }
00102 
00103 RGBColor RGBColor::clamped() const
00104 {
00105         return RGBColor(values[0] < 0 ? 0 : (values[0] > 1) ? 1 : values[0],
00106                         values[1] < 0 ? 0 : (values[1] > 1) ? 1 : values[1],
00107                         values[2] < 0 ? 0 : (values[2] > 1) ? 1 : values[2]
00108                         );
00109 }
00110 
00111 const float& RGBColor::max() const
00112 {
00113         return std::max(std::max(values[0],values[1]),values[2]);
00114 }
00115 
00116 const RGBColor RGBColor::BLACK = RGBColor(0);
00117 const RGBColor RGBColor::WHITE = RGBColor(1);
00118 const RGBColor RGBColor::RED = RGBColor(1,0,0);
00119 const RGBColor RGBColor::GREEN = RGBColor(0,1,0);
00120 const RGBColor RGBColor::BLUE = RGBColor(0,0,1);
00121 
00122 
00123 }

Generated on Thu Jan 31 19:26:19 2008 for RenderingCompetitionRayTracer by  doxygen 1.5.3