@cornerstonejs/tools 1.34.0 → 1.35.1

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 (284) hide show
  1. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +4 -4
  2. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  3. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +3 -2
  4. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  5. package/dist/cjs/index.d.ts +2 -2
  6. package/dist/cjs/index.js +3 -2
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +4 -0
  9. package/dist/cjs/tools/AdvancedMagnifyTool.js +8 -3
  10. package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -1
  11. package/dist/cjs/tools/annotation/SplineROITool.d.ts +59 -0
  12. package/dist/cjs/tools/annotation/SplineROITool.js +709 -0
  13. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -0
  14. package/dist/cjs/tools/annotation/splines/BSpline.d.ts +5 -0
  15. package/dist/cjs/tools/annotation/splines/BSpline.js +14 -0
  16. package/dist/cjs/tools/annotation/splines/BSpline.js.map +1 -0
  17. package/dist/cjs/tools/annotation/splines/CardinalSpline.d.ts +12 -0
  18. package/dist/cjs/tools/annotation/splines/CardinalSpline.js +38 -0
  19. package/dist/cjs/tools/annotation/splines/CardinalSpline.js.map +1 -0
  20. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.d.ts +5 -0
  21. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.js +12 -0
  22. package/dist/cjs/tools/annotation/splines/CatmullRomSpline.js.map +1 -0
  23. package/dist/cjs/tools/annotation/splines/CubicSpline.d.ts +13 -0
  24. package/dist/cjs/tools/annotation/splines/CubicSpline.js +192 -0
  25. package/dist/cjs/tools/annotation/splines/CubicSpline.js.map +1 -0
  26. package/dist/cjs/tools/annotation/splines/LinearSpline.d.ts +5 -0
  27. package/dist/cjs/tools/annotation/splines/LinearSpline.js +12 -0
  28. package/dist/cjs/tools/annotation/splines/LinearSpline.js.map +1 -0
  29. package/dist/cjs/tools/annotation/splines/QuadraticBezier.d.ts +6 -0
  30. package/dist/cjs/tools/annotation/splines/QuadraticBezier.js +20 -0
  31. package/dist/cjs/tools/annotation/splines/QuadraticBezier.js.map +1 -0
  32. package/dist/cjs/tools/annotation/splines/QuadraticSpline.d.ts +9 -0
  33. package/dist/cjs/tools/annotation/splines/QuadraticSpline.js +18 -0
  34. package/dist/cjs/tools/annotation/splines/QuadraticSpline.js.map +1 -0
  35. package/dist/cjs/tools/annotation/splines/Spline.d.ts +49 -0
  36. package/dist/cjs/tools/annotation/splines/Spline.js +420 -0
  37. package/dist/cjs/tools/annotation/splines/Spline.js.map +1 -0
  38. package/dist/cjs/tools/index.d.ts +2 -1
  39. package/dist/cjs/tools/index.js +3 -1
  40. package/dist/cjs/tools/index.js.map +1 -1
  41. package/dist/cjs/types/CardinalSplineProps.d.ts +5 -0
  42. package/dist/cjs/types/CardinalSplineProps.js +3 -0
  43. package/dist/cjs/types/CardinalSplineProps.js.map +1 -0
  44. package/dist/cjs/types/ClosestControlPoint.d.ts +4 -0
  45. package/dist/cjs/types/ClosestControlPoint.js +3 -0
  46. package/dist/cjs/types/ClosestControlPoint.js.map +1 -0
  47. package/dist/cjs/types/ClosestPoint.d.ts +5 -0
  48. package/dist/cjs/types/ClosestPoint.js +3 -0
  49. package/dist/cjs/types/ClosestPoint.js.map +1 -0
  50. package/dist/cjs/types/ClosestSplinePoint.d.ts +4 -0
  51. package/dist/cjs/types/ClosestSplinePoint.js +3 -0
  52. package/dist/cjs/types/ClosestSplinePoint.js.map +1 -0
  53. package/dist/cjs/types/ControlPointInfo.d.ts +5 -0
  54. package/dist/cjs/types/ControlPointInfo.js +3 -0
  55. package/dist/cjs/types/ControlPointInfo.js.map +1 -0
  56. package/dist/cjs/types/ISpline.d.ts +29 -0
  57. package/dist/cjs/types/ISpline.js +3 -0
  58. package/dist/cjs/types/ISpline.js.map +1 -0
  59. package/dist/cjs/types/SplineCurveSegment.d.ts +14 -0
  60. package/dist/cjs/types/SplineCurveSegment.js +3 -0
  61. package/dist/cjs/types/SplineCurveSegment.js.map +1 -0
  62. package/dist/cjs/types/SplineLineSegment.d.ts +10 -0
  63. package/dist/cjs/types/SplineLineSegment.js +3 -0
  64. package/dist/cjs/types/SplineLineSegment.js.map +1 -0
  65. package/dist/cjs/types/SplineProps.d.ts +4 -0
  66. package/dist/cjs/types/SplineProps.js +3 -0
  67. package/dist/cjs/types/SplineProps.js.map +1 -0
  68. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +34 -0
  69. package/dist/cjs/types/index.d.ts +10 -1
  70. package/dist/cjs/utilities/index.d.ts +2 -3
  71. package/dist/cjs/utilities/index.js +5 -5
  72. package/dist/cjs/utilities/index.js.map +1 -1
  73. package/dist/cjs/utilities/math/aabb/distanceToPoint.d.ts +2 -0
  74. package/dist/cjs/utilities/math/aabb/distanceToPoint.js +11 -0
  75. package/dist/cjs/utilities/math/aabb/distanceToPoint.js.map +1 -0
  76. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.d.ts +2 -0
  77. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.js +24 -0
  78. package/dist/cjs/utilities/math/aabb/distanceToPointSquared.js.map +1 -0
  79. package/dist/cjs/utilities/math/aabb/index.d.ts +2 -0
  80. package/dist/cjs/utilities/math/aabb/index.js +11 -0
  81. package/dist/cjs/utilities/math/aabb/index.js.map +1 -0
  82. package/dist/cjs/utilities/math/index.d.ts +6 -5
  83. package/dist/cjs/utilities/math/index.js +11 -9
  84. package/dist/cjs/utilities/math/index.js.map +1 -1
  85. package/dist/cjs/utilities/math/line/distanceToPointSquared.js +5 -21
  86. package/dist/cjs/utilities/math/line/distanceToPointSquared.js.map +1 -1
  87. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.d.ts +5 -0
  88. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.js +56 -0
  89. package/dist/cjs/utilities/math/line/distanceToPointSquaredInfo.js.map +1 -0
  90. package/dist/cjs/utilities/math/line/index.d.ts +2 -1
  91. package/dist/cjs/utilities/math/line/index.js +3 -1
  92. package/dist/cjs/utilities/math/line/index.js.map +1 -1
  93. package/dist/cjs/utilities/math/point/distanceToPoint.js +5 -6
  94. package/dist/cjs/utilities/math/point/distanceToPoint.js.map +1 -1
  95. package/dist/cjs/utilities/math/point/distanceToPointSquared.d.ts +4 -0
  96. package/dist/cjs/utilities/math/point/distanceToPointSquared.js +12 -0
  97. package/dist/cjs/utilities/math/point/distanceToPointSquared.js.map +1 -0
  98. package/dist/cjs/utilities/math/point/index.d.ts +3 -2
  99. package/dist/cjs/utilities/math/point/index.js +7 -3
  100. package/dist/cjs/utilities/math/point/index.js.map +1 -1
  101. package/dist/cjs/utilities/math/point/mirror.d.ts +2 -0
  102. package/dist/cjs/utilities/math/point/mirror.js +11 -0
  103. package/dist/cjs/utilities/math/point/mirror.js.map +1 -0
  104. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +4 -4
  105. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  106. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +2 -1
  107. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  108. package/dist/esm/index.js +2 -2
  109. package/dist/esm/index.js.map +1 -1
  110. package/dist/esm/tools/AdvancedMagnifyTool.js +8 -3
  111. package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -1
  112. package/dist/esm/tools/annotation/SplineROITool.js +703 -0
  113. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -0
  114. package/dist/esm/tools/annotation/splines/BSpline.js +10 -0
  115. package/dist/esm/tools/annotation/splines/BSpline.js.map +1 -0
  116. package/dist/esm/tools/annotation/splines/CardinalSpline.js +33 -0
  117. package/dist/esm/tools/annotation/splines/CardinalSpline.js.map +1 -0
  118. package/dist/esm/tools/annotation/splines/CatmullRomSpline.js +8 -0
  119. package/dist/esm/tools/annotation/splines/CatmullRomSpline.js.map +1 -0
  120. package/dist/esm/tools/annotation/splines/CubicSpline.js +165 -0
  121. package/dist/esm/tools/annotation/splines/CubicSpline.js.map +1 -0
  122. package/dist/esm/tools/annotation/splines/LinearSpline.js +8 -0
  123. package/dist/esm/tools/annotation/splines/LinearSpline.js.map +1 -0
  124. package/dist/esm/tools/annotation/splines/QuadraticBezier.js +16 -0
  125. package/dist/esm/tools/annotation/splines/QuadraticBezier.js.map +1 -0
  126. package/dist/esm/tools/annotation/splines/QuadraticSpline.js +14 -0
  127. package/dist/esm/tools/annotation/splines/QuadraticSpline.js.map +1 -0
  128. package/dist/esm/tools/annotation/splines/Spline.js +392 -0
  129. package/dist/esm/tools/annotation/splines/Spline.js.map +1 -0
  130. package/dist/esm/tools/index.js +2 -1
  131. package/dist/esm/tools/index.js.map +1 -1
  132. package/dist/esm/types/CardinalSplineProps.js +2 -0
  133. package/dist/esm/types/CardinalSplineProps.js.map +1 -0
  134. package/dist/esm/types/ClosestControlPoint.js +2 -0
  135. package/dist/esm/types/ClosestControlPoint.js.map +1 -0
  136. package/dist/esm/types/ClosestPoint.js +2 -0
  137. package/dist/esm/types/ClosestPoint.js.map +1 -0
  138. package/dist/esm/types/ClosestSplinePoint.js +2 -0
  139. package/dist/esm/types/ClosestSplinePoint.js.map +1 -0
  140. package/dist/esm/types/ControlPointInfo.js +2 -0
  141. package/dist/esm/types/ControlPointInfo.js.map +1 -0
  142. package/dist/esm/types/ISpline.js +2 -0
  143. package/dist/esm/types/ISpline.js.map +1 -0
  144. package/dist/esm/types/SplineCurveSegment.js +2 -0
  145. package/dist/esm/types/SplineCurveSegment.js.map +1 -0
  146. package/dist/esm/types/SplineLineSegment.js +2 -0
  147. package/dist/esm/types/SplineLineSegment.js.map +1 -0
  148. package/dist/esm/types/SplineProps.js +2 -0
  149. package/dist/esm/types/SplineProps.js.map +1 -0
  150. package/dist/esm/utilities/index.js +2 -3
  151. package/dist/esm/utilities/index.js.map +1 -1
  152. package/dist/esm/utilities/math/aabb/distanceToPoint.js +5 -0
  153. package/dist/esm/utilities/math/aabb/distanceToPoint.js.map +1 -0
  154. package/dist/esm/utilities/math/aabb/distanceToPointSquared.js +21 -0
  155. package/dist/esm/utilities/math/aabb/distanceToPointSquared.js.map +1 -0
  156. package/dist/esm/utilities/math/aabb/index.js +3 -0
  157. package/dist/esm/utilities/math/aabb/index.js.map +1 -0
  158. package/dist/esm/utilities/math/index.js +6 -5
  159. package/dist/esm/utilities/math/index.js.map +1 -1
  160. package/dist/esm/utilities/math/line/distanceToPointSquared.js +2 -21
  161. package/dist/esm/utilities/math/line/distanceToPointSquared.js.map +1 -1
  162. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +30 -0
  163. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js.map +1 -0
  164. package/dist/esm/utilities/math/line/index.js +2 -1
  165. package/dist/esm/utilities/math/line/index.js.map +1 -1
  166. package/dist/esm/utilities/math/point/distanceToPoint.js +2 -6
  167. package/dist/esm/utilities/math/point/distanceToPoint.js.map +1 -1
  168. package/dist/esm/utilities/math/point/distanceToPointSquared.js +9 -0
  169. package/dist/esm/utilities/math/point/distanceToPointSquared.js.map +1 -0
  170. package/dist/esm/utilities/math/point/index.js +3 -2
  171. package/dist/esm/utilities/math/point/index.js.map +1 -1
  172. package/dist/esm/utilities/math/point/mirror.js +8 -0
  173. package/dist/esm/utilities/math/point/mirror.js.map +1 -0
  174. package/dist/types/eventDispatchers/mouseEventHandlers/mouseDown.d.ts.map +1 -1
  175. package/dist/types/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts.map +1 -1
  176. package/dist/types/index.d.ts +2 -2
  177. package/dist/types/index.d.ts.map +1 -1
  178. package/dist/types/tools/AdvancedMagnifyTool.d.ts +4 -0
  179. package/dist/types/tools/AdvancedMagnifyTool.d.ts.map +1 -1
  180. package/dist/types/tools/annotation/SplineROITool.d.ts +60 -0
  181. package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -0
  182. package/dist/types/tools/annotation/splines/BSpline.d.ts +6 -0
  183. package/dist/types/tools/annotation/splines/BSpline.d.ts.map +1 -0
  184. package/dist/types/tools/annotation/splines/CardinalSpline.d.ts +13 -0
  185. package/dist/types/tools/annotation/splines/CardinalSpline.d.ts.map +1 -0
  186. package/dist/types/tools/annotation/splines/CatmullRomSpline.d.ts +6 -0
  187. package/dist/types/tools/annotation/splines/CatmullRomSpline.d.ts.map +1 -0
  188. package/dist/types/tools/annotation/splines/CubicSpline.d.ts +14 -0
  189. package/dist/types/tools/annotation/splines/CubicSpline.d.ts.map +1 -0
  190. package/dist/types/tools/annotation/splines/LinearSpline.d.ts +6 -0
  191. package/dist/types/tools/annotation/splines/LinearSpline.d.ts.map +1 -0
  192. package/dist/types/tools/annotation/splines/QuadraticBezier.d.ts +7 -0
  193. package/dist/types/tools/annotation/splines/QuadraticBezier.d.ts.map +1 -0
  194. package/dist/types/tools/annotation/splines/QuadraticSpline.d.ts +10 -0
  195. package/dist/types/tools/annotation/splines/QuadraticSpline.d.ts.map +1 -0
  196. package/dist/types/tools/annotation/splines/Spline.d.ts +50 -0
  197. package/dist/types/tools/annotation/splines/Spline.d.ts.map +1 -0
  198. package/dist/types/tools/index.d.ts +2 -1
  199. package/dist/types/tools/index.d.ts.map +1 -1
  200. package/dist/types/types/CardinalSplineProps.d.ts +6 -0
  201. package/dist/types/types/CardinalSplineProps.d.ts.map +1 -0
  202. package/dist/types/types/ClosestControlPoint.d.ts +5 -0
  203. package/dist/types/types/ClosestControlPoint.d.ts.map +1 -0
  204. package/dist/types/types/ClosestPoint.d.ts +6 -0
  205. package/dist/types/types/ClosestPoint.d.ts.map +1 -0
  206. package/dist/types/types/ClosestSplinePoint.d.ts +5 -0
  207. package/dist/types/types/ClosestSplinePoint.d.ts.map +1 -0
  208. package/dist/types/types/ControlPointInfo.d.ts +6 -0
  209. package/dist/types/types/ControlPointInfo.d.ts.map +1 -0
  210. package/dist/types/types/ISpline.d.ts +30 -0
  211. package/dist/types/types/ISpline.d.ts.map +1 -0
  212. package/dist/types/types/SplineCurveSegment.d.ts +15 -0
  213. package/dist/types/types/SplineCurveSegment.d.ts.map +1 -0
  214. package/dist/types/types/SplineLineSegment.d.ts +11 -0
  215. package/dist/types/types/SplineLineSegment.d.ts.map +1 -0
  216. package/dist/types/types/SplineProps.d.ts +5 -0
  217. package/dist/types/types/SplineProps.d.ts.map +1 -0
  218. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +34 -0
  219. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  220. package/dist/types/types/index.d.ts +10 -1
  221. package/dist/types/types/index.d.ts.map +1 -1
  222. package/dist/types/utilities/index.d.ts +2 -3
  223. package/dist/types/utilities/index.d.ts.map +1 -1
  224. package/dist/types/utilities/math/aabb/distanceToPoint.d.ts +3 -0
  225. package/dist/types/utilities/math/aabb/distanceToPoint.d.ts.map +1 -0
  226. package/dist/types/utilities/math/aabb/distanceToPointSquared.d.ts +3 -0
  227. package/dist/types/utilities/math/aabb/distanceToPointSquared.d.ts.map +1 -0
  228. package/dist/types/utilities/math/aabb/index.d.ts +3 -0
  229. package/dist/types/utilities/math/aabb/index.d.ts.map +1 -0
  230. package/dist/types/utilities/math/index.d.ts +6 -5
  231. package/dist/types/utilities/math/index.d.ts.map +1 -1
  232. package/dist/types/utilities/math/line/distanceToPointSquared.d.ts.map +1 -1
  233. package/dist/types/utilities/math/line/distanceToPointSquaredInfo.d.ts +6 -0
  234. package/dist/types/utilities/math/line/distanceToPointSquaredInfo.d.ts.map +1 -0
  235. package/dist/types/utilities/math/line/index.d.ts +2 -1
  236. package/dist/types/utilities/math/line/index.d.ts.map +1 -1
  237. package/dist/types/utilities/math/point/distanceToPoint.d.ts.map +1 -1
  238. package/dist/types/utilities/math/point/distanceToPointSquared.d.ts +5 -0
  239. package/dist/types/utilities/math/point/distanceToPointSquared.d.ts.map +1 -0
  240. package/dist/types/utilities/math/point/index.d.ts +3 -2
  241. package/dist/types/utilities/math/point/index.d.ts.map +1 -1
  242. package/dist/types/utilities/math/point/mirror.d.ts +3 -0
  243. package/dist/types/utilities/math/point/mirror.d.ts.map +1 -0
  244. package/dist/umd/index.js +2 -1
  245. package/dist/umd/index.js.LICENSE.txt +6 -0
  246. package/dist/umd/index.js.map +1 -1
  247. package/package.json +3 -3
  248. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +8 -6
  249. package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +3 -2
  250. package/src/index.ts +2 -0
  251. package/src/tools/AdvancedMagnifyTool.ts +8 -3
  252. package/src/tools/annotation/SplineROITool.ts +1151 -0
  253. package/src/tools/annotation/splines/BSpline.ts +22 -0
  254. package/src/tools/annotation/splines/CardinalSpline.ts +45 -0
  255. package/src/tools/annotation/splines/CatmullRomSpline.ts +19 -0
  256. package/src/tools/annotation/splines/CubicSpline.ts +288 -0
  257. package/src/tools/annotation/splines/LinearSpline.ts +20 -0
  258. package/src/tools/annotation/splines/QuadraticBezier.ts +20 -0
  259. package/src/tools/annotation/splines/QuadraticSpline.ts +25 -0
  260. package/src/tools/annotation/splines/Spline.ts +729 -0
  261. package/src/tools/index.ts +2 -0
  262. package/src/types/CardinalSplineProps.ts +11 -0
  263. package/src/types/ClosestControlPoint.ts +6 -0
  264. package/src/types/ClosestPoint.ts +8 -0
  265. package/src/types/ClosestSplinePoint.ts +6 -0
  266. package/src/types/ControlPointInfo.ts +8 -0
  267. package/src/types/ISpline.ts +164 -0
  268. package/src/types/SplineCurveSegment.ts +28 -0
  269. package/src/types/SplineLineSegment.ts +20 -0
  270. package/src/types/SplineProps.ts +15 -0
  271. package/src/types/ToolSpecificAnnotationTypes.ts +35 -0
  272. package/src/types/index.ts +21 -0
  273. package/src/utilities/index.ts +6 -2
  274. package/src/utilities/math/aabb/distanceToPoint.ts +20 -0
  275. package/src/utilities/math/aabb/distanceToPointSquared.ts +47 -0
  276. package/src/utilities/math/aabb/index.ts +2 -0
  277. package/src/utilities/math/index.ts +10 -8
  278. package/src/utilities/math/line/distanceToPointSquared.ts +3 -29
  279. package/src/utilities/math/line/distanceToPointSquaredInfo.ts +54 -0
  280. package/src/utilities/math/line/index.ts +7 -1
  281. package/src/utilities/math/point/distanceToPoint.ts +2 -10
  282. package/src/utilities/math/point/distanceToPointSquared.ts +21 -0
  283. package/src/utilities/math/point/index.ts +3 -3
  284. package/src/utilities/math/point/mirror.ts +21 -0
@@ -0,0 +1,420 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Spline = exports.default = void 0;
27
+ const math = __importStar(require("../../../utilities/math"));
28
+ class Spline {
29
+ constructor(props) {
30
+ var _a, _b;
31
+ this._controlPoints = [];
32
+ this._invalidated = false;
33
+ this._length = 0;
34
+ this._controlPoints = [];
35
+ this._resolution = (_a = props === null || props === void 0 ? void 0 : props.resolution) !== null && _a !== void 0 ? _a : 20;
36
+ this._closed = (_b = props === null || props === void 0 ? void 0 : props.closed) !== null && _b !== void 0 ? _b : false;
37
+ this._invalidated = true;
38
+ }
39
+ get controlPoints() {
40
+ return this._controlPoints;
41
+ }
42
+ get numControlPoints() {
43
+ return this._controlPoints.length;
44
+ }
45
+ get resolution() {
46
+ return this._resolution;
47
+ }
48
+ set resolution(resolution) {
49
+ if (this._resolution === resolution) {
50
+ return;
51
+ }
52
+ this._resolution = resolution;
53
+ this.invalidated = true;
54
+ }
55
+ get closed() {
56
+ return this._closed;
57
+ }
58
+ set closed(closed) {
59
+ if (this._closed === closed) {
60
+ return;
61
+ }
62
+ this._closed = closed;
63
+ this.invalidated = true;
64
+ }
65
+ get aabb() {
66
+ this._update();
67
+ return this._aabb;
68
+ }
69
+ get length() {
70
+ this._update();
71
+ return this._length;
72
+ }
73
+ get invalidated() {
74
+ return this._invalidated;
75
+ }
76
+ set invalidated(invalidated) {
77
+ this._invalidated = invalidated;
78
+ }
79
+ hasTangentPoints() {
80
+ return false;
81
+ }
82
+ addControlPoint(point) {
83
+ this._controlPoints.push([point[0], point[1]]);
84
+ this.invalidated = true;
85
+ }
86
+ addControlPoints(points) {
87
+ points.forEach((point) => this.addControlPoint(point));
88
+ }
89
+ addControlPointAtU(u) {
90
+ const lineSegment = this._getLineSegmentAt(u);
91
+ const { start: startPoint, end: endPoint } = lineSegment.points;
92
+ const curveSegmentIndex = Math.floor(u);
93
+ const curveSegment = this._curveSegments[curveSegmentIndex];
94
+ const t = u - Math.floor(curveSegmentIndex);
95
+ const controlPointPos = [
96
+ startPoint[0] + t * (endPoint[0] - startPoint[0]),
97
+ startPoint[1] + t * (endPoint[1] - startPoint[1]),
98
+ ];
99
+ const insertIndex = this._controlPoints.indexOf(curveSegment.controlPoints.p1) + 1;
100
+ this._controlPoints.splice(insertIndex, 0, controlPointPos);
101
+ this.invalidated = true;
102
+ return {
103
+ index: insertIndex,
104
+ point: controlPointPos,
105
+ };
106
+ }
107
+ deleteControlPointByIndex(index) {
108
+ const minControlPoints = this._closed ? 3 : 1;
109
+ const canDelete = index >= 0 &&
110
+ index < this._controlPoints.length &&
111
+ this._controlPoints.length > minControlPoints;
112
+ if (!canDelete) {
113
+ return false;
114
+ }
115
+ this._controlPoints.splice(index, 1);
116
+ this.invalidated = true;
117
+ return true;
118
+ }
119
+ clearControlPoints() {
120
+ this._controlPoints = [];
121
+ this.invalidated = true;
122
+ }
123
+ setControlPoints(points) {
124
+ this.clearControlPoints();
125
+ this.addControlPoints(points);
126
+ }
127
+ updateControlPoint(index, newControlPoint) {
128
+ if (index < 0 || index >= this._controlPoints.length) {
129
+ throw new Error('Index out of bounds');
130
+ }
131
+ this._controlPoints[index] = [...newControlPoint];
132
+ this.invalidated = true;
133
+ }
134
+ getControlPoints() {
135
+ return this._controlPoints.map((controlPoint) => [
136
+ controlPoint[0],
137
+ controlPoint[1],
138
+ ]);
139
+ }
140
+ getClosestControlPoint(point) {
141
+ const controlPoints = this._controlPoints;
142
+ let minSquaredDist = Infinity;
143
+ let closestPointIndex = -1;
144
+ for (let i = 0, len = controlPoints.length; i < len; i++) {
145
+ const controlPoint = controlPoints[i];
146
+ const dx = point[0] - controlPoint[0];
147
+ const dy = point[1] - controlPoint[1];
148
+ const squaredDist = dx * dx + dy * dy;
149
+ if (squaredDist < minSquaredDist) {
150
+ minSquaredDist = squaredDist;
151
+ closestPointIndex = i;
152
+ }
153
+ }
154
+ return {
155
+ index: closestPointIndex,
156
+ point: closestPointIndex === -1
157
+ ? undefined
158
+ : [...controlPoints[closestPointIndex]],
159
+ distance: Math.sqrt(minSquaredDist),
160
+ };
161
+ }
162
+ getClosestControlPointWithinDistance(point, maxDist) {
163
+ const closestControlPoint = this.getClosestControlPoint(point);
164
+ return closestControlPoint.distance <= maxDist
165
+ ? closestControlPoint
166
+ : undefined;
167
+ }
168
+ getClosestPoint(point) {
169
+ this._update();
170
+ const curveSegmentsDistInfo = this._getCurveSegmmentsDistanceSquaredInfo(point);
171
+ if (!curveSegmentsDistInfo.length) {
172
+ return;
173
+ }
174
+ curveSegmentsDistInfo.sort((csA, csB) => csA.distanceSquared - csB.distanceSquared);
175
+ let closestPoint;
176
+ let closestPointCurveSegmentIndex = -1;
177
+ let minDistSquared = Infinity;
178
+ let minDistCurveSegment;
179
+ let minDistLineSegment;
180
+ for (let i = 0; i < curveSegmentsDistInfo.length; i++) {
181
+ const curveSegmentDistInfo = curveSegmentsDistInfo[i];
182
+ if (curveSegmentDistInfo.distanceSquared > minDistSquared) {
183
+ continue;
184
+ }
185
+ const { curveSegmentIndex, curveSegment } = curveSegmentDistInfo;
186
+ const { lineSegments } = curveSegment;
187
+ for (let j = 0; j < lineSegments.length; j++) {
188
+ const lineSegment = lineSegments[j];
189
+ const { point: lineSegPoint, distanceSquared: lineSegDistSquared } = math.lineSegment.distanceToPointSquaredInfo(lineSegment.points.start, lineSegment.points.end, point);
190
+ if (lineSegDistSquared < minDistSquared) {
191
+ minDistLineSegment = lineSegment;
192
+ closestPointCurveSegmentIndex = curveSegmentIndex;
193
+ minDistCurveSegment = curveSegmentDistInfo.curveSegment;
194
+ closestPoint = lineSegPoint;
195
+ minDistSquared = lineSegDistSquared;
196
+ }
197
+ }
198
+ }
199
+ const curveSegmentLengthToPoint = minDistLineSegment.previousLineSegmentsLength +
200
+ math.point.distanceToPoint(minDistLineSegment.points.start, closestPoint);
201
+ const t = curveSegmentLengthToPoint / minDistCurveSegment.length;
202
+ const u = closestPointCurveSegmentIndex + t;
203
+ return {
204
+ point: closestPoint,
205
+ uValue: u,
206
+ distance: Math.sqrt(minDistSquared),
207
+ };
208
+ }
209
+ getClosestPointOnControlPointLines(point) {
210
+ const linePoints = [...this._controlPoints];
211
+ if (this._closed) {
212
+ linePoints.push(this._controlPoints[0]);
213
+ }
214
+ if (!linePoints.length) {
215
+ return;
216
+ }
217
+ let closestPoint;
218
+ let minDistSquared = Infinity;
219
+ let startPoint = linePoints[0];
220
+ for (let i = 1, len = linePoints.length; i < len; i++) {
221
+ const endPoint = linePoints[i];
222
+ const { point: lineSegPoint, distanceSquared: lineSegDistSquared } = math.lineSegment.distanceToPointSquaredInfo(startPoint, endPoint, point);
223
+ if (lineSegDistSquared < minDistSquared) {
224
+ closestPoint = lineSegPoint;
225
+ minDistSquared = lineSegDistSquared;
226
+ }
227
+ startPoint = endPoint;
228
+ }
229
+ return {
230
+ point: closestPoint,
231
+ distance: Math.sqrt(minDistSquared),
232
+ };
233
+ }
234
+ getPolylinePoints() {
235
+ this._update();
236
+ return this._convertCurveSegmentsToPolyline(this._curveSegments);
237
+ }
238
+ getPreviewPolylinePoints(controlPointPreview, closeDistance) {
239
+ if (this._closed) {
240
+ return [];
241
+ }
242
+ this._update();
243
+ const closestControlPoint = this.getClosestControlPointWithinDistance(controlPointPreview, closeDistance);
244
+ const closeSpline = (closestControlPoint === null || closestControlPoint === void 0 ? void 0 : closestControlPoint.index) === 0;
245
+ const previewCurveSegments = this.getPreviewCurveSegments(controlPointPreview, closeSpline);
246
+ return (previewCurveSegments === null || previewCurveSegments === void 0 ? void 0 : previewCurveSegments.length)
247
+ ? this._convertCurveSegmentsToPolyline(previewCurveSegments)
248
+ : [];
249
+ }
250
+ isPointNearCurve(point, maxDist) {
251
+ this._update();
252
+ const curveSegments = this._getCurveSegmmentsWithinDistance(point, maxDist);
253
+ const maxDistSquared = maxDist * maxDist;
254
+ for (let i = 0; i < curveSegments.length; i++) {
255
+ const { lineSegments } = curveSegments[i];
256
+ for (let j = 0; j < lineSegments.length; j++) {
257
+ const lineSegment = lineSegments[j];
258
+ const lineDistSquared = math.lineSegment.distanceToPointSquared(lineSegment.points.start, lineSegment.points.end, point);
259
+ if (lineDistSquared <= maxDistSquared) {
260
+ return true;
261
+ }
262
+ }
263
+ }
264
+ return false;
265
+ }
266
+ containsPoint(point) {
267
+ this._update();
268
+ const controlPoints = this._controlPoints;
269
+ if (controlPoints.length < 3) {
270
+ return false;
271
+ }
272
+ const curveSegments = [...this._curveSegments];
273
+ const closingCurveSegment = this._getClosingCurveSegmentWithStraightLineSegment();
274
+ if (closingCurveSegment) {
275
+ curveSegments.push(closingCurveSegment);
276
+ }
277
+ let numIntersections = 0;
278
+ for (let i = 0; i < curveSegments.length; i++) {
279
+ const curveSegment = curveSegments[i];
280
+ const { aabb: curveSegAABB } = curveSegment;
281
+ const mayIntersectCurveSegment = point[0] <= curveSegAABB.maxX &&
282
+ point[1] >= curveSegAABB.minY &&
283
+ point[1] < curveSegAABB.maxY;
284
+ if (!mayIntersectCurveSegment) {
285
+ continue;
286
+ }
287
+ const { lineSegments } = curveSegment;
288
+ for (let i = 0; i < lineSegments.length; i++) {
289
+ const lineSegment = lineSegments[i];
290
+ const { aabb: lineSegmentAABB } = lineSegment;
291
+ const mayIntersectLineSegment = point[0] <= lineSegmentAABB.maxX &&
292
+ point[1] >= lineSegmentAABB.minY &&
293
+ point[1] < lineSegmentAABB.maxY;
294
+ if (mayIntersectLineSegment) {
295
+ const { start: p1, end: p2 } = lineSegment.points;
296
+ const isVerticalLine = p1[0] === p2[0];
297
+ const xIntersection = ((point[1] - p1[1]) * (p2[0] - p1[0])) / (p2[1] - p1[1]) + p1[0];
298
+ numIntersections +=
299
+ isVerticalLine || point[0] <= xIntersection ? 1 : 0;
300
+ }
301
+ }
302
+ }
303
+ return numIntersections % 2 === 1;
304
+ }
305
+ _update() {
306
+ if (!this._invalidated) {
307
+ return;
308
+ }
309
+ const curveSegments = this.getSplineCurves();
310
+ let length = 0;
311
+ let minX = Infinity;
312
+ let minY = Infinity;
313
+ let maxX = -Infinity;
314
+ let maxY = -Infinity;
315
+ for (let i = 0, len = curveSegments.length; i < len; i++) {
316
+ const { aabb: curveSegAABB, length: curveSegLength } = curveSegments[i];
317
+ minX = minX <= curveSegAABB.minX ? minX : curveSegAABB.minX;
318
+ minY = minY <= curveSegAABB.minY ? minY : curveSegAABB.minY;
319
+ maxX = maxX >= curveSegAABB.maxX ? maxX : curveSegAABB.maxX;
320
+ maxY = maxY >= curveSegAABB.maxY ? maxY : curveSegAABB.maxY;
321
+ length += curveSegLength;
322
+ }
323
+ this._curveSegments = curveSegments;
324
+ this._aabb = { minX, minY, maxX, maxY };
325
+ this._length = length;
326
+ this._invalidated = false;
327
+ }
328
+ _convertCurveSegmentsToPolyline(curveSegments) {
329
+ this._update();
330
+ const polylinePoints = [];
331
+ curveSegments.forEach(({ lineSegments }, curveSegIndex) => {
332
+ lineSegments.forEach((lineSegment, lineSegIndex) => {
333
+ if (curveSegIndex === 0 && lineSegIndex === 0) {
334
+ polylinePoints.push([...lineSegment.points.start]);
335
+ }
336
+ polylinePoints.push([...lineSegment.points.end]);
337
+ });
338
+ });
339
+ return polylinePoints;
340
+ }
341
+ _getCurveSegmmentsDistanceSquaredInfo(point) {
342
+ this._update();
343
+ const curveSegmentsDistanceSquared = [];
344
+ const { _curveSegments: curveSegments } = this;
345
+ for (let i = 0; i < curveSegments.length; i++) {
346
+ const curveSegment = curveSegments[i];
347
+ const distanceSquared = math.aabb.distanceToPointSquared(curveSegment.aabb, point);
348
+ curveSegmentsDistanceSquared.push({
349
+ curveSegmentIndex: i,
350
+ curveSegment,
351
+ distanceSquared,
352
+ });
353
+ }
354
+ return curveSegmentsDistanceSquared;
355
+ }
356
+ _getCurveSegmmentsWithinDistance(point, maxDist) {
357
+ this._update();
358
+ const maxDistSquared = maxDist * maxDist;
359
+ if (math.aabb.distanceToPointSquared(this.aabb, point) > maxDistSquared) {
360
+ return [];
361
+ }
362
+ const curveSegmentsDistance = this._getCurveSegmmentsDistanceSquaredInfo(point);
363
+ const curveSegmentsWithinRange = [];
364
+ for (let i = 0, len = curveSegmentsDistance.length; i < len; i++) {
365
+ const { curveSegment, distanceSquared: curveSegmentDistSquared } = curveSegmentsDistance[i];
366
+ if (curveSegmentDistSquared <= maxDistSquared) {
367
+ curveSegmentsWithinRange.push(curveSegment);
368
+ }
369
+ }
370
+ return curveSegmentsWithinRange;
371
+ }
372
+ _getLineSegmentAt(u) {
373
+ this._update();
374
+ const curveSegmentIndex = Math.floor(u);
375
+ const t = u - curveSegmentIndex;
376
+ const curveSegment = this._curveSegments[curveSegmentIndex];
377
+ const { lineSegments } = curveSegment;
378
+ const pointLength = curveSegment.length * t;
379
+ for (let i = 0; i < lineSegments.length; i++) {
380
+ const lineSegment = lineSegments[i];
381
+ const lengthEnd = lineSegment.previousLineSegmentsLength + lineSegment.length;
382
+ if (pointLength >= lineSegment.previousLineSegmentsLength &&
383
+ pointLength <= lengthEnd) {
384
+ return lineSegment;
385
+ }
386
+ }
387
+ }
388
+ _getClosingCurveSegmentWithStraightLineSegment() {
389
+ if (this.closed) {
390
+ return;
391
+ }
392
+ const controlPoints = this._controlPoints;
393
+ const startControlPoint = controlPoints[0];
394
+ const endControlPoint = controlPoints[controlPoints.length - 1];
395
+ const closingLineSegment = {
396
+ points: {
397
+ start: [...startControlPoint],
398
+ end: [...endControlPoint],
399
+ },
400
+ aabb: {
401
+ minX: Math.min(startControlPoint[0], endControlPoint[0]),
402
+ minY: Math.min(startControlPoint[1], endControlPoint[1]),
403
+ maxX: Math.max(startControlPoint[0], endControlPoint[0]),
404
+ maxY: Math.max(startControlPoint[1], endControlPoint[1]),
405
+ },
406
+ };
407
+ return {
408
+ aabb: {
409
+ minX: closingLineSegment.aabb.minX,
410
+ minY: closingLineSegment.aabb.minY,
411
+ maxX: closingLineSegment.aabb.maxX,
412
+ maxY: closingLineSegment.aabb.maxY,
413
+ },
414
+ lineSegments: [closingLineSegment],
415
+ };
416
+ }
417
+ }
418
+ exports.default = Spline;
419
+ exports.Spline = Spline;
420
+ //# sourceMappingURL=Spline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spline.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/splines/Spline.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import DragProbeTool from './annotation/DragProbeTool';
24
24
  import RectangleROITool from './annotation/RectangleROITool';
25
25
  import EllipticalROITool from './annotation/EllipticalROITool';
26
26
  import CircleROITool from './annotation/CircleROITool';
27
+ import SplineROITool from './annotation/SplineROITool';
27
28
  import PlanarFreehandROITool from './annotation/PlanarFreehandROITool';
28
29
  import ArrowAnnotateTool from './annotation/ArrowAnnotateTool';
29
30
  import AngleTool from './annotation/AngleTool';
@@ -38,4 +39,4 @@ import RectangleROIStartEndThresholdTool from './segmentation/RectangleROIStartE
38
39
  import BrushTool from './segmentation/BrushTool';
39
40
  import PaintFillTool from './segmentation/PaintFillTool';
40
41
  import OrientationMarkerTool from './OrientationMarkerTool';
41
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, KeyImageTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, };
42
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, KeyImageTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OrientationMarkerTool = exports.ScaleOverlayTool = exports.PaintFillTool = exports.ReferenceLines = exports.AdvancedMagnifyTool = exports.MagnifyTool = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.KeyImageTool = exports.CobbAngleTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.CircleROITool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.LengthTool = exports.BidirectionalTool = exports.SegmentationIntersectionTool = exports.OverlayGridTool = exports.ReferenceLinesTool = exports.CrosshairsTool = exports.ReferenceCursors = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.ZoomTool = exports.StackScrollMouseWheelTool = exports.PlanarRotateTool = exports.StackScrollTool = exports.WindowLevelTool = exports.DragProbeTool = exports.TrackballRotateTool = exports.PanTool = exports.AnnotationDisplayTool = exports.AnnotationTool = exports.BaseTool = void 0;
6
+ exports.OrientationMarkerTool = exports.ScaleOverlayTool = exports.PaintFillTool = exports.ReferenceLines = exports.AdvancedMagnifyTool = exports.MagnifyTool = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.KeyImageTool = exports.CobbAngleTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.SplineROITool = exports.CircleROITool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.LengthTool = exports.BidirectionalTool = exports.SegmentationIntersectionTool = exports.OverlayGridTool = exports.ReferenceLinesTool = exports.CrosshairsTool = exports.ReferenceCursors = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.ZoomTool = exports.StackScrollMouseWheelTool = exports.PlanarRotateTool = exports.StackScrollTool = exports.WindowLevelTool = exports.DragProbeTool = exports.TrackballRotateTool = exports.PanTool = exports.AnnotationDisplayTool = exports.AnnotationTool = exports.BaseTool = void 0;
7
7
  const base_1 = require("./base");
8
8
  Object.defineProperty(exports, "BaseTool", { enumerable: true, get: function () { return base_1.BaseTool; } });
9
9
  Object.defineProperty(exports, "AnnotationTool", { enumerable: true, get: function () { return base_1.AnnotationTool; } });
@@ -58,6 +58,8 @@ const EllipticalROITool_1 = __importDefault(require("./annotation/EllipticalROIT
58
58
  exports.EllipticalROITool = EllipticalROITool_1.default;
59
59
  const CircleROITool_1 = __importDefault(require("./annotation/CircleROITool"));
60
60
  exports.CircleROITool = CircleROITool_1.default;
61
+ const SplineROITool_1 = __importDefault(require("./annotation/SplineROITool"));
62
+ exports.SplineROITool = SplineROITool_1.default;
61
63
  const PlanarFreehandROITool_1 = __importDefault(require("./annotation/PlanarFreehandROITool"));
62
64
  exports.PlanarFreehandROITool = PlanarFreehandROITool_1.default;
63
65
  const ArrowAnnotateTool_1 = __importDefault(require("./annotation/ArrowAnnotateTool"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAyE;AAiDvE,yFAjDO,eAAQ,OAiDP;AACR,+FAlDiB,qBAAc,OAkDjB;AACd,sGAnDiC,4BAAqB,OAmDjC;AAlDvB,wDAAgC;AAoD9B,kBApDK,iBAAO,CAoDL;AAnDT,gFAAwD;AAoDtD,8BApDK,6BAAmB,CAoDL;AAnDrB,wEAAgD;AAqD9C,0BArDK,yBAAe,CAqDL;AApDjB,wEAAgD;AAqD9C,0BArDK,yBAAe,CAqDL;AApDjB,0EAAkD;AAqDhD,2BArDK,0BAAgB,CAqDL;AApDlB,oGAAwE;AAqDtE,oCArDK,uCAAyB,CAqDL;AApD3B,0DAAkC;AAqDhC,mBArDK,kBAAQ,CAqDL;AApDV,8FAAsE;AAqDpE,qCArDK,oCAA0B,CAqDL;AApD5B,8EAAsD;AAqDpD,6BArDK,4BAAkB,CAqDL;AApDpB,sEAA8C;AAuD5C,yBAvDK,wBAAc,CAuDL;AAtDhB,gEAAwC;AA8EtC,sBA9EK,qBAAW,CA8EL;AA7Eb,gFAAwD;AA8EtD,8BA9EK,6BAAmB,CA8EL;AA7ErB,8EAAsD;AAqDpD,6BArDK,4BAAkB,CAqDL;AApDpB,wEAAgD;AAqD9C,0BArDK,yBAAe,CAqDL;AApDjB,kGAA0E;AAqDxE,uCArDK,sCAA4B,CAqDL;AApD9B,0EAAkD;AA+ChD,2BA/CK,0BAAgB,CA+CL;AA9ClB,8EAAkD;AA0EhD,yBA1EK,4BAAc,CA0EL;AAzEhB,0EAAkD;AA2EhD,2BA3EK,0BAAgB,CA2EL;AAxElB,uFAA+D;AAgD7D,4BAhDK,2BAAiB,CAgDL;AA/CnB,yEAAiD;AAgD/C,qBAhDK,oBAAU,CAgDL;AA/CZ,uEAA+C;AAgD7C,oBAhDK,mBAAS,CAgDL;AA/CX,+EAAuD;AA+BrD,wBA/BK,uBAAa,CA+BL;AA9Bf,qFAA6D;AA+C3D,2BA/CK,0BAAgB,CA+CL;AA9ClB,uFAA+D;AA+C7D,4BA/CK,2BAAiB,CA+CL;AA9CnB,+EAAuD;AA+CrD,wBA/CK,uBAAa,CA+CL;AA9Cf,+FAAuE;AA+CrE,gCA/CK,+BAAqB,CA+CL;AA9CvB,uFAA+D;AA+C7D,4BA/CK,2BAAiB,CA+CL;AA9CnB,uEAA+C;AA+C7C,oBA/CK,mBAAS,CA+CL;AA9CX,+EAAuD;AA+CrD,wBA/CK,uBAAa,CA+CL;AA9Cf,6EAAqD;AA+CnD,uBA/CK,sBAAY,CA+CL;AA5Cd,qGAA6E;AA8C3E,kCA9CK,iCAAuB,CA8CL;AA3CzB,iGAAyE;AA6CvE,gCA7CK,+BAAqB,CA6CL;AA5CvB,2FAAmE;AA6CjE,6BA7CK,4BAAkB,CA6CL;AA5CpB,2FAAmE;AA6CjE,6BA7CK,4BAAkB,CA6CL;AA5CpB,yGAAiF;AA6C/E,oCA7CK,mCAAyB,CA6CL;AA5C3B,yHAAiG;AA6C/F,4CA7CK,2CAAiC,CA6CL;AA5CnC,yEAAiD;AA6C/C,oBA7CK,mBAAS,CA6CL;AA5CX,iFAAyD;AAgDvD,wBAhDK,uBAAa,CAgDL;AA/Cf,oFAA4D;AAiD1D,gCAjDK,+BAAqB,CAiDL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAyE;AAkDvE,yFAlDO,eAAQ,OAkDP;AACR,+FAnDiB,qBAAc,OAmDjB;AACd,sGApDiC,4BAAqB,OAoDjC;AAnDvB,wDAAgC;AAqD9B,kBArDK,iBAAO,CAqDL;AApDT,gFAAwD;AAqDtD,8BArDK,6BAAmB,CAqDL;AApDrB,wEAAgD;AAsD9C,0BAtDK,yBAAe,CAsDL;AArDjB,wEAAgD;AAsD9C,0BAtDK,yBAAe,CAsDL;AArDjB,0EAAkD;AAsDhD,2BAtDK,0BAAgB,CAsDL;AArDlB,oGAAwE;AAsDtE,oCAtDK,uCAAyB,CAsDL;AArD3B,0DAAkC;AAsDhC,mBAtDK,kBAAQ,CAsDL;AArDV,8FAAsE;AAsDpE,qCAtDK,oCAA0B,CAsDL;AArD5B,8EAAsD;AAsDpD,6BAtDK,4BAAkB,CAsDL;AArDpB,sEAA8C;AAwD5C,yBAxDK,wBAAc,CAwDL;AAvDhB,gEAAwC;AAgFtC,sBAhFK,qBAAW,CAgFL;AA/Eb,gFAAwD;AAgFtD,8BAhFK,6BAAmB,CAgFL;AA/ErB,8EAAsD;AAsDpD,6BAtDK,4BAAkB,CAsDL;AArDpB,wEAAgD;AAsD9C,0BAtDK,yBAAe,CAsDL;AArDjB,kGAA0E;AAsDxE,uCAtDK,sCAA4B,CAsDL;AArD9B,0EAAkD;AAgDhD,2BAhDK,0BAAgB,CAgDL;AA/ClB,8EAAkD;AA4EhD,yBA5EK,4BAAc,CA4EL;AA3EhB,0EAAkD;AA6EhD,2BA7EK,0BAAgB,CA6EL;AA1ElB,uFAA+D;AAiD7D,4BAjDK,2BAAiB,CAiDL;AAhDnB,yEAAiD;AAiD/C,qBAjDK,oBAAU,CAiDL;AAhDZ,uEAA+C;AAiD7C,oBAjDK,mBAAS,CAiDL;AAhDX,+EAAuD;AAgCrD,wBAhCK,uBAAa,CAgCL;AA/Bf,qFAA6D;AAgD3D,2BAhDK,0BAAgB,CAgDL;AA/ClB,uFAA+D;AAgD7D,4BAhDK,2BAAiB,CAgDL;AA/CnB,+EAAuD;AAgDrD,wBAhDK,uBAAa,CAgDL;AA/Cf,+EAAuD;AAgDrD,wBAhDK,uBAAa,CAgDL;AA/Cf,+FAAuE;AAgDrE,gCAhDK,+BAAqB,CAgDL;AA/CvB,uFAA+D;AAgD7D,4BAhDK,2BAAiB,CAgDL;AA/CnB,uEAA+C;AAgD7C,oBAhDK,mBAAS,CAgDL;AA/CX,+EAAuD;AAgDrD,wBAhDK,uBAAa,CAgDL;AA/Cf,6EAAqD;AAgDnD,uBAhDK,sBAAY,CAgDL;AA7Cd,qGAA6E;AA+C3E,kCA/CK,iCAAuB,CA+CL;AA5CzB,iGAAyE;AA8CvE,gCA9CK,+BAAqB,CA8CL;AA7CvB,2FAAmE;AA8CjE,6BA9CK,4BAAkB,CA8CL;AA7CpB,2FAAmE;AA8CjE,6BA9CK,4BAAkB,CA8CL;AA7CpB,yGAAiF;AA8C/E,oCA9CK,mCAAyB,CA8CL;AA7C3B,yHAAiG;AA8C/F,4CA9CK,2CAAiC,CA8CL;AA7CnC,yEAAiD;AA8C/C,oBA9CK,mBAAS,CA8CL;AA7CX,iFAAyD;AAiDvD,wBAjDK,uBAAa,CAiDL;AAhDf,oFAA4D;AAkD1D,gCAlDK,+BAAqB,CAkDL"}
@@ -0,0 +1,5 @@
1
+ import { SplineProps } from './SplineProps';
2
+ export declare type CardinalSplineProps = SplineProps & {
3
+ scale?: number;
4
+ fixedScale?: boolean;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CardinalSplineProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardinalSplineProps.js","sourceRoot":"","sources":["../../../src/types/CardinalSplineProps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ClosestPoint } from './ClosestPoint';
2
+ export declare type ClosestControlPoint = ClosestPoint & {
3
+ index: number;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ClosestControlPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestControlPoint.js","sourceRoot":"","sources":["../../../src/types/ClosestControlPoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { Types } from '@cornerstonejs/core';
2
+ export declare type ClosestPoint = {
3
+ point: Types.Point2;
4
+ distance: number;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ClosestPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestPoint.js","sourceRoot":"","sources":["../../../src/types/ClosestPoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ClosestPoint } from './ClosestPoint';
2
+ export declare type ClosestSplinePoint = ClosestPoint & {
3
+ uValue: number;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ClosestSplinePoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClosestSplinePoint.js","sourceRoot":"","sources":["../../../src/types/ClosestSplinePoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { Types } from '@cornerstonejs/core';
2
+ export declare type ControlPointInfo = {
3
+ index: number;
4
+ point: Types.Point2;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ControlPointInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlPointInfo.js","sourceRoot":"","sources":["../../../src/types/ControlPointInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { Types } from '@cornerstonejs/core';
2
+ import type { ClosestPoint, ClosestControlPoint, ClosestSplinePoint, ControlPointInfo } from './';
3
+ export interface ISpline {
4
+ get numControlPoints(): number;
5
+ get resolution(): number;
6
+ set resolution(resolution: number);
7
+ get closed(): boolean;
8
+ set closed(closed: boolean);
9
+ get aabb(): Types.AABB2;
10
+ get length(): number;
11
+ get invalidated(): boolean;
12
+ hasTangentPoints(): boolean;
13
+ addControlPoint(point: Types.Point2): void;
14
+ addControlPoints(points: Types.Point2[]): void;
15
+ addControlPointAtU(u: number): ControlPointInfo;
16
+ deleteControlPointByIndex(index: number): boolean;
17
+ clearControlPoints(): void;
18
+ setControlPoints(points: Types.Point2[]): void;
19
+ updateControlPoint(index: number, newControlPoint: Types.Point2): void;
20
+ getControlPoints(): Types.Point2[];
21
+ getClosestControlPoint(point: Types.Point2): ClosestControlPoint;
22
+ getClosestControlPointWithinDistance(point: Types.Point2, range: number): ClosestControlPoint;
23
+ getClosestPoint(point: Types.Point2): ClosestSplinePoint;
24
+ getClosestPointOnControlPointLines(point: Types.Point2): ClosestPoint;
25
+ getPolylinePoints(): Types.Point2[];
26
+ getPreviewPolylinePoints(controlPointPreview: Types.Point2, closeDistance: number): Types.Point2[];
27
+ isPointNearCurve(point: Types.Point2, maxDist: number): boolean;
28
+ containsPoint(point: Types.Point2): boolean;
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ISpline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISpline.js","sourceRoot":"","sources":["../../../src/types/ISpline.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { Types } from '@cornerstonejs/core';
2
+ import type { SplineLineSegment } from './SplineLineSegment';
3
+ export declare type SplineCurveSegment = {
4
+ controlPoints: {
5
+ p0: Types.Point2;
6
+ p1: Types.Point2;
7
+ p2: Types.Point2;
8
+ p3: Types.Point2;
9
+ };
10
+ aabb: Types.AABB2;
11
+ length: number;
12
+ previousCurveSegmentsLength: number;
13
+ lineSegments: SplineLineSegment[];
14
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SplineCurveSegment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplineCurveSegment.js","sourceRoot":"","sources":["../../../src/types/SplineCurveSegment.ts"],"names":[],"mappings":""}