summaryrefslogtreecommitdiff
path: root/src/blender/blender.c
blob: 0e0835d3a63eaa0ffb7057b9be9c030a053953d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "blender/blender.h"
#include <assert.h>
#include <math.h>

static ColorComponent blend_components(ColorComponent origin, ColorComponent target, TimeVector frame) {
  return (ColorComponent) sqrt((TIME_UNIT - frame) * pow(origin, 2) + frame * pow(target, 2));
}

Color blender_blend_colors(Color origin, Color target, TimeVector frame) {
  assert(frame >= TIME_ORIGIN && frame <= TIME_UNIT);
  return (Color) {{blend_components(origin.rgba.r, target.rgba.r, frame),
                   blend_components(origin.rgba.g, target.rgba.g, frame),
                   blend_components(origin.rgba.b, target.rgba.b, frame),
                   blend_components(origin.rgba.a, target.rgba.a, frame)}};
}