00001
00002 #ifndef VISSVC_COLOR_H
00003 #define VISSVC_COLOR_H 1
00004
00005
00006
00019 class Color {
00020 public:
00022 Color ();
00023 Color (float R, float G, float B);
00024 Color (float R, float G, float B, float A);
00025 Color (const float [4]);
00026
00027 const float* value() const;
00028 const float red () const;
00029 const float green () const;
00030 const float blue () const;
00031 const float alpha () const;
00032
00033 bool isValid() const;
00034 bool operator== (const Color& c) const;
00035 bool operator!= (const Color& c) const;
00036
00037 protected:
00038 float vec[4];
00039 };
00040
00041 inline Color::Color () {
00042 vec[0] = 2;
00043 vec[1] = 2;
00044 vec[2] = 2;
00045 vec[3] = 2;
00046 }
00047
00048 inline Color::Color (float R, float G, float B) {
00049 vec[0] = R;
00050 vec[1] = G;
00051 vec[2] = B;
00052 vec[3] = 0;
00053 }
00054
00055 inline Color::Color (float R, float G, float B, float A) {
00056 vec[0] = R;
00057 vec[1] = G;
00058 vec[2] = B;
00059 vec[3] = A;
00060 }
00061
00062 inline const float* Color::value() const {
00063 return vec;
00064 }
00065
00066 inline const float Color::red () const {
00067 return vec[0];
00068 }
00069
00070 inline const float Color::green () const {
00071 return vec[1];
00072 }
00073
00074 inline const float Color::blue () const {
00075 return vec[2];
00076 }
00077
00078 inline const float Color::alpha () const {
00079 return vec[3];
00080 }
00081
00082 inline bool Color::isValid() const {
00083 return vec[0] >= 0 && vec[0] <= 1 &&
00084 vec[1] >= 0 && vec[1] <= 1 &&
00085 vec[2] >= 0 && vec[2] <= 1 &&
00086 vec[3] >= 0 && vec[3] <= 1;
00087 }
00088
00089 inline bool Color::operator==(const Color& c) const {
00090 return vec[0] == c.red() && vec[1] == c.green() &&
00091 vec[2] == c.blue() && vec[3] == c.alpha();
00092 }
00093
00094 inline bool Color::operator!= (const Color& c) const {
00095 return !this->operator==(c);
00096 }
00097
00098 #endif // VISSVC_COLOR_H