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
|
#pragma once
|
||||||
|
|
||||||
#include <psemek/geom/vector.hpp>
|
#include <psemek/geom/vector.hpp>
|
||||||
|
#include <psemek/geom/interval.hpp>
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
|
@ -10,4 +11,22 @@ namespace psemek::gfx
|
||||||
using color_rgb = geom::vector<std::uint8_t, 3>;
|
using color_rgb = geom::vector<std::uint8_t, 3>;
|
||||||
using color_rgba = geom::vector<std::uint8_t, 4>;
|
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