Add color lighting & darkening functions

This commit is contained in:
Nikita Lisitsa 2020-10-23 17:06:29 +03:00
parent 4d9b8dde29
commit e5c869f27b

View file

@ -100,4 +100,44 @@ namespace psemek::gfx
static const generic_color magenta{{1.f, 0.f, 1.f, 1.f}};
static const generic_color yellow {{1.f, 1.f, 0.f, 1.f}};
static const generic_color gray {{0.50f, 0.50f, 0.50f, 1.f}};
template <std::size_t N>
geom::vector<float, N> light(geom::vector<float, N> c, float lightness = 0.5f)
{
for (std::size_t i = 0; i < N; ++i)
c[i] = geom::lerp(c[i], 1.f, lightness);
return c;
}
template <std::size_t N>
geom::vector<float, N> dark(geom::vector<float, N> c, float darkness = 0.5f)
{
for (std::size_t i = 0; i < N; ++i)
c[i] = geom::lerp(c[i], 0.f, darkness);
return c;
}
template <std::size_t N>
geom::vector<std::uint8_t, N> light(geom::vector<std::uint8_t, N> c, float lightness = 0.5f)
{
return to_coloru8(light(to_colorf(c), lightness));
}
template <std::size_t N>
geom::vector<std::uint8_t, N> dark(geom::vector<std::uint8_t, N> c, float darkness = 0.5f)
{
return to_coloru8(dark(to_colorf(c), darkness));
}
inline generic_color light(generic_color const & c, float lightness = 0.5f)
{
return generic_color{light(c.c, lightness)};
}
inline generic_color dark(generic_color const & c, float darkness = 0.5f)
{
return generic_color{dark(c.c, darkness)};
}
}