From 62a9da898598ed83bedcf2d0d250dd5420c82fd1 Mon Sep 17 00:00:00 2001 From: "andrey.zhirnov" Date: Thu, 20 Jun 2019 12:23:34 +0300 Subject: [PATCH] added align_ceil and align_floor functions --- headers/enduro2d/math/_math.hpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/headers/enduro2d/math/_math.hpp b/headers/enduro2d/math/_math.hpp index ec790af7..fc55690a 100644 --- a/headers/enduro2d/math/_math.hpp +++ b/headers/enduro2d/math/_math.hpp @@ -696,4 +696,28 @@ namespace e2d::math E2D_ASSERT(!approximately(l, r, T(0))); return (v - l) / (r - l); } + + // + // align_floor/align_ceil + // + + template < typename T, typename U > + std::enable_if_t< + std::is_unsigned_v && + std::is_convertible_v, + T> + align_ceil (T v, U alignment) { + T result = ((v + alignment - 1) / alignment) * alignment; + E2D_ASSERT(result >= v); + return result; + } + + template < typename T, typename U > + std::enable_if_t< + std::is_unsigned_v && + std::is_convertible_v, + T> + align_floor (T v, U alignment) { + return (v / alignment) * alignment; + } }