chartx
Version:
Data Visualization Chart Library
102 lines (98 loc) • 3.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.colorIsHex = colorIsHex;
exports.colorRgb = colorRgb;
exports.colorRgba = colorRgba;
exports.gradient = gradient;
exports.hex2rgb = hex2rgb;
exports.rgb2hex = rgb2hex;
exports.rgba2rgb = rgba2rgb;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
//十六进制颜色值的正则表达式
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
function colorIsHex(color) {
return reg.test(color);
}
/*16进制颜色转为RGB格式*/
function colorRgb(hex) {
if (Array.isArray(hex)) {
hex = hex[0];
}
;
if (!hex) {
return 'RGB(0,0,0)';
}
;
var sColor = hex.toLowerCase();
if (sColor && reg.test(sColor)) {
if (sColor.length === 4) {
var sColorNew = "#";
for (var i = 1; i < 4; i += 1) {
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
}
sColor = sColorNew;
}
//处理六位的颜色值
var sColorChange = [];
for (var _i = 1; _i < 7; _i += 2) {
sColorChange.push(parseInt("0x" + sColor.slice(_i, _i + 2)));
}
return "RGB(" + sColorChange.join(",") + ")";
} else {
return sColor;
}
}
;
function colorRgba(hex, a) {
return colorRgb(hex).replace(')', ',' + a + ')').replace('RGB', 'RGBA');
}
;
function hex2rgb(hex, out) {
var rgb = [];
for (var i = 1; i < 7; i += 2) {
rgb.push(parseInt("0x" + hex.slice(i, i + 2)));
}
return rgb;
}
function rgb2hex(rgb) {
var r = rgb[0];
var g = rgb[1];
var b = rgb[2];
var hex = (r << 16 | g << 8 | b).toString(16);
return "#" + new Array(Math.abs(hex.length - 7)).join("0") + hex;
}
function rgba2rgb(RGBA_color) {
var background_color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "#ffffff";
var _RGBA_color$match = RGBA_color.match(/[\d\.]+/g),
_RGBA_color$match2 = (0, _slicedToArray2.default)(_RGBA_color$match, 4),
r = _RGBA_color$match2[0],
g = _RGBA_color$match2[1],
b = _RGBA_color$match2[2],
a = _RGBA_color$match2[3];
var _colorRgb$match = colorRgb(background_color).match(/[\d\.]+/g),
_colorRgb$match2 = (0, _slicedToArray2.default)(_colorRgb$match, 3),
br = _colorRgb$match2[0],
bg = _colorRgb$match2[1],
bb = _colorRgb$match2[2];
return "RGB(" + [(1 - a) * br + a * r, (1 - a) * bg + a * g, (1 - a) * bb + a * b].join(',') + ")";
}
// 计算渐变过渡色
function gradient(startColor, endColor) {
var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
// 将 hex 转换为rgb
var sColor = hex2rgb(startColor);
var eColor = hex2rgb(endColor);
// 计算R\G\B每一步的差值
var rStep = (eColor[0] - sColor[0]) / step;
var gStep = (eColor[1] - sColor[1]) / step;
var bStep = (eColor[2] - sColor[2]) / step;
var gradientColorArr = [];
for (var i = 0; i < step; i++) {
// 计算每一步的hex值
gradientColorArr.push(rgb2hex([parseInt(rStep * i + sColor[0]), parseInt(gStep * i + sColor[1]), parseInt(bStep * i + sColor[2])]));
}
return gradientColorArr;
}