Colour.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCORECOLOUR_H
00029 #define ROCKETCORECOLOUR_H
00030
00031 #include <Rocket/Core/Header.h>
00032
00033 namespace Rocket {
00034 namespace Core {
00035
00042 template < typename ColourType, int AlphaDefault >
00043 class Colour
00044 {
00045 public:
00047 inline Colour();
00053 inline Colour(ColourType red, ColourType green, ColourType blue, ColourType alpha = AlphaDefault);
00054
00058 inline Colour operator+(const Colour& rhs) const;
00062 inline Colour operator-(const Colour& rhs) const;
00066 Colour operator*(const Colour& rhs) const;
00070 inline Colour operator*(float rhs) const;
00074 inline Colour operator/(float rhs) const;
00075
00078 inline void operator+=(const Colour& rhs);
00081 inline void operator-=(const Colour& rhs);
00085 void operator*=(const Colour& rhs);
00088 inline void operator*=(float rhs);
00091 inline void operator/=(float rhs);
00092
00096 inline bool operator==(const Colour& rhs) { return red == rhs.red && green == rhs.green && blue == rhs.blue && alpha == rhs.alpha; }
00100 inline bool operator!=(const Colour& rhs) { return red != rhs.red || green != rhs.green || blue != rhs.blue || alpha != rhs.alpha; }
00101
00104 inline operator const ColourType*() const { return &red; }
00107 inline operator ColourType*() { return &red; }
00108
00109 ColourType red, green, blue, alpha;
00110 };
00111
00112 }
00113 }
00114
00115
00116
00117 namespace Rocket {
00118 namespace Core {
00119
00120 #include "Colour.inl"
00121
00122 }
00123 }
00124
00125 #endif