1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.getSmoothViolinPath = exports.getViolinPath = exports.getPathPoints = void 0;
|
4 | var util_1 = require("@antv/util");
|
5 | var path_1 = require("./path");
|
6 | function isValueEmpty(value) {
|
7 | if (value) {
|
8 | return false;
|
9 | }
|
10 | return value === null || value === undefined || isNaN(value);
|
11 | }
|
12 | function isYNil(point) {
|
13 | if ((0, util_1.isArray)(point)) {
|
14 |
|
15 | return isValueEmpty(point[1].y);
|
16 | }
|
17 | var value = point.y;
|
18 | return (0, util_1.isArray)(value) ? isValueEmpty(value[0]) : isValueEmpty(value);
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | function getPathPoints(points, connectNulls, showSinglePoint) {
|
44 | if (connectNulls === void 0) { connectNulls = false; }
|
45 | if (showSinglePoint === void 0) { showSinglePoint = true; }
|
46 | if (!points.length || (points.length === 1 && !showSinglePoint)) {
|
47 |
|
48 | return [];
|
49 | }
|
50 | if (connectNulls) {
|
51 |
|
52 | var filtered = [];
|
53 | for (var i = 0, len = points.length; i < len; i++) {
|
54 | var point = points[i];
|
55 | if (!isYNil(point)) {
|
56 | filtered.push(point);
|
57 | }
|
58 | }
|
59 | return [filtered];
|
60 | }
|
61 | var result = [];
|
62 | var tmp = [];
|
63 | for (var i = 0, len = points.length; i < len; i++) {
|
64 | var point = points[i];
|
65 | if (isYNil(point)) {
|
66 | if (tmp.length) {
|
67 | if (!(tmp.length === 1 && !showSinglePoint)) {
|
68 |
|
69 | result.push(tmp);
|
70 | }
|
71 | tmp = [];
|
72 | }
|
73 | }
|
74 | else {
|
75 | tmp.push(point);
|
76 | }
|
77 | }
|
78 | if (tmp.length) {
|
79 | result.push(tmp);
|
80 | }
|
81 | return result;
|
82 | }
|
83 | exports.getPathPoints = getPathPoints;
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 | function getViolinPath(points) {
|
90 | var path = [];
|
91 | for (var i = 0; i < points.length; i++) {
|
92 | var point = points[i];
|
93 | if (point) {
|
94 | var action = i === 0 ? 'M' : 'L';
|
95 | path.push([action, point.x, point.y]);
|
96 | }
|
97 | }
|
98 | var first = points[0];
|
99 | if (first) {
|
100 | path.push(['L', first.x, first.y]);
|
101 | path.push(['z']);
|
102 | }
|
103 | return path;
|
104 | }
|
105 | exports.getViolinPath = getViolinPath;
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 | function getSmoothViolinPath(points) {
|
112 | var half = points.length / 2;
|
113 | var leftPoints = [];
|
114 | var rightPoints = [];
|
115 | for (var i = 0; i < points.length; i++) {
|
116 | if (i < half) {
|
117 | leftPoints.push(points[i]);
|
118 | }
|
119 | else {
|
120 | rightPoints.push(points[i]);
|
121 | }
|
122 | }
|
123 | var leftPath = (0, path_1.getSplinePath)(leftPoints, false);
|
124 | var rightPath = (0, path_1.getSplinePath)(rightPoints, false);
|
125 | if (rightPoints.length) {
|
126 | leftPath.push(['L', rightPoints[0].x, rightPoints[0].y]);
|
127 | }
|
128 | rightPath.shift();
|
129 | var path = leftPath.concat(rightPath);
|
130 | if (leftPoints.length) {
|
131 | path.push(['L', leftPoints[0].x, leftPoints[0].y]);
|
132 | }
|
133 | path.push(['z']);
|
134 | return path;
|
135 | }
|
136 | exports.getSmoothViolinPath = getSmoothViolinPath;
|
137 |
|
\ | No newline at end of file |