*
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
struct Color16 {
|
||||
static constexpr std::uint8_t MaxRed = 0x1f;
|
||||
static constexpr std::uint8_t MaxGreen = 0x3f;
|
||||
static constexpr std::uint8_t MaxBlue = 0x1f;
|
||||
|
||||
constexpr Color16() : value(0){}
|
||||
constexpr Color16(std::uint16_t v) : value(v){}
|
||||
|
||||
static constexpr Color16 red() {
|
||||
Color16 result;
|
||||
result.r(MaxRed);
|
||||
result.g(0);
|
||||
result.b(0);
|
||||
return result;
|
||||
}
|
||||
static constexpr Color16 green() {
|
||||
Color16 result;
|
||||
result.r(0);
|
||||
result.g(MaxGreen);
|
||||
result.b(0);
|
||||
return result;
|
||||
}
|
||||
static constexpr Color16 blue() {
|
||||
Color16 result;
|
||||
result.r(0);
|
||||
result.g(0);
|
||||
result.b(MaxBlue);
|
||||
return result;
|
||||
}
|
||||
static constexpr Color16 white() {
|
||||
Color16 result;
|
||||
result.r(MaxRed);
|
||||
result.g(MaxGreen);
|
||||
result.b(MaxBlue);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::uint16_t value;
|
||||
|
||||
constexpr std::uint8_t r() const{
|
||||
return (value & 0xf800) >> 11;
|
||||
}
|
||||
constexpr std::uint8_t g() const{
|
||||
return (value & 0x7e0) >> 5;
|
||||
}
|
||||
constexpr std::uint8_t b() const{
|
||||
return (value & 0x1f);
|
||||
}
|
||||
|
||||
constexpr void r(std::uint8_t v){
|
||||
value = (value & ~0xf800) | (v << 11);
|
||||
}
|
||||
constexpr void g(std::uint8_t v){
|
||||
value = (value & ~0x7e0) | (v << 5);
|
||||
}
|
||||
constexpr void b(std::uint8_t v){
|
||||
value = (value & ~0x1f) | (v);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user