diff options
author | pacien | 2017-12-02 15:20:34 +0100 |
---|---|---|
committer | pacien | 2017-12-02 15:20:34 +0100 |
commit | 52d6a488137736630d35ebddb6cc5b8c118b2e07 (patch) | |
tree | 58a690263e06746df95b9e8b2004b16f4a75078d /src/blender/blender.c | |
parent | 59c1fece82944d4f904cf6a02f97df2818961bb3 (diff) | |
download | morpher-52d6a488137736630d35ebddb6cc5b8c118b2e07.tar.gz |
Impl. color blending and unit test, minor API change
Signed-off-by: pacien <pacien.trangirard@pacien.net>
Diffstat (limited to 'src/blender/blender.c')
-rw-r--r-- | src/blender/blender.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/blender/blender.c b/src/blender/blender.c new file mode 100644 index 0000000..0e0835d --- /dev/null +++ b/src/blender/blender.c | |||
@@ -0,0 +1,15 @@ | |||
1 | #include "blender/blender.h" | ||
2 | #include <assert.h> | ||
3 | #include <math.h> | ||
4 | |||
5 | static ColorComponent blend_components(ColorComponent origin, ColorComponent target, TimeVector frame) { | ||
6 | return (ColorComponent) sqrt((TIME_UNIT - frame) * pow(origin, 2) + frame * pow(target, 2)); | ||
7 | } | ||
8 | |||
9 | Color blender_blend_colors(Color origin, Color target, TimeVector frame) { | ||
10 | assert(frame >= TIME_ORIGIN && frame <= TIME_UNIT); | ||
11 | return (Color) {{blend_components(origin.rgba.r, target.rgba.r, frame), | ||
12 | blend_components(origin.rgba.g, target.rgba.g, frame), | ||
13 | blend_components(origin.rgba.b, target.rgba.b, frame), | ||
14 | blend_components(origin.rgba.a, target.rgba.a, frame)}}; | ||
15 | } | ||