17 #ifndef IGNITION_MATH_COLOR_HH_
18 #define IGNITION_MATH_COLOR_HH_
24 #include <ignition/math/config.hh>
30 inline namespace IGNITION_MATH_VERSION_NAMESPACE
35 class IGNITION_MATH_VISIBLE
Color
56 public:
typedef unsigned int RGBA;
60 public:
typedef unsigned int BGRA;
64 public:
typedef unsigned int ARGB;
68 public:
typedef unsigned int ABGR;
78 public:
Color(
const float _r,
const float _g,
const float _b,
79 const float _a = 1.0);
86 public:
virtual ~
Color();
97 public:
void Set(
const float _r = 1,
const float _g = 1,
98 const float _b = 1,
const float _a = 1);
109 public:
void SetFromHSV(
const float _h,
const float _s,
const float _v);
119 public:
void SetFromYUV(
const float _y,
const float _u,
const float _v);
130 public:
float operator[](
const unsigned int _index);
134 public:
RGBA AsRGBA()
const;
138 public:
BGRA AsBGRA()
const;
142 public:
ARGB AsARGB()
const;
146 public:
ABGR AsABGR()
const;
150 public:
void SetFromRGBA(
const RGBA _v);
154 public:
void SetFromBGRA(
const BGRA _v);
158 public:
void SetFromARGB(
const ARGB _v);
162 public:
void SetFromABGR(
const ABGR _v);
167 public:
Color operator+(
const Color &_pt)
const;
172 public:
Color operator+(
const float &_v)
const;
177 public:
const Color &operator+=(
const Color &_pt);
182 public:
Color operator-(
const Color &_pt)
const;
187 public:
Color operator-(
const float &_v)
const;
192 public:
const Color &operator-=(
const Color &_pt);
197 public:
const Color operator/(
const Color &_pt)
const;
202 public:
const Color operator/(
const float &_v)
const;
207 public:
const Color &operator/=(
const Color &_pt);
212 public:
const Color operator*(
const Color &_pt)
const;
217 public:
const Color operator*(
const float &_v)
const;
222 public:
const Color &operator*=(
const Color &_pt);
227 public:
bool operator==(
const Color &_pt)
const;
232 public:
bool operator!=(
const Color &_pt)
const;
235 private:
void Clamp();
244 _out << _pt.r <<
" " << _pt.g <<
" " << _pt.b <<
" " << _pt.a;
251 public:
friend std::istream &operator>> (std::istream &_in,
Color &_pt)
254 _in.setf(std::ios_base::skipws);
255 _in >> _pt.r >> _pt.g >> _pt.b >> _pt.a;
261 public:
float R()
const;
265 public:
float G()
const;
269 public:
float B()
const;
273 public:
float A()
const;
293 public:
void R(
const float _r);
297 public:
void G(
const float _g);
301 public:
void B(
const float _b);
305 public:
void A(
const float _a);
308 private:
float r = 0;
311 private:
float g = 0;
314 private:
float b = 0;
317 private:
float a = 1;