Add float <-> uint8 color conversions

This commit is contained in:
Nikita Lisitsa 2020-09-13 16:39:29 +03:00
parent 3444ac9984
commit 8922399c74

View file

@ -1,6 +1,7 @@
#pragma once
#include <psemek/geom/vector.hpp>
#include <psemek/geom/interval.hpp>
#include <cstdint>
@ -10,4 +11,22 @@ namespace psemek::gfx
using color_rgb = geom::vector<std::uint8_t, 3>;
using color_rgba = geom::vector<std::uint8_t, 4>;
template <std::size_t N>
auto to_colorf(geom::vector<std::uint8_t, N> const & c)
{
geom::vector<float, N> r;
for (std::size_t i = 0; i < N; ++i)
r[i] = c[i] / 255.f;
return r;
}
template <std::size_t N>
auto to_coloru8(geom::vector<float, N> const & c)
{
geom::vector<std::uint8_t, N> r;
for (std::size_t i = 0; i < N; ++i)
r[i] = static_cast<std::uint8_t>(std::round(geom::clamp(c[i] * 255.f, {0.f, 255.f})));
return r;
}
}