Syaoran creates a magical template for clamping the range of numbers.
This commit is contained in:
+4
-24
@@ -49,34 +49,14 @@ inline U lerp( T x, U l, U h )
|
|||||||
return U(x * (h - l) + l);
|
return U(x * (h - l) + l);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool CLAMP( int &x, int l, int h )
|
template<typename T, typename U, typename V>
|
||||||
|
inline bool CLAMP(T& x, U l, V h)
|
||||||
{
|
{
|
||||||
if (x > h) { x = h; return true; }
|
if(x > static_cast<T>(h)) { x= static_cast<T>(h); return true; }
|
||||||
else if (x < l) { x = l; return true; }
|
else if(x < static_cast<T>(l)) { x= static_cast<T>(l); return true; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
inline bool CLAMP( unsigned &x, unsigned l, unsigned h )
|
|
||||||
{
|
|
||||||
if (x > h) { x = h; return true; }
|
|
||||||
else if (x < l) { x = l; return true; }
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(_MSC_VER)
|
|
||||||
inline bool CLAMP( size_t &x, size_t l, size_t h )
|
|
||||||
{
|
|
||||||
if (x > h) { x = h; return true; }
|
|
||||||
else if (x < l) { x = l; return true; }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline bool CLAMP( float &x, float l, float h )
|
|
||||||
{
|
|
||||||
if (x > h) { x = h; return true; }
|
|
||||||
else if (x < l) { x = l; return true; }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
template<class T>
|
template<class T>
|
||||||
inline bool ENUM_CLAMP( T &x, T l, T h )
|
inline bool ENUM_CLAMP( T &x, T l, T h )
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user