UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

39 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ellipseSpread = exports.ellipse = void 0; var geometry_1 = require("../../geometry"); var util_1 = require("./util"); var ellipse = function (portsPositionArgs, elemBBox, groupPositionArgs) { var startAngle = groupPositionArgs.start || 0; var stepAngle = groupPositionArgs.step || 20; return ellipseLayout(portsPositionArgs, elemBBox, startAngle, function (index, count) { return (index + 0.5 - count / 2) * stepAngle; }); }; exports.ellipse = ellipse; var ellipseSpread = function (portsPositionArgs, elemBBox, groupPositionArgs) { var startAngle = groupPositionArgs.start || 0; var stepAngle = groupPositionArgs.step || 360 / portsPositionArgs.length; return ellipseLayout(portsPositionArgs, elemBBox, startAngle, function (index) { return index * stepAngle; }); }; exports.ellipseSpread = ellipseSpread; function ellipseLayout(portsPositionArgs, elemBBox, startAngle, stepFn) { var center = elemBBox.getCenter(); var start = elemBBox.getTopCenter(); var ratio = elemBBox.width / elemBBox.height; var ellipse = geometry_1.Ellipse.fromRect(elemBBox); var count = portsPositionArgs.length; return portsPositionArgs.map(function (item, index) { var angle = startAngle + stepFn(index, count); var p = start.clone().rotate(-angle, center).scale(ratio, 1, center); var theta = item.compensateRotate ? -ellipse.tangentTheta(p) : 0; if (item.dx || item.dy) { p.translate(item.dx || 0, item.dy || 0); } if (item.dr) { p.move(center, item.dr); } return (0, util_1.toResult)(p.round(), theta, item); }); } //# sourceMappingURL=ellipse.js.map