/* math/color.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ // project headers #include "math/color.h" namespace math { Color::Color() { _r = _g = _b = 0.0f; _a = 1.0f; } Color::Color(const float red, const float green , const float blue , const float alpha) { _r = red; _g = green; _b = blue; _a = alpha; } Color::Color(const float grey, const float alpha) { _r = _g = _b = grey; _a = alpha; } Color::Color(const Color &other) { this->operator=(other); } const Color & Color::operator=(const Color &other) { this->_r = other._r; this->_g = other._g; this->_b = other._b; this->_a = other._a; return (*this); } void Color::normalize() { float tmp = _r; if (_g > tmp) tmp = _g; if (_b > tmp) tmp = _b; if (tmp > 1) { _r /= tmp; _g /= tmp; _b /= tmp; } } float Color::red() const { return _r; } float Color::green() const { return _g; } float Color::blue() const { return _b; } float Color::alpha() const { return _a; } Color Color::operator*(float scalar) const { return Color(red()*scalar, green()*scalar, blue()*scalar, alpha()); } Color operator*(float scalar, const Color& color) { return color * scalar; } std::ostream &operator<<(std::ostream &os, const Color &c) { os << c.red() << " " << c.green() << " " << c.blue() << " " << c.alpha(); return os; } } // namespace math