Go to the source code of this file.
#define CLAMP (a, l, u)
Clamp a number between an upper and lower bound.
#define MIN (a, b)
Find the smaller of two numbers.
#define MAX (a, b)
Find the larger of two numbers.
#define ABS (a)
Find the absolute value of a number.
#define IS_ARRAY (arr)
Return the number of elements in a fixed length array. This does not work for pointers.
#define STATIC_EXP (e)
Helper macro to determine the number of elements in an array. Should not be used directly.
#define ARRAY_SIZE (arr)
#define POS_MODULO_ADD (a, b, d)
Returns (a + b) % d, but with negative values converted to equivalent positive values. The resulting value will always be in the range [0, d), assuming d > 0.
#define RUN_TIMER_EVERY (timer, period, elapsed, timer_code)
Run timer_code every period, using tracking it with timer.
#define NUM_FRAME_TIMES 60
#define DRAW_FPS_COUNTER (font)
◆ CLAMP
#define CLAMP
(
a ,
l ,
u )
Value: ((a) < l ? l : ((a) > u ? u : (a)))
Clamp a number between an upper and lower bound.
Parameters
a A number to clamp between an upper and lower bound
l The lower bound, inclusive
u The upper bound, inclusive
Returns The clamped number
◆ MIN
Value: (((a) < (b)) ? (a) : (b))
Find the smaller of two numbers.
Parameters
a A number to compare
b Another number to compare
Returns The smaller of the two numbers
◆ MAX
Value: (((a) > (b)) ? (a) : (b))
Find the larger of two numbers.
Parameters
a A number to compare
b Another number to compare
Returns The larger of the two numbers
◆ ABS
Value: (((a) < (0)) ? -(a) : (a))
Find the absolute value of a number.
Parameters
a A number to find the absolute value of
Returns The absolute value fo the number
◆ IS_ARRAY
Value: ((void *)&(arr) == &(arr)[0])
Return the number of elements in a fixed length array. This does not work for pointers.
See https://stackoverflow.com/a/19455169
Parameters
arr An array to find the number of elements in
Returns The the number of elements in an array (not the byte size!) Helper macro to determine the number of elements in an array. Should not be used directly
◆ STATIC_EXP
Value: (0 * sizeof (struct { int ARRAY_SIZE_FAILED : (2 * (e)-1); }))
Helper macro to determine the number of elements in an array. Should not be used directly.
◆ ARRAY_SIZE
#define ARRAY_SIZE
(
arr )
Value:
#define STATIC_EXP(e)
Helper macro to determine the number of elements in an array. Should not be used directly.
Definition macros.h:64
#define IS_ARRAY(arr)
Return the number of elements in a fixed length array. This does not work for pointers.
Definition macros.h:61
◆ POS_MODULO_ADD
#define POS_MODULO_ADD
(
a ,
b ,
d )
Value:
Returns (a + b) % d, but with negative values converted to equivalent positive values. The resulting value will always be in the range [0, d), assuming d > 0.
The first modulo, (b % d) will return e.g. -90 for (-270 % 360)
Parameters
a One number to sum
b Another number to sum
d The number to mod the sum by
Returns (a + b) % d
◆ RUN_TIMER_EVERY
#define RUN_TIMER_EVERY
(
timer ,
period ,
elapsed ,
timer_code )
Value: do \
{ \
timer += (elapsed); \
while (timer > (period)) \
{ \
timer -= (period); \
{ \
timer_code \
} \
} \
} while (0)
Run timer_code every period, using tracking it with timer.
Parameters
timer The accumulator variable, must persist between calls
period The period at which timer_code should be run
elapsed The time elapsed since this was last called
timer_code The code to execute every period
◆ NUM_FRAME_TIMES
#define NUM_FRAME_TIMES 60
◆ DRAW_FPS_COUNTER
#define DRAW_FPS_COUNTER
(
font )
Value: do \
{ \
static uint32_t frameTimesIdx = 0; \
\
uint32_t tElapsed = frameTimes[frameTimesIdx] - frameTimes[startIdx]; \
if (0 != tElapsed) \
{ \
char tmp[16]; \
snprintf(tmp, sizeof (tmp) - 1, "%" PRIu32, fps); \
fillDisplayArea(34, 1, 51, 3 + font.height,
c000 ); \
drawText(&font,
c555 , tmp, 35, 2); \
} \
frameTimes[frameTimesIdx] = esp_timer_get_time(); \
} while (0)
#define NUM_FRAME_TIMES
Definition macros.h:103
@ c555
r = 5, g = 5, b = 5
Definition palette.h:239
@ c000
r = 0, g = 0, b = 0
Definition palette.h:24