diff options
Diffstat (limited to 'public/Color.h')
| -rw-r--r-- | public/Color.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/public/Color.h b/public/Color.h new file mode 100644 index 0000000..e800a37 --- /dev/null +++ b/public/Color.h @@ -0,0 +1,103 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef COLOR_H +#define COLOR_H + +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------- +// Purpose: Basic handler for an rgb set of colors +// This class is fully inline +//----------------------------------------------------------------------------- +class Color +{ +public: + // constructors + Color() + { + *((int *)this) = 0; + } + Color(int _r,int _g,int _b) + { + SetColor(_r, _g, _b, 0); + } + Color(int _r,int _g,int _b,int _a) + { + SetColor(_r, _g, _b, _a); + } + + // set the color + // r - red component (0-255) + // g - green component (0-255) + // b - blue component (0-255) + // a - alpha component, controls transparency (0 - transparent, 255 - opaque); + void SetColor(int _r, int _g, int _b, int _a = 0) + { + _color[0] = (unsigned char)_r; + _color[1] = (unsigned char)_g; + _color[2] = (unsigned char)_b; + _color[3] = (unsigned char)_a; + } + + void GetColor(int &_r, int &_g, int &_b, int &_a) const + { + _r = _color[0]; + _g = _color[1]; + _b = _color[2]; + _a = _color[3]; + } + + void SetRawColor( int color32 ) + { + *((int *)this) = color32; + } + + int GetRawColor() const + { + return *((int *)this); + } + + inline int r() const { return _color[0]; } + inline int g() const { return _color[1]; } + inline int b() const { return _color[2]; } + inline int a() const { return _color[3]; } + + unsigned char &operator[](int index) + { + return _color[index]; + } + + const unsigned char &operator[](int index) const + { + return _color[index]; + } + + bool operator == (const Color &rhs) const + { + return ( *((int *)this) == *((int *)&rhs) ); + } + + bool operator != (const Color &rhs) const + { + return !(operator==(rhs)); + } + + Color &operator=( const Color &rhs ) + { + SetRawColor( rhs.GetRawColor() ); + return *this; + } + +private: + unsigned char _color[4]; +}; + + +#endif // COLOR_H |