Unified Messaging Subsystem
[supertux.git] / src / video / color.hpp
1 #ifndef __COLOR_HPP__
2 #define __COLOR_HPP__
3
4 #include <vector>
5 #include "msg.hpp"
6
7 class Color
8 {
9 public:
10   Color()
11     : red(0), green(0), blue(0), alpha(1.0)
12   { }
13   Color(float red, float green, float blue, float alpha = 1.0)
14     : red(red), green(green), blue(blue), alpha(alpha)
15   {
16 #ifdef DEBUG
17     check_color_ranges();
18 #endif
19   }
20   Color(const std::vector<float>& vals)
21   {
22     red = vals[0];
23     green = vals[1];
24     blue = vals[2];
25     if(vals.size() > 3)
26       alpha = vals[3];
27     else
28       alpha = 1.0;
29 #ifdef DEBUG
30     check_color_ranges();
31 #endif
32   }
33
34   void check_color_ranges()
35   {
36     if(red < 0 || red > 1.0 || green < 0 || green > 1.0
37             || blue < 0 || blue > 1.0
38             || alpha < 0 || alpha > 1.0)
39       msg_warning("color value out of range: " << red << ", " << green << ", " << blue << ", " << alpha);
40   }
41
42   float red, green, blue, alpha;
43 };
44
45 #endif
46