src/rcrt/RGBColor.h

Go to the documentation of this file.
00001 #ifndef RGBCOLOR_H_
00002 #define RGBCOLOR_H_
00003 
00004 #include <iostream>
00005 
00006 namespace rcrt
00007 {
00008 
00009 class RGBColor
00010 {
00011 private:
00012         float values[3];
00013         void assign(const RGBColor& col);
00014         
00015 public:
00016         RGBColor(float c=0);
00017         RGBColor(float r, float g, float b);
00018         RGBColor(const RGBColor& col);  
00019         virtual ~RGBColor();
00020         
00021         const RGBColor& operator= (const RGBColor& col);
00022         
00023         RGBColor operator+ (const RGBColor& col) const;
00024         RGBColor operator- (const RGBColor& col) const;
00025         RGBColor operator* (float f) const;
00026         RGBColor operator* (const RGBColor& col) const;
00027         RGBColor operator/ (float f) const;
00028         bool operator== (const RGBColor& col) const;
00029         
00030         float r() const;
00031         float g() const;
00032         float b() const;
00033         float avg() const;
00034         float sum() const;
00035         RGBColor clamped() const;
00036         const float& max() const;
00037 
00038         static const RGBColor BLACK;
00039         static const RGBColor WHITE;
00040         static const RGBColor RED;
00041         static const RGBColor GREEN;
00042         static const RGBColor BLUE;
00043 };
00044 
00045 inline std::ostream& operator<<(std::ostream& o, const RGBColor& c)
00046 {
00047         o << "RGB(" << c.r() << "," << c.g() << "," << c.b() << ")";
00048         return o;
00049 }
00050 
00051 inline RGBColor operator-(const float& f, const RGBColor& c)
00052 {
00053         return RGBColor(f-c.r(),f-c.g(),f-c.b());
00054 }
00055 
00056 }
00057 
00058 #endif /*RGBCOLOR_H_*/

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