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;
|
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>
|
template<typename T, int Size>
|
||||||
inline void min_max(const vec_base<T, Size> &vector,
|
inline void min_max(const vec_base<T, Size> &vector,
|
||||||
vec_base<T, Size> &min,
|
vec_base<T, Size> &min,
|
||||||
|
|||||||
Reference in New Issue
Block a user