From e0d545a6b7df0a8f80bcb20db5f30ead6f27efdd Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 26 Jan 2009 20:08:42 +0000 Subject: [PATCH] added util/Color module, updated Light and PointLight git-svn-id: svn://anubis/fart/trunk@49 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- main/Light.cc | 2 +- main/Light.h | 5 +++-- main/PointLight.cc | 4 ++-- main/PointLight.h | 5 +++-- util/Color.cc | 40 ++++++++++++++++++++++++++++++++++++++++ util/Color.h | 27 +++++++++++++++++++++++++++ 6 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 util/Color.cc create mode 100755 util/Color.h diff --git a/main/Light.cc b/main/Light.cc index a151e30..6fc6b06 100644 --- a/main/Light.cc +++ b/main/Light.cc @@ -2,7 +2,7 @@ #include "Light.h" #include "util/Vector.h" -Light::Light(const Vector & position) +Light::Light(const Vector & position, const Color & color) { m_position = position; } diff --git a/main/Light.h b/main/Light.h index b826db7..1f8b1ee 100644 --- a/main/Light.h +++ b/main/Light.h @@ -3,14 +3,15 @@ #define LIGHT_H LIGHT_H #include "util/Vector.h" +#include "util/Color.h" class Light { public: - Light(const Vector & position); + Light(const Vector & position, const Color & color = Color::white); const Vector & getPosition() const { return m_position; } - private: + protected: Vector m_position; }; diff --git a/main/PointLight.cc b/main/PointLight.cc index 448b277..6df2b64 100755 --- a/main/PointLight.cc +++ b/main/PointLight.cc @@ -1,7 +1,7 @@ #include "PointLight.h" -PointLight::PointLight(const Vector & position) - : Light(position) +PointLight::PointLight(const Vector & position, const Color & color) + : Light(position, color) { } diff --git a/main/PointLight.h b/main/PointLight.h index f5a2e56..cce4e8b 100755 --- a/main/PointLight.h +++ b/main/PointLight.h @@ -3,13 +3,14 @@ #define POINTLIGHT_H POINTLIGHT_H #include "Light.h" +#include "util/Color.h" class PointLight : public Light { public: - PointLight(const Vector & position); + PointLight(const Vector & position, const Color & color = Color::white); - private: + protected: }; #endif diff --git a/util/Color.cc b/util/Color.cc new file mode 100644 index 0000000..17e0065 --- /dev/null +++ b/util/Color.cc @@ -0,0 +1,40 @@ + +#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); + +Color::Color() +{ + r = g = b = 1.0; +} + +Color::Color(double r, double g, double b) +{ + this->r = r; + this->g = g; + this->b = b; +} + +Color Color::operator*(double scale) +{ + return Color(r * scale, g * scale, b * scale); +} + +Color Color::operator/(double scale) +{ + return Color(r / scale, g / scale, b / scale); +} + +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); +} diff --git a/util/Color.h b/util/Color.h new file mode 100755 index 0000000..9359836 --- /dev/null +++ b/util/Color.h @@ -0,0 +1,27 @@ + +#ifndef COLOR_H +#define COLOR_H COLOR_H + +class Color +{ + public: + double r, g, b; + + Color(); + Color(double r, double g, double b); + + Color operator*(double scale); + Color operator/(double scale); + + static const Color black; + static const Color white; + static const Color red; + static const Color green; + static const Color blue; +}; + +Color operator+(const Color & c1, const Color & c2); +Color operator-(const Color & c1, const Color & c2); + +#endif +