Add float <-> uint8 color conversions
This commit is contained in:
parent
3444ac9984
commit
8922399c74
1 changed files with 19 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue