1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-20 20:23:03 +02:00
vcmi/lib/Color.h
Konstantin 3cf303f1c7 vcmi/client: make ColorRGBA constexpr
1. Replace overflowing int3 to ColorRGBA, which is more semantically
   correct
2. Make ColorRGBA constexpr, to make sure than hardcoded colors can
   be initialized in compile time
2023-02-12 19:11:24 +03:00

63 lines
945 B
C++

/*
* Color.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
VCMI_LIB_NAMESPACE_BEGIN
/// An object that represents RGBA color
class ColorRGBA
{
public:
enum : uint8_t
{
ALPHA_OPAQUE = 255,
ALPHA_TRANSPARENT = 0,
};
uint8_t r;
uint8_t g;
uint8_t b;
uint8_t a;
//constructors
constexpr ColorRGBA()
:r(0)
,g(0)
,b(0)
,a(0)
{
}
constexpr ColorRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a)
: r(r)
, g(g)
, b(b)
, a(a)
{}
constexpr ColorRGBA(uint8_t r, uint8_t g, uint8_t b)
: r(r)
, g(g)
, b(b)
, a(ALPHA_OPAQUE)
{}
template <typename Handler>
void serialize(Handler &h, const int version)
{
h & r;
h & g;
h & b;
h & a;
}
};
VCMI_LIB_NAMESPACE_END