Document range
This commit is contained in:
parent
2806b29982
commit
fd52e93294
1 changed files with 36 additions and 1 deletions
|
|
@ -28,7 +28,11 @@
|
||||||
|
|
||||||
namespace sfz
|
namespace sfz
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @brief This class holds a range with functions to clamp and test if a value is in the range
|
||||||
|
*
|
||||||
|
* @tparam Type
|
||||||
|
*/
|
||||||
template <class Type>
|
template <class Type>
|
||||||
class Range {
|
class Range {
|
||||||
static_assert(std::is_arithmetic<Type>::value, "The Type should be arithmetic");
|
static_assert(std::is_arithmetic<Type>::value, "The Type should be arithmetic");
|
||||||
|
|
@ -58,6 +62,11 @@ public:
|
||||||
~Range() = default;
|
~Range() = default;
|
||||||
Type getStart() const noexcept { return _start; }
|
Type getStart() const noexcept { return _start; }
|
||||||
Type getEnd() const noexcept { return _end; }
|
Type getEnd() const noexcept { return _end; }
|
||||||
|
/**
|
||||||
|
* @brief Get the range as an std::pair of the endpoints
|
||||||
|
*
|
||||||
|
* @return std::pair<Type, Type>
|
||||||
|
*/
|
||||||
std::pair<Type, Type> getPair() const noexcept { return std::make_pair<Type, Type>(_start, _end); }
|
std::pair<Type, Type> getPair() const noexcept { return std::make_pair<Type, Type>(_start, _end); }
|
||||||
Range(const Range<Type>& range) = default;
|
Range(const Range<Type>& range) = default;
|
||||||
Range(Range<Type>&& range) = default;
|
Range(Range<Type>&& range) = default;
|
||||||
|
|
@ -75,9 +84,35 @@ public:
|
||||||
if (end < _start)
|
if (end < _start)
|
||||||
_start = end;
|
_start = end;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @brief Clamp a value within the range including the endpoints
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @return Type
|
||||||
|
*/
|
||||||
Type clamp(Type value) const noexcept { return ::clamp(value, _start, _end); }
|
Type clamp(Type value) const noexcept { return ::clamp(value, _start, _end); }
|
||||||
|
/**
|
||||||
|
* @brief Checks if a value is in the range, including the endpoints
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @return true
|
||||||
|
* @return false
|
||||||
|
*/
|
||||||
bool containsWithEnd(Type value) const noexcept { return (value >= _start && value <= _end); }
|
bool containsWithEnd(Type value) const noexcept { return (value >= _start && value <= _end); }
|
||||||
|
/**
|
||||||
|
* @brief Checks if a value is in the range, excluding the end of the range
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @return true
|
||||||
|
* @return false
|
||||||
|
*/
|
||||||
bool contains(Type value) const noexcept { return (value >= _start && value < _end); }
|
bool contains(Type value) const noexcept { return (value >= _start && value < _end); }
|
||||||
|
/**
|
||||||
|
* @brief Shrink the region if it is smaller than the provided start and end points
|
||||||
|
*
|
||||||
|
* @param start
|
||||||
|
* @param end
|
||||||
|
*/
|
||||||
void shrinkIfSmaller(Type start, Type end)
|
void shrinkIfSmaller(Type start, Type end)
|
||||||
{
|
{
|
||||||
if (start > end)
|
if (start > end)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue