diff options
Diffstat (limited to 'src/sdl/bg-style.c')
-rw-r--r-- | src/sdl/bg-style.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/sdl/bg-style.c b/src/sdl/bg-style.c new file mode 100644 index 0000000..02bc759 --- /dev/null +++ b/src/sdl/bg-style.c @@ -0,0 +1,21 @@ +#include <math.h> // sin() +#include "bg-style.h" + +#define M_2_PI (2.0 * 3.1415926) + +#define BG_STYLE_GET_CHANNEL(c, time) ((c).base + (((c).period) ? ( \ + (c).amplitude * sin(((c).phase + (time)) * M_2_PI / (1.0 * (c).period)) \ +) : 0)) + +SDL_Color +bg_style_get_color( + const bg_style_t * const style, + const Uint32 ticks +) { + return (SDL_Color) { + .r = BG_STYLE_GET_CHANNEL(style->r, ticks), + .g = BG_STYLE_GET_CHANNEL(style->g, ticks), + .b = BG_STYLE_GET_CHANNEL(style->b, ticks), + .a = BG_STYLE_GET_CHANNEL(style->a, ticks), + }; +} |