| import {rgb as colorRgb} from "d3-color"; |
| import basis from "./basis.js"; |
| import basisClosed from "./basisClosed.js"; |
| import nogamma, {gamma} from "./color.js"; |
|
|
| export default (function rgbGamma(y) { |
| var color = gamma(y); |
|
|
| function rgb(start, end) { |
| var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r), |
| g = color(start.g, end.g), |
| b = color(start.b, end.b), |
| opacity = nogamma(start.opacity, end.opacity); |
| return function(t) { |
| start.r = r(t); |
| start.g = g(t); |
| start.b = b(t); |
| start.opacity = opacity(t); |
| return start + ""; |
| }; |
| } |
|
|
| rgb.gamma = rgbGamma; |
|
|
| return rgb; |
| })(1); |
|
|
| function rgbSpline(spline) { |
| return function(colors) { |
| var n = colors.length, |
| r = new Array(n), |
| g = new Array(n), |
| b = new Array(n), |
| i, color; |
| for (i = 0; i < n; ++i) { |
| color = colorRgb(colors[i]); |
| r[i] = color.r || 0; |
| g[i] = color.g || 0; |
| b[i] = color.b || 0; |
| } |
| r = spline(r); |
| g = spline(g); |
| b = spline(b); |
| color.opacity = 1; |
| return function(t) { |
| color.r = r(t); |
| color.g = g(t); |
| color.b = b(t); |
| return color + ""; |
| }; |
| }; |
| } |
|
|
| export var rgbBasis = rgbSpline(basis); |
| export var rgbBasisClosed = rgbSpline(basisClosed); |
|
|