@flighthq/path 0.5.1-next.920.da8f530 → 0.5.1-next.973.788d3d7

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 (45) hide show
  1. package/README.md +3 -3
  2. package/dist/contract.d.ts +1 -0
  3. package/dist/contract.d.ts.map +1 -1
  4. package/dist/contract.js +1 -0
  5. package/dist/contract.js.map +1 -1
  6. package/dist/dashPath.d.ts.map +1 -1
  7. package/dist/dashPath.js +9 -3
  8. package/dist/dashPath.js.map +1 -1
  9. package/dist/getPathCurvatureAtDistance.d.ts +3 -0
  10. package/dist/getPathCurvatureAtDistance.d.ts.map +1 -0
  11. package/dist/getPathCurvatureAtDistance.js +64 -0
  12. package/dist/getPathCurvatureAtDistance.js.map +1 -0
  13. package/dist/getPathSegmentAtParameter.d.ts +3 -0
  14. package/dist/getPathSegmentAtParameter.d.ts.map +1 -1
  15. package/dist/getPathSegmentAtParameter.js +108 -0
  16. package/dist/getPathSegmentAtParameter.js.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/path.d.ts.map +1 -1
  22. package/dist/path.js +29 -5
  23. package/dist/path.js.map +1 -1
  24. package/dist/pathMeshPool.d.ts.map +1 -1
  25. package/dist/pathMeshPool.js +5 -20
  26. package/dist/pathMeshPool.js.map +1 -1
  27. package/dist/tessellatePath.d.ts +1 -0
  28. package/dist/tessellatePath.d.ts.map +1 -1
  29. package/dist/tessellatePath.js +11 -1
  30. package/dist/tessellatePath.js.map +1 -1
  31. package/dist/tessellatePathTyped.d.ts +1 -0
  32. package/dist/tessellatePathTyped.d.ts.map +1 -1
  33. package/dist/tessellatePathTyped.js +15 -0
  34. package/dist/tessellatePathTyped.js.map +1 -1
  35. package/package.json +5 -5
  36. package/src/dashPath.test.ts +12 -0
  37. package/src/decimatePath.test.ts +16 -0
  38. package/src/fitPathCurves.test.ts +17 -0
  39. package/src/getPathCurvatureAtDistance.test.ts +45 -0
  40. package/src/getPathSegmentAtParameter.test.ts +68 -0
  41. package/src/path.test.ts +20 -6
  42. package/src/pathMeshPool.test.ts +14 -0
  43. package/src/reversePath.test.ts +10 -6
  44. package/src/tessellatePath.test.ts +30 -1
  45. package/src/tessellatePathTyped.test.ts +33 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @flighthq/path
2
2
 
3
- Vector path geometry: curve flattening and tessellation of GraphicsPath outlines
3
+ Vector path construction, conversion, measurement, analysis, transformation, editing, and stroking
4
4
 
5
5
  ## Install
6
6
 
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/path`. The `@flighth
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/path@0.5.1-next.920.da8f530](https://github.com/flighthq/flight/tree/da8f530894916f9baa6a9f6822b4f393b9e70a85/packages/path)
17
- - [License](https://github.com/flighthq/flight/blob/da8f530894916f9baa6a9f6822b4f393b9e70a85/LICENSE.md)
16
+ - [Source for @flighthq/path@0.5.1-next.973.788d3d7](https://github.com/flighthq/flight/tree/788d3d7375cca3a0233cecedda1a4e031bd26dec/packages/path)
17
+ - [License](https://github.com/flighthq/flight/blob/788d3d7375cca3a0233cecedda1a4e031bd26dec/LICENSE.md)
@@ -6,6 +6,7 @@ export * from './fitPathCurves';
6
6
  export * from './flattenPath';
7
7
  export * from './forEachPathSegment';
8
8
  export * from './getPathBounds';
9
+ export * from './getPathCurvatureAtDistance';
9
10
  export * from './getPathContourLengths';
10
11
  export * from './getPathLength';
11
12
  export * from './getPathNearestPoint';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
package/dist/contract.js CHANGED
@@ -6,6 +6,7 @@ export * from './fitPathCurves';
6
6
  export * from './flattenPath';
7
7
  export * from './forEachPathSegment';
8
8
  export * from './getPathBounds';
9
+ export * from './getPathCurvatureAtDistance';
9
10
  export * from './getPathContourLengths';
10
11
  export * from './getPathLength';
11
12
  export * from './getPathNearestPoint';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashPath.d.ts","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,SAAS,SAAO,GACf,IAAI,CAeN"}
1
+ {"version":3,"file":"dashPath.d.ts","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,SAAS,SAAO,GACf,IAAI,CAgBN"}
package/dist/dashPath.js CHANGED
@@ -6,15 +6,16 @@ import { flattenPath } from './flattenPath';
6
6
  //
7
7
  // An empty or all-zero dash array copies the source unchanged (solid stroke). Alias-safe.
8
8
  export function dashPath(source, dash, dashOffset, out, tolerance = 0.25) {
9
- out.commands.length = 0;
10
- out.data.length = 0;
11
- out.winding = source.winding;
12
9
  const totalDashLength = dashTotal(dash);
13
10
  if (totalDashLength <= 0) {
14
11
  copyCommands(source, out);
15
12
  return;
16
13
  }
14
+ // Flatten BEFORE clearing — source must be fully read before out is touched (alias safety).
17
15
  const contours = flattenPath(source, tolerance);
16
+ out.commands.length = 0;
17
+ out.data.length = 0;
18
+ out.winding = source.winding;
18
19
  for (const contour of contours) {
19
20
  applyDashToContour(contour, dash, dashOffset, totalDashLength, out);
20
21
  }
@@ -89,6 +90,11 @@ function applyDashToContour(pts, dash, dashOffset, totalDashLength, out) {
89
90
  }
90
91
  }
91
92
  function copyCommands(source, out) {
93
+ if (source === out)
94
+ return;
95
+ out.commands.length = 0;
96
+ out.data.length = 0;
97
+ out.winding = source.winding;
92
98
  for (let i = 0; i < source.commands.length; i++) {
93
99
  out.commands.push(source.commands[i]);
94
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashPath.js","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashPath.js","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Path } from '@flighthq/types/contract';
2
+ export declare function getPathCurvatureAtDistance(path: Readonly<Path>, distance: number, tolerance?: number): number;
3
+ //# sourceMappingURL=getPathCurvatureAtDistance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPathCurvatureAtDistance.d.ts","sourceRoot":"","sources":["../src/getPathCurvatureAtDistance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAG3G"}
@@ -0,0 +1,64 @@
1
+ import { flattenPath } from './flattenPath';
2
+ // Returns the signed curvature of the path at `distance` arc-length units from the start.
3
+ // Positive curvature is a left turn in screen space (y-down). Returns 0 for empty paths, straight
4
+ // segments, or degenerate geometry.
5
+ //
6
+ // Curves are adaptively flattened to `tolerance` before measurement; the curvature is the Menger
7
+ // curvature of the three nearest flattened vertices around the target distance.
8
+ export function getPathCurvatureAtDistance(path, distance, tolerance = 0.25) {
9
+ const contours = flattenPath(path, tolerance);
10
+ return samplePathCurvature(contours, distance);
11
+ }
12
+ function samplePathCurvature(contours, distance) {
13
+ if (contours.length === 0)
14
+ return 0;
15
+ let remaining = distance;
16
+ for (let ci = 0; ci < contours.length; ci++) {
17
+ const contour = contours[ci];
18
+ const n = contour.length >> 1;
19
+ if (n < 2)
20
+ continue;
21
+ if (remaining <= 0)
22
+ return curvatureAtVertex(contour, n, 0);
23
+ for (let i = 1; i < n; i++) {
24
+ const dx = contour[i * 2] - contour[(i - 1) * 2];
25
+ const dy = contour[i * 2 + 1] - contour[(i - 1) * 2 + 1];
26
+ const segLen = Math.sqrt(dx * dx + dy * dy);
27
+ if (remaining <= segLen) {
28
+ const nearest = segLen === 0 || remaining * 2 >= segLen ? i : i - 1;
29
+ return curvatureAtVertex(contour, n, nearest);
30
+ }
31
+ remaining -= segLen;
32
+ }
33
+ }
34
+ const last = contours[contours.length - 1];
35
+ const n = last.length >> 1;
36
+ if (n < 3)
37
+ return 0;
38
+ return mengerCurvature(last[(n - 3) * 2], last[(n - 3) * 2 + 1], last[(n - 2) * 2], last[(n - 2) * 2 + 1], last[(n - 1) * 2], last[(n - 1) * 2 + 1]);
39
+ }
40
+ function curvatureAtVertex(contour, count, vertex) {
41
+ if (count < 3)
42
+ return 0;
43
+ const middle = Math.max(1, Math.min(count - 2, vertex));
44
+ return mengerCurvature(contour[(middle - 1) * 2], contour[(middle - 1) * 2 + 1], contour[middle * 2], contour[middle * 2 + 1], contour[(middle + 1) * 2], contour[(middle + 1) * 2 + 1]);
45
+ }
46
+ // Signed Menger curvature through three points: κ = 2·cross(AB, BC) / (|AB|·|BC|·|AC|).
47
+ // Positive = left turn in y-down screen space.
48
+ function mengerCurvature(x0, y0, x1, y1, x2, y2) {
49
+ const ax = x1 - x0;
50
+ const ay = y1 - y0;
51
+ const bx = x2 - x1;
52
+ const by = y2 - y1;
53
+ const cross = ax * by - ay * bx;
54
+ const a = Math.sqrt(ax * ax + ay * ay);
55
+ const b = Math.sqrt(bx * bx + by * by);
56
+ const cx = x2 - x0;
57
+ const cy = y2 - y0;
58
+ const c = Math.sqrt(cx * cx + cy * cy);
59
+ const denom = a * b * c;
60
+ if (denom === 0)
61
+ return 0;
62
+ return (2 * cross) / denom;
63
+ }
64
+ //# sourceMappingURL=getPathCurvatureAtDistance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPathCurvatureAtDistance.js","sourceRoot":"","sources":["../src/getPathCurvatureAtDistance.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import type { Path, Vector2Like } from '@flighthq/types/contract';
2
+ export declare function getCubicBezierCurvature(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number): number;
2
3
  export declare function getCubicBezierPoint(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
3
4
  export declare function getCubicBezierTangent(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
5
+ export declare function getPathSegmentCurvatureAtParameter(path: Readonly<Path>, segmentIndex: number, t: number): number | null;
4
6
  export declare function getPathSegmentPointAtParameter(path: Readonly<Path>, segmentIndex: number, t: number, out: Vector2Like): boolean;
5
7
  export declare function getPathSegmentTangentAtParameter(path: Readonly<Path>, segmentIndex: number, t: number, out: Vector2Like): boolean;
8
+ export declare function getQuadraticBezierCurvature(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number): number;
6
9
  export declare function getQuadraticBezierPoint(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
7
10
  export declare function getQuadraticBezierTangent(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
8
11
  //# sourceMappingURL=getPathSegmentAtParameter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPathSegmentAtParameter.d.ts","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKlE,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CASb;AAKD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAOb;AASD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAKD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAID,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb;AAKD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb"}
1
+ {"version":3,"file":"getPathSegmentAtParameter.d.ts","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMlE,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,MAAM,CAaR;AAID,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CASb;AAKD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAOb;AAID,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,GACR,MAAM,GAAG,IAAI,CAEf;AASD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAKD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAKD,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,MAAM,CAWR;AAID,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb;AAKD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb"}
@@ -1,4 +1,22 @@
1
1
  import { PathCommand } from '@flighthq/types/contract';
2
+ // Returns the signed curvature κ at parameter `t` on a cubic bezier.
3
+ // κ = (B'x·B''y − B'y·B''x) / |B'|³. Positive = left turn in y-down screen space.
4
+ // Returns 0 at degenerate points where the tangent vanishes.
5
+ export function getCubicBezierCurvature(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t) {
6
+ const u = 1 - t;
7
+ const u2 = u * u;
8
+ const t2 = t * t;
9
+ const dx = 3 * (u2 * (c1x - x0) + 2 * u * t * (c2x - c1x) + t2 * (x1 - c2x));
10
+ const dy = 3 * (u2 * (c1y - y0) + 2 * u * t * (c2y - c1y) + t2 * (y1 - c2y));
11
+ const ddx = 6 * (u * (c2x - 2 * c1x + x0) + t * (x1 - 2 * c2x + c1x));
12
+ const ddy = 6 * (u * (c2y - 2 * c1y + y0) + t * (y1 - 2 * c2y + c1y));
13
+ const cross = dx * ddy - dy * ddx;
14
+ const speed2 = dx * dx + dy * dy;
15
+ const speed = Math.sqrt(speed2);
16
+ if (speed === 0)
17
+ return 0;
18
+ return cross / (speed2 * speed);
19
+ }
2
20
  // Returns the point at parameter `t` (0..1) on a cubic bezier
3
21
  // P0 → C1 → C2 → P1 using de Casteljau. Writes into `out`.
4
22
  export function getCubicBezierPoint(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t, out) {
@@ -22,6 +40,11 @@ export function getCubicBezierTangent(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t, out
22
40
  out.y = 3 * (u2 * (c1y - y0) + 2 * u * t * (c2y - c1y) + t2 * (y1 - c2y));
23
41
  return out;
24
42
  }
43
+ // Returns the signed curvature at parameter `t` on the n-th segment of `path`. Lines return 0.
44
+ // Returns `null` if `segmentIndex` is out of range.
45
+ export function getPathSegmentCurvatureAtParameter(path, segmentIndex, t) {
46
+ return walkPathSegmentCurvature(path, segmentIndex, t);
47
+ }
25
48
  // Evaluates the point at parameter `t` on the n-th segment of `path` (0-indexed, counting
26
49
  // segments in path-walk order: MOVE_TO does not count as a segment; LINE_TO, CURVE_TO,
27
50
  // CUBIC_CURVE_TO each count as one). Writes into `out`. Returns `true` on success; `false` if
@@ -38,6 +61,22 @@ export function getPathSegmentPointAtParameter(path, segmentIndex, t, out) {
38
61
  export function getPathSegmentTangentAtParameter(path, segmentIndex, t, out) {
39
62
  return walkPathSegment(path, segmentIndex, t, out, true);
40
63
  }
64
+ // Returns the signed curvature κ at parameter `t` on a quadratic bezier.
65
+ // The second derivative is constant: B''(t) = 2(P1 − 2C + P0).
66
+ // Returns 0 at degenerate points where the tangent vanishes.
67
+ export function getQuadraticBezierCurvature(x0, y0, cx, cy, x1, y1, t) {
68
+ const u = 1 - t;
69
+ const dx = 2 * (u * (cx - x0) + t * (x1 - cx));
70
+ const dy = 2 * (u * (cy - y0) + t * (y1 - cy));
71
+ const ddx = 2 * (x1 - 2 * cx + x0);
72
+ const ddy = 2 * (y1 - 2 * cy + y0);
73
+ const cross = dx * ddy - dy * ddx;
74
+ const speed2 = dx * dx + dy * dy;
75
+ const speed = Math.sqrt(speed2);
76
+ if (speed === 0)
77
+ return 0;
78
+ return cross / (speed2 * speed);
79
+ }
41
80
  // Returns the point at parameter `t` (0..1) on a quadratic bezier defined by (x0,y0) → (cx,cy) → (x1,y1).
42
81
  // Writes the result into `out` and returns `out`.
43
82
  export function getQuadraticBezierPoint(x0, y0, cx, cy, x1, y1, t, out) {
@@ -160,4 +199,73 @@ function walkPathSegment(path, segmentIndex, t, out, wantTangent) {
160
199
  }
161
200
  return false;
162
201
  }
202
+ function walkPathSegmentCurvature(path, segmentIndex, t) {
203
+ const commands = path.commands;
204
+ const data = path.data;
205
+ let currentSegment = 0;
206
+ let x = 0;
207
+ let y = 0;
208
+ let di = 0;
209
+ for (let ci = 0; ci < commands.length; ci++) {
210
+ const command = commands[ci];
211
+ if (command === PathCommand.MOVE_TO) {
212
+ x = data[di];
213
+ y = data[di + 1];
214
+ di += 2;
215
+ }
216
+ else if (command === PathCommand.WIDE_MOVE_TO) {
217
+ x = data[di + 2];
218
+ y = data[di + 3];
219
+ di += 4;
220
+ }
221
+ else if (command === PathCommand.LINE_TO) {
222
+ di += 2;
223
+ if (currentSegment === segmentIndex)
224
+ return 0;
225
+ x = data[di - 2];
226
+ y = data[di - 1];
227
+ currentSegment++;
228
+ }
229
+ else if (command === PathCommand.WIDE_LINE_TO) {
230
+ di += 4;
231
+ if (currentSegment === segmentIndex)
232
+ return 0;
233
+ x = data[di - 2];
234
+ y = data[di - 1];
235
+ currentSegment++;
236
+ }
237
+ else if (command === PathCommand.CURVE_TO) {
238
+ const cx = data[di];
239
+ const cy = data[di + 1];
240
+ const x1 = data[di + 2];
241
+ const y1 = data[di + 3];
242
+ di += 4;
243
+ if (currentSegment === segmentIndex) {
244
+ return getQuadraticBezierCurvature(x, y, cx, cy, x1, y1, t);
245
+ }
246
+ x = x1;
247
+ y = y1;
248
+ currentSegment++;
249
+ }
250
+ else if (command === PathCommand.CUBIC_CURVE_TO) {
251
+ const c1x = data[di];
252
+ const c1y = data[di + 1];
253
+ const c2x = data[di + 2];
254
+ const c2y = data[di + 3];
255
+ const x1 = data[di + 4];
256
+ const y1 = data[di + 5];
257
+ di += 6;
258
+ if (currentSegment === segmentIndex) {
259
+ return getCubicBezierCurvature(x, y, c1x, c1y, c2x, c2y, x1, y1, t);
260
+ }
261
+ x = x1;
262
+ y = y1;
263
+ currentSegment++;
264
+ }
265
+ else if (command === PathCommand.CLOSE) {
266
+ // CLOSE is not a parametric segment.
267
+ }
268
+ }
269
+ return null;
270
+ }
163
271
  //# sourceMappingURL=getPathSegmentAtParameter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPathSegmentAtParameter.js","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPathSegmentAtParameter.js","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,qEAAqE;AACrE,kFAAkF;AAClF,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CACrC,EAAU,EACV,EAAU,EACV,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,EAAU,EACV,EAAU,EACV,CAAS;IAET,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,8DAA8D;AAC9D,2DAA2D;AAC3D,MAAM,UAAU,mBAAmB,CACjC,EAAU,EACV,EAAU,EACV,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,EAAU,EACV,EAAU,EACV,CAAS,EACT,GAAgB;IAEhB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IAChE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uFAAuF;AACvF,iEAAiE;AACjE,qBAAqB;AACrB,MAAM,UAAU,qBAAqB,CACnC,EAAU,EACV,EAAU,EACV,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,EAAU,EACV,EAAU,EACV,CAAS,EACT,GAAgB;IAEhB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1E,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+FAA+F;AAC/F,oDAAoD;AACpD,MAAM,UAAU,kCAAkC,CAChD,IAAoB,EACpB,YAAoB,EACpB,CAAS;IAET,OAAO,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,0FAA0F;AAC1F,uFAAuF;AACvF,8FAA8F;AAC9F,kCAAkC;AAClC,EAAE;AACF,8FAA8F;AAC9F,+DAA+D;AAC/D,MAAM,UAAU,8BAA8B,CAC5C,IAAoB,EACpB,YAAoB,EACpB,CAAS,EACT,GAAgB;IAEhB,OAAO,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,+FAA+F;AAC/F,yFAAyF;AACzF,wEAAwE;AACxE,MAAM,UAAU,gCAAgC,CAC9C,IAAoB,EACpB,YAAoB,EACpB,CAAS,EACT,GAAgB;IAEhB,OAAO,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,yEAAyE;AACzE,+DAA+D;AAC/D,6DAA6D;AAC7D,MAAM,UAAU,2BAA2B,CACzC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,CAAS;IAET,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,0GAA0G;AAC1G,kDAAkD;AAClD,MAAM,UAAU,uBAAuB,CACrC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,CAAS,EACT,GAAgB;IAEhB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACjD,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sGAAsG;AACtG,4EAA4E;AAC5E,kDAAkD;AAClD,MAAM,UAAU,yBAAyB,CACvC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,CAAS,EACT,GAAgB;IAEhB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gGAAgG;AAChG,4BAA4B;AAC5B,SAAS,eAAe,CACtB,IAAoB,EACpB,YAAoB,EACpB,CAAS,EACT,GAAgB,EAChB,WAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YAChD,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,IAAI,WAAW,EAAE,CAAC;oBAChB,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACf,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,IAAI,WAAW,EAAE,CAAC;oBAChB,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACf,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,IAAI,WAAW,EAAE,CAAC;oBAChB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,cAAc,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,IAAI,WAAW,EAAE,CAAC;oBAChB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;YACzC,qCAAqC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAoB,EAAE,YAAoB,EAAE,CAAS;IACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YAChD,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3C,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY;gBAAE,OAAO,CAAC,CAAC;YAC9C,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YAChD,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY;gBAAE,OAAO,CAAC,CAAC;YAC9C,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,OAAO,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,cAAc,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;gBACpC,OAAO,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,CAAC,GAAG,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;YACzC,qCAAqC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathTyped, tessellateStrokePath, transformPath, translatePath, } from './contract';
1
+ export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierCurvature, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathCurvatureAtDistance, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentCurvatureAtParameter, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierCurvature, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathInto, tessellatePathTyped, tessellatePathTypedInto, tessellateStrokePath, transformPath, translatePath, } from './contract';
2
2
  export type { PathMorph, PathMorphCreationExplanation, PathMorphCreationReason, StrokePathTessellationExplanation, StrokePathTessellationReason, } from './contract';
3
3
  export type { StrokeStyle } from './contract';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,SAAS,EACT,4BAA4B,EAC5B,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,SAAS,EACT,4BAA4B,EAC5B,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathTyped, tessellateStrokePath, transformPath, translatePath, } from './contract';
1
+ export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierCurvature, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathCurvatureAtDistance, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentCurvatureAtParameter, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierCurvature, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathInto, tessellatePathTyped, tessellatePathTypedInto, tessellateStrokePath, transformPath, translatePath, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
package/dist/path.js CHANGED
@@ -205,14 +205,29 @@ export function createPath(winding = 'nonZero') {
205
205
  initializePath(out, winding);
206
206
  return finishEntity(out);
207
207
  }
208
- // Every point-producing command (MOVE_TO, LINE_TO, CURVE_TO, CUBIC_CURVE_TO, and their
209
- // WIDE variants) stores its anchor as the last two values pushed to `data[]`. CLOSE and
210
- // NO_OP push no data. So the last anchor is always at the tail of the data array — O(1).
208
+ // Returns the current pen position after the last command. For most commands this is the
209
+ // last anchor in the data stream. After CLOSE the SVG/Canvas pen resets to the subpath
210
+ // origin (the most recent MOVE_TO), so this walks backward to find it.
211
211
  export function getPathLastPoint(path) {
212
- const data = path.data;
212
+ const { commands, data } = path;
213
213
  if (data.length < 2)
214
214
  return null;
215
- return [data[data.length - 2], data[data.length - 1]];
215
+ const last = commands.length - 1;
216
+ if (last < 0)
217
+ return null;
218
+ if (commands[last] !== PathCommand.CLOSE) {
219
+ return [data[data.length - 2], data[data.length - 1]];
220
+ }
221
+ let di = data.length;
222
+ for (let ci = last - 1; ci >= 0; ci--) {
223
+ const cmd = commands[ci];
224
+ di -= pathCommandDataCount(cmd);
225
+ if (cmd === PathCommand.MOVE_TO)
226
+ return [data[di], data[di + 1]];
227
+ if (cmd === PathCommand.WIDE_MOVE_TO)
228
+ return [data[di + 2], data[di + 3]];
229
+ }
230
+ return null;
216
231
  }
217
232
  // Appends a quarter-circle arc (90°) centered at (cx, cy) with the given radius, from `startAngle`
218
233
  // to `startAngle + π/2`. Uses a single cubic bezier with the kappa approximation.
@@ -296,6 +311,15 @@ function vectorAngle(ux, uy, vx, vy) {
296
311
  const angle = Math.acos(cosAngle);
297
312
  return ux * vy - uy * vx < 0 ? -angle : angle;
298
313
  }
314
+ function pathCommandDataCount(cmd) {
315
+ if (cmd === PathCommand.MOVE_TO || cmd === PathCommand.LINE_TO)
316
+ return 2;
317
+ if (cmd === PathCommand.CURVE_TO || cmd === PathCommand.WIDE_MOVE_TO || cmd === PathCommand.WIDE_LINE_TO)
318
+ return 4;
319
+ if (cmd === PathCommand.CUBIC_CURVE_TO)
320
+ return 6;
321
+ return 0;
322
+ }
299
323
  // Optimal cubic Bezier arc approximation constant: 4*(sqrt(2)-1)/3.
300
324
  // Maximum radial error is < 0.03% of the radius.
301
325
  //# sourceMappingURL=path.js.map
package/dist/path.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pathMeshPool.d.ts","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAahF;AAID,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAS1F;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAIpD;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAI9D"}
1
+ {"version":3,"file":"pathMeshPool.d.ts","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAIhF;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAI1F;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAIpD;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAI9D"}
@@ -1,5 +1,5 @@
1
- import { tessellatePath } from './tessellatePath';
2
- import { tessellatePathTyped } from './tessellatePathTyped';
1
+ import { tessellatePathInto } from './tessellatePath';
2
+ import { tessellatePathTypedInto } from './tessellatePathTyped';
3
3
  // Pool-backed flatten+tessellate for hot-loop usage. Each `acquirePathMesh` retrieves a `PathMesh`
4
4
  // from a shared pool, tessellates the given path into it (replacing its contents), and returns it.
5
5
  // Call `releasePathMesh` when done; the mesh is returned to the pool and must not be used again.
@@ -10,30 +10,15 @@ import { tessellatePathTyped } from './tessellatePathTyped';
10
10
  // Each acquire/release pair is a matching bracket — do not acquire without releasing.
11
11
  export function acquirePathMesh(path, tolerance = 0.25) {
12
12
  const mesh = pathMeshPool.length > 0 ? pathMeshPool.pop() : { vertices: [], indices: [] };
13
- // Reuse backing arrays: clear them and re-tessellate in place.
14
- mesh.vertices.length = 0;
15
- mesh.indices.length = 0;
16
- const fresh = tessellatePath(path, tolerance);
17
- // Copy into the pooled mesh rather than replacing, to preserve the array identity the caller
18
- // receives (important if the caller passed an array reference into a renderer upload).
19
- for (let i = 0; i < fresh.vertices.length; i++)
20
- mesh.vertices[i] = fresh.vertices[i];
21
- mesh.vertices.length = fresh.vertices.length;
22
- for (let i = 0; i < fresh.indices.length; i++)
23
- mesh.indices[i] = fresh.indices[i];
24
- mesh.indices.length = fresh.indices.length;
13
+ tessellatePathInto(path, mesh, tolerance);
25
14
  return mesh;
26
15
  }
27
16
  // Pool-backed flatten+tessellate returning a `PathMeshTyped` (Float32Array / Uint32Array). The same
28
17
  // acquire/release contract applies: one matching `releasePathMeshTyped` per `acquirePathMeshTyped`.
18
+ // Typed arrays are grow-only: reused when the new mesh fits, reallocated when it exceeds capacity.
29
19
  export function acquirePathMeshTyped(path, tolerance = 0.25) {
30
- // Typed array meshes are reallocated on each acquire (the underlying ArrayBuffer cannot be
31
- // resized to a different length). Pooling amortizes the allocation when the path data size is
32
- // stable across frames; if size varies significantly the gain is smaller.
33
- const fresh = tessellatePathTyped(path, tolerance);
34
20
  const mesh = typedPool.length > 0 ? typedPool.pop() : { vertices: new Float32Array(0), indices: new Uint32Array(0) };
35
- mesh.vertices = fresh.vertices;
36
- mesh.indices = fresh.indices;
21
+ tessellatePathTypedInto(path, mesh, tolerance);
37
22
  return mesh;
38
23
  }
39
24
  // Returns a `PathMesh` previously obtained from `acquirePathMesh` to the pool.
@@ -1 +1 @@
1
- {"version":3,"file":"pathMeshPool.js","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,mGAAmG;AACnG,mGAAmG;AACnG,iGAAiG;AACjG,EAAE;AACF,gGAAgG;AAChG,8FAA8F;AAC9F,mGAAmG;AACnG,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACpE,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3F,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,6FAA6F;IAC7F,uFAAuF;IACvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oGAAoG;AACpG,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACzE,2FAA2F;IAC3F,8FAA8F;IAC9F,0EAA0E;IAC1E,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,YAAY,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,iGAAiG;AACjG,yDAAyD;AACzD,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,MAAM,SAAS,GAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"pathMeshPool.js","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,mGAAmG;AACnG,mGAAmG;AACnG,iGAAiG;AACjG,EAAE;AACF,gGAAgG;AAChG,8FAA8F;AAC9F,mGAAmG;AACnG,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACpE,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3F,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oGAAoG;AACpG,oGAAoG;AACpG,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACzE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,YAAY,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,iGAAiG;AACjG,yDAAyD;AACzD,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,MAAM,SAAS,GAAoB,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { Path, PathMesh } from '@flighthq/types/contract';
2
2
  export declare function tessellatePath(path: Readonly<Path>, tolerance?: number): PathMesh;
3
+ export declare function tessellatePathInto(path: Readonly<Path>, out: PathMesh, tolerance?: number): void;
3
4
  //# sourceMappingURL=tessellatePath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tessellatePath.d.ts","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAS/D,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAQ/E"}
1
+ {"version":3,"file":"tessellatePath.d.ts","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAS/D,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAQ/E;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,SAAO,GAAG,IAAI,CAO9F"}
@@ -5,14 +5,24 @@ import { flattenPath } from './flattenPath';
5
5
  // but holes/overlap/self-intersection are NOT subtracted here (a hole contour fills solid). Use the
6
6
  // flatten + stencil-then-cover route for those. Winding rule is not consulted by this triangulator.
7
7
  export function tessellatePath(path, tolerance = 0.25) {
8
- const contours = flattenPath(path, tolerance);
9
8
  const vertices = [];
10
9
  const indices = [];
10
+ const contours = flattenPath(path, tolerance);
11
11
  for (let i = 0; i < contours.length; i++) {
12
12
  tessellateContour(contours[i], vertices, indices);
13
13
  }
14
14
  return { vertices, indices };
15
15
  }
16
+ // Tessellates into an existing `PathMesh`, clearing and reusing its backing arrays so pool callers
17
+ // avoid per-call allocation. The arrays grow via `push` but are never replaced — identity is stable.
18
+ export function tessellatePathInto(path, out, tolerance = 0.25) {
19
+ out.vertices.length = 0;
20
+ out.indices.length = 0;
21
+ const contours = flattenPath(path, tolerance);
22
+ for (let i = 0; i < contours.length; i++) {
23
+ tessellateContour(contours[i], out.vertices, out.indices);
24
+ }
25
+ }
16
26
  // Ear-clips one simple polygon contour (flat x,y pairs) into the shared vertex/index buffers. Vertices
17
27
  // are appended in source order; the working order is normalized to CCW for the convexity test.
18
28
  function tessellateContour(source, vertices, indices) {
@@ -1 +1 @@
1
- {"version":3,"file":"tessellatePath.js","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tessellatePath.js","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { Path, PathMeshTyped } from '@flighthq/types/contract';
2
2
  export declare function tessellatePathTyped(path: Readonly<Path>, tolerance?: number): PathMeshTyped;
3
+ export declare function tessellatePathTypedInto(path: Readonly<Path>, out: PathMeshTyped, tolerance?: number): void;
3
4
  //# sourceMappingURL=tessellatePathTyped.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tessellatePathTyped.d.ts","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAMzF"}
1
+ {"version":3,"file":"tessellatePathTyped.d.ts","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAMzF;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,SAAO,GAAG,IAAI,CAQxG"}
@@ -9,4 +9,19 @@ export function tessellatePathTyped(path, tolerance = 0.25) {
9
9
  indices: new Uint32Array(mesh.indices),
10
10
  };
11
11
  }
12
+ // Tessellates into an existing `PathMeshTyped`, reusing its typed arrays when they are large enough
13
+ // and reallocating grow-only when the new mesh exceeds their capacity.
14
+ export function tessellatePathTypedInto(path, out, tolerance = 0.25) {
15
+ const mesh = tessellatePath(path, tolerance);
16
+ const vLen = mesh.vertices.length;
17
+ const iLen = mesh.indices.length;
18
+ if (out.vertices.length < vLen)
19
+ out.vertices = new Float32Array(vLen);
20
+ if (out.indices.length < iLen)
21
+ out.indices = new Uint32Array(iLen);
22
+ for (let i = 0; i < vLen; i++)
23
+ out.vertices[i] = mesh.vertices[i];
24
+ for (let i = 0; i < iLen; i++)
25
+ out.indices[i] = mesh.indices[i];
26
+ }
12
27
  //# sourceMappingURL=tessellatePathTyped.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tessellatePathTyped.js","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,oGAAoG;AACpG,+FAA+F;AAC/F,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACxE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tessellatePathTyped.js","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,oGAAoG;AACpG,+FAA+F;AAC/F,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACxE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CAAC,IAAoB,EAAE,GAAkB,EAAE,SAAS,GAAG,IAAI;IAChG,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI;QAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,GAAG,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/path",
3
- "version": "0.5.1-next.920.da8f530",
3
+ "version": "0.5.1-next.973.788d3d7",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,13 +38,13 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-next.920.da8f530",
42
- "@flighthq/math": "0.5.1-next.920.da8f530",
43
- "@flighthq/types": "0.5.1-next.920.da8f530"
41
+ "@flighthq/entity": "0.5.1-next.973.788d3d7",
42
+ "@flighthq/math": "0.5.1-next.973.788d3d7",
43
+ "@flighthq/types": "0.5.1-next.973.788d3d7"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
47
47
  },
48
- "description": "Vector path geometry: curve flattening and tessellation of GraphicsPath outlines",
48
+ "description": "Vector path construction, conversion, measurement, analysis, transformation, editing, and stroking",
49
49
  "sideEffects": false
50
50
  }
@@ -80,6 +80,18 @@ describe('dashPath', () => {
80
80
  expect(moves.length).toBeGreaterThanOrEqual(2);
81
81
  });
82
82
 
83
+ it('is alias-safe when source and out are the same path', () => {
84
+ const path = createPath();
85
+ appendPathMoveTo(path, 0, 0);
86
+ appendPathLineTo(path, 100, 0);
87
+ appendPathLineTo(path, 100, 100);
88
+ const ref = createPath();
89
+ dashPath(path, [15, 10], 0, ref);
90
+ dashPath(path, [15, 10], 0, path);
91
+ expect(path.commands).toStrictEqual(ref.commands);
92
+ expect(path.data).toStrictEqual(ref.data);
93
+ });
94
+
83
95
  it('preserves winding rule', () => {
84
96
  const source = createPath('evenOdd');
85
97
  appendPathMoveTo(source, 0, 0);
@@ -66,4 +66,20 @@ describe('decimatePath', () => {
66
66
  decimatePath(createPath(), 1, out);
67
67
  expect(out.commands).toStrictEqual([]);
68
68
  });
69
+
70
+ it('is alias-safe when source and out are the same path', () => {
71
+ const path = createPath('evenOdd');
72
+ appendPathMoveTo(path, 0, 0);
73
+ appendPathLineTo(path, 25, 0.1);
74
+ appendPathLineTo(path, 50, -0.1);
75
+ appendPathLineTo(path, 100, 0);
76
+ const expected = createPath();
77
+ decimatePath(path, 1, expected);
78
+
79
+ decimatePath(path, 1, path);
80
+
81
+ expect(path.commands).toStrictEqual(expected.commands);
82
+ expect(path.data).toStrictEqual(expected.data);
83
+ expect(path.winding).toBe(expected.winding);
84
+ });
69
85
  });
@@ -53,6 +53,23 @@ describe('fitPathCurves', () => {
53
53
  expect(out.commands).toStrictEqual([]);
54
54
  });
55
55
 
56
+ it('is alias-safe when source and out are the same path', () => {
57
+ const path = createPath('evenOdd');
58
+ appendPathMoveTo(path, 0, 0);
59
+ appendPathLineTo(path, 25, 20);
60
+ appendPathLineTo(path, 50, 30);
61
+ appendPathLineTo(path, 75, 20);
62
+ appendPathLineTo(path, 100, 0);
63
+ const expected = createPath();
64
+ fitPathCurves(path, 1, expected);
65
+
66
+ fitPathCurves(path, 1, path);
67
+
68
+ expect(path.commands).toStrictEqual(expected.commands);
69
+ expect(path.data).toStrictEqual(expected.data);
70
+ expect(path.winding).toBe(expected.winding);
71
+ });
72
+
56
73
  it('preserves winding rule', () => {
57
74
  const source = createPath('evenOdd');
58
75
  appendPathMoveTo(source, 0, 0);
@@ -0,0 +1,45 @@
1
+ import { getPathCurvatureAtDistance } from './getPathCurvatureAtDistance';
2
+ import { getPathLength } from './getPathLength';
3
+ import { appendPathCircle, appendPathCurveTo, appendPathLineTo, appendPathMoveTo, createPath } from './path';
4
+
5
+ describe('getPathCurvatureAtDistance', () => {
6
+ it('returns zero for an empty path', () => {
7
+ expect(getPathCurvatureAtDistance(createPath(), 0)).toBe(0);
8
+ });
9
+
10
+ it('returns zero for a straight line', () => {
11
+ const path = createPath();
12
+ appendPathMoveTo(path, 0, 0);
13
+ appendPathLineTo(path, 100, 0);
14
+ expect(getPathCurvatureAtDistance(path, 50)).toBe(0);
15
+ });
16
+
17
+ it('returns nonzero curvature on a curved path', () => {
18
+ const path = createPath();
19
+ appendPathMoveTo(path, 0, 0);
20
+ appendPathCurveTo(path, 50, 100, 100, 0);
21
+ const k = getPathCurvatureAtDistance(path, 50);
22
+ expect(k).not.toBe(0);
23
+ });
24
+
25
+ it('returns approximately 1/r for a circle of known radius', () => {
26
+ const r = 50;
27
+ const path = createPath();
28
+ appendPathCircle(path, 0, 0, r);
29
+ const circumference = 2 * Math.PI * r;
30
+ const k = getPathCurvatureAtDistance(path, circumference / 4);
31
+ expect(Math.abs(k)).toBeCloseTo(1 / r, 1);
32
+ });
33
+
34
+ it('clamps at the end of the path for distances beyond length', () => {
35
+ const path = createPath();
36
+ appendPathMoveTo(path, 0, 0);
37
+ appendPathCurveTo(path, 50, 100, 100, 0);
38
+ const tolerance = 0.01;
39
+ const length = getPathLength(path, tolerance);
40
+ const kEnd = getPathCurvatureAtDistance(path, length, tolerance);
41
+ const kBeyond = getPathCurvatureAtDistance(path, length + 100, tolerance);
42
+ expect(kEnd).not.toBe(0);
43
+ expect(kBeyond).toBeCloseTo(kEnd, 12);
44
+ });
45
+ });
@@ -1,13 +1,34 @@
1
1
  import {
2
+ getCubicBezierCurvature,
2
3
  getCubicBezierPoint,
3
4
  getCubicBezierTangent,
5
+ getPathSegmentCurvatureAtParameter,
4
6
  getPathSegmentPointAtParameter,
5
7
  getPathSegmentTangentAtParameter,
8
+ getQuadraticBezierCurvature,
6
9
  getQuadraticBezierPoint,
7
10
  getQuadraticBezierTangent,
8
11
  } from './getPathSegmentAtParameter';
9
12
  import { appendPathCubicCurveTo, appendPathCurveTo, appendPathLineTo, appendPathMoveTo, createPath } from './path';
10
13
 
14
+ describe('getCubicBezierCurvature', () => {
15
+ it('returns zero for a straight cubic', () => {
16
+ expect(getCubicBezierCurvature(0, 0, 1, 0, 2, 0, 3, 0, 0.5)).toBe(0);
17
+ });
18
+
19
+ it('returns nonzero curvature for a curved cubic', () => {
20
+ const k = getCubicBezierCurvature(0, 0, 0, 1, 1, 1, 1, 0, 0.5);
21
+ expect(k).not.toBe(0);
22
+ });
23
+
24
+ it('returns a known curvature for a circular-arc approximation', () => {
25
+ // Quarter circle approximation r=1: P0=(1,0), C1=(1,0.5523), C2=(0.5523,1), P1=(0,1)
26
+ // κ should be close to 1/r = 1 at the midpoint.
27
+ const k = getCubicBezierCurvature(1, 0, 1, 0.5523, 0.5523, 1, 0, 1, 0.5);
28
+ expect(Math.abs(k)).toBeCloseTo(1, 1);
29
+ });
30
+ });
31
+
11
32
  describe('getCubicBezierPoint', () => {
12
33
  it('returns the start point at t=0', () => {
13
34
  const out = { x: 0, y: 0 };
@@ -50,6 +71,36 @@ describe('getCubicBezierTangent', () => {
50
71
  });
51
72
  });
52
73
 
74
+ describe('getPathSegmentCurvatureAtParameter', () => {
75
+ it('returns null for an out-of-range segment index', () => {
76
+ const path = createPath();
77
+ appendPathMoveTo(path, 0, 0);
78
+ appendPathLineTo(path, 1, 0);
79
+ expect(getPathSegmentCurvatureAtParameter(path, 5, 0.5)).toBeNull();
80
+ });
81
+
82
+ it('returns zero for a line segment', () => {
83
+ const path = createPath();
84
+ appendPathMoveTo(path, 0, 0);
85
+ appendPathLineTo(path, 10, 0);
86
+ expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).toBe(0);
87
+ });
88
+
89
+ it('returns nonzero for a quadratic bezier segment', () => {
90
+ const path = createPath();
91
+ appendPathMoveTo(path, 0, 0);
92
+ appendPathCurveTo(path, 50, 100, 100, 0);
93
+ expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).not.toBe(0);
94
+ });
95
+
96
+ it('returns nonzero for a cubic bezier segment', () => {
97
+ const path = createPath();
98
+ appendPathMoveTo(path, 0, 0);
99
+ appendPathCubicCurveTo(path, 0, 1, 1, 1, 1, 0);
100
+ expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).not.toBe(0);
101
+ });
102
+ });
103
+
53
104
  describe('getPathSegmentPointAtParameter', () => {
54
105
  it('returns false for out-of-range segment index', () => {
55
106
  const path = createPath();
@@ -150,6 +201,23 @@ describe('getPathSegmentTangentAtParameter', () => {
150
201
  });
151
202
  });
152
203
 
204
+ describe('getQuadraticBezierCurvature', () => {
205
+ it('returns zero for a straight quadratic', () => {
206
+ expect(getQuadraticBezierCurvature(0, 0, 5, 0, 10, 0, 0.5)).toBe(0);
207
+ });
208
+
209
+ it('returns nonzero for a curved quadratic', () => {
210
+ const k = getQuadraticBezierCurvature(0, 0, 50, 100, 100, 0, 0.5);
211
+ expect(k).not.toBe(0);
212
+ });
213
+
214
+ it('returns consistent sign for a right-turning curve', () => {
215
+ // P0=(0,0) → C=(0,10) → P1=(10,10) — in y-down, second derivative turns right → negative
216
+ const k = getQuadraticBezierCurvature(0, 0, 0, 10, 10, 10, 0.5);
217
+ expect(k).toBeLessThan(0);
218
+ });
219
+ });
220
+
153
221
  describe('getQuadraticBezierPoint', () => {
154
222
  it('returns midpoint at t=0.5 for a known quadratic curve', () => {
155
223
  // P0=(0,0), C=(50,100), P1=(100,0)
package/src/path.test.ts CHANGED
@@ -75,6 +75,20 @@ describe('appendPathArc', () => {
75
75
  });
76
76
 
77
77
  describe('appendPathArcTo', () => {
78
+ it('starts after CLOSE from the subpath origin', () => {
79
+ const path = createPath();
80
+ appendPathMoveTo(path, 10, 20);
81
+ appendPathLineTo(path, 30, 40);
82
+ appendPathClose(path);
83
+ appendPathArcTo(path, 10, 10, 0, false, true, 30, 20);
84
+
85
+ const expected = createPath();
86
+ appendPathMoveTo(expected, 10, 20);
87
+ appendPathArcTo(expected, 10, 10, 0, false, true, 30, 20);
88
+
89
+ expect(path.data.slice(4)).toStrictEqual(expected.data.slice(2));
90
+ });
91
+
78
92
  it('appends a LINE_TO when radiusX is 0', () => {
79
93
  const path = createPath();
80
94
  appendPathMoveTo(path, 0, 0);
@@ -333,18 +347,18 @@ describe('getPathLastPoint', () => {
333
347
  expect(getPathLastPoint(path)).toStrictEqual([70, 80]);
334
348
  });
335
349
 
336
- it('returns the last anchor after appendPathClose', () => {
350
+ it('returns the MOVE_TO origin after appendPathClose', () => {
337
351
  const path = createPath();
338
352
  appendPathMoveTo(path, 10, 20);
339
353
  appendPathLineTo(path, 30, 40);
340
354
  appendPathClose(path);
341
- expect(getPathLastPoint(path)).toStrictEqual([30, 40]);
355
+ expect(getPathLastPoint(path)).toStrictEqual([10, 20]);
342
356
  });
343
357
 
344
- it('returns the last point after appendPathRectangle', () => {
358
+ it('returns the MOVE_TO origin after appendPathRectangle (ends with CLOSE)', () => {
345
359
  const path = createPath();
346
360
  appendPathRectangle(path, 10, 20, 100, 50);
347
- expect(getPathLastPoint(path)).toStrictEqual([10, 70]);
361
+ expect(getPathLastPoint(path)).toStrictEqual([10, 20]);
348
362
  });
349
363
 
350
364
  it('returns the endpoint after appendPathArc', () => {
@@ -363,10 +377,10 @@ describe('getPathLastPoint', () => {
363
377
  expect(last[1]).toBeCloseTo(20);
364
378
  });
365
379
 
366
- it('returns the last point after appendPathPolygon', () => {
380
+ it('returns the MOVE_TO origin after appendPathPolygon (ends with CLOSE)', () => {
367
381
  const path = createPath();
368
382
  appendPathPolygon(path, [0, 0, 100, 0, 100, 100]);
369
- expect(getPathLastPoint(path)).toStrictEqual([100, 100]);
383
+ expect(getPathLastPoint(path)).toStrictEqual([0, 0]);
370
384
  });
371
385
 
372
386
  it('returns the last point after appendPathPolyline', () => {
@@ -57,6 +57,20 @@ describe('acquirePathMeshTyped', () => {
57
57
  expect(mesh.indices.length).toBeGreaterThan(0);
58
58
  releasePathMeshTyped(mesh);
59
59
  });
60
+ it('reuses a released wrapper and its typed arrays', () => {
61
+ const path = createPath();
62
+ appendPathRectangle(path, 0, 0, 100, 50);
63
+ const first = acquirePathMeshTyped(path);
64
+ const vertices = first.vertices;
65
+ const indices = first.indices;
66
+ releasePathMeshTyped(first);
67
+
68
+ const second = acquirePathMeshTyped(path);
69
+ expect(second).toBe(first);
70
+ expect(second.vertices).toBe(vertices);
71
+ expect(second.indices).toBe(indices);
72
+ releasePathMeshTyped(second);
73
+ });
60
74
  });
61
75
 
62
76
  describe('releasePathMesh', () => {
@@ -38,14 +38,18 @@ describe('reversePath', () => {
38
38
  });
39
39
 
40
40
  it('is alias-safe when out is the same as source', () => {
41
- const path = createPath();
41
+ const path = createPath('evenOdd');
42
42
  appendPathMoveTo(path, 0, 0);
43
43
  appendPathLineTo(path, 10, 0);
44
- appendPathLineTo(path, 20, 0);
44
+ appendPathLineTo(path, 20, 10);
45
+ appendPathClose(path);
46
+ const expected = createPath();
47
+ reversePath(path, expected);
48
+
45
49
  reversePath(path, path);
46
- expect(path.data[0]).toBe(20);
47
- expect(path.data[1]).toBe(0);
48
- expect(path.data[4]).toBe(0);
49
- expect(path.data[5]).toBe(0);
50
+
51
+ expect(path.commands).toStrictEqual(expected.commands);
52
+ expect(path.data).toStrictEqual(expected.data);
53
+ expect(path.winding).toBe(expected.winding);
50
54
  });
51
55
  });
@@ -1,7 +1,7 @@
1
1
  import type { PathMesh } from '@flighthq/types/contract';
2
2
 
3
3
  import { appendPathLineTo, appendPathMoveTo, createPath } from './path';
4
- import { tessellatePath } from './tessellatePath';
4
+ import { tessellatePath, tessellatePathInto } from './tessellatePath';
5
5
 
6
6
  function meshArea(mesh: PathMesh): number {
7
7
  let area = 0;
@@ -60,3 +60,32 @@ describe('tessellatePath', () => {
60
60
  expect(mesh.vertices).toHaveLength(0);
61
61
  });
62
62
  });
63
+
64
+ describe('tessellatePathInto', () => {
65
+ it('writes the same result as tessellatePath into a provided mesh', () => {
66
+ const path = polygon(0, 0, 10, 0, 10, 10, 0, 10);
67
+ const expected = tessellatePath(path);
68
+ const out = { vertices: [] as number[], indices: [] as number[] };
69
+ tessellatePathInto(path, out);
70
+ expect(out.vertices).toStrictEqual(expected.vertices);
71
+ expect(out.indices).toStrictEqual(expected.indices);
72
+ });
73
+
74
+ it('clears previous contents before writing', () => {
75
+ const path = polygon(0, 0, 10, 0, 0, 10);
76
+ const out = { vertices: [99, 99, 99], indices: [0, 1, 2, 3] };
77
+ tessellatePathInto(path, out);
78
+ expect(out.indices).toHaveLength(3);
79
+ expect(out.vertices).toHaveLength(6);
80
+ });
81
+
82
+ it('reuses the same array identity across calls', () => {
83
+ const path = polygon(0, 0, 10, 0, 10, 10, 0, 10);
84
+ const out = { vertices: [] as number[], indices: [] as number[] };
85
+ const vRef = out.vertices;
86
+ const iRef = out.indices;
87
+ tessellatePathInto(path, out);
88
+ expect(out.vertices).toBe(vRef);
89
+ expect(out.indices).toBe(iRef);
90
+ });
91
+ });
@@ -1,6 +1,6 @@
1
1
  import { appendPathRectangle, createPath } from './path';
2
2
  import { tessellatePath } from './tessellatePath';
3
- import { tessellatePathTyped } from './tessellatePathTyped';
3
+ import { tessellatePathTyped, tessellatePathTypedInto } from './tessellatePathTyped';
4
4
 
5
5
  describe('tessellatePathTyped', () => {
6
6
  it('returns Float32Array vertices and Uint32Array indices', () => {
@@ -24,3 +24,35 @@ describe('tessellatePathTyped', () => {
24
24
  expect(mesh.indices.length).toBe(0);
25
25
  });
26
26
  });
27
+
28
+ describe('tessellatePathTypedInto', () => {
29
+ it('writes into an existing PathMeshTyped with the same values', () => {
30
+ const path = createPath();
31
+ appendPathRectangle(path, 0, 0, 100, 100);
32
+ const expected = tessellatePath(path);
33
+ const out = { vertices: new Float32Array(0), indices: new Uint32Array(0) };
34
+ tessellatePathTypedInto(path, out);
35
+ expect(Array.from(out.vertices).slice(0, expected.vertices.length)).toStrictEqual(expected.vertices);
36
+ expect(Array.from(out.indices).slice(0, expected.indices.length)).toStrictEqual(expected.indices);
37
+ });
38
+
39
+ it('grows typed arrays when the mesh exceeds capacity', () => {
40
+ const path = createPath();
41
+ appendPathRectangle(path, 0, 0, 50, 50);
42
+ const out = { vertices: new Float32Array(2), indices: new Uint32Array(1) };
43
+ tessellatePathTypedInto(path, out);
44
+ expect(out.vertices.length).toBeGreaterThanOrEqual(8);
45
+ expect(out.indices.length).toBeGreaterThanOrEqual(6);
46
+ });
47
+
48
+ it('reuses typed arrays when capacity is sufficient', () => {
49
+ const path = createPath();
50
+ appendPathRectangle(path, 0, 0, 50, 50);
51
+ const big = { vertices: new Float32Array(1000), indices: new Uint32Array(1000) };
52
+ const vRef = big.vertices;
53
+ const iRef = big.indices;
54
+ tessellatePathTypedInto(path, big);
55
+ expect(big.vertices).toBe(vRef);
56
+ expect(big.indices).toBe(iRef);
57
+ });
58
+ });