32 #define GET_INT_NORMAL(val, max) (float(val) / float(max))
33 #define GET_CENTER_OFFSET(w1, w2) ((MAX((w1), (w2)) / 2) - (MIN((w1), (w2)) / 2))
34 #define GET_CENTER_OFFSET_FIXED(w1, w2) (((w1) / 2) - ((w2) / 2))
35 #define degToRad(angleInDegrees) ((angleInDegrees) * M_PI / 180.0)
36 #define radToDeg(angleInRadians) ((angleInRadians) * 180.0 / M_PI)
37 #define M_PI_F 3.141592653589793f
38 #define SCROLL_BTN_AMOUNT 0.1f
40 static inline int __ease_linear(
float t,
float b,
float c,
float d)
42 return int(c * t / d + b);
45 static inline int __ease_quad(
float t,
float b,
float c,
float d)
48 if (t < 1.0)
return int(c / 2.f * t * t + b);
50 return int(-c / 2.f * (t * (t - 2.f) - 1.f) + b);
53 static inline int __ease_sine(
float t,
float b,
float c,
float d)
55 return int(-c / 2.f * (cosf(M_PI_F * t / d) - 1.f) + b);
58 static inline int __ease_expo(
float t,
float b,
float c,
float d)
61 if (t < 1.0)
return int(c / 2.f * powf(2.f, 10.f * (t - 1.f)) + b);
63 return int(c / 2.f * (-powf(2.f, -10.f * t) + 2.f) + b);
66 static inline int __ease_circ(
float t,
float b,
float c,
float d)
69 if (t < 1.0)
return int(-c / 2.f * (sqrtf(1.f - t * t) - 1.f) + b);
71 return int(c / 2.f * (sqrtf(1.f - t * t) + 1.f) + b);
74 static inline int __ease_cube(
float t,
float b,
float c,
float d)
77 if (t < 1.0)
return int(c / 2.f * t * t * t + b);
79 return int(c / 2.f * (t * t * t + 2.f) + b);
82 static inline int __ease_quart(
float t,
float b,
float c,
float d)
85 if (t < 1.0)
return int(c / 2.f * t * t * t * t + b);
87 return int(-c / 2.f * (t * t * t * t - 2.f) + b);
90 #define __MOVE_FUNC(func_name, time_start, start, end, delay) (start + __ease_##func_name(float(CLAMP((GetTicks() - time_start), 0, delay)), 0.f, float(-(start - end)), float(delay)))
91 #define __MOVE_FUNC2(func_name, time_start, start, end, delay) (start + __ease_##func_name(float((GetTicks() - time_start) % delay), 0.f, float(-(start - end)), float(delay)))
92 #define MOVE_LINEAR(time_start, start, end, delay) __MOVE_FUNC(linear, time_start, start, end, delay)
93 #define MOVE_QUAD(time_start, start, end, delay) __MOVE_FUNC(quad, time_start, start, end, delay)
94 #define MOVE_SINE(time_start, start, end, delay) __MOVE_FUNC(sine, time_start, start, end, delay)
95 #define MOVE_EXPO(time_start, start, end, delay) __MOVE_FUNC(expo, time_start, start, end, delay)
96 #define MOVE_CIRC(time_start, start, end, delay) __MOVE_FUNC(circ, time_start, start, end, delay)
97 #define MOVE_CUBE(time_start, start, end, delay) __MOVE_FUNC(cube, time_start, start, end, delay)
98 #define MOVE_CUBE2(time_start, start, end, delay) __MOVE_FUNC2(cube, time_start, start, end, delay)
99 #define MOVE_QUART(time_start, start, end, delay) __MOVE_FUNC(quart, time_start, start, end, delay)