mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-10 19:22:10 +08:00
85 lines
1.4 KiB
C++
85 lines
1.4 KiB
C++
#ifndef COLOR_H
|
|
#define COLOR_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
class Color
|
|
{
|
|
public:
|
|
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);
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
unsigned char _color[4];
|
|
};
|
|
|
|
|
|
#endif |