@revideo/2d 0.2.2 → 0.2.4-alpha.894

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/editor/index.css +1 -1
  2. package/editor/index.js +529 -245
  3. package/lib/code/CodeCursor.d.ts +74 -74
  4. package/lib/code/CodeCursor.js +352 -286
  5. package/lib/code/CodeDiffer.d.ts +21 -16
  6. package/lib/code/CodeDiffer.js +39 -41
  7. package/lib/code/CodeFragment.d.ts +16 -8
  8. package/lib/code/CodeFragment.js +36 -36
  9. package/lib/code/CodeHighlighter.d.ts +59 -59
  10. package/lib/code/CodeHighlighter.js +1 -1
  11. package/lib/code/CodeMetrics.d.ts +12 -8
  12. package/lib/code/CodeMetrics.js +26 -24
  13. package/lib/code/CodeRange.d.ts +21 -5
  14. package/lib/code/CodeRange.js +131 -124
  15. package/lib/code/CodeScope.d.ts +18 -8
  16. package/lib/code/CodeScope.js +59 -61
  17. package/lib/code/CodeSelection.d.ts +9 -4
  18. package/lib/code/CodeSelection.js +8 -8
  19. package/lib/code/CodeSignal.d.ts +74 -47
  20. package/lib/code/CodeSignal.js +206 -189
  21. package/lib/code/CodeTokenizer.d.ts +1 -1
  22. package/lib/code/CodeTokenizer.js +41 -41
  23. package/lib/code/DefaultHighlightStyle.d.ts +2 -2
  24. package/lib/code/DefaultHighlightStyle.js +96 -96
  25. package/lib/code/LezerHighlighter.d.ts +21 -19
  26. package/lib/code/LezerHighlighter.js +101 -101
  27. package/lib/code/diff.d.ts +12 -9
  28. package/lib/code/diff.js +218 -205
  29. package/lib/code/extractRange.d.ts +7 -4
  30. package/lib/code/extractRange.js +79 -71
  31. package/lib/code/index.d.ts +1 -1
  32. package/lib/code/index.js +1 -1
  33. package/lib/components/Audio.d.ts +11 -11
  34. package/lib/components/Audio.js +115 -109
  35. package/lib/components/Bezier.d.ts +18 -18
  36. package/lib/components/Bezier.js +86 -75
  37. package/lib/components/Circle.d.ts +95 -90
  38. package/lib/components/Circle.js +85 -74
  39. package/lib/components/Code.d.ts +244 -211
  40. package/lib/components/Code.js +317 -269
  41. package/lib/components/CodeBlock.d.ts +109 -67
  42. package/lib/components/CodeBlock.js +414 -373
  43. package/lib/components/CubicBezier.d.ts +36 -36
  44. package/lib/components/CubicBezier.js +52 -49
  45. package/lib/components/Curve.d.ts +208 -198
  46. package/lib/components/Curve.js +270 -269
  47. package/lib/components/Grid.d.ts +47 -42
  48. package/lib/components/Grid.js +63 -56
  49. package/lib/components/Icon.d.ts +55 -50
  50. package/lib/components/Icon.js +58 -50
  51. package/lib/components/Img.d.ts +86 -79
  52. package/lib/components/Img.js +193 -181
  53. package/lib/components/Knot.d.ts +97 -78
  54. package/lib/components/Knot.js +81 -60
  55. package/lib/components/Latex.d.ts +12 -12
  56. package/lib/components/Latex.js +77 -65
  57. package/lib/components/Layout.d.ts +455 -413
  58. package/lib/components/Layout.js +666 -681
  59. package/lib/components/Line.d.ts +61 -49
  60. package/lib/components/Line.js +216 -193
  61. package/lib/components/Media.d.ts +35 -35
  62. package/lib/components/Media.js +135 -134
  63. package/lib/components/Node.d.ts +875 -830
  64. package/lib/components/Node.js +1383 -1314
  65. package/lib/components/Path.d.ts +35 -14
  66. package/lib/components/Path.js +100 -89
  67. package/lib/components/Polygon.d.ts +60 -55
  68. package/lib/components/Polygon.js +71 -66
  69. package/lib/components/QuadBezier.d.ts +29 -29
  70. package/lib/components/QuadBezier.js +50 -45
  71. package/lib/components/Ray.d.ts +28 -28
  72. package/lib/components/Ray.js +71 -64
  73. package/lib/components/Rect.d.ts +115 -108
  74. package/lib/components/Rect.js +78 -72
  75. package/lib/components/SVG.d.ts +165 -139
  76. package/lib/components/SVG.js +609 -541
  77. package/lib/components/Shape.d.ts +44 -35
  78. package/lib/components/Shape.js +112 -127
  79. package/lib/components/Spline.d.ts +46 -40
  80. package/lib/components/Spline.js +190 -175
  81. package/lib/components/Txt.d.ts +55 -44
  82. package/lib/components/Txt.js +156 -155
  83. package/lib/components/TxtLeaf.d.ts +20 -16
  84. package/lib/components/TxtLeaf.js +177 -158
  85. package/lib/components/Video.d.ts +41 -41
  86. package/lib/components/Video.js +138 -135
  87. package/lib/components/View2D.d.ts +21 -21
  88. package/lib/components/View2D.js +98 -85
  89. package/lib/components/index.d.ts +1 -1
  90. package/lib/components/index.js +1 -1
  91. package/lib/components/types.d.ts +22 -9
  92. package/lib/components/types.js +1 -1
  93. package/lib/curves/ArcSegment.d.ts +36 -24
  94. package/lib/curves/ArcSegment.js +145 -94
  95. package/lib/curves/CircleSegment.d.ts +26 -16
  96. package/lib/curves/CircleSegment.js +56 -49
  97. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  98. package/lib/curves/CubicBezierSegment.js +79 -46
  99. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  100. package/lib/curves/CurveDrawingInfo.js +1 -1
  101. package/lib/curves/CurvePoint.d.ts +13 -13
  102. package/lib/curves/CurvePoint.js +1 -1
  103. package/lib/curves/CurveProfile.d.ts +5 -5
  104. package/lib/curves/CurveProfile.js +1 -1
  105. package/lib/curves/KnotInfo.d.ts +8 -8
  106. package/lib/curves/KnotInfo.js +1 -1
  107. package/lib/curves/LineSegment.d.ts +19 -14
  108. package/lib/curves/LineSegment.js +42 -42
  109. package/lib/curves/Polynomial.d.ts +110 -110
  110. package/lib/curves/Polynomial.js +249 -239
  111. package/lib/curves/Polynomial2D.d.ts +20 -20
  112. package/lib/curves/Polynomial2D.js +46 -42
  113. package/lib/curves/PolynomialSegment.d.ts +42 -37
  114. package/lib/curves/PolynomialSegment.js +83 -81
  115. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  116. package/lib/curves/QuadBezierSegment.js +71 -41
  117. package/lib/curves/Segment.d.ts +12 -7
  118. package/lib/curves/Segment.js +2 -3
  119. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  120. package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
  121. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  122. package/lib/curves/createCurveProfileLerp.js +211 -208
  123. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  124. package/lib/curves/getBezierSplineProfile.js +145 -101
  125. package/lib/curves/getCircleProfile.d.ts +10 -4
  126. package/lib/curves/getCircleProfile.js +72 -40
  127. package/lib/curves/getPathProfile.d.ts +2 -2
  128. package/lib/curves/getPathProfile.js +135 -112
  129. package/lib/curves/getPointAtDistance.d.ts +7 -4
  130. package/lib/curves/getPointAtDistance.js +12 -12
  131. package/lib/curves/getPolylineProfile.d.ts +8 -4
  132. package/lib/curves/getPolylineProfile.js +67 -54
  133. package/lib/curves/getRectProfile.d.ts +9 -4
  134. package/lib/curves/getRectProfile.js +117 -52
  135. package/lib/curves/index.d.ts +1 -1
  136. package/lib/curves/index.js +1 -1
  137. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  138. package/lib/decorators/canvasStyleSignal.js +10 -10
  139. package/lib/decorators/colorSignal.d.ts +1 -1
  140. package/lib/decorators/colorSignal.js +7 -7
  141. package/lib/decorators/compound.d.ts +4 -2
  142. package/lib/decorators/compound.js +43 -23
  143. package/lib/decorators/computed.d.ts +1 -1
  144. package/lib/decorators/computed.js +9 -9
  145. package/lib/decorators/defaultStyle.d.ts +5 -2
  146. package/lib/decorators/defaultStyle.js +11 -11
  147. package/lib/decorators/filtersSignal.d.ts +28 -8
  148. package/lib/decorators/filtersSignal.js +87 -64
  149. package/lib/decorators/index.d.ts +1 -1
  150. package/lib/decorators/index.js +1 -1
  151. package/lib/decorators/initializers.d.ts +5 -2
  152. package/lib/decorators/initializers.js +18 -19
  153. package/lib/decorators/nodeName.d.ts +1 -1
  154. package/lib/decorators/nodeName.js +4 -4
  155. package/lib/decorators/signal.d.ts +40 -20
  156. package/lib/decorators/signal.js +113 -104
  157. package/lib/decorators/spacingSignal.d.ts +1 -1
  158. package/lib/decorators/spacingSignal.js +13 -13
  159. package/lib/decorators/vector2Signal.d.ts +13 -7
  160. package/lib/decorators/vector2Signal.js +15 -13
  161. package/lib/index.d.ts +1 -1
  162. package/lib/index.js +1 -1
  163. package/lib/jsx-dev-runtime.d.ts +3 -3
  164. package/lib/jsx-dev-runtime.js +3 -3
  165. package/lib/jsx-runtime.d.ts +19 -9
  166. package/lib/jsx-runtime.js +18 -18
  167. package/lib/partials/Filter.d.ts +24 -16
  168. package/lib/partials/Filter.js +69 -69
  169. package/lib/partials/Gradient.d.ts +30 -24
  170. package/lib/partials/Gradient.js +69 -58
  171. package/lib/partials/Pattern.d.ts +14 -9
  172. package/lib/partials/Pattern.js +30 -24
  173. package/lib/partials/ShaderConfig.d.ts +81 -74
  174. package/lib/partials/ShaderConfig.js +22 -23
  175. package/lib/partials/index.d.ts +1 -1
  176. package/lib/partials/index.js +1 -1
  177. package/lib/partials/types.d.ts +19 -6
  178. package/lib/partials/types.js +1 -1
  179. package/lib/scenes/Scene2D.d.ts +42 -23
  180. package/lib/scenes/Scene2D.js +161 -151
  181. package/lib/scenes/index.d.ts +1 -1
  182. package/lib/scenes/index.js +1 -1
  183. package/lib/scenes/makeScene2D.d.ts +7 -5
  184. package/lib/scenes/makeScene2D.js +10 -10
  185. package/lib/scenes/useScene2D.d.ts +2 -2
  186. package/lib/scenes/useScene2D.js +3 -3
  187. package/lib/utils/CanvasUtils.d.ts +93 -21
  188. package/lib/utils/CanvasUtils.js +186 -105
  189. package/lib/utils/diff.d.ts +25 -18
  190. package/lib/utils/diff.js +84 -87
  191. package/lib/utils/index.d.ts +1 -1
  192. package/lib/utils/index.js +1 -1
  193. package/lib/utils/is.d.ts +4 -2
  194. package/lib/utils/is.js +2 -2
  195. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  196. package/lib/utils/makeSignalExtensions.js +17 -17
  197. package/package.json +5 -5
@@ -1,8 +1,8 @@
1
- import { Vector2, clamp } from '@revideo/core';
2
- import { CubicBezierSegment } from './CubicBezierSegment';
3
- import { QuadBezierSegment } from './QuadBezierSegment';
1
+ import {Vector2, clamp} from '@revideo/core';
2
+ import {CubicBezierSegment} from './CubicBezierSegment';
3
+ import {QuadBezierSegment} from './QuadBezierSegment';
4
4
  function isCubicSegment(segment) {
5
- return segment instanceof CubicBezierSegment;
5
+ return segment instanceof CubicBezierSegment;
6
6
  }
7
7
  /**
8
8
  * Update a given knot's handles to be a blend between the user provided handles
@@ -17,54 +17,61 @@ function isCubicSegment(segment) {
17
17
  * of the auto calculated handles.
18
18
  */
19
19
  function calculateSmoothHandles(knot, previous, next, smoothness) {
20
- if (knot.auto.start === 0 && knot.auto.end === 0) {
21
- return;
22
- }
23
- // See for reference:
24
- // http://scaledinnovation.com/analytics/splines/aboutSplines.html
25
- const distanceToPrev = knot.position.sub(previous.position).magnitude;
26
- const distanceToNext = next.position.sub(knot.position).magnitude;
27
- const fa = (smoothness * distanceToPrev) / (distanceToPrev + distanceToNext);
28
- const fb = smoothness - fa;
29
- const startHandle = new Vector2(knot.position.x - fa * (next.position.x - previous.position.x), knot.position.y - fa * (next.position.y - previous.position.y));
30
- const endHandle = new Vector2(knot.position.x + fb * (next.position.x - previous.position.x), knot.position.y + fb * (next.position.y - previous.position.y));
31
- knot.startHandle = knot.startHandle.lerp(startHandle, knot.auto.start);
32
- knot.endHandle = knot.endHandle.lerp(endHandle, knot.auto.end);
20
+ if (knot.auto.start === 0 && knot.auto.end === 0) {
21
+ return;
22
+ }
23
+ // See for reference:
24
+ // http://scaledinnovation.com/analytics/splines/aboutSplines.html
25
+ const distanceToPrev = knot.position.sub(previous.position).magnitude;
26
+ const distanceToNext = next.position.sub(knot.position).magnitude;
27
+ const fa = (smoothness * distanceToPrev) / (distanceToPrev + distanceToNext);
28
+ const fb = smoothness - fa;
29
+ const startHandle = new Vector2(
30
+ knot.position.x - fa * (next.position.x - previous.position.x),
31
+ knot.position.y - fa * (next.position.y - previous.position.y),
32
+ );
33
+ const endHandle = new Vector2(
34
+ knot.position.x + fb * (next.position.x - previous.position.x),
35
+ knot.position.y + fb * (next.position.y - previous.position.y),
36
+ );
37
+ knot.startHandle = knot.startHandle.lerp(startHandle, knot.auto.start);
38
+ knot.endHandle = knot.endHandle.lerp(endHandle, knot.auto.end);
33
39
  }
34
40
  /**
35
41
  * Calculate the `minSin` value of the curve profile so that miter joins get
36
42
  * taken into account properly.
37
43
  */
38
44
  function updateMinSin(profile) {
39
- for (let i = 0; i < profile.segments.length; i++) {
40
- const segmentA = profile.segments[i];
41
- const segmentB = profile.segments[(i + 1) % profile.segments.length];
42
- // Quadratic Bézier segments will always join smoothly with the previous
43
- // segment. This means that we can skip the segment since it's impossible
44
- // to have a miter join between the two segments.
45
- if (!isCubicSegment(segmentA) || !isCubicSegment(segmentB)) {
46
- continue;
47
- }
48
- const startVector = segmentA.p2.sub(segmentA.p3).normalized.safe;
49
- const endVector = segmentB.p1.sub(segmentB.p0).normalized.safe;
50
- const dot = startVector.dot(endVector);
51
- // A miter join can only occur if the handle is broken, so we can skip the
52
- // segment if the handles are mirrored.
53
- const isBroken = 1 - Math.abs(dot) > 0.0001;
54
- if (!isBroken) {
55
- continue;
56
- }
57
- const angleBetween = Math.acos(clamp(-1, 1, dot));
58
- const angleSin = Math.sin(angleBetween / 2);
59
- profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
45
+ for (let i = 0; i < profile.segments.length; i++) {
46
+ const segmentA = profile.segments[i];
47
+ const segmentB = profile.segments[(i + 1) % profile.segments.length];
48
+ // Quadratic Bézier segments will always join smoothly with the previous
49
+ // segment. This means that we can skip the segment since it's impossible
50
+ // to have a miter join between the two segments.
51
+ if (!isCubicSegment(segmentA) || !isCubicSegment(segmentB)) {
52
+ continue;
53
+ }
54
+ const startVector = segmentA.p2.sub(segmentA.p3).normalized.safe;
55
+ const endVector = segmentB.p1.sub(segmentB.p0).normalized.safe;
56
+ const dot = startVector.dot(endVector);
57
+ // A miter join can only occur if the handle is broken, so we can skip the
58
+ // segment if the handles are mirrored.
59
+ const isBroken = 1 - Math.abs(dot) > 0.0001;
60
+ if (!isBroken) {
61
+ continue;
60
62
  }
63
+ const angleBetween = Math.acos(clamp(-1, 1, dot));
64
+ const angleSin = Math.sin(angleBetween / 2);
65
+ profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
66
+ }
61
67
  }
62
68
  function addSegmentToProfile(profile, p0, p1, p2, p3) {
63
- const segment = p3 !== undefined
64
- ? new CubicBezierSegment(p0, p1, p2, p3)
65
- : new QuadBezierSegment(p0, p1, p2);
66
- profile.segments.push(segment);
67
- profile.arcLength += segment.arcLength;
69
+ const segment =
70
+ p3 !== undefined
71
+ ? new CubicBezierSegment(p0, p1, p2, p3)
72
+ : new QuadBezierSegment(p0, p1, p2);
73
+ profile.segments.push(segment);
74
+ profile.arcLength += segment.arcLength;
68
75
  }
69
76
  /**
70
77
  * Calculate the curve profile of a spline based on a set of knots.
@@ -75,63 +82,100 @@ function addSegmentToProfile(profile, p0, p1, p2, p3) {
75
82
  * calculated handles.
76
83
  */
77
84
  export function getBezierSplineProfile(knots, closed, smoothness) {
78
- const profile = {
79
- segments: [],
80
- arcLength: 0,
81
- minSin: 1,
82
- };
83
- // First, we want to calculate the actual handle positions for each knot. We
84
- // do so using the knot's `auto` value to blend between the user-provided
85
- // handles and the auto calculated smooth handles.
86
- const numberOfKnots = knots.length;
87
- for (let i = 0; i < numberOfKnots; i++) {
88
- // Calculating the auto handles for a given knot requires both of the knot's
89
- // neighboring knots. To make sure that this works properly for the first
90
- // and last knots of the spline, we want to make sure to wrap around to the
91
- // beginning and end of the array, respectively.
92
- const prevIndex = (i - 1 + numberOfKnots) % numberOfKnots;
93
- const nextIndex = (i + 1) % numberOfKnots;
94
- calculateSmoothHandles(knots[i], knots[prevIndex], knots[nextIndex], smoothness);
95
- }
96
- const firstKnot = knots[0];
97
- const secondKnot = knots[1];
98
- // Drawing the first and last segments of a spline has a few edge cases we
99
- // need to consider:
100
- // If the spline is not closed and the first knot should use the auto
101
- // calculated handles, we want to draw a quadratic Bézier curve instead of a
102
- // cubic one.
103
- if (!closed && firstKnot.auto.start === 1 && firstKnot.auto.end === 1) {
104
- addSegmentToProfile(profile, firstKnot.position, secondKnot.startHandle, secondKnot.position);
105
- }
106
- else {
107
- // Otherwise, draw a cubic Bézier segment like we do for the other segments.
108
- addSegmentToProfile(profile, firstKnot.position, firstKnot.endHandle, secondKnot.startHandle, secondKnot.position);
109
- }
110
- // Add all intermediate spline segments as cubic Bézier curve segments.
111
- for (let i = 1; i < numberOfKnots - 2; i++) {
112
- const start = knots[i];
113
- const end = knots[i + 1];
114
- addSegmentToProfile(profile, start.position, start.endHandle, end.startHandle, end.position);
115
- }
116
- const lastKnot = knots.at(-1);
117
- const secondToLastKnot = knots.at(-2);
118
- if (knots.length > 2) {
119
- // Similar to the first segment, we also want to draw the last segment as a
120
- // quadratic Bézier curve if the curve is not closed and the knot should
121
- // use the auto calculated handles.
122
- if (!closed && lastKnot.auto.start === 1 && lastKnot.auto.end === 1) {
123
- addSegmentToProfile(profile, secondToLastKnot.position, secondToLastKnot.endHandle, lastKnot.position);
124
- }
125
- else {
126
- addSegmentToProfile(profile, secondToLastKnot.position, secondToLastKnot.endHandle, lastKnot.startHandle, lastKnot.position);
127
- }
128
- }
129
- // If the spline should be closed, add one final cubic Bézier segment
130
- // connecting the last and first knots.
131
- if (closed) {
132
- addSegmentToProfile(profile, lastKnot.position, lastKnot.endHandle, firstKnot.startHandle, firstKnot.position);
85
+ const profile = {
86
+ segments: [],
87
+ arcLength: 0,
88
+ minSin: 1,
89
+ };
90
+ // First, we want to calculate the actual handle positions for each knot. We
91
+ // do so using the knot's `auto` value to blend between the user-provided
92
+ // handles and the auto calculated smooth handles.
93
+ const numberOfKnots = knots.length;
94
+ for (let i = 0; i < numberOfKnots; i++) {
95
+ // Calculating the auto handles for a given knot requires both of the knot's
96
+ // neighboring knots. To make sure that this works properly for the first
97
+ // and last knots of the spline, we want to make sure to wrap around to the
98
+ // beginning and end of the array, respectively.
99
+ const prevIndex = (i - 1 + numberOfKnots) % numberOfKnots;
100
+ const nextIndex = (i + 1) % numberOfKnots;
101
+ calculateSmoothHandles(
102
+ knots[i],
103
+ knots[prevIndex],
104
+ knots[nextIndex],
105
+ smoothness,
106
+ );
107
+ }
108
+ const firstKnot = knots[0];
109
+ const secondKnot = knots[1];
110
+ // Drawing the first and last segments of a spline has a few edge cases we
111
+ // need to consider:
112
+ // If the spline is not closed and the first knot should use the auto
113
+ // calculated handles, we want to draw a quadratic Bézier curve instead of a
114
+ // cubic one.
115
+ if (!closed && firstKnot.auto.start === 1 && firstKnot.auto.end === 1) {
116
+ addSegmentToProfile(
117
+ profile,
118
+ firstKnot.position,
119
+ secondKnot.startHandle,
120
+ secondKnot.position,
121
+ );
122
+ } else {
123
+ // Otherwise, draw a cubic Bézier segment like we do for the other segments.
124
+ addSegmentToProfile(
125
+ profile,
126
+ firstKnot.position,
127
+ firstKnot.endHandle,
128
+ secondKnot.startHandle,
129
+ secondKnot.position,
130
+ );
131
+ }
132
+ // Add all intermediate spline segments as cubic Bézier curve segments.
133
+ for (let i = 1; i < numberOfKnots - 2; i++) {
134
+ const start = knots[i];
135
+ const end = knots[i + 1];
136
+ addSegmentToProfile(
137
+ profile,
138
+ start.position,
139
+ start.endHandle,
140
+ end.startHandle,
141
+ end.position,
142
+ );
143
+ }
144
+ const lastKnot = knots.at(-1);
145
+ const secondToLastKnot = knots.at(-2);
146
+ if (knots.length > 2) {
147
+ // Similar to the first segment, we also want to draw the last segment as a
148
+ // quadratic Bézier curve if the curve is not closed and the knot should
149
+ // use the auto calculated handles.
150
+ if (!closed && lastKnot.auto.start === 1 && lastKnot.auto.end === 1) {
151
+ addSegmentToProfile(
152
+ profile,
153
+ secondToLastKnot.position,
154
+ secondToLastKnot.endHandle,
155
+ lastKnot.position,
156
+ );
157
+ } else {
158
+ addSegmentToProfile(
159
+ profile,
160
+ secondToLastKnot.position,
161
+ secondToLastKnot.endHandle,
162
+ lastKnot.startHandle,
163
+ lastKnot.position,
164
+ );
133
165
  }
134
- updateMinSin(profile);
135
- return profile;
166
+ }
167
+ // If the spline should be closed, add one final cubic Bézier segment
168
+ // connecting the last and first knots.
169
+ if (closed) {
170
+ addSegmentToProfile(
171
+ profile,
172
+ lastKnot.position,
173
+ lastKnot.endHandle,
174
+ firstKnot.startHandle,
175
+ firstKnot.position,
176
+ );
177
+ }
178
+ updateMinSin(profile);
179
+ return profile;
136
180
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QmV6aWVyU3BsaW5lUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldEJlemllclNwbGluZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsU0FBUyxjQUFjLENBQ3JCLE9BQTBCO0lBRTFCLE9BQU8sT0FBTyxZQUFZLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLElBQWMsRUFDZCxRQUFrQixFQUNsQixJQUFjLEVBQ2QsVUFBa0I7SUFFbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNULENBQUM7SUFFRCxxQkFBcUI7SUFDckIsa0VBQWtFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sV0FBVyxHQUFHLElB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
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QmV6aWVyU3BsaW5lUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldEJlemllclNwbGluZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsU0FBUyxjQUFjLENBQ3JCLE9BQTBCO0lBRTFCLE9BQU8sT0FBTyxZQUFZLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLElBQWMsRUFDZCxRQUFrQixFQUNsQixJQUFjLEVBQ2QsVUFBa0I7SUFFbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNULENBQUM7SUFFRCxxQkFBcUI7SUFDckIsa0VBQWtFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUMvRCxDQUFDO0lBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQy9ELENBQUM7SUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLE9BQXFCO0lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFzQixDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQy9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNiLENBQUM7UUFFdkIsd0VBQXdFO1FBQ3hFLHlFQUF5RTtRQUN6RSxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNELFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0QsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2QywwRUFBMEU7UUFDMUUsdUNBQXVDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQzFCLE9BQXFCLEVBQ3JCLEVBQVcsRUFDWCxFQUFXLEVBQ1gsRUFBVyxFQUNYLEVBQVk7SUFFWixNQUFNLE9BQU8sR0FDWCxFQUFFLEtBQUssU0FBUztRQUNkLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsS0FBaUIsRUFDakIsTUFBZSxFQUNmLFVBQWtCO0lBRWxCLE1BQU0sT0FBTyxHQUFpQjtRQUM1QixRQUFRLEVBQUUsRUFBRTtRQUNaLFNBQVMsRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDO0lBRUYsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSxrREFBa0Q7SUFDbEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsNEVBQTRFO1FBQzVFLHlFQUF5RTtRQUN6RSwyRUFBMkU7UUFDM0UsZ0RBQWdEO1FBQ2hELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxhQUFhLENBQUM7UUFDMUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQzFDLHNCQUFzQixDQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ2hCLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUIsMEVBQTBFO0lBQzFFLG9CQUFvQjtJQUNwQixxRUFBcUU7SUFDckUsNEVBQTRFO0lBQzVFLGFBQWE7SUFDYixJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxtQkFBbUIsQ0FDakIsT0FBTyxFQUNQLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLFVBQVUsQ0FBQyxXQUFXLEVBQ3RCLFVBQVUsQ0FBQyxRQUFRLENBQ3BCLENBQUM7SUFDSixDQUFDO1NBQU0sQ0FBQztRQUNOLDRFQUE0RTtRQUM1RSxtQkFBbUIsQ0FDakIsT0FBTyxFQUNQLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLFNBQVMsQ0FBQyxTQUFTLEVBQ25CLFVBQVUsQ0FBQyxXQUFXLEVBQ3RCLFVBQVUsQ0FBQyxRQUFRLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsbUJBQW1CLENBQ2pCLE9BQU8sRUFDUCxLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxTQUFTLEVBQ2YsR0FBRyxDQUFDLFdBQVcsRUFDZixHQUFHLENBQUMsUUFBUSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO0lBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO0lBRXZDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQiwyRUFBMkU7UUFDM0Usd0VBQXdFO1FBQ3hFLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxtQkFBbUIsQ0FDakIsT0FBTyxFQUNQLGdCQUFnQixDQUFDLFFBQVEsRUFDekIsZ0JBQWdCLENBQUMsU0FBUyxFQUMxQixRQUFRLENBQUMsUUFBUSxDQUNsQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixtQkFBbUIsQ0FDakIsT0FBTyxFQUNQLGdCQUFnQixDQUFDLFFBQVEsRUFDekIsZ0JBQWdCLENBQUMsU0FBUyxFQUMxQixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsUUFBUSxDQUNsQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxxRUFBcUU7SUFDckUsdUNBQXVDO0lBQ3ZDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxtQkFBbUIsQ0FDakIsT0FBTyxFQUNQLFFBQVEsQ0FBQyxRQUFRLEVBQ2pCLFFBQVEsQ0FBQyxTQUFTLEVBQ2xCLFNBQVMsQ0FBQyxXQUFXLEVBQ3JCLFNBQVMsQ0FBQyxRQUFRLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
@@ -1,4 +1,10 @@
1
- import { Vector2 } from '@revideo/core';
2
- import { CurveProfile } from './CurveProfile';
3
- export declare function getCircleProfile(size: Vector2, startAngle: number, endAngle: number, closed: boolean, counterclockwise?: boolean): CurveProfile;
4
- //# sourceMappingURL=getCircleProfile.d.ts.map
1
+ import {Vector2} from '@revideo/core';
2
+ import {CurveProfile} from './CurveProfile';
3
+ export declare function getCircleProfile(
4
+ size: Vector2,
5
+ startAngle: number,
6
+ endAngle: number,
7
+ closed: boolean,
8
+ counterclockwise?: boolean,
9
+ ): CurveProfile;
10
+ //# sourceMappingURL=getCircleProfile.d.ts.map
@@ -1,44 +1,76 @@
1
- import { Vector2 } from '@revideo/core';
2
- import { ArcSegment } from './ArcSegment';
3
- import { LineSegment } from './LineSegment';
4
- export function getCircleProfile(size, startAngle, endAngle, closed, counterclockwise = false) {
5
- const profile = {
6
- arcLength: 0,
7
- minSin: 1,
8
- segments: [],
9
- };
10
- if (endAngle < startAngle) {
11
- const loops = Math.floor((startAngle - endAngle) / (Math.PI * 2)) + 1;
12
- endAngle += Math.PI * 2 * loops;
13
- }
14
- else if (endAngle > startAngle + Math.PI * 2) {
15
- const loops = Math.floor((endAngle - startAngle) / (Math.PI * 2));
16
- endAngle -= Math.PI * 2 * loops;
17
- }
18
- const middleAngle = (startAngle + endAngle) / 2;
19
- const from = size.mul(Vector2.fromRadians(startAngle));
20
- const to = size.mul(Vector2.fromRadians(endAngle));
21
- const middle = size
22
- .mul(Vector2.fromRadians(middleAngle))
23
- .scale(counterclockwise ? -1 : 1);
24
- if (closed) {
25
- addSegment(profile, new LineSegment(Vector2.zero, from));
26
- }
27
- addArcSegment(profile, size, from, middle, startAngle, middleAngle, counterclockwise);
28
- addArcSegment(profile, size, middle, to, middleAngle, endAngle, counterclockwise);
29
- if (closed) {
30
- addSegment(profile, new LineSegment(to, Vector2.zero));
31
- }
32
- return profile;
1
+ import {Vector2} from '@revideo/core';
2
+ import {ArcSegment} from './ArcSegment';
3
+ import {LineSegment} from './LineSegment';
4
+ export function getCircleProfile(
5
+ size,
6
+ startAngle,
7
+ endAngle,
8
+ closed,
9
+ counterclockwise = false,
10
+ ) {
11
+ const profile = {
12
+ arcLength: 0,
13
+ minSin: 1,
14
+ segments: [],
15
+ };
16
+ if (endAngle < startAngle) {
17
+ const loops = Math.floor((startAngle - endAngle) / (Math.PI * 2)) + 1;
18
+ endAngle += Math.PI * 2 * loops;
19
+ } else if (endAngle > startAngle + Math.PI * 2) {
20
+ const loops = Math.floor((endAngle - startAngle) / (Math.PI * 2));
21
+ endAngle -= Math.PI * 2 * loops;
22
+ }
23
+ const middleAngle = (startAngle + endAngle) / 2;
24
+ const from = size.mul(Vector2.fromRadians(startAngle));
25
+ const to = size.mul(Vector2.fromRadians(endAngle));
26
+ const middle = size
27
+ .mul(Vector2.fromRadians(middleAngle))
28
+ .scale(counterclockwise ? -1 : 1);
29
+ if (closed) {
30
+ addSegment(profile, new LineSegment(Vector2.zero, from));
31
+ }
32
+ addArcSegment(
33
+ profile,
34
+ size,
35
+ from,
36
+ middle,
37
+ startAngle,
38
+ middleAngle,
39
+ counterclockwise,
40
+ );
41
+ addArcSegment(
42
+ profile,
43
+ size,
44
+ middle,
45
+ to,
46
+ middleAngle,
47
+ endAngle,
48
+ counterclockwise,
49
+ );
50
+ if (closed) {
51
+ addSegment(profile, new LineSegment(to, Vector2.zero));
52
+ }
53
+ return profile;
33
54
  }
34
55
  function addSegment(profile, segment) {
35
- profile.segments.push(segment);
36
- profile.arcLength += segment.arcLength;
56
+ profile.segments.push(segment);
57
+ profile.arcLength += segment.arcLength;
37
58
  }
38
- function addArcSegment(profile, size, from, to, fromAngle, toAngle, counterclockwise) {
39
- const small = Math.abs(fromAngle - toAngle) <= 180 ? 1 : 0;
40
- const flip = fromAngle > toAngle ? 0 : 1;
41
- const counter = counterclockwise ? 0 : 1;
42
- addSegment(profile, new ArcSegment(from, size, 0, 0, small ^ counter ^ flip, to));
59
+ function addArcSegment(
60
+ profile,
61
+ size,
62
+ from,
63
+ to,
64
+ fromAngle,
65
+ toAngle,
66
+ counterclockwise,
67
+ ) {
68
+ const small = Math.abs(fromAngle - toAngle) <= 180 ? 1 : 0;
69
+ const flip = fromAngle > toAngle ? 0 : 1;
70
+ const counter = counterclockwise ? 0 : 1;
71
+ addSegment(
72
+ profile,
73
+ new ArcSegment(from, size, 0, 0, small ^ counter ^ flip, to),
74
+ );
43
75
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2lyY2xlUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldENpcmNsZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUMsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFhLEVBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBZSxFQUNmLGdCQUFnQixHQUFHLEtBQUs7SUFFeEIsTUFBTSxPQUFPLEdBQWlCO1FBQzVCLFNBQVMsRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsRUFBRTtLQUNiLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJO1NBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixDQUNqQixDQUFDO0lBQ0YsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osTUFBTSxFQUNOLEVBQUUsRUFDRixXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUN6RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixPQUFxQixFQUNyQixJQUFhLEVBQ2IsSUFBYSxFQUNiLEVBQVcsRUFDWCxTQUFpQixFQUNqQixPQUFlLEVBQ2YsZ0JBQXlCO0lBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FDUixPQUFPLEVBQ1AsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyJ9
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2lyY2xlUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldENpcmNsZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUMsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFhLEVBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBZSxFQUNmLGdCQUFnQixHQUFHLEtBQUs7SUFFeEIsTUFBTSxPQUFPLEdBQWlCO1FBQzVCLFNBQVMsRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsRUFBRTtLQUNiLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJO1NBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixDQUNqQixDQUFDO0lBQ0YsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osTUFBTSxFQUNOLEVBQUUsRUFDRixXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUN6RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixPQUFxQixFQUNyQixJQUFhLEVBQ2IsSUFBYSxFQUNiLEVBQVcsRUFDWCxTQUFpQixFQUNqQixPQUFlLEVBQ2YsZ0JBQXlCO0lBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FDUixPQUFPLEVBQ1AsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,3 +1,3 @@
1
- import { CurveProfile } from './CurveProfile';
1
+ import {CurveProfile} from './CurveProfile';
2
2
  export declare function getPathProfile(data: string): CurveProfile;
3
- //# sourceMappingURL=getPathProfile.d.ts.map
3
+ //# sourceMappingURL=getPathProfile.d.ts.map