80 lines
1.5 KiB
C++
80 lines
1.5 KiB
C++
|
|
#include "Color.h"
|
|
|
|
const Color Color::black = Color(0, 0, 0);
|
|
const Color Color::white = Color(1, 1, 1);
|
|
const Color Color::red = Color(1, 0, 0);
|
|
const Color Color::green = Color(0, 1, 0);
|
|
const Color Color::blue = Color(0, 0, 1);
|
|
const Color Color::yellow = Color(1, 1, 0);
|
|
|
|
Color::Color()
|
|
{
|
|
r = g = b = 0.0;
|
|
}
|
|
|
|
Color::Color(double r, double g, double b)
|
|
{
|
|
this->r = r;
|
|
this->g = g;
|
|
this->b = b;
|
|
}
|
|
|
|
Color::Color(const Vector & v)
|
|
{
|
|
r = v[0];
|
|
g = v[1];
|
|
b = v[2];
|
|
}
|
|
|
|
Color Color::operator*(const Color & other) const
|
|
{
|
|
Color result;
|
|
result.r = r * other.r;
|
|
result.g = g * other.g;
|
|
result.b = b * other.b;
|
|
return result;
|
|
}
|
|
|
|
Color Color::operator*(double scale) const
|
|
{
|
|
return Color(r * scale, g * scale, b * scale);
|
|
}
|
|
|
|
Color Color::operator/(double scale) const
|
|
{
|
|
return Color(r / scale, g / scale, b / scale);
|
|
}
|
|
|
|
Color & Color::operator+=(const Color & other)
|
|
{
|
|
r += other.r;
|
|
g += other.g;
|
|
b += other.b;
|
|
return *this;
|
|
}
|
|
|
|
Color & Color::operator-=(const Color & other)
|
|
{
|
|
r += other.r;
|
|
g += other.g;
|
|
b += other.b;
|
|
return *this;
|
|
}
|
|
|
|
Color operator+(const Color & c1, const Color & c2)
|
|
{
|
|
return Color(c1.r + c2.r, c1.g + c2.g, c1.b + c2.b);
|
|
}
|
|
|
|
Color operator-(const Color & c1, const Color & c2)
|
|
{
|
|
return Color(c1.r - c2.r, c1.g - c2.g, c1.b - c2.b);
|
|
}
|
|
|
|
std::ostream & operator<<(std::ostream & out, const Color & color)
|
|
{
|
|
out << "[" << color.r << ", " << color.g << ", " << color.b << "]";
|
|
return out;
|
|
}
|