diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-07-13 20:25:21 +0900 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-07-13 21:27:47 +0900 |
commit | c4b9ccb45a9f9a47e252d1ce4b5d55211a22a389 (patch) | |
tree | f372342a2b6fb809fe912d32786f6fde3d908773 | |
parent | 1a7f1610e9f823011de4393af8ec9c10aa6b2097 (diff) |
libcamera: utils: Add clamp()
C++11 does not support std::clamp(), add a custom implementation in
utils.
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | src/libcamera/include/utils.h | 8 | ||||
-rw-r--r-- | src/libcamera/utils.cpp | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/libcamera/include/utils.h b/src/libcamera/include/utils.h index 97bd470a..47a42258 100644 --- a/src/libcamera/include/utils.h +++ b/src/libcamera/include/utils.h @@ -7,6 +7,7 @@ #ifndef __LIBCAMERA_UTILS_H__ #define __LIBCAMERA_UTILS_H__ +#include <algorithm> #include <memory> #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) @@ -45,6 +46,13 @@ unsigned int set_overlap(InputIt1 first1, InputIt1 last1, return count; } +/* C++11 doesn't provide std::clamp */ +template <typename T> +const T& clamp(const T& v, const T& lo, const T& hi) +{ + return std::max(lo, std::min(v, hi)); +} + } /* namespace utils */ } /* namespace libcamera */ diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp index ef365366..afbdd834 100644 --- a/src/libcamera/utils.cpp +++ b/src/libcamera/utils.cpp @@ -85,6 +85,14 @@ char *secure_getenv(const char *name) * \return The number of elements in the intersection of the two ranges */ +/** + * \fn libcamera::utils::clamp(const T& v, const T& lo, const T& hi) + * \param[in] v The value to clamp + * \param[in] lo The lower boundary to clamp v to + * \param[in] hi The higher boundary to clamp v to + * \return lo if v is less than lo, hi if v is greater than hi, otherwise v + */ + } /* namespace utils */ } /* namespace libcamera */ |