@cornerstonejs/tools 1.48.2 → 1.49.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 (333) hide show
  1. package/dist/cjs/enums/AnnotationStyleStates.d.ts +2 -1
  2. package/dist/cjs/enums/AnnotationStyleStates.js +1 -0
  3. package/dist/cjs/enums/AnnotationStyleStates.js.map +1 -1
  4. package/dist/cjs/enums/ChangeTypes.d.ts +8 -0
  5. package/dist/cjs/enums/ChangeTypes.js +12 -0
  6. package/dist/cjs/enums/ChangeTypes.js.map +1 -0
  7. package/dist/cjs/enums/Events.d.ts +2 -0
  8. package/dist/cjs/enums/Events.js +2 -0
  9. package/dist/cjs/enums/Events.js.map +1 -1
  10. package/dist/cjs/enums/index.d.ts +2 -1
  11. package/dist/cjs/enums/index.js +3 -1
  12. package/dist/cjs/enums/index.js.map +1 -1
  13. package/dist/cjs/eventDispatchers/annotationInterpolationEventDispatcher.d.ts +5 -0
  14. package/dist/cjs/eventDispatchers/annotationInterpolationEventDispatcher.js +23 -0
  15. package/dist/cjs/eventDispatchers/annotationInterpolationEventDispatcher.js.map +1 -0
  16. package/dist/cjs/eventDispatchers/index.d.ts +2 -1
  17. package/dist/cjs/eventDispatchers/index.js +3 -1
  18. package/dist/cjs/eventDispatchers/index.js.map +1 -1
  19. package/dist/cjs/init.js +3 -0
  20. package/dist/cjs/init.js.map +1 -1
  21. package/dist/cjs/stateManagement/annotation/config/getState.js +3 -0
  22. package/dist/cjs/stateManagement/annotation/config/getState.js.map +1 -1
  23. package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +1 -1
  24. package/dist/cjs/tools/annotation/LivewireContourTool.js +1 -1
  25. package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
  26. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +1 -0
  27. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  28. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +2 -2
  29. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +9 -4
  30. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  31. package/dist/cjs/tools/annotation/SplineROITool.d.ts +4 -1
  32. package/dist/cjs/tools/annotation/SplineROITool.js +51 -20
  33. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
  34. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +12 -3
  35. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  36. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +9 -5
  37. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  38. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +3 -3
  39. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  40. package/dist/cjs/tools/base/ContourBaseTool.js +4 -0
  41. package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -1
  42. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +21 -9
  43. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  44. package/dist/cjs/tools/displayTools/Contour/contourConfig.js +8 -3
  45. package/dist/cjs/tools/displayTools/Contour/contourConfig.js.map +1 -1
  46. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +0 -1
  47. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  48. package/dist/cjs/types/AnnotationStyle.d.ts +2 -2
  49. package/dist/cjs/types/AnnotationTypes.d.ts +1 -0
  50. package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +1 -0
  51. package/dist/cjs/types/ContourTypes.d.ts +3 -0
  52. package/dist/cjs/types/EventTypes.d.ts +19 -1
  53. package/dist/cjs/types/InterpolationTypes.d.ts +18 -0
  54. package/dist/cjs/types/InterpolationTypes.js +3 -0
  55. package/dist/cjs/types/InterpolationTypes.js.map +1 -0
  56. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +14 -0
  57. package/dist/cjs/types/index.d.ts +2 -1
  58. package/dist/cjs/utilities/contours/PointsArray.d.ts +29 -0
  59. package/dist/cjs/utilities/contours/PointsArray.js +104 -0
  60. package/dist/cjs/utilities/contours/PointsArray.js.map +1 -0
  61. package/dist/cjs/utilities/contours/index.d.ts +3 -1
  62. package/dist/cjs/utilities/contours/index.js +28 -1
  63. package/dist/cjs/utilities/contours/index.js.map +1 -1
  64. package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts +3 -0
  65. package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js +11 -0
  66. package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -0
  67. package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.d.ts +2 -0
  68. package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js +39 -0
  69. package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js.map +1 -0
  70. package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts +7 -0
  71. package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js +107 -0
  72. package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -0
  73. package/dist/cjs/utilities/contours/interpolation/getInterpolationData.d.ts +7 -0
  74. package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js +30 -0
  75. package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js.map +1 -0
  76. package/dist/cjs/utilities/contours/interpolation/getInterpolationDataCollection.d.ts +4 -0
  77. package/dist/cjs/utilities/contours/interpolation/getInterpolationDataCollection.js +21 -0
  78. package/dist/cjs/utilities/contours/interpolation/getInterpolationDataCollection.js.map +1 -0
  79. package/dist/cjs/utilities/contours/interpolation/index.d.ts +2 -0
  80. package/dist/cjs/utilities/contours/interpolation/index.js +9 -0
  81. package/dist/cjs/utilities/contours/interpolation/index.js.map +1 -0
  82. package/dist/cjs/utilities/contours/interpolation/interpolate.d.ts +3 -0
  83. package/dist/cjs/utilities/contours/interpolation/interpolate.js +343 -0
  84. package/dist/cjs/utilities/contours/interpolation/interpolate.js.map +1 -0
  85. package/dist/cjs/utilities/contours/reverseIfAntiClockwise.d.ts +2 -0
  86. package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js +34 -0
  87. package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js.map +1 -0
  88. package/dist/cjs/utilities/getViewportForAnnotation.d.ts +2 -0
  89. package/dist/cjs/utilities/getViewportForAnnotation.js +19 -0
  90. package/dist/cjs/utilities/getViewportForAnnotation.js.map +1 -0
  91. package/dist/cjs/utilities/index.d.ts +2 -1
  92. package/dist/cjs/utilities/index.js +3 -1
  93. package/dist/cjs/utilities/index.js.map +1 -1
  94. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js +2 -1
  95. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  96. package/dist/cjs/utilities/planarFreehandROITool/index.d.ts +3 -3
  97. package/dist/cjs/utilities/planarFreehandROITool/index.js +4 -4
  98. package/dist/cjs/utilities/planarFreehandROITool/index.js.map +1 -1
  99. package/dist/cjs/utilities/planarFreehandROITool/smoothAnnotation.d.ts +3 -0
  100. package/dist/cjs/utilities/planarFreehandROITool/{interpolateAnnotation.js → smoothAnnotation.js} +5 -5
  101. package/dist/cjs/utilities/planarFreehandROITool/smoothAnnotation.js.map +1 -0
  102. package/dist/cjs/utilities/planarFreehandROITool/{interpolatePoints.d.ts → smoothPoints.d.ts} +1 -1
  103. package/dist/cjs/utilities/planarFreehandROITool/{interpolatePoints.js → smoothPoints.js} +11 -8
  104. package/dist/cjs/utilities/planarFreehandROITool/smoothPoints.js.map +1 -0
  105. package/dist/cjs/utilities/polyData/utils.d.ts +2 -1
  106. package/dist/cjs/utilities/polyData/utils.js +4 -2
  107. package/dist/cjs/utilities/polyData/utils.js.map +1 -1
  108. package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts +11 -0
  109. package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js +159 -0
  110. package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -0
  111. package/dist/cjs/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.d.ts +2 -0
  112. package/dist/cjs/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.js +96 -0
  113. package/dist/cjs/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.js.map +1 -0
  114. package/dist/cjs/utilities/triggerAnnotationRenderForViewportIds.js +7 -2
  115. package/dist/cjs/utilities/triggerAnnotationRenderForViewportIds.js.map +1 -1
  116. package/dist/esm/enums/AnnotationStyleStates.js +1 -0
  117. package/dist/esm/enums/AnnotationStyleStates.js.map +1 -1
  118. package/dist/esm/enums/ChangeTypes.js +10 -0
  119. package/dist/esm/enums/ChangeTypes.js.map +1 -0
  120. package/dist/esm/enums/Events.js +2 -0
  121. package/dist/esm/enums/Events.js.map +1 -1
  122. package/dist/esm/enums/index.js +2 -1
  123. package/dist/esm/enums/index.js.map +1 -1
  124. package/dist/esm/eventDispatchers/annotationInterpolationEventDispatcher.js +18 -0
  125. package/dist/esm/eventDispatchers/annotationInterpolationEventDispatcher.js.map +1 -0
  126. package/dist/esm/eventDispatchers/index.js +2 -1
  127. package/dist/esm/eventDispatchers/index.js.map +1 -1
  128. package/dist/esm/init.js +3 -0
  129. package/dist/esm/init.js.map +1 -1
  130. package/dist/esm/stateManagement/annotation/config/getState.js +3 -0
  131. package/dist/esm/stateManagement/annotation/config/getState.js.map +1 -1
  132. package/dist/esm/tools/annotation/LivewireContourTool.js +2 -2
  133. package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
  134. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +1 -0
  135. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  136. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +9 -4
  137. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  138. package/dist/esm/tools/annotation/SplineROITool.js +49 -21
  139. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
  140. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +11 -2
  141. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  142. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +8 -4
  143. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  144. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -2
  145. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  146. package/dist/esm/tools/base/ContourBaseTool.js +4 -0
  147. package/dist/esm/tools/base/ContourBaseTool.js.map +1 -1
  148. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +12 -1
  149. package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  150. package/dist/esm/tools/displayTools/Contour/contourConfig.js +8 -3
  151. package/dist/esm/tools/displayTools/Contour/contourConfig.js.map +1 -1
  152. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +0 -1
  153. package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  154. package/dist/esm/types/InterpolationTypes.js +2 -0
  155. package/dist/esm/types/InterpolationTypes.js.map +1 -0
  156. package/dist/esm/utilities/contours/PointsArray.js +98 -0
  157. package/dist/esm/utilities/contours/PointsArray.js.map +1 -0
  158. package/dist/esm/utilities/contours/index.js +3 -1
  159. package/dist/esm/utilities/contours/index.js.map +1 -1
  160. package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js +5 -0
  161. package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -0
  162. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js +36 -0
  163. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js.map +1 -0
  164. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js +102 -0
  165. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -0
  166. package/dist/esm/utilities/contours/interpolation/getInterpolationData.js +27 -0
  167. package/dist/esm/utilities/contours/interpolation/getInterpolationData.js.map +1 -0
  168. package/dist/esm/utilities/contours/interpolation/getInterpolationDataCollection.js +15 -0
  169. package/dist/esm/utilities/contours/interpolation/getInterpolationDataCollection.js.map +1 -0
  170. package/dist/esm/utilities/contours/interpolation/index.js +3 -0
  171. package/dist/esm/utilities/contours/interpolation/index.js.map +1 -0
  172. package/dist/esm/utilities/contours/interpolation/interpolate.js +314 -0
  173. package/dist/esm/utilities/contours/interpolation/interpolate.js.map +1 -0
  174. package/dist/esm/utilities/contours/reverseIfAntiClockwise.js +31 -0
  175. package/dist/esm/utilities/contours/reverseIfAntiClockwise.js.map +1 -0
  176. package/dist/esm/utilities/getViewportForAnnotation.js +16 -0
  177. package/dist/esm/utilities/getViewportForAnnotation.js.map +1 -0
  178. package/dist/esm/utilities/index.js +2 -1
  179. package/dist/esm/utilities/index.js.map +1 -1
  180. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js +1 -1
  181. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  182. package/dist/esm/utilities/planarFreehandROITool/index.js +3 -3
  183. package/dist/esm/utilities/planarFreehandROITool/index.js.map +1 -1
  184. package/dist/esm/utilities/planarFreehandROITool/{interpolateAnnotation.js → smoothAnnotation.js} +4 -4
  185. package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js.map +1 -0
  186. package/dist/esm/utilities/planarFreehandROITool/{interpolatePoints.js → smoothPoints.js} +9 -6
  187. package/dist/esm/utilities/planarFreehandROITool/smoothPoints.js.map +1 -0
  188. package/dist/esm/utilities/polyData/utils.js +4 -2
  189. package/dist/esm/utilities/polyData/utils.js.map +1 -1
  190. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +150 -0
  191. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -0
  192. package/dist/esm/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.js +67 -0
  193. package/dist/esm/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.js.map +1 -0
  194. package/dist/esm/utilities/triggerAnnotationRenderForViewportIds.js +7 -2
  195. package/dist/esm/utilities/triggerAnnotationRenderForViewportIds.js.map +1 -1
  196. package/dist/types/enums/AnnotationStyleStates.d.ts +2 -1
  197. package/dist/types/enums/AnnotationStyleStates.d.ts.map +1 -1
  198. package/dist/types/enums/ChangeTypes.d.ts +9 -0
  199. package/dist/types/enums/ChangeTypes.d.ts.map +1 -0
  200. package/dist/types/enums/Events.d.ts +2 -0
  201. package/dist/types/enums/Events.d.ts.map +1 -1
  202. package/dist/types/enums/index.d.ts +2 -1
  203. package/dist/types/eventDispatchers/annotationInterpolationEventDispatcher.d.ts +6 -0
  204. package/dist/types/eventDispatchers/annotationInterpolationEventDispatcher.d.ts.map +1 -0
  205. package/dist/types/eventDispatchers/index.d.ts +2 -1
  206. package/dist/types/init.d.ts.map +1 -1
  207. package/dist/types/stateManagement/annotation/config/getState.d.ts.map +1 -1
  208. package/dist/types/tools/annotation/LivewireContourTool.d.ts +1 -1
  209. package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
  210. package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -1
  211. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts +2 -2
  212. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
  213. package/dist/types/tools/annotation/SplineROITool.d.ts +4 -1
  214. package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -1
  215. package/dist/types/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts.map +1 -1
  216. package/dist/types/tools/annotation/planarFreehandROITool/drawLoop.d.ts.map +1 -1
  217. package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -1
  218. package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
  219. package/dist/types/tools/displayTools/Contour/contourConfig.d.ts.map +1 -1
  220. package/dist/types/tools/displayTools/Contour/contourDisplay.d.ts.map +1 -1
  221. package/dist/types/types/AnnotationStyle.d.ts +2 -2
  222. package/dist/types/types/AnnotationStyle.d.ts.map +1 -1
  223. package/dist/types/types/AnnotationTypes.d.ts +1 -0
  224. package/dist/types/types/AnnotationTypes.d.ts.map +1 -1
  225. package/dist/types/types/ContourSegmentationAnnotation.d.ts +1 -0
  226. package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
  227. package/dist/types/types/ContourTypes.d.ts +3 -0
  228. package/dist/types/types/ContourTypes.d.ts.map +1 -1
  229. package/dist/types/types/EventTypes.d.ts +19 -1
  230. package/dist/types/types/EventTypes.d.ts.map +1 -1
  231. package/dist/types/types/InterpolationTypes.d.ts +19 -0
  232. package/dist/types/types/InterpolationTypes.d.ts.map +1 -0
  233. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +14 -0
  234. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  235. package/dist/types/types/index.d.ts +2 -1
  236. package/dist/types/types/index.d.ts.map +1 -1
  237. package/dist/types/utilities/contours/PointsArray.d.ts +30 -0
  238. package/dist/types/utilities/contours/PointsArray.d.ts.map +1 -0
  239. package/dist/types/utilities/contours/index.d.ts +3 -1
  240. package/dist/types/utilities/contours/index.d.ts.map +1 -1
  241. package/dist/types/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts +4 -0
  242. package/dist/types/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts.map +1 -0
  243. package/dist/types/utilities/contours/interpolation/createPolylineToolData.d.ts +3 -0
  244. package/dist/types/utilities/contours/interpolation/createPolylineToolData.d.ts.map +1 -0
  245. package/dist/types/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts +8 -0
  246. package/dist/types/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts.map +1 -0
  247. package/dist/types/utilities/contours/interpolation/getInterpolationData.d.ts +8 -0
  248. package/dist/types/utilities/contours/interpolation/getInterpolationData.d.ts.map +1 -0
  249. package/dist/types/utilities/contours/interpolation/getInterpolationDataCollection.d.ts +5 -0
  250. package/dist/types/utilities/contours/interpolation/getInterpolationDataCollection.d.ts.map +1 -0
  251. package/dist/types/utilities/contours/interpolation/index.d.ts +3 -0
  252. package/dist/types/utilities/contours/interpolation/index.d.ts.map +1 -0
  253. package/dist/types/utilities/contours/interpolation/interpolate.d.ts +4 -0
  254. package/dist/types/utilities/contours/interpolation/interpolate.d.ts.map +1 -0
  255. package/dist/types/utilities/contours/reverseIfAntiClockwise.d.ts +3 -0
  256. package/dist/types/utilities/contours/reverseIfAntiClockwise.d.ts.map +1 -0
  257. package/dist/types/utilities/getViewportForAnnotation.d.ts +3 -0
  258. package/dist/types/utilities/getViewportForAnnotation.d.ts.map +1 -0
  259. package/dist/types/utilities/index.d.ts +2 -1
  260. package/dist/types/utilities/index.d.ts.map +1 -1
  261. package/dist/types/utilities/planar/filterAnnotationsForDisplay.d.ts.map +1 -1
  262. package/dist/types/utilities/planarFreehandROITool/index.d.ts +3 -3
  263. package/dist/types/utilities/planarFreehandROITool/index.d.ts.map +1 -1
  264. package/dist/types/utilities/planarFreehandROITool/smoothAnnotation.d.ts +4 -0
  265. package/dist/types/utilities/planarFreehandROITool/smoothAnnotation.d.ts.map +1 -0
  266. package/dist/types/utilities/planarFreehandROITool/{interpolatePoints.d.ts → smoothPoints.d.ts} +2 -2
  267. package/dist/types/utilities/planarFreehandROITool/smoothPoints.d.ts.map +1 -0
  268. package/dist/types/utilities/polyData/utils.d.ts +2 -1
  269. package/dist/types/utilities/polyData/utils.d.ts.map +1 -1
  270. package/dist/types/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts +12 -0
  271. package/dist/types/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts.map +1 -0
  272. package/dist/types/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.d.ts +3 -0
  273. package/dist/types/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.d.ts.map +1 -0
  274. package/dist/types/utilities/triggerAnnotationRenderForViewportIds.d.ts.map +1 -1
  275. package/dist/umd/index.js +1 -1
  276. package/dist/umd/index.js.map +1 -1
  277. package/package.json +3 -3
  278. package/src/enums/AnnotationStyleStates.ts +3 -0
  279. package/src/enums/ChangeTypes.ts +32 -0
  280. package/src/enums/Events.ts +16 -0
  281. package/src/enums/index.js +2 -0
  282. package/src/eventDispatchers/annotationInterpolationEventDispatcher.ts +42 -0
  283. package/src/eventDispatchers/index.js +2 -0
  284. package/src/init.ts +3 -0
  285. package/src/stateManagement/annotation/config/getState.ts +16 -2
  286. package/src/tools/annotation/LivewireContourTool.ts +3 -8
  287. package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +6 -0
  288. package/src/tools/annotation/PlanarFreehandROITool.ts +47 -25
  289. package/src/tools/annotation/SplineROITool.ts +80 -28
  290. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +15 -3
  291. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +10 -6
  292. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +3 -3
  293. package/src/tools/base/ContourBaseTool.ts +4 -0
  294. package/src/tools/base/ContourSegmentationBaseTool.ts +11 -1
  295. package/src/tools/displayTools/Contour/contourConfig.ts +8 -3
  296. package/src/tools/displayTools/Contour/contourDisplay.ts +1 -3
  297. package/src/types/AnnotationStyle.ts +3 -1
  298. package/src/types/AnnotationTypes.ts +2 -0
  299. package/src/types/ContourSegmentationAnnotation.ts +1 -0
  300. package/src/types/ContourTypes.ts +8 -0
  301. package/src/types/EventTypes.ts +43 -0
  302. package/src/types/InterpolationTypes.ts +42 -0
  303. package/src/types/ToolSpecificAnnotationTypes.ts +15 -0
  304. package/src/types/index.ts +6 -0
  305. package/src/utilities/contours/PointsArray.ts +165 -0
  306. package/src/utilities/contours/index.ts +4 -1
  307. package/src/utilities/contours/interpolation/acceptAutogeneratedInterpolations.ts +16 -0
  308. package/src/utilities/contours/interpolation/createPolylineToolData.ts +56 -0
  309. package/src/utilities/contours/interpolation/findAnnotationForInterpolation.ts +225 -0
  310. package/src/utilities/contours/interpolation/getInterpolationData.ts +75 -0
  311. package/src/utilities/contours/interpolation/getInterpolationDataCollection.ts +31 -0
  312. package/src/utilities/contours/interpolation/index.ts +3 -0
  313. package/src/utilities/contours/interpolation/interpolate.ts +695 -0
  314. package/src/utilities/contours/reverseIfAntiClockwise.ts +50 -0
  315. package/src/utilities/getViewportForAnnotation.ts +29 -0
  316. package/src/utilities/index.ts +2 -0
  317. package/src/utilities/livewire/LivewireScissors.ts +1 -1
  318. package/src/utilities/planar/filterAnnotationsForDisplay.ts +6 -1
  319. package/src/utilities/planarFreehandROITool/index.ts +3 -3
  320. package/src/utilities/planarFreehandROITool/{interpolateAnnotation.ts → smoothAnnotation.ts} +5 -3
  321. package/src/utilities/planarFreehandROITool/{interpolatePoints.ts → smoothPoints.ts} +12 -6
  322. package/src/utilities/polyData/utils.ts +12 -5
  323. package/src/utilities/segmentation/InterpolationManager/InterpolationManager.ts +207 -0
  324. package/src/utilities/segmentation/InterpolationManager/deleteRelatedAnnotations.ts +97 -0
  325. package/src/utilities/triggerAnnotationRenderForViewportIds.ts +7 -2
  326. package/dist/cjs/utilities/planarFreehandROITool/interpolateAnnotation.d.ts +0 -3
  327. package/dist/cjs/utilities/planarFreehandROITool/interpolateAnnotation.js.map +0 -1
  328. package/dist/cjs/utilities/planarFreehandROITool/interpolatePoints.js.map +0 -1
  329. package/dist/esm/utilities/planarFreehandROITool/interpolateAnnotation.js.map +0 -1
  330. package/dist/esm/utilities/planarFreehandROITool/interpolatePoints.js.map +0 -1
  331. package/dist/types/utilities/planarFreehandROITool/interpolateAnnotation.d.ts +0 -4
  332. package/dist/types/utilities/planarFreehandROITool/interpolateAnnotation.d.ts.map +0 -1
  333. package/dist/types/utilities/planarFreehandROITool/interpolatePoints.d.ts.map +0 -1
@@ -0,0 +1,225 @@
1
+ import getInterpolationData from './getInterpolationData';
2
+ import type { InterpolationViewportData, Annotation } from '../../../types';
3
+
4
+ /**
5
+ * A pair of slice indices for contours, typically indicating the
6
+ * pair of contours to interpolate between, or for a possible range to
7
+ * compare against.
8
+ */
9
+ export type ContourPair = [number, number];
10
+
11
+ /**
12
+ * Finds the list of contours to interpolate,
13
+ * including whether they are new contours, or auto generated contours that need
14
+ * to be updated.
15
+ *
16
+ * @param toolData - object, The tool data of the roi contour.
17
+ * @param viewportData - the annotation/viewport to start the interpolation from
18
+ * @returns An object containing the interpolationData and the
19
+ * interpolationList.
20
+ */
21
+
22
+ function findAnnotationsForInterpolation(
23
+ toolData,
24
+ viewportData: InterpolationViewportData
25
+ ) {
26
+ const interpolationData = getInterpolationData(viewportData, [
27
+ {
28
+ key: 'interpolationUID',
29
+ value: viewportData.interpolationUID,
30
+ },
31
+ ]);
32
+ const rangeToInterpolate = getRangeToInterpolate(interpolationData);
33
+ const sliceEdited = _getSlicePositionOfToolData(
34
+ interpolationData,
35
+ toolData.annotationUID
36
+ );
37
+ const interpolationList = [];
38
+
39
+ // Check if contours between the extent can be interpolated.
40
+ for (let i = rangeToInterpolate[0] + 1; i < rangeToInterpolate[1]; i++) {
41
+ if (_sliceNeedsInterpolating(interpolationData, i)) {
42
+ const contourPair = _getBoundingPair(
43
+ i,
44
+ rangeToInterpolate,
45
+ interpolationData
46
+ );
47
+
48
+ if (
49
+ contourPair?.[0] === sliceEdited ||
50
+ contourPair?.[1] === sliceEdited
51
+ ) {
52
+ _appendInterpolationList(contourPair, interpolationList, i);
53
+ }
54
+ }
55
+ }
56
+
57
+ return {
58
+ interpolationData,
59
+ interpolationList,
60
+ };
61
+ }
62
+
63
+ /**
64
+ * Gets the range of interpolation data which has
65
+ * annotations in it, as indices into the interpolationData
66
+ *
67
+ * @param interpolationData - Data on the slice location of contours to be
68
+ * interpolated.
69
+ * @returns Number[], The slice locations of the top and bottom polygon of the ROIContour.
70
+ */
71
+
72
+ function getRangeToInterpolate(
73
+ interpolationData: Map<number, Annotation[]>
74
+ ): ContourPair {
75
+ let first = Infinity;
76
+ let last = -Infinity;
77
+ let found = false;
78
+
79
+ for (const [sliceIndex, annotations] of interpolationData.entries()) {
80
+ if (annotations.length) {
81
+ first = Math.min(sliceIndex, first);
82
+ last = Math.max(sliceIndex, last);
83
+ found = true;
84
+ }
85
+ }
86
+ if (!found) {
87
+ return;
88
+ }
89
+
90
+ return [first, last];
91
+ }
92
+
93
+ /**
94
+ * _getSlicePositionOfToolData - Finds the slice that was edited.
95
+ *
96
+ * @param interpolationData - Data on the slice location of contours to be
97
+ * interpolated.
98
+ * @param annotationUID - the UID to find the slice position for
99
+ * @returns index in the interpolationData containing that annotationUID
100
+ */
101
+ function _getSlicePositionOfToolData(
102
+ interpolationData: Map<number, Annotation[]>,
103
+ annotationUID: string
104
+ ): number {
105
+ for (const [sliceIndex, annotations] of interpolationData) {
106
+ for (let j = 0; j < annotations.length; j++) {
107
+ if (annotations[j].annotationUID === annotationUID) {
108
+ return sliceIndex;
109
+ }
110
+ }
111
+ }
112
+
113
+ return;
114
+ }
115
+
116
+ /**
117
+ * Slices need interpolation when either:
118
+ * * There are no contours on this slice
119
+ * * There is a contour which is an interpolated contour.
120
+ *
121
+ * @param interpolationData - Data on the slice location of contours to be
122
+ * interpolated.
123
+ * @param sliceIndex - The slice index.
124
+ * @returns Whether or not the slice needs interpolating.
125
+ */
126
+ function _sliceNeedsInterpolating(
127
+ interpolationData: Map<number, Annotation[]>,
128
+ sliceIndex: number
129
+ ): boolean {
130
+ const annotations = interpolationData.get(sliceIndex);
131
+ return (
132
+ !annotations || (annotations.length === 1 && annotations[0].autoGenerated)
133
+ );
134
+ }
135
+
136
+ /**
137
+ * If the contour on slice i can be updated, add it to the
138
+ * interpolationList.
139
+ *
140
+ * @param contourPair - the pair of items to append to
141
+ * @param interpolationList - The list of contours to be interpolated.
142
+ * @param itemIndex - the item index to append data to
143
+ */
144
+ function _appendInterpolationList(contourPair, interpolationList, itemIndex) {
145
+ const [startIndex] = contourPair;
146
+ interpolationList[startIndex] ||= {
147
+ pair: contourPair,
148
+ list: [],
149
+ };
150
+
151
+ interpolationList[startIndex].list.push(itemIndex);
152
+ }
153
+
154
+ /**
155
+ * _getBoundingPair - Given the slice index and range of indices to apply the contour to,
156
+ * get the pair of polygons to use for interpolation of the slice.
157
+ * Returns undefined if there is an ambiguity and interpolation can't take place.
158
+ *
159
+ * @param sliceIndex - The slice index.
160
+ * @param sliceRange - The extent of slice occupancy of the ROIContour.
161
+ * @param interpolationData - Data on the slice location of contours to be
162
+ * interpolated.
163
+ * @returns The pair of slice indices, or undefined if
164
+ * the contours to use for interpolation is ambiguous.
165
+ */
166
+
167
+ function _getBoundingPair(
168
+ sliceIndex: number,
169
+ sliceRange: ContourPair,
170
+ interpolationData: Map<number, Annotation[]>
171
+ ): ContourPair {
172
+ const annotationPair = [];
173
+ let canInterpolate = true;
174
+
175
+ // Check for nearest lowest sliceIndex containing contours.
176
+ for (let i = sliceIndex - 1; i >= sliceRange[0]; i--) {
177
+ const annotations = interpolationData.get(i);
178
+ if (annotations?.length) {
179
+ if (annotations[0].autoGenerated) {
180
+ // This contour is interpolated. We need to find a solid contour to
181
+ // interpolate from.
182
+ continue;
183
+ }
184
+
185
+ if (annotations.length > 1) {
186
+ canInterpolate = false;
187
+ }
188
+
189
+ // Found single, non interpolated contour to interpolate from.
190
+ annotationPair.push(i);
191
+ break;
192
+ }
193
+ }
194
+
195
+ if (!canInterpolate || !annotationPair.length) {
196
+ return;
197
+ }
198
+
199
+ // Check for nearest upper sliceIndex containing contours.
200
+ for (let i = sliceIndex + 1; i <= sliceRange[1]; i++) {
201
+ const annotations = interpolationData.get(i);
202
+ if (annotations?.length) {
203
+ if (annotations[0].autoGenerated) {
204
+ // This contour is interpolated. We need to
205
+ // Find a solid contour to interpolate from.
206
+ continue;
207
+ }
208
+
209
+ if (annotations.length > 1) {
210
+ canInterpolate = false;
211
+ }
212
+
213
+ annotationPair.push(i);
214
+ break;
215
+ }
216
+ }
217
+
218
+ if (!canInterpolate || annotationPair.length < 2) {
219
+ return;
220
+ }
221
+
222
+ return annotationPair as ContourPair;
223
+ }
224
+
225
+ export default findAnnotationsForInterpolation;
@@ -0,0 +1,75 @@
1
+ import type { InterpolationViewportData, Annotation } from '../../../types';
2
+ import { getAnnotations } from '../../../stateManagement/annotation/annotationState';
3
+ import { InterpolationROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
4
+
5
+ export type FilterParam = {
6
+ /**
7
+ * Selects a parent value from the given annotation to get the comparison values from.
8
+ * Was originally a key name, but this became too limited to match multiple levels
9
+ * of selection, so was changed to a function returning the values.
10
+ */
11
+ parentKey?: (annotation) => any;
12
+
13
+ /**
14
+ * The attribute to extract the value from the parent object, compared with
15
+ * value to see if the filter matches.
16
+ */
17
+ key: string;
18
+
19
+ /**
20
+ * The comparison value to compare against. If an array, will compare sub-values.
21
+ */
22
+ value: unknown;
23
+ };
24
+
25
+ /**
26
+ * getInterpolationData - Gets the list of the slice locations of the 2D
27
+ * polygons that make up the interpolated annotation, along with the annotations
28
+ * which match the specified filterParams on that slice.
29
+ *
30
+ * @param viewportData - the annotation/viewport to start the interpolation from
31
+ * @param filterParams - A selector for annotations for interpolation
32
+ * @returns The list of interpolated locations in the stack
33
+ */
34
+
35
+ export default function getInterpolationData(
36
+ viewportData: InterpolationViewportData,
37
+ filterParams = []
38
+ ): Map<number, Annotation[]> {
39
+ const { viewport, sliceData, annotation } = viewportData;
40
+ const interpolationDatas = new Map<number, Annotation[]>();
41
+ const annotations = getAnnotations(
42
+ annotation.metadata.toolName,
43
+ viewport.element
44
+ );
45
+
46
+ for (let i = 0; i < sliceData.numberOfSlices; i++) {
47
+ const imageAnnotations = annotations.filter(
48
+ (x) =>
49
+ (x as InterpolationROIAnnotation).metadata.referencedSliceIndex === i
50
+ );
51
+
52
+ if (!imageAnnotations?.length) {
53
+ continue;
54
+ }
55
+
56
+ const filteredInterpolatedAnnotations = imageAnnotations.filter(
57
+ (imageAnnotation) => {
58
+ return filterParams.every((x) => {
59
+ const parent = x.parentKey
60
+ ? x.parentKey(imageAnnotation)
61
+ : imageAnnotation;
62
+ const value = parent?.[x.key];
63
+ if (Array.isArray(value)) {
64
+ return value.every((item, index) => item === x.value[index]);
65
+ }
66
+ return value === x.value;
67
+ });
68
+ }
69
+ );
70
+
71
+ interpolationDatas.set(i, filteredInterpolatedAnnotations);
72
+ }
73
+
74
+ return interpolationDatas;
75
+ }
@@ -0,0 +1,31 @@
1
+ import getInterpolationData from './getInterpolationData';
2
+ import type { InterpolationViewportData } from '../../../types';
3
+ import type { InterpolationROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
4
+ import type { FilterParam } from './getInterpolationData';
5
+
6
+ /**
7
+ * getInterpolationDataCollection - Gets the array of annotations which match the
8
+ * filter parameters, mapped by slice index.
9
+ *
10
+ * @param viewportData - the annotation/viewport to start the interpolation from
11
+ * @param filterParams - A selector for annotations for interpolation
12
+ * @param onlyAnnotationImage - boolean, if true include interpolated annotation existing images only.
13
+ * @returns The list of interpolated locations in the stack.
14
+ */
15
+
16
+ export default function getInterpolationDataCollection(
17
+ viewportData: InterpolationViewportData,
18
+ filterParams: FilterParam[]
19
+ ): InterpolationROIAnnotation[] {
20
+ const imageAnnotations = getInterpolationData(viewportData, filterParams);
21
+ const interpolatedDataCollection = [];
22
+ if (!imageAnnotations?.size) {
23
+ return interpolatedDataCollection;
24
+ }
25
+ for (const annotations of imageAnnotations.values()) {
26
+ annotations.forEach((annotation) => {
27
+ interpolatedDataCollection.push(annotation);
28
+ });
29
+ }
30
+ return interpolatedDataCollection;
31
+ }
@@ -0,0 +1,3 @@
1
+ import InterpolationManager from '../../segmentation/InterpolationManager/InterpolationManager';
2
+
3
+ export { InterpolationManager };