Return a value clamped to a range.
Defined in <SDL3/SDL_stdinc.h>
#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
x | the value to compare. |
a | the low end value. |
b | the high end value. |
Returns x, clamped between a and b.
If x
is outside the range a values between a
and b
, the returned value will be a
or b
as appropriate. Otherwise, x
is returned.
This macro will produce incorrect results if b
is less than a
.
This is a helper macro that might be more clear than writing out the comparisons directly, and works with any type that can be compared with the <
and >
operators. However, it double-evaluates all its parameters, so do not use expressions with side-effects here.
It is safe to call this macro from any thread.
This macro is available since SDL 3.1.3.