LibGfx: Implement AK::min/max for Gfx::VectorN

These return a new `Gfx::VectorN` with the minimum or maximum value of
each element.
This commit is contained in:
Jelle Raaijmakers 2024-02-15 22:35:37 +01:00
parent e46b217e42
commit 55668c3e48
Notes: sideshowbarker 2024-07-17 11:33:34 +09:00

View File

@ -300,3 +300,27 @@ private:
}; };
} }
namespace AK {
template<size_t N, typename T>
constexpr Gfx::VectorN<N, T> min(Gfx::VectorN<N, T> const& a, Gfx::VectorN<N, T> const& b)
{
Gfx::VectorN<N, T> result;
UNROLL_LOOP
for (auto i = 0u; i < N; ++i)
result[i] = min(a[i], b[i]);
return result;
}
template<size_t N, typename T>
constexpr Gfx::VectorN<N, T> max(Gfx::VectorN<N, T> const& a, Gfx::VectorN<N, T> const& b)
{
Gfx::VectorN<N, T> result;
UNROLL_LOOP
for (auto i = 0u; i < N; ++i)
result[i] = max(a[i], b[i]);
return result;
}
}