@antv/util
Version:
> AntV 底层依赖的工具库,不建议在自己业务中使用。
45 lines • 1.35 kB
JavaScript
import { rgb2arr } from './rgb2arr';
import { arr2rgb } from './arr2rgb';
import { toRGB } from './torgb';
/**
* 获取颜色之间的插值
* @param start
* @param end
* @param percent
* @param index
* @returns
*/
function getValue(start, end, percent, index) {
return start[index] + (end[index] - start[index]) * percent;
}
/**
* 计算颜色
* @param points
* @param percent
* @returns
*/
function calColor(points, percent) {
var fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 : percent > 1 ? 1 : Number(percent);
var steps = points.length - 1;
var step = Math.floor(steps * fixedPercent);
var left = steps * fixedPercent - step;
var start = points[step];
var end = step === steps ? start : points[step + 1];
return arr2rgb([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);
}
/**
* 获取渐变函数
* @param colors 多个颜色
* @return 颜色值
*/
export function gradient(colors) {
var colorArray = typeof colors === 'string' ? colors.split('-') : colors;
var points = colorArray.map(function (color) {
return rgb2arr(color.indexOf('#') === -1 ? toRGB(color) : color);
});
// 返回一个函数
return function (percent) {
return calColor(points, percent);
};
}
//# sourceMappingURL=gradient.js.map