UNPKG

1.77 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.segmentToCubic = void 0;
4var arc_2_cubic_1 = require("./arc-2-cubic");
5var quad_2_cubic_1 = require("./quad-2-cubic");
6var line_2_cubic_1 = require("./line-2-cubic");
7function segmentToCubic(segment, params) {
8 var pathCommand = segment[0];
9 var values = segment.slice(1).map(Number);
10 var x = values[0], y = values[1];
11 var args;
12 var px1 = params.x1, py1 = params.y1, px = params.x, py = params.y;
13 if (!'TQ'.includes(pathCommand)) {
14 params.qx = null;
15 params.qy = null;
16 }
17 switch (pathCommand) {
18 case 'M':
19 params.x = x;
20 params.y = y;
21 return segment;
22 case 'A':
23 args = [px1, py1].concat(values);
24 // @ts-ignore
25 return ['C'].concat((0, arc_2_cubic_1.arcToCubic)(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]));
26 case 'Q':
27 params.qx = x;
28 params.qy = y;
29 args = [px1, py1].concat(values);
30 // @ts-ignore
31 return ['C'].concat((0, quad_2_cubic_1.quadToCubic)(args[0], args[1], args[2], args[3], args[4], args[5]));
32 case 'L':
33 // @ts-ignore
34 return ['C'].concat((0, line_2_cubic_1.lineToCubic)(px1, py1, x, y));
35 case 'Z':
36 // prevent NaN from divide 0
37 if (px1 === px && py1 === py) {
38 return ['C', px1, py1, px, py, px, py];
39 }
40 // @ts-ignore
41 return ['C'].concat((0, line_2_cubic_1.lineToCubic)(px1, py1, px, py));
42 default:
43 }
44 return segment;
45}
46exports.segmentToCubic = segmentToCubic;
47//# sourceMappingURL=segment-2-cubic.js.map
\No newline at end of file