Conditionally clamping input value in Make5/6

This commit is contained in:
Vladyslav Baranovskyi
2024-10-02 17:15:41 +03:00
parent 996ec4c168
commit 5caa80ad19

View File

@@ -13,14 +13,22 @@ namespace OpenVulkano::Math
{
class RGB565
{
static uint16_t Make5(int16_t val)
template<typename T>
static uint16_t Make5(T val)
{
val = std::clamp<int16_t>(val, 0, 255);
if constexpr (std::is_same_v<T, uint8_t> || std::is_same_v<T, int8_t>)
{
val = std::clamp<int16_t>(val, 0, 255);
}
return val * 31.0f / 255.0f;
}
static uint16_t Make6(int16_t val)
template<typename T>
static uint16_t Make6(T val)
{
val = std::clamp<int16_t>(val, 0, 255);
if constexpr (std::is_same_v<T, uint8_t> || std::is_same_v<T, int8_t>)
{
val = std::clamp<int16_t>(val, 0, 255);
}
return val * 63.0f / 255.0f;
}
static uint8_t Unmake5(uint16_t val) { return static_cast<uint8_t>(val * 255.0f / 31.0f); }