From 190449ee18bec69b2e385dccd9bd42ddc83dd418 Mon Sep 17 00:00:00 2001 From: pacien Date: Thu, 28 Dec 2017 01:22:41 +0100 Subject: Refactor and test color Signed-off-by: pacien --- src/painter/color.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/painter/color.c (limited to 'src/painter/color.c') diff --git a/src/painter/color.c b/src/painter/color.c new file mode 100644 index 0000000..65c4f20 --- /dev/null +++ b/src/painter/color.c @@ -0,0 +1,20 @@ +#include "painter/color.h" +#include + +static inline ColorComponent blend_component(ColorComponent origin, ColorComponent target, TimeVector frame) { + return (ColorComponent) round(sqrt((TIME_UNIT - frame) * pow(origin, 2) + frame * pow(target, 2))); +} + +bool color_equals(Color c1, Color c2) { + return c1.rgba.r == c2.rgba.r && + c1.rgba.g == c2.rgba.g && + c1.rgba.b == c2.rgba.b && + c1.rgba.a == c2.rgba.a; +} + +Color color_blend(Color origin, Color target, TimeVector distance) { + return (Color) {{blend_component(origin.rgba.a, target.rgba.a, distance), + blend_component(origin.rgba.b, target.rgba.b, distance), + blend_component(origin.rgba.g, target.rgba.g, distance), + blend_component(origin.rgba.r, target.rgba.r, distance)}}; +} -- cgit v1.2.3