UNPKG

@visactor/vdataset

Version:

data processing tool

70 lines (63 loc) 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.rgbaStr2RgbaObj = exports.ColorObjGenerator = exports.colorOrdinalGenerator = exports.colorLinearGenerator = void 0; const vutils_1 = require("@visactor/vutils"); function colorLinearGenerator(startColor, endColor, data, field) { if (!startColor) return void console.warn("Warn: 颜色 range 未传入 startColor"); if (!endColor) { const colorObj = ColorObjGenerator(startColor); return void data.forEach(((item, index) => { item.colorObj = colorObj; })); } const {color: startColorObj, opacity: startOpacity} = ColorObjGenerator(startColor), {r: startR, g: startG, b: startB} = startColorObj.color, {color: endColorObj, opacity: endOpacity} = ColorObjGenerator(endColor), {r: endR, g: endG, b: endB} = endColorObj.color, dR = endR - startR, dG = endG - startG, dB = endB - startB, dA = endOpacity - startOpacity, total = data.length; if (0 === total) return; if (1 === total) return void (data[0].colorObj = { color: new vutils_1.ColorUtil.Color(new vutils_1.ColorUtil.RGB(startR, startG, startB).toString()), transparent: !0, opacity: startOpacity }); if (2 === total) return data[0].colorObj = { color: new vutils_1.ColorUtil.Color(new vutils_1.ColorUtil.RGB(startR, startG, startB).toString()), transparent: !0, opacity: startOpacity }, void (data[1].colorObj = { color: new vutils_1.ColorUtil.Color(new vutils_1.ColorUtil.RGB(endR, endG, endB).toString()), transparent: !0, opacity: endOpacity }); const dValue = data[total - 1][field] - data[0][field]; data.forEach(((item, index) => { const step = 0 === dValue ? 0 : (item[field] - data[0][field]) / dValue, colorObj = ColorObjGenerator(`rgba(${Math.floor(255 * (startR + dR * step))},${Math.floor(255 * (startG + dG * step))},${Math.floor(255 * (startB + dB * step))}, ${startOpacity + dA * step})`); item.colorObj = colorObj; })); } function colorOrdinalGenerator(colorRange, data) { if (0 === colorRange.length) return void console.warn("Warn: 颜色 range 未传入 "); const step = data.length / colorRange.length, __processColorObjRange = colorRange.map((color => ColorObjGenerator(color))); data.forEach(((item, index) => { const colorObj = __processColorObjRange[Math.ceil(index / step) - 1]; item.colorObj = colorObj; })); } function ColorObjGenerator(color) { let rgbaColor; return /^(rgba|RGBA)/.test(color) && (rgbaColor = rgbaStr2RgbaObj(color)), { color: new vutils_1.ColorUtil.Color(color), transparent: !!rgbaColor, opacity: rgbaColor ? rgbaColor.a : 1 }; } function rgbaStr2RgbaObj(color) { const colorArr = color.replace(/(?:\(|\)|rgba|RGBA)*/g, "").split(","); return { r: Number(colorArr[0]), g: Number(colorArr[1]), b: Number(colorArr[2]), a: Number(colorArr[3]) }; } exports.colorLinearGenerator = colorLinearGenerator, exports.colorOrdinalGenerator = colorOrdinalGenerator, exports.ColorObjGenerator = ColorObjGenerator, exports.rgbaStr2RgbaObj = rgbaStr2RgbaObj; //# sourceMappingURL=index.js.map