From bb1df4599d4bf08824bf9fac668f7363443cb4d5 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 2 Apr 2021 11:04:50 +0300 Subject: [PATCH] Add coloru16 converters --- libs/gfx/include/psemek/gfx/color.hpp | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/libs/gfx/include/psemek/gfx/color.hpp b/libs/gfx/include/psemek/gfx/color.hpp index 74c5b37a..5ff8507c 100644 --- a/libs/gfx/include/psemek/gfx/color.hpp +++ b/libs/gfx/include/psemek/gfx/color.hpp @@ -24,6 +24,24 @@ namespace psemek::gfx return r; } + template + auto to_colorf(geom::vector const & c) + { + geom::vector r; + for (std::size_t i = 0; i < N; ++i) + r[i] = c[i] / 65535.f; + return r; + } + + template + auto to_coloru8(geom::vector const & c) + { + geom::vector r; + for (std::size_t i = 0; i < N; ++i) + r[i] = (static_cast(c[i]) * 255) / 65535; + return r; + } + template auto to_coloru8(geom::vector const & c) { @@ -33,6 +51,24 @@ namespace psemek::gfx return r; } + template + auto to_coloru16(geom::vector const & c) + { + geom::vector r; + for (std::size_t i = 0; i < N; ++i) + r[i] = (static_cast(c[i]) * 65535) / 255; + return r; + } + + template + auto to_coloru16(geom::vector const & c) + { + geom::vector r; + for (std::size_t i = 0; i < N; ++i) + r[i] = static_cast(std::round(geom::clamp(c[i] * 65535.f, {0.f, 65535.f}))); + return r; + } + template auto lerp(geom::vector const & c0, geom::vector const & c1, float t) {