aboutsummaryrefslogtreecommitdiff
path: root/src/sdl/bg-style.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdl/bg-style.c')
-rw-r--r--src/sdl/bg-style.c21
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),
+ };
+}