@antv/g2
Version:
the Grammar of Graphics in Javascript
88 lines • 3.13 kB
JavaScript
import { each } from '@antv/util';
import { getPathPoints } from '../util/get-path-points';
import { getStyle } from '../util/get-style';
import { getLinePath, getSplinePath } from '../util/path';
function getPath(points, isInCircle, smooth, registeredShape, constraint) {
var path = [];
if (points.length) {
var topLinePoints_1 = []; // area 区域上部分
var bottomLinePoints_1 = []; // area 区域下部分
for (var i = 0, len = points.length; i < len; i++) {
var point = points[i];
topLinePoints_1.push(point[1]);
bottomLinePoints_1.push(point[0]);
}
bottomLinePoints_1 = bottomLinePoints_1.reverse();
each([topLinePoints_1, bottomLinePoints_1], function (pointsData, index) {
var subPath = [];
var parsedPoints = registeredShape.parsePoints(pointsData);
var p1 = parsedPoints[0];
if (topLinePoints_1.length === 1 && bottomLinePoints_1.length === 1) {
// 都只有一个点,绘制一条竖线
subPath =
index === 0
? [
['M', p1.x - 0.5, p1.y],
['L', p1.x + 0.5, p1.y],
]
: [
['L', p1.x + 0.5, p1.y],
['L', p1.x - 0.5, p1.y],
];
}
else {
if (isInCircle) {
parsedPoints.push({ x: p1.x, y: p1.y });
}
if (smooth) {
subPath = getSplinePath(parsedPoints, false, constraint);
}
else {
subPath = getLinePath(parsedPoints, false);
}
if (index > 0) {
subPath[0][0] = 'L';
}
}
path = path.concat(subPath);
});
path.push(['Z']);
}
return path;
}
/**
* @ignore
* Gets shape attrs
* @param cfg
* @param isStroke
* @param smooth
* @param registeredShape
* @param [constraint]
* @returns
*/
export function getShapeAttrs(cfg, isStroke, smooth, registeredShape, constraint) {
var attrs = getStyle(cfg, isStroke, !isStroke, 'lineWidth');
var connectNulls = cfg.connectNulls, isInCircle = cfg.isInCircle, points = cfg.points, showSinglePoint = cfg.showSinglePoint;
var pathPoints = getPathPoints(points, connectNulls, showSinglePoint); // 根据 connectNulls 配置获取图形关键点
var path = [];
for (var i = 0, len = pathPoints.length; i < len; i++) {
var eachPoints = pathPoints[i];
path = path.concat(getPath(eachPoints, isInCircle, smooth, registeredShape, constraint));
}
attrs.path = path;
return attrs;
}
/**
* @ignore
* Gets constraint
* @param coordinate
* @returns constraint
*/
export function getConstraint(coordinate) {
var start = coordinate.start, end = coordinate.end;
return [
[start.x, end.y],
[end.x, start.y],
];
}
//# sourceMappingURL=util.js.map