@antv/g2
Version:
the Grammar of Graphics in Javascript
93 lines • 3.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConstraint = exports.getShapeAttrs = void 0;
var util_1 = require("@antv/util");
var get_path_points_1 = require("../util/get-path-points");
var get_style_1 = require("../util/get-style");
var path_1 = require("../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();
(0, util_1.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 = (0, path_1.getSplinePath)(parsedPoints, false, constraint);
}
else {
subPath = (0, path_1.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
*/
function getShapeAttrs(cfg, isStroke, smooth, registeredShape, constraint) {
var attrs = (0, get_style_1.getStyle)(cfg, isStroke, !isStroke, 'lineWidth');
var connectNulls = cfg.connectNulls, isInCircle = cfg.isInCircle, points = cfg.points, showSinglePoint = cfg.showSinglePoint;
var pathPoints = (0, get_path_points_1.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;
}
exports.getShapeAttrs = getShapeAttrs;
/**
* @ignore
* Gets constraint
* @param coordinate
* @returns constraint
*/
function getConstraint(coordinate) {
var start = coordinate.start, end = coordinate.end;
return [
[start.x, end.y],
[end.x, start.y],
];
}
exports.getConstraint = getConstraint;
//# sourceMappingURL=util.js.map