polybar/include/utils/math.hpp

32 lines
642 B
C++
Raw Normal View History

#pragma once
2016-05-19 14:41:06 +00:00
#include <algorithm>
2016-06-15 03:32:35 +00:00
#include "common.hpp"
LEMONBUDDY_NS
namespace math_util {
2016-06-15 03:32:35 +00:00
/**
* Limit value T by min and max bounds
*/
template <typename T>
T cap(T value, T min_value, T max_value) {
2016-05-19 14:41:06 +00:00
value = std::min<T>(value, max_value);
value = std::max<T>(value, min_value);
return value;
}
/**
* Calculate the percentage for a value
* within given range
*/
template <typename T>
int percentage(T value, T min_value, T max_value) {
T percentage = ((value - min_value) / (max_value - min_value)) * 100.0f + 0.5f;
return cap<T>(std::ceil(percentage), 0, 100);
}
2016-05-19 14:41:06 +00:00
}
2016-06-15 03:32:35 +00:00
LEMONBUDDY_NS_END