1 | import {rgb as colorRgb} from "d3-color";
|
2 | import basis from "./basis";
|
3 | import basisClosed from "./basisClosed";
|
4 | import {gamma} from "./color";
|
5 |
|
6 | export default (function rgbGamma(y) {
|
7 | var color = gamma(y);
|
8 |
|
9 | function rgb(start, end) {
|
10 | var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),
|
11 | g = color(start.g, end.g),
|
12 | b = color(start.b, end.b),
|
13 | opacity = color(start.opacity, end.opacity);
|
14 | return function(t) {
|
15 | start.r = r(t);
|
16 | start.g = g(t);
|
17 | start.b = b(t);
|
18 | start.opacity = opacity(t);
|
19 | return start + "";
|
20 | };
|
21 | }
|
22 |
|
23 | rgb.gamma = rgbGamma;
|
24 |
|
25 | return rgb;
|
26 | })(1);
|
27 |
|
28 | function rgbSpline(spline) {
|
29 | return function(colors) {
|
30 | var n = colors.length,
|
31 | r = new Array(n),
|
32 | g = new Array(n),
|
33 | b = new Array(n),
|
34 | i, color;
|
35 | for (i = 0; i < n; ++i) {
|
36 | color = colorRgb(colors[i]);
|
37 | r[i] = color.r || 0;
|
38 | g[i] = color.g || 0;
|
39 | b[i] = color.b || 0;
|
40 | }
|
41 | r = spline(r);
|
42 | g = spline(g);
|
43 | b = spline(b);
|
44 | color.opacity = 1;
|
45 | return function(t) {
|
46 | color.r = r(t);
|
47 | color.g = g(t);
|
48 | color.b = b(t);
|
49 | return color + "";
|
50 | };
|
51 | };
|
52 | }
|
53 |
|
54 | export var rgbBasis = rgbSpline(basis);
|
55 | export var rgbBasisClosed = rgbSpline(basisClosed);
|