- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs
Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
import path2Absolute from './path-2-absolute';
|
|
import { segmentToCubic } from './process/segment-2-cubic';
|
|
export default function pathToCurve(path, needZCommandIndexes) {
|
|
if (needZCommandIndexes === void 0) { needZCommandIndexes = false; }
|
|
var pathArray = path2Absolute(path);
|
|
var params = {
|
|
x1: 0, y1: 0, x2: 0, y2: 0, x: 0, y: 0, qx: null, qy: null,
|
|
};
|
|
var allPathCommands = [];
|
|
var pathCommand = '';
|
|
var ii = pathArray.length;
|
|
var segment;
|
|
var seglen;
|
|
var zCommandIndexes = [];
|
|
for (var i = 0; i < ii; i += 1) {
|
|
if (pathArray[i])
|
|
pathCommand = pathArray[i][0];
|
|
allPathCommands[i] = pathCommand;
|
|
pathArray[i] = segmentToCubic(pathArray[i], params);
|
|
fixArc(pathArray, allPathCommands, i);
|
|
ii = pathArray.length; // solves curveArrays ending in Z
|
|
// keep Z command account for lineJoin
|
|
// @see https://github.com/antvis/util/issues/68
|
|
if (pathCommand === 'Z') {
|
|
zCommandIndexes.push(i);
|
|
}
|
|
segment = pathArray[i];
|
|
seglen = segment.length;
|
|
params.x1 = +segment[seglen - 2];
|
|
params.y1 = +segment[seglen - 1];
|
|
params.x2 = +(segment[seglen - 4]) || params.x1;
|
|
params.y2 = +(segment[seglen - 3]) || params.y1;
|
|
}
|
|
if (needZCommandIndexes) {
|
|
return [pathArray, zCommandIndexes];
|
|
}
|
|
else {
|
|
return pathArray;
|
|
}
|
|
}
|
|
function fixArc(pathArray, allPathCommands, i) {
|
|
if (pathArray[i].length > 7) {
|
|
pathArray[i].shift();
|
|
var pi = pathArray[i];
|
|
// const ni = i + 1;
|
|
var ni = i;
|
|
while (pi.length) {
|
|
// if created multiple C:s, their original seg is saved
|
|
allPathCommands[i] = 'A';
|
|
// @ts-ignore
|
|
pathArray.splice(ni += 1, 0, ['C'].concat(pi.splice(0, 6)));
|
|
}
|
|
pathArray.splice(i, 1);
|
|
}
|
|
}
|
|
//# sourceMappingURL=path-2-curve.js.map
|