BLI: Math: Add math::divide_ceil and math::ceil_to_multiple
`math::divide_ceil` is just the vector implementation of `divide_ceil_u`. `math::ceil_to_multiple` is similar but finaly multiply by the divisor. It is handy to handle tile buffers resolutions.
This commit is contained in:
@@ -159,6 +159,26 @@ inline T safe_mod(const vec_base<T, Size> &a, const T &b)
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T, int Size, BLI_ENABLE_IF((is_math_integral_type<T>))>
|
||||
inline vec_base<T, Size> ceil_to_multiple(const vec_base<T, Size> &a, const vec_base<T, Size> &b)
|
||||
{
|
||||
vec_base<T, Size> result;
|
||||
for (int i = 0; i < Size; i++) {
|
||||
result[i] = ((a[i] + b[i] - 1) / b[i]) * b[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T, int Size, BLI_ENABLE_IF((is_math_integral_type<T>))>
|
||||
inline vec_base<T, Size> divide_ceil(const vec_base<T, Size> &a, const vec_base<T, Size> &b)
|
||||
{
|
||||
vec_base<T, Size> result;
|
||||
for (int i = 0; i < Size; i++) {
|
||||
result[i] = (a[i] + b[i] - 1) / b[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T, int Size>
|
||||
inline void min_max(const vec_base<T, Size> &vector,
|
||||
vec_base<T, Size> &min,
|
||||
|
||||
Reference in New Issue
Block a user