diff options
Diffstat (limited to 'interpolation.c')
-rw-r--r-- | interpolation.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/interpolation.c b/interpolation.c index 279e1a2..7e1d482 100644 --- a/interpolation.c +++ b/interpolation.c @@ -159,8 +159,8 @@ void interpolate_cmap(flam3_palette cmap, double blend, double4 t, s; double t4, s4; - s = rgb2hsv(p0[i].color); - t = rgb2hsv(p1[i].color); + s = rgb2hsv(vector_d4 (p0[i].color)); + t = rgb2hsv(vector_d4 (p1[i].color)); s[3] = p0[i].color[3]; t[3] = p1[i].color[3]; @@ -172,7 +172,10 @@ void interpolate_cmap(flam3_palette cmap, double blend, t[j] = ((1.0-blend) * s[j]) + (blend * t[j]); t4 = ((1.0-blend) * s4) + (blend * t4); - cmap[i].color = hsv2rgb(t); + const double4 c = hsv2rgb(t); + cmap[i].color[0] = c[0]; + cmap[i].color[1] = c[1]; + cmap[i].color[2] = c[2]; cmap[i].color[3] = t[3]; cmap[i].index = t4; } @@ -371,7 +374,7 @@ void flam3_interpolate_n(flam3_genome *result, int ncp, s[0] = s[1] = s[2] = s[3] = s4 = 0.0; for (k = 0; k < ncp; k++) { - t = rgb2hsv(cpi[k].palette[i].color); + t = rgb2hsv(vector_d4 (cpi[k].palette[i].color)); for (j = 0; j < 3; j++) s[j] += c[k] * t[j]; @@ -385,7 +388,10 @@ void flam3_interpolate_n(flam3_genome *result, int ncp, if (alpha1 == 1) s[3] = 1.0; - result->palette[i].color = hsv2rgb(s); + const double4 ret_color = hsv2rgb(s); + result->palette[i].color[0] = ret_color[0]; + result->palette[i].color[1] = ret_color[1]; + result->palette[i].color[2] = ret_color[2]; result->palette[i].color[3] = s[3]; result->palette[i].index = s4; |