17constexpr inline float RgbToHue(
float r,
float g,
float b)
25 float c = h_max - h_min;
27 hue = (g - b) / c + (g < b ? 6 : 0);
29 hue = (b - r) / c + 2;
31 hue = (r - g) / c + 4;
38template<
typename DerivedT>
70 x(v3.
x),
y(v3.
y),
z(v3.
z),
a(1.0f)
74 constexpr color4_base(
float nx,
float ny,
float nz,
float na) :
75 x(nx),
y(ny),
z(nz),
a(na)
80 x(nx),
y(ny),
z(nz),
a(1.0f)
86 a = alpha ? ((col >> 24) & 0xFF) / 255.0f : 1.0f;
87 x = ((col >> 16) & 0xFF) / 255.0f;
88 y = ((col >> 8) & 0xFF) / 255.0f;
89 z = ((col >> 0) & 0xFF) / 255.0f;
96 return ((
float *)
this)[index];
102 constexpr unsigned Pack(
bool Alpha =
true)
const
116 DerivedT col(
static_cast<const DerivedT &
>(*
this));
123 DerivedT col(
static_cast<const DerivedT &
>(*
this));
128 constexpr DerivedT
Multiply(
const DerivedT &Other)
const
130 DerivedT Color(
static_cast<const DerivedT &
>(*
this));
138 template<
typename UnpackT>
144 Result.x = ((Color >> 24) & 0xFF) / 255.0f;
145 Result.y = ((Color >> 16) & 0xFF) / 255.0f;
146 Result.z = ((Color >> 8) & 0xFF) / 255.0f;
147 Result.a = ((Color >> 0) & 0xFF) / 255.0f;
151 Result.x = ((Color >> 16) & 0xFF) / 255.0f;
152 Result.y = ((Color >> 8) & 0xFF) / 255.0f;
153 Result.z = ((Color >> 0) & 0xFF) / 255.0f;
172 col.
l = Darkest + col.
l * (1.0f - Darkest);
176 constexpr unsigned Pack(
bool Alpha =
true)
const
185 col.l = std::clamp(
col.l, 0.0f, 1.0f);
204template<
typename T,
typename F>
215 float l = 0.5f * (Max +
Min);
216 float s = (Max != 0.0f &&
Min != 1.0f) ? (c / (1 - (
absolute(2 * l - 1)))) : 0;
226 float h1 =
hsl.h * 6;
228 float x = c * (1.f -
absolute(std::fmod(
h1, 2) - 1.f));
259 float m =
hsl.l - (c / 2);
266 float l =
hsv.
v * (1 -
hsv.s * 0.5f);
static constexpr const float DARKEST_LGT7
Definition color.h:167
static constexpr const float DARKEST_LGT
Definition color.h:166
constexpr unsigned Pack(float Darkest, bool Alpha=false) const
Definition color.h:181
constexpr ColorHSLA()
Definition color.h:164
constexpr unsigned Pack(bool Alpha=true) const
Definition color.h:176
constexpr ColorHSLA UnclampLighting(float Darkest) const
Definition color.h:169
constexpr ColorHSVA()
Definition color.h:194
constexpr ColorRGBA()
Definition color.h:201
static constexpr UnpackT UnpackAlphaLast(unsigned Color, bool Alpha=true)
Definition color.h:139
float h
Definition color.h:44
float b
Definition color.h:52
float x
Definition color.h:44
constexpr color4_base(float nx, float ny, float nz, float na)
Definition color.h:74
constexpr bool operator!=(const color4_base &col) const
Definition color.h:100
constexpr color4_base(unsigned col, bool alpha=false)
Definition color.h:84
float z
Definition color.h:52
float r
Definition color.h:44
float l
Definition color.h:52
float w
Definition color.h:56
constexpr vec4 v4() const
Definition color.h:92
float s
Definition color.h:48
constexpr unsigned Pack(bool Alpha=true) const
Definition color.h:102
constexpr color4_base()
Definition color.h:59
float a
Definition color.h:56
constexpr DerivedT WithMultipliedAlpha(float alpha) const
Definition color.h:121
constexpr color4_base(float nx, float ny, float nz)
Definition color.h:79
constexpr float & operator[](int index)
Definition color.h:94
constexpr color4_base(const vec4 &v4)
Definition color.h:64
constexpr DerivedT WithAlpha(float alpha) const
Definition color.h:114
constexpr color4_base(const vec3 &v3)
Definition color.h:69
constexpr bool operator==(const color4_base &col) const
Definition color.h:99
float v
Definition color.h:52
constexpr DerivedT Multiply(const DerivedT &Other) const
Definition color.h:128
constexpr unsigned PackAlphaLast(bool Alpha=true) const
Definition color.h:107
float y
Definition color.h:48
float g
Definition color.h:48
constexpr T color_invert(const T &col)
Definition color.h:296
constexpr float RgbToHue(float r, float g, float b)
Definition color.h:17
std::optional< T > color_parse(const char *pStr)
Definition color.cpp:5
constexpr T color_cast(const F &)=delete
constexpr T color_scale(const T &col, float s)
Definition color.h:290
static SHA256_DIGEST s(const char *pSha256)
Definition mapbugs.cpp:37
constexpr T minimum(T a, T b)
Definition math.h:137
constexpr int round_to_int(float f)
Definition math.h:16
constexpr T maximum(T a, T b)
Definition math.h:147
constexpr int round_truncate(float f)
Definition math.h:21
constexpr T absolute(T a)
Definition math.h:157
vector3_base< float > vec3
Definition vmath.h:297
vector4_base< float > vec4
Definition vmath.h:391