diff options
author | Vito Caputo <vcaputo@gnugeneration.com> | 2017-01-02 16:11:32 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@gnugeneration.com> | 2017-01-02 16:11:32 -0800 |
commit | c75fea7e1629c7a0880a92e45438630fb41d306b (patch) | |
tree | c017c86b43b480b420a52861da2199a1628b872d | |
parent | 7d4b2e75627b7966eb3186b9c3a43eb3b39d6fbc (diff) |
roto: add TODO comment about faster lerp_color()
-rw-r--r-- | modules/roto/roto.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/modules/roto/roto.c b/modules/roto/roto.c index a7d1750..d789f85 100644 --- a/modules/roto/roto.c +++ b/modules/roto/roto.c @@ -26,6 +26,12 @@ typedef struct color_t { /* linearly interpolate between two colors, alpha is fixed-point value 0-FIXED_EXP. */ static inline color_t lerp_color(color_t *a, color_t *b, int alpha) { + /* TODO: This could be done without multiplies with a bit of effort, + * maybe a simple table mapping integer color deltas to shift values + * for shifting alpha which then gets simply added? A table may not even + * be necessary, use the order of the delta to derive how much to shift + * alpha? + */ color_t c = { .r = a->r + FIXED_MULT(alpha, b->r - a->r), .g = a->g + FIXED_MULT(alpha, b->g - a->g), |