MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
wrap.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cmath>
4 
5 namespace mbgl {
6 namespace util {
7 
10 template <typename T>
11 T wrap(T value, T min, T max) {
12  if (value >= min && value < max) {
13  return value;
14  } else if (value == max) {
15  return min;
16  }
17 
18  const T delta = max - min;
19  const T wrapped = min + std::fmod(value - min, delta);
20  return value < min ? wrapped + delta : wrapped;
21 }
22 
23 } // namespace util
24 } // namespace mbgl
std::enable_if_t< std::is_integral_v< T >, T > max(T a, T b)
Definition: minmax.hpp:11
std::enable_if_t< std::is_integral_v< T >, T > min(T a, T b)
Definition: minmax.hpp:26
T wrap(T value, T min, T max)
Definition: wrap.hpp:11
Definition: actor.hpp:15