aboutsummaryrefslogtreecommitdiff
path: root/src/core/spectrum.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/spectrum.hpp')
-rw-r--r--src/core/spectrum.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/core/spectrum.hpp b/src/core/spectrum.hpp
new file mode 100644
index 0000000..de9355d
--- /dev/null
+++ b/src/core/spectrum.hpp
@@ -0,0 +1,29 @@
+#ifndef SPECTRUM_H
+#define SPECTRUM_H
+
+#include "core/common.hpp"
+
+// Contains a RGB spectrum value
+class Spectrum {
+public:
+ Spectrum(double v = 0);
+ static Spectrum FromRGB(double r, double g, double b);
+
+ Spectrum &operator+=(const Spectrum &o);
+ Spectrum &operator*=(double o);
+ Spectrum operator+(const Spectrum &o) const;
+ Spectrum operator-(const Spectrum &o) const;
+ Spectrum operator*(const Spectrum &o) const;
+ Spectrum operator/(const Spectrum &o) const;
+
+ Spectrum clamp(double low = 0, double high = INFINITY) const;
+
+ double R() const { return c[0]; }
+ double G() const { return c[1]; }
+ double B() const { return c[2]; }
+
+private:
+ double c[3];
+};
+
+#endif