volview 4.0.0 → 4.0.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 (404) hide show
  1. package/dist/css/app.925b979f.css +1 -0
  2. package/dist/css/chunk-vendors.43a6a19a.css +5 -0
  3. package/{public → dist}/favicon.ico +0 -0
  4. package/{public → dist}/global.css +0 -0
  5. package/{src/assets/KitwareHeadAndNeck.jpg → dist/img/KitwareHeadAndNeck.11db5ffb.jpg} +0 -0
  6. package/dist/index.html +1 -0
  7. package/dist/itk/image-io/BMPImageIOReadImage.js +1 -0
  8. package/dist/itk/image-io/BMPImageIOReadImage.umd.js +1 -0
  9. package/dist/itk/image-io/BMPImageIOReadImage.wasm +0 -0
  10. package/dist/itk/image-io/BMPImageIOWriteImage.js +1 -0
  11. package/dist/itk/image-io/BMPImageIOWriteImage.umd.js +1 -0
  12. package/dist/itk/image-io/BMPImageIOWriteImage.wasm +0 -0
  13. package/dist/itk/image-io/GDCMImageIOReadImage.js +1 -0
  14. package/dist/itk/image-io/GDCMImageIOReadImage.umd.js +1 -0
  15. package/dist/itk/image-io/GDCMImageIOReadImage.wasm +0 -0
  16. package/dist/itk/image-io/GDCMImageIOWriteImage.js +1 -0
  17. package/dist/itk/image-io/GDCMImageIOWriteImage.umd.js +1 -0
  18. package/dist/itk/image-io/GDCMImageIOWriteImage.wasm +0 -0
  19. package/dist/itk/image-io/JPEGImageIOReadImage.js +1 -0
  20. package/dist/itk/image-io/JPEGImageIOReadImage.umd.js +1 -0
  21. package/dist/itk/image-io/JPEGImageIOReadImage.wasm +0 -0
  22. package/dist/itk/image-io/JPEGImageIOWriteImage.js +1 -0
  23. package/dist/itk/image-io/JPEGImageIOWriteImage.umd.js +1 -0
  24. package/dist/itk/image-io/JPEGImageIOWriteImage.wasm +0 -0
  25. package/dist/itk/image-io/MetaImageIOReadImage.js +1 -0
  26. package/dist/itk/image-io/MetaImageIOReadImage.umd.js +1 -0
  27. package/dist/itk/image-io/MetaImageIOReadImage.wasm +0 -0
  28. package/dist/itk/image-io/MetaImageIOWriteImage.js +1 -0
  29. package/dist/itk/image-io/MetaImageIOWriteImage.umd.js +1 -0
  30. package/dist/itk/image-io/MetaImageIOWriteImage.wasm +0 -0
  31. package/dist/itk/image-io/NiftiImageIOReadImage.js +1 -0
  32. package/dist/itk/image-io/NiftiImageIOReadImage.umd.js +1 -0
  33. package/dist/itk/image-io/NiftiImageIOReadImage.wasm +0 -0
  34. package/dist/itk/image-io/NiftiImageIOWriteImage.js +1 -0
  35. package/dist/itk/image-io/NiftiImageIOWriteImage.umd.js +1 -0
  36. package/dist/itk/image-io/NiftiImageIOWriteImage.wasm +0 -0
  37. package/dist/itk/image-io/NrrdImageIOReadImage.js +1 -0
  38. package/dist/itk/image-io/NrrdImageIOReadImage.umd.js +1 -0
  39. package/dist/itk/image-io/NrrdImageIOReadImage.wasm +0 -0
  40. package/dist/itk/image-io/NrrdImageIOWriteImage.js +1 -0
  41. package/dist/itk/image-io/NrrdImageIOWriteImage.umd.js +1 -0
  42. package/dist/itk/image-io/NrrdImageIOWriteImage.wasm +0 -0
  43. package/dist/itk/image-io/PNGImageIOReadImage.js +1 -0
  44. package/dist/itk/image-io/PNGImageIOReadImage.umd.js +1 -0
  45. package/dist/itk/image-io/PNGImageIOReadImage.wasm +0 -0
  46. package/dist/itk/image-io/PNGImageIOWriteImage.js +1 -0
  47. package/dist/itk/image-io/PNGImageIOWriteImage.umd.js +1 -0
  48. package/dist/itk/image-io/PNGImageIOWriteImage.wasm +0 -0
  49. package/dist/itk/image-io/ReadDICOMTags.js +1 -0
  50. package/dist/itk/image-io/ReadDICOMTags.umd.js +1 -0
  51. package/dist/itk/image-io/ReadDICOMTags.wasm +0 -0
  52. package/dist/itk/image-io/ReadImageDICOMFileSeries.js +1 -0
  53. package/dist/itk/image-io/ReadImageDICOMFileSeries.umd.js +1 -0
  54. package/dist/itk/image-io/ReadImageDICOMFileSeries.wasm +0 -0
  55. package/dist/itk/image-io/VTKImageIOReadImage.js +1 -0
  56. package/dist/itk/image-io/VTKImageIOReadImage.umd.js +1 -0
  57. package/dist/itk/image-io/VTKImageIOReadImage.wasm +0 -0
  58. package/dist/itk/image-io/VTKImageIOWriteImage.js +1 -0
  59. package/dist/itk/image-io/VTKImageIOWriteImage.umd.js +1 -0
  60. package/dist/itk/image-io/VTKImageIOWriteImage.wasm +0 -0
  61. package/dist/itk/pipelines/dicom.js +1 -0
  62. package/dist/itk/pipelines/dicom.umd.js +1 -0
  63. package/{src/io/itk-dicom/web-build → dist/itk/pipelines}/dicom.umd.wasm +0 -0
  64. package/{src/io/itk-dicom/web-build → dist/itk/pipelines}/dicom.wasm +0 -0
  65. package/dist/itk/web-workers/IOInput.d.ts +6 -0
  66. package/dist/itk/web-workers/IOInput.js +1 -0
  67. package/dist/itk/web-workers/ITKConfig.d.ts +8 -0
  68. package/dist/itk/web-workers/ITKConfig.js +1 -0
  69. package/dist/itk/web-workers/RunPipelineInput.d.ts +10 -0
  70. package/dist/itk/web-workers/RunPipelineInput.js +1 -0
  71. package/dist/itk/web-workers/WebWorkerInput.d.ts +6 -0
  72. package/dist/itk/web-workers/WebWorkerInput.js +1 -0
  73. package/dist/itk/web-workers/bundles/pipeline.worker.js +1 -0
  74. package/dist/itk/web-workers/loadImageIOPipelineModule.d.ts +4 -0
  75. package/dist/itk/web-workers/loadImageIOPipelineModule.js +1 -0
  76. package/dist/itk/web-workers/loadMeshIOPipelineModule.d.ts +4 -0
  77. package/dist/itk/web-workers/loadMeshIOPipelineModule.js +1 -0
  78. package/dist/itk/web-workers/loadPipelineModule.d.ts +3 -0
  79. package/dist/itk/web-workers/loadPipelineModule.js +1 -0
  80. package/dist/itk/web-workers/min-bundles/pipeline.worker.js +3 -0
  81. package/dist/itk/web-workers/pipeline.worker.d.ts +1 -0
  82. package/dist/itk/web-workers/pipeline.worker.js +1 -0
  83. package/dist/itk/web-workers/runPipeline.d.ts +5 -0
  84. package/dist/itk/web-workers/runPipeline.js +1 -0
  85. package/dist/js/23.be4d694e.js +21 -0
  86. package/dist/js/23.be4d694e.js.map +1 -0
  87. package/dist/js/385.51ca48a2.js +2 -0
  88. package/dist/js/385.51ca48a2.js.map +1 -0
  89. package/dist/js/422.c64a6aa7.js +2 -0
  90. package/dist/js/422.c64a6aa7.js.map +1 -0
  91. package/dist/js/979.c4823352.js +2 -0
  92. package/dist/js/979.c4823352.js.map +1 -0
  93. package/dist/js/app.81e49d9a.js +2 -0
  94. package/dist/js/app.81e49d9a.js.map +1 -0
  95. package/dist/js/chunk-vendors.0ab48f8d.js +33 -0
  96. package/dist/js/chunk-vendors.0ab48f8d.js.map +1 -0
  97. package/{public → dist}/pvm-sample.png +0 -0
  98. package/package.json +3 -2
  99. package/.browserslistrc +0 -4
  100. package/.editorconfig +0 -6
  101. package/.env +0 -6
  102. package/.eslintrc.js +0 -109
  103. package/.gitattributes +0 -1
  104. package/.github/workflows/checks.yml +0 -16
  105. package/.github/workflows/publish.yml +0 -52
  106. package/.prettierignore +0 -5
  107. package/CONTRIBUTING.md +0 -29
  108. package/babel.config.js +0 -3
  109. package/documentation/config.js +0 -15
  110. package/documentation/content/KWVolViewLogo.png +0 -0
  111. package/documentation/content/KWVolViewLogo.svg +0 -35
  112. package/documentation/content/VolViewLogo.png +0 -0
  113. package/documentation/content/VolViewLogo.svg +0 -22
  114. package/documentation/content/doc/index.md +0 -64
  115. package/documentation/content/doc/loading_data.md +0 -30
  116. package/documentation/content/doc/mouse_controls.md +0 -34
  117. package/documentation/content/doc/quick_start_guide.md +0 -75
  118. package/documentation/content/doc/rendering.md +0 -27
  119. package/documentation/content/doc/state_files.md +0 -18
  120. package/documentation/content/doc/toolbar.md +0 -20
  121. package/documentation/content/doc/welcome_screen.md +0 -23
  122. package/documentation/content/gallery/01-volview-welcome-notes.jpg +0 -0
  123. package/documentation/content/gallery/01-volview-welcome.jpg +0 -0
  124. package/documentation/content/gallery/02-volview-about.jpg +0 -0
  125. package/documentation/content/gallery/02-volview-notifications.jpg +0 -0
  126. package/documentation/content/gallery/02-volview-settings.jpg +0 -0
  127. package/documentation/content/gallery/03-volview-sample-datasets.jpg +0 -0
  128. package/documentation/content/gallery/04-volview-active-data.jpg +0 -0
  129. package/documentation/content/gallery/05-volview-select-data-to-delete.jpg +0 -0
  130. package/documentation/content/gallery/06-volview-corner-annotation.jpg +0 -0
  131. package/documentation/content/gallery/07-volview-layout-notes.jpg +0 -0
  132. package/documentation/content/gallery/07-volview-layout.jpg +0 -0
  133. package/documentation/content/gallery/09-volview-layout-3DPrimary.jpg +0 -0
  134. package/documentation/content/gallery/10-volview-wl-pan-zoom-notes.jpg +0 -0
  135. package/documentation/content/gallery/10-volview-wl-pan-zoom.jpg +0 -0
  136. package/documentation/content/gallery/11-volview-paint-notes.jpg +0 -0
  137. package/documentation/content/gallery/11-volview-paint.jpg +0 -0
  138. package/documentation/content/gallery/12-volview-paint-options.jpg +0 -0
  139. package/documentation/content/gallery/13-volview-crop-notes.jpg +0 -0
  140. package/documentation/content/gallery/13-volview-crop.jpg +0 -0
  141. package/documentation/content/gallery/14-volview-ruler.jpg +0 -0
  142. package/documentation/content/gallery/15-volview-crosshairs.jpg +0 -0
  143. package/documentation/content/gallery/16-volview-rendering.jpg +0 -0
  144. package/documentation/content/gallery/17-volview-colormap-notes.jpg +0 -0
  145. package/documentation/content/gallery/17-volview-colormap.jpg +0 -0
  146. package/documentation/content/gallery/17-volview-opacity-notes.jpg +0 -0
  147. package/documentation/content/gallery/17-volview-opacity.jpg +0 -0
  148. package/documentation/content/gallery/17-volview-opacity2.jpg +0 -0
  149. package/documentation/content/gallery/18-volview-presets.jpg +0 -0
  150. package/documentation/content/gallery/19-volview-color.jpg +0 -0
  151. package/documentation/content/gallery/19-volview-color2.jpg +0 -0
  152. package/documentation/content/gallery/20-volview-lightfollowcamera0.jpg +0 -0
  153. package/documentation/content/gallery/20-volview-lightfollowcamera1.jpg +0 -0
  154. package/documentation/content/gallery/20-volview-lightfollowcamera2.jpg +0 -0
  155. package/documentation/content/gallery/20-volview-lightfollowcamera3.jpg +0 -0
  156. package/documentation/content/gallery/21-volview-hybrid-final.jpg +0 -0
  157. package/documentation/content/gallery/21-volview-hybrid0.0.jpg +0 -0
  158. package/documentation/content/gallery/21-volview-hybrid0.5.jpg +0 -0
  159. package/documentation/content/gallery/21-volview-hybrid1.0.jpg +0 -0
  160. package/documentation/content/gallery/LocalAmbientOcclusion.jpg +0 -0
  161. package/documentation/content/gallery/Notes.pptx +0 -0
  162. package/documentation/content/gallery/VolView-Overview.jpg +0 -0
  163. package/documentation/content/gallery/index.md +0 -53
  164. package/documentation/content/icon/favicon-16x16.png +0 -0
  165. package/documentation/content/icon/favicon-196x196.png +0 -0
  166. package/documentation/content/icon/favicon-32x32.png +0 -0
  167. package/documentation/content/icon/favicon-96x96.png +0 -0
  168. package/documentation/content/index.pug +0 -43
  169. package/documentation/content/logo.png +0 -0
  170. package/documentation/content/logo.svg +0 -20
  171. package/documentation/data/menu.yml +0 -3
  172. package/documentation/themes/navy/layout/partial/footer.swig +0 -22
  173. package/documentation/tpl/__en__ +0 -31
  174. package/documentation/tpl/__sidebar__ +0 -11
  175. package/patches/jsdom-global+3.0.2.patch +0 -12
  176. package/patches/vue-toastification+1.7.14.patch +0 -41
  177. package/patches/vuetify+2.6.10.patch +0 -13
  178. package/prettier.config.js +0 -9
  179. package/public/index.html +0 -28
  180. package/server/helper.py +0 -147
  181. package/server/host.js +0 -134
  182. package/server/serialize.js +0 -111
  183. package/server/serialize.py +0 -203
  184. package/server/server.py +0 -84
  185. package/server/test.py +0 -17
  186. package/src/assets/logo.png +0 -0
  187. package/src/assets/logo.svg +0 -20
  188. package/src/assets/samples/3DUS-Fetus.jpg +0 -0
  189. package/src/assets/samples/CTA-Head_and_Neck.jpg +0 -0
  190. package/src/assets/samples/MRA-Head_and_Neck.jpg +0 -0
  191. package/src/assets/samples/MRI-Cardiac.jpg +0 -0
  192. package/src/assets/samples/MRI-PROSTATEx.jpg +0 -0
  193. package/src/components/AboutBox.vue +0 -157
  194. package/src/components/AiModule.vue +0 -60
  195. package/src/components/AnnotationsModule.vue +0 -37
  196. package/src/components/App.vue +0 -539
  197. package/src/components/ColorFunctionSlider.vue +0 -181
  198. package/src/components/DataBrowser.vue +0 -173
  199. package/src/components/DragAndDrop.vue +0 -107
  200. package/src/components/GroupableItem.vue +0 -30
  201. package/src/components/ImageDataBrowser.vue +0 -186
  202. package/src/components/ImageListCard.vue +0 -114
  203. package/src/components/ItemGroup.vue +0 -74
  204. package/src/components/LabelmapList.vue +0 -36
  205. package/src/components/LayoutGrid.vue +0 -96
  206. package/src/components/MeasurementsList.vue +0 -134
  207. package/src/components/MessageCenter.vue +0 -189
  208. package/src/components/MessageItem.vue +0 -83
  209. package/src/components/MessageNotificationContent.vue +0 -20
  210. package/src/components/MessageNotifications.vue +0 -84
  211. package/src/components/ModelBrowser.vue +0 -83
  212. package/src/components/ModulePanel.vue +0 -137
  213. package/src/components/PaintControls.vue +0 -174
  214. package/src/components/PatientBrowser.vue +0 -280
  215. package/src/components/PatientStudyVolumeBrowser.vue +0 -325
  216. package/src/components/RenderingModule.vue +0 -49
  217. package/src/components/ResizableNavDrawer.vue +0 -158
  218. package/src/components/SampleDataBrowser.vue +0 -198
  219. package/src/components/SaveSession.vue +0 -57
  220. package/src/components/Settings.vue +0 -35
  221. package/src/components/SliceSlider.vue +0 -182
  222. package/src/components/SpleenModule.vue +0 -101
  223. package/src/components/ToolButton.vue +0 -58
  224. package/src/components/ToolStrip.vue +0 -186
  225. package/src/components/ViewOverlayGrid.vue +0 -84
  226. package/src/components/VolumePresets.vue +0 -165
  227. package/src/components/VolumeProperties.vue +0 -171
  228. package/src/components/VolumeRendering.vue +0 -365
  229. package/src/components/VtkThreeView.vue +0 -512
  230. package/src/components/VtkTwoView.vue +0 -665
  231. package/src/components/__tests__/ResizableNavDrawer.spec.js +0 -32
  232. package/src/components/__tests__/ToolButton.spec.js +0 -46
  233. package/src/components/icons/KitwareLogoIcon.vue +0 -54
  234. package/src/components/icons/VolViewFullLogo.vue +0 -139
  235. package/src/components/icons/VolViewLogo.vue +0 -78
  236. package/src/components/styles/utils.css +0 -16
  237. package/src/components/styles/vtk-view.css +0 -116
  238. package/src/components/tools/CropTool.vue +0 -61
  239. package/src/components/tools/CrosshairsTool.vue +0 -93
  240. package/src/components/tools/MouseManipulatorTool.vue +0 -108
  241. package/src/components/tools/PaintTool.vue +0 -54
  242. package/src/components/tools/PanTool.vue +0 -35
  243. package/src/components/tools/RulerTool.vue +0 -202
  244. package/src/components/tools/SliceScrollTool.vue +0 -123
  245. package/src/components/tools/WindowLevelTool.vue +0 -191
  246. package/src/components/tools/ZoomTool.vue +0 -35
  247. package/src/components/tools/crop/Crop2D.vue +0 -367
  248. package/src/components/tools/crop/Crop2DLineHandle.vue +0 -103
  249. package/src/components/tools/crop/Crop3D.vue +0 -192
  250. package/src/components/tools/crop/CropControls.vue +0 -38
  251. package/src/components/tools/crop/types.ts +0 -12
  252. package/src/components/tools/crosshairs/CrosshairSVG2D.vue +0 -125
  253. package/src/components/tools/crosshairs/CrosshairsWidget2D.vue +0 -100
  254. package/src/components/tools/paint/PaintWidget2D.vue +0 -192
  255. package/src/components/tools/ruler/RulerSVG2D.vue +0 -181
  256. package/src/components/tools/ruler/RulerWidget2D.vue +0 -154
  257. package/src/composables/__tests__/useDoubleRecord.spec.ts +0 -57
  258. package/src/composables/__tests__/useOrientationLabels.spec.ts +0 -29
  259. package/src/composables/isViewAnimating.ts +0 -25
  260. package/src/composables/manageVTKSubscription.ts +0 -6
  261. package/src/composables/onProxyManagerEvent.ts +0 -50
  262. package/src/composables/proxyManager.ts +0 -13
  263. package/src/composables/sync/__tests__/createPrimitiveSyncContext.spec.ts +0 -41
  264. package/src/composables/sync/__tests__/useWindowingSync.spec.ts +0 -51
  265. package/src/composables/sync/createPrimitiveSyncContext.ts +0 -83
  266. package/src/composables/sync/useWindowingSync.ts +0 -48
  267. package/src/composables/useAppLoadingNotifications.ts +0 -73
  268. package/src/composables/useCameraOrientation.ts +0 -34
  269. package/src/composables/useCurrentImage.ts +0 -74
  270. package/src/composables/useCurrentSlice.ts +0 -43
  271. package/src/composables/useDoubleRecord.ts +0 -77
  272. package/src/composables/useEventListener.ts +0 -26
  273. package/src/composables/useGlobalErrorHook.ts +0 -18
  274. package/src/composables/useMultiSelection.ts +0 -29
  275. package/src/composables/useOrientationLabels.ts +0 -62
  276. package/src/composables/usePanels.ts +0 -42
  277. package/src/composables/usePersistCameraConfig.ts +0 -138
  278. package/src/composables/useResizeObserver.ts +0 -37
  279. package/src/composables/useResizeToFit.ts +0 -50
  280. package/src/composables/useSceneBuilder.ts +0 -96
  281. package/src/composables/useToast.js +0 -11
  282. package/src/composables/useVTKCallback.ts +0 -33
  283. package/src/composables/useVTKWorldToDisplay.ts +0 -141
  284. package/src/composables/useViewProxy.ts +0 -87
  285. package/src/composables/useVolumeThumbnailing.ts +0 -173
  286. package/src/composables/useWebGLWatchdog.ts +0 -32
  287. package/src/composables/useWidgetManager.ts +0 -41
  288. package/src/config.ts +0 -182
  289. package/src/constants.ts +0 -38
  290. package/src/core/id.ts +0 -18
  291. package/src/core/provider.ts +0 -31
  292. package/src/core/proxies.ts +0 -90
  293. package/src/core/thumbnailers/__tests__/vtk-image.spec.ts +0 -58
  294. package/src/core/thumbnailers/index.ts +0 -5
  295. package/src/core/thumbnailers/volume-thumbnailer.ts +0 -130
  296. package/src/core/thumbnailers/vtk-image.ts +0 -142
  297. package/src/core/tools/__tests__/paint.spec.ts +0 -101
  298. package/src/core/tools/__tests__/ruler.spec.ts +0 -73
  299. package/src/core/tools/paint/brush.ts +0 -20
  300. package/src/core/tools/paint/ellipse-brush.ts +0 -96
  301. package/src/core/tools/paint/index.ts +0 -141
  302. package/src/core/tools/ruler.ts +0 -149
  303. package/src/global.d.ts +0 -24
  304. package/src/io/__tests__/io.spec.ts +0 -26
  305. package/src/io/dicom.ts +0 -187
  306. package/src/io/index.ts +0 -11
  307. package/src/io/io.ts +0 -157
  308. package/src/io/itk/itkConfig.js +0 -8
  309. package/src/io/itk-dicom/dicom.cpp +0 -327
  310. package/src/io/itk-dicom/web-build/dicom.js +0 -16
  311. package/src/io/itk-dicom/web-build/dicom.umd.js +0 -21
  312. package/src/io/manifest.ts +0 -30
  313. package/src/io/readers.ts +0 -36
  314. package/src/io/state-file/index.ts +0 -170
  315. package/src/io/state-file/schema.ts +0 -277
  316. package/src/io/state-file/utils.ts +0 -33
  317. package/src/io/types.ts +0 -4
  318. package/src/io/vtk/async.reader.worker.ts +0 -50
  319. package/src/io/vtk/async.ts +0 -58
  320. package/src/io/vtk/async.writer.worker.ts +0 -46
  321. package/src/io/vtk/common.ts +0 -30
  322. package/src/io/zip.ts +0 -31
  323. package/src/main.js +0 -66
  324. package/src/main.ts +0 -1
  325. package/src/plugins/vuetify.js +0 -25
  326. package/src/shims-itk.d.ts +0 -67
  327. package/src/shims-misc.d.ts +0 -4
  328. package/src/shims-tsx.d.ts +0 -13
  329. package/src/shims-vtk.d.ts +0 -1042
  330. package/src/shims-vue.d.ts +0 -5
  331. package/src/store/__tests__/datasets.spec.ts +0 -75
  332. package/src/store/__tests__/messages.spec.ts +0 -74
  333. package/src/store/__tests__/rulers.spec.ts +0 -77
  334. package/src/store/__tests__/view-configs.spec.ts +0 -37
  335. package/src/store/datasets-dicom.ts +0 -398
  336. package/src/store/datasets-files.ts +0 -35
  337. package/src/store/datasets-images.ts +0 -118
  338. package/src/store/datasets-labelmaps.ts +0 -136
  339. package/src/store/datasets-models.ts +0 -25
  340. package/src/store/datasets.ts +0 -341
  341. package/src/store/messages.ts +0 -144
  342. package/src/store/tools/crop.ts +0 -136
  343. package/src/store/tools/crosshairs.ts +0 -131
  344. package/src/store/tools/index.ts +0 -95
  345. package/src/store/tools/paint.ts +0 -191
  346. package/src/store/tools/rulers.ts +0 -305
  347. package/src/store/tools/types.ts +0 -54
  348. package/src/store/view-configs/camera.ts +0 -51
  349. package/src/store/view-configs/common.ts +0 -61
  350. package/src/store/view-configs/slicing.ts +0 -86
  351. package/src/store/view-configs/types.ts +0 -39
  352. package/src/store/view-configs/volume-coloring.ts +0 -193
  353. package/src/store/view-configs/windowing.ts +0 -69
  354. package/src/store/view-configs.ts +0 -78
  355. package/src/store/views.ts +0 -130
  356. package/src/types/index.ts +0 -16
  357. package/src/types/layout.ts +0 -10
  358. package/src/types/lps.ts +0 -40
  359. package/src/types/views.ts +0 -65
  360. package/src/types/vtk-types.ts +0 -29
  361. package/src/utils/__tests__/lps.spec.ts +0 -102
  362. package/src/utils/color.ts +0 -23
  363. package/src/utils/errors.js +0 -3
  364. package/src/utils/fetch.ts +0 -101
  365. package/src/utils/hacks.ts +0 -14
  366. package/src/utils/index.ts +0 -83
  367. package/src/utils/lps.ts +0 -129
  368. package/src/utils/manipulators.ts +0 -35
  369. package/src/utils/promise-worker.ts +0 -45
  370. package/src/utils/vtk-helpers.ts +0 -215
  371. package/src/utils/workerHandler.js +0 -42
  372. package/src/vtk/ColorMaps.ts +0 -72
  373. package/src/vtk/CrosshairsWidget/behavior.ts +0 -112
  374. package/src/vtk/CrosshairsWidget/index.d.ts +0 -22
  375. package/src/vtk/CrosshairsWidget/index.js +0 -73
  376. package/src/vtk/CrosshairsWidget/state.ts +0 -51
  377. package/src/vtk/IJKSliceRepresentationProxy/index.d.ts +0 -9
  378. package/src/vtk/IJKSliceRepresentationProxy/index.js +0 -59
  379. package/src/vtk/LPSView2DProxy/index.d.ts +0 -18
  380. package/src/vtk/LPSView2DProxy/index.js +0 -89
  381. package/src/vtk/LPSView3DProxy/index.d.ts +0 -16
  382. package/src/vtk/LPSView3DProxy/index.js +0 -78
  383. package/src/vtk/LabelMap/index.d.ts +0 -16
  384. package/src/vtk/LabelMap/index.js +0 -49
  385. package/src/vtk/LabelMapSliceRepProxy/index.d.ts +0 -6
  386. package/src/vtk/LabelMapSliceRepProxy/index.js +0 -104
  387. package/src/vtk/MedicalColorPresets.json +0 -1448
  388. package/src/vtk/PaintBrushContextRepresentation/index.js +0 -191
  389. package/src/vtk/PaintWidget/behavior.ts +0 -101
  390. package/src/vtk/PaintWidget/index.d.ts +0 -28
  391. package/src/vtk/PaintWidget/index.js +0 -56
  392. package/src/vtk/PaintWidget/state.ts +0 -41
  393. package/src/vtk/PiecewiseWidget/index.js +0 -203
  394. package/src/vtk/RulerWidget/behavior.ts +0 -185
  395. package/src/vtk/RulerWidget/index.d.ts +0 -25
  396. package/src/vtk/RulerWidget/index.js +0 -79
  397. package/src/vtk/RulerWidget/state.ts +0 -63
  398. package/src/vtk/TreJsonConverter/index.js +0 -150
  399. package/src/vtk/proxy.js +0 -66
  400. package/src/vtk/proxyUtils.js +0 -16
  401. package/src/vtk/webvr-empty.js +0 -1
  402. package/tests/testUtils.js +0 -12
  403. package/tsconfig.json +0 -46
  404. package/vue.config.js +0 -86
@@ -1,11 +0,0 @@
1
- import { createToastInterface } from 'vue-toastification';
2
-
3
- const toast = createToastInterface({
4
- position: 'bottom-left',
5
- timeout: 3000,
6
- hideProgressBar: true,
7
- maxToasts: 3,
8
- transition: 'Vue-Toastification__fade',
9
- });
10
-
11
- export const useToast = () => toast;
@@ -1,33 +0,0 @@
1
- import { vtkSubscription } from '@kitware/vtk.js/interfaces';
2
- import { isRef, onUnmounted, watchEffect } from '@vue/composition-api';
3
- import { MaybeRef } from '@vueuse/core';
4
-
5
- type Listener = (obj: any) => void;
6
- type VTKCallback = (listener: Listener) => vtkSubscription;
7
-
8
- export function useVTKCallback(
9
- callback: MaybeRef<VTKCallback | null | undefined>
10
- ) {
11
- const handleListener = (listener: Listener) => {
12
- let subscription: vtkSubscription | null = null;
13
-
14
- const cleanup = () => {
15
- subscription?.unsubscribe();
16
- subscription = null;
17
- };
18
- onUnmounted(cleanup);
19
-
20
- if (isRef(callback)) {
21
- watchEffect(() => {
22
- cleanup();
23
- if (callback.value) {
24
- subscription = callback.value(listener);
25
- }
26
- });
27
- } else if (callback) {
28
- subscription = callback(listener);
29
- }
30
- };
31
-
32
- return handleListener;
33
- }
@@ -1,141 +0,0 @@
1
- import vtkOpenGLRenderWindow from '@kitware/vtk.js/Rendering/OpenGL/RenderWindow';
2
- import vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
3
- import { Vector2, Vector3 } from '@kitware/vtk.js/types';
4
- import { computed, ref, unref, watchEffect } from '@vue/composition-api';
5
- import { MaybeRef, useResizeObserver } from '@vueuse/core';
6
- import { vec3 } from 'gl-matrix';
7
- import { useVTKCallback } from './useVTKCallback';
8
- import { computeWorldToDisplay } from '../utils/vtk-helpers';
9
-
10
- type MaybeCoords = Vector3 | vec3 | null | undefined;
11
- type MaybeMultiCoords = Vector3[] | vec3[] | null | undefined;
12
- type MaybeRenderer = vtkRenderer | null | undefined;
13
-
14
- /**
15
- * Returns a reactive vtkOpenGLRenderWindow container ref.
16
- *
17
- * @param view
18
- * @returns
19
- */
20
- export function useVTKViewContainer(
21
- view: MaybeRef<vtkOpenGLRenderWindow | null | undefined>
22
- ) {
23
- const container = ref<HTMLElement | null>(null);
24
-
25
- const update = () => {
26
- container.value = unref(view)?.getContainer() ?? null;
27
- };
28
-
29
- const onModified = useVTKCallback(computed(() => unref(view)?.onModified));
30
- onModified(update);
31
- update();
32
-
33
- return container;
34
- }
35
-
36
- /**
37
- * Transforms a list of world coordinates into display coordinates.
38
- *
39
- * @param worldCoords
40
- * @param renderer
41
- * @returns
42
- */
43
- export function useVTKMultiWorldToDisplay(
44
- worldCoords: MaybeRef<MaybeMultiCoords>,
45
- renderer: MaybeRef<MaybeRenderer>
46
- ) {
47
- const displayCoords = ref<Vector2[]>([]);
48
- const view = computed(
49
- () =>
50
- unref(renderer)
51
- ?.getRenderWindow()
52
- ?.getViews()?.[0] as vtkOpenGLRenderWindow
53
- );
54
- const container = useVTKViewContainer(view);
55
-
56
- const update = () => {
57
- const coords = unref(worldCoords);
58
- const ren = unref(renderer);
59
-
60
- if (coords == null || !ren) {
61
- return;
62
- }
63
-
64
- displayCoords.value = coords.map((xyz) => {
65
- const disp = computeWorldToDisplay(xyz as Vector3, ren)!;
66
- // convert from canvas space to display space
67
- return [
68
- disp[0] / devicePixelRatio,
69
- disp[1] / devicePixelRatio,
70
- ] as Vector2;
71
- }) as Vector2[];
72
- };
73
-
74
- const cameraOnModified = useVTKCallback(
75
- computed(() => unref(renderer)?.getActiveCamera().onModified)
76
- );
77
-
78
- useResizeObserver(container, update);
79
- watchEffect(update);
80
- cameraOnModified(update);
81
- update();
82
-
83
- return displayCoords;
84
- }
85
-
86
- /**
87
- * Transforms a single world coordinate into a display coordinate.
88
- *
89
- * @param worldCoords
90
- * @param renderer
91
- * @returns
92
- */
93
- export function useVTKWorldToDisplay(
94
- worldCoords: MaybeRef<MaybeCoords>,
95
- renderer: MaybeRef<MaybeRenderer>
96
- ) {
97
- const manyCoords = computed(() => {
98
- const c = unref(worldCoords);
99
- if (c != null) {
100
- return [c];
101
- }
102
- return null;
103
- });
104
-
105
- const displayCoords = useVTKMultiWorldToDisplay(manyCoords, renderer);
106
- return computed(() => {
107
- if (displayCoords.value.length === 1) {
108
- return displayCoords.value[0];
109
- }
110
- return null;
111
- });
112
- }
113
-
114
- /**
115
- * Transforms a list of world coordinates into SVG coordinates.
116
- *
117
- * @param worldCoords
118
- * @param renderer
119
- * @returns
120
- */
121
- export function useVTKMultiWorldToSVG(
122
- worldCoords: MaybeRef<MaybeMultiCoords>,
123
- renderer: MaybeRef<MaybeRenderer>
124
- ) {
125
- const displayCoords = useVTKMultiWorldToDisplay(worldCoords, renderer);
126
- const svgCoords = computed(() => {
127
- const disp = displayCoords.value;
128
- const ren = unref(renderer);
129
- const view = ren?.getRenderWindow()?.getViews()?.[0];
130
- if (ren && view) {
131
- const [, height] = view.getViewportSize(ren);
132
- return disp.map((xy) => {
133
- // flip Y axis
134
- return [xy[0], height / devicePixelRatio - xy[1]];
135
- });
136
- }
137
- return null;
138
- });
139
-
140
- return svgCoords;
141
- }
@@ -1,87 +0,0 @@
1
- import vtkViewProxy from '@kitware/vtk.js/Proxy/Core/ViewProxy';
2
- import { computed, ref, unref, watch } from '@vue/composition-api';
3
- import { MaybeRef } from '@vueuse/core';
4
- import { ViewProxyType } from '../core/proxies';
5
- import { useViewStore } from '../store/views';
6
- import { useVTKCallback } from './useVTKCallback';
7
-
8
- export function useViewProxy<T extends vtkViewProxy = vtkViewProxy>(
9
- id: MaybeRef<string>,
10
- type: MaybeRef<ViewProxyType>
11
- ) {
12
- const viewStore = useViewStore();
13
-
14
- const container = ref<HTMLElement | null>(null);
15
-
16
- const setContainer = (el: HTMLElement | null | undefined) => {
17
- container.value = el ?? null;
18
- };
19
-
20
- const viewProxy = computed<T>(() =>
21
- viewStore.createOrGetViewProxy(unref(id), unref(type))
22
- );
23
-
24
- watch(viewProxy, (curViewProxy, oldViewProxy) => {
25
- oldViewProxy.setContainer(null);
26
- curViewProxy.setContainer(container.value);
27
- });
28
-
29
- watch(container, (curContainer) => {
30
- viewProxy.value.setContainer(curContainer);
31
- // setContainer doesn't call modified
32
- viewProxy.value.modified();
33
- });
34
-
35
- return {
36
- viewProxy,
37
- setContainer,
38
- };
39
- }
40
-
41
- function onViewProxyModified<T extends vtkViewProxy = vtkViewProxy>(
42
- viewProxy: MaybeRef<T>,
43
- callback: () => void
44
- ) {
45
- const onModified = useVTKCallback(
46
- computed(() => unref(viewProxy).onModified)
47
- );
48
- onModified(callback);
49
- }
50
-
51
- export function useViewProxyMounted<T extends vtkViewProxy = vtkViewProxy>(
52
- viewProxy: MaybeRef<T>,
53
- callback: () => void
54
- ) {
55
- const mounted = ref(false);
56
-
57
- onViewProxyModified(viewProxy, () => {
58
- mounted.value = !!unref(viewProxy).getContainer();
59
- });
60
-
61
- watch(
62
- mounted,
63
- (m) => {
64
- if (m) callback();
65
- },
66
- { immediate: true }
67
- );
68
- }
69
-
70
- export function useViewProxyUnmounted<T extends vtkViewProxy = vtkViewProxy>(
71
- viewProxy: MaybeRef<T>,
72
- callback: () => void
73
- ) {
74
- const mounted = ref(false);
75
-
76
- onViewProxyModified(viewProxy, () => {
77
- mounted.value = !!unref(viewProxy).getContainer();
78
- });
79
-
80
- watch(
81
- mounted,
82
- (m, prev) => {
83
- if (prev && !m) callback();
84
- },
85
- { immediate: true }
86
- );
87
- }
@@ -1,173 +0,0 @@
1
- import {
2
- del,
3
- onBeforeUnmount,
4
- reactive,
5
- ref,
6
- set,
7
- watch,
8
- } from '@vue/composition-api';
9
- import vtkLookupTableProxy from '@kitware/vtk.js/Proxy/Core/LookupTableProxy';
10
- import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
11
- import vtkPiecewiseFunctionProxy from '@kitware/vtk.js/Proxy/Core/PiecewiseFunctionProxy';
12
- import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps';
13
- import { Vector3 } from '@kitware/vtk.js/types';
14
- import { createVolumeThumbnailer } from '../core/thumbnailers/volume-thumbnailer';
15
- import { useCameraOrientation } from './useCameraOrientation';
16
- import { useImageStore } from '../store/datasets-images';
17
- import { InitViewIDs, InitViewSpecs } from '../config';
18
- import { useCurrentImage } from './useCurrentImage';
19
- import {
20
- getColorFunctionRangeFromPreset,
21
- getOpacityRangeFromPreset,
22
- } from '../utils/vtk-helpers';
23
- import { PresetNameList } from '../vtk/ColorMaps';
24
-
25
- function resetOpacityFunction(
26
- pwfProxy: vtkPiecewiseFunctionProxy,
27
- dataRange: [number, number],
28
- presetName: string
29
- ) {
30
- // reset pwf proxy range
31
- pwfProxy.setDataRange(...dataRange);
32
-
33
- const preset = vtkColorMaps.getPresetByName(presetName);
34
- if (preset.OpacityPoints) {
35
- const OpacityPoints = preset.OpacityPoints as number[];
36
- const points = [];
37
- for (let i = 0; i < OpacityPoints.length; i += 2) {
38
- points.push([OpacityPoints[i], OpacityPoints[i + 1]]);
39
- }
40
-
41
- const [xmin, xmax] = dataRange;
42
- const width = xmax - xmin;
43
- const pointsNormalized = points.map(([x, y]) => [(x - xmin) / width, y]);
44
-
45
- pwfProxy.setMode(vtkPiecewiseFunctionProxy.Mode.Points);
46
- pwfProxy.setPoints(pointsNormalized);
47
- } else {
48
- pwfProxy.setMode(vtkPiecewiseFunctionProxy.Mode.Gaussians);
49
- pwfProxy.setGaussians(vtkPiecewiseFunctionProxy.Defaults.Gaussians);
50
- }
51
- }
52
-
53
- export function useVolumeThumbnailing(thumbnailSize: number) {
54
- const thumbnails = reactive<Record<string, Record<string, string>>>({});
55
- const thumbnailer = createVolumeThumbnailer(thumbnailSize);
56
- const currentThumbnails = ref<Record<string, string>>({});
57
-
58
- const { currentImageMetadata, currentImageID, currentImageData } =
59
- useCurrentImage();
60
-
61
- // same as 3D view
62
- const { cameraDirVec, cameraUpVec } = useCameraOrientation(
63
- InitViewSpecs[InitViewIDs.Three].props.viewDirection,
64
- InitViewSpecs[InitViewIDs.Three].props.viewUp,
65
- currentImageMetadata
66
- );
67
-
68
- // used to interrupt a thumbnailing cycle if
69
- // doThumbnailing is called again
70
- let interruptSentinel = Symbol('interrupt');
71
-
72
- async function doThumbnailing(imageID: string, image: vtkImageData) {
73
- const localSentinel = Symbol('interrupt');
74
- interruptSentinel = localSentinel;
75
-
76
- thumbnailer.setInputImage(image);
77
- const imageDataRange = image.getPointData().getScalars().getRange();
78
-
79
- async function helper(presetName: string) {
80
- // bail if a new thumbnail process has started
81
- if (interruptSentinel !== localSentinel) {
82
- return;
83
- }
84
-
85
- // sanity check; did the current image change
86
- if (imageID !== currentImageID.value) {
87
- return;
88
- }
89
-
90
- if (!(imageID in thumbnails)) {
91
- set(thumbnails, imageID, {});
92
- }
93
-
94
- if (presetName in thumbnails[imageID]) {
95
- return;
96
- }
97
-
98
- const opRange = getOpacityRangeFromPreset(presetName);
99
- resetOpacityFunction(
100
- thumbnailer.opacityFuncProxy,
101
- opRange || imageDataRange,
102
- presetName
103
- );
104
-
105
- thumbnailer.colorTransferFuncProxy.setMode(
106
- vtkLookupTableProxy.Mode.Preset
107
- );
108
- thumbnailer.colorTransferFuncProxy.setPresetName(presetName);
109
- const ctRange = getColorFunctionRangeFromPreset(presetName);
110
- thumbnailer.colorTransferFuncProxy.setDataRange(
111
- ...(ctRange || imageDataRange)
112
- );
113
-
114
- thumbnailer.resetCameraWithOrientation(
115
- cameraDirVec.value as Vector3,
116
- cameraUpVec.value as Vector3
117
- );
118
-
119
- const renWin = thumbnailer.scene.getRenderWindow();
120
- renWin.render();
121
- const imageURL = await renWin.captureImages()[0];
122
- if (imageURL) {
123
- set(thumbnails[imageID], presetName, imageURL);
124
- }
125
- }
126
-
127
- PresetNameList.reduce(
128
- (promise, presetName) => promise.then(() => helper(presetName)),
129
- Promise.resolve()
130
- );
131
- }
132
-
133
- // workaround for computed not properly working on deeply reactive objects
134
- // in vue 2.
135
- watch(
136
- thumbnails,
137
- () => {
138
- if (currentImageID.value) {
139
- currentThumbnails.value = thumbnails[currentImageID.value];
140
- }
141
- },
142
- { deep: true }
143
- );
144
-
145
- // force thumbnailing to stop
146
- onBeforeUnmount(() => {
147
- interruptSentinel = Symbol('unmount');
148
- });
149
-
150
- // trigger thumbnailing
151
- watch(
152
- currentImageID,
153
- (imageID) => {
154
- if (imageID) {
155
- doThumbnailing(imageID, currentImageData.value!);
156
- }
157
- },
158
- { immediate: true }
159
- );
160
-
161
- // delete thumbnails if an image is deleted
162
- const imageStore = useImageStore();
163
- imageStore.$onAction(({ name, args, after }) => {
164
- if (name === 'deleteData') {
165
- const [id] = args as [string];
166
- if (id in thumbnails) {
167
- after(() => del(thumbnails, id));
168
- }
169
- }
170
- });
171
-
172
- return { currentThumbnails };
173
- }
@@ -1,32 +0,0 @@
1
- import vtkViewProxy from '@kitware/vtk.js/Proxy/Core/ViewProxy';
2
- import { useEventListener, useThrottleFn } from '@vueuse/core';
3
- import { Messages } from '../constants';
4
- import { useMessageStore } from '../store/messages';
5
- import { onProxyManagerEvent, ProxyManagerEvent } from './onProxyManagerEvent';
6
-
7
- export function useWebGLWatchdog() {
8
- const watchdogs = new Map<string, () => void>();
9
-
10
- const reportError = useThrottleFn(() => {
11
- const messageStore = useMessageStore();
12
- messageStore.addError(Messages.WebGLLost.title, Messages.WebGLLost.details);
13
- }, 100);
14
-
15
- onProxyManagerEvent(ProxyManagerEvent.ProxyCreated, (id, obj) => {
16
- if (!obj || !obj.isA('vtkViewProxy')) return;
17
- const view = obj as vtkViewProxy;
18
- // TODO getCanvas() typing
19
- const rw = view.getOpenglRenderWindow() as any;
20
- const canvas = rw.getCanvas() as HTMLCanvasElement;
21
-
22
- const cleanup = useEventListener(canvas, 'webglcontextlost', reportError);
23
- watchdogs.set(id, cleanup);
24
- });
25
-
26
- onProxyManagerEvent(ProxyManagerEvent.ProxyDeleted, (id) => {
27
- if (watchdogs.has(id)) {
28
- watchdogs.get(id)!();
29
- watchdogs.delete(id);
30
- }
31
- });
32
- }
@@ -1,41 +0,0 @@
1
- import vtkViewProxy from '@kitware/vtk.js/Proxy/Core/ViewProxy';
2
- import vtkWidgetManager from '@kitware/vtk.js/Widgets/Core/WidgetManager';
3
- import { CaptureOn } from '@kitware/vtk.js/Widgets/Core/WidgetManager/Constants';
4
- import { computed, onUnmounted, Ref, watch } from '@vue/composition-api';
5
- import { useViewProxyMounted, useViewProxyUnmounted } from './useViewProxy';
6
-
7
- export function useWidgetManager(viewProxy: Ref<vtkViewProxy>) {
8
- const widgetManager = computed(() => {
9
- const wm = vtkWidgetManager.newInstance({
10
- pickingEnabled: false,
11
- useSvgLayer: false,
12
- captureOn: CaptureOn.MOUSE_MOVE,
13
- });
14
- return wm;
15
- });
16
-
17
- useViewProxyMounted(viewProxy, () => {
18
- widgetManager.value.setRenderer(viewProxy.value.getRenderer());
19
- widgetManager.value.enablePicking();
20
- });
21
-
22
- useViewProxyUnmounted(viewProxy, () => {
23
- widgetManager.value.disablePicking();
24
- });
25
-
26
- watch(widgetManager, (curWM, oldWM) => {
27
- if (curWM) {
28
- curWM.setRenderer(viewProxy.value.getRenderer());
29
- curWM.enablePicking();
30
- }
31
- if (oldWM) {
32
- oldWM.delete();
33
- }
34
- });
35
-
36
- onUnmounted(() => {
37
- widgetManager.value.delete();
38
- });
39
-
40
- return { widgetManager };
41
- }
package/src/config.ts DELETED
@@ -1,182 +0,0 @@
1
- import MRICardiacThumbnail from '@/src/assets/samples/MRI-Cardiac.jpg';
2
- import MRIPROSTATExThumbnail from '@/src/assets/samples/MRI-PROSTATEx.jpg';
3
- import MRAHeadThumbnail from '@/src/assets/samples/MRA-Head_and_Neck.jpg';
4
- import CTAHeadThumbnail from '@/src/assets/samples/CTA-Head_and_Neck.jpg';
5
- import USFetusThumbnail from '@/src/assets/samples/3DUS-Fetus.jpg';
6
- import { Layout, LayoutDirection } from './types/layout';
7
- import { ViewSpec } from './types/views';
8
- import { SampleDataset } from './types';
9
-
10
- /**
11
- * These are the initial view IDs.
12
- */
13
- export const InitViewIDs: Record<string, string> = {
14
- Coronal: 'Coronal',
15
- Sagittal: 'Sagittal',
16
- Axial: 'Axial',
17
- Three: '3D',
18
- };
19
-
20
- /**
21
- * View spec for the initial view IDs.
22
- */
23
- export const InitViewSpecs: Record<string, ViewSpec> = {
24
- [InitViewIDs.Coronal]: {
25
- viewType: '2D',
26
- props: {
27
- viewDirection: 'Right',
28
- viewUp: 'Superior',
29
- },
30
- },
31
- [InitViewIDs.Sagittal]: {
32
- viewType: '2D',
33
- props: {
34
- viewDirection: 'Posterior',
35
- viewUp: 'Superior',
36
- },
37
- },
38
- [InitViewIDs.Axial]: {
39
- viewType: '2D',
40
- props: {
41
- viewDirection: 'Superior',
42
- viewUp: 'Anterior',
43
- },
44
- },
45
- [InitViewIDs.Three]: {
46
- viewType: '3D',
47
- props: {
48
- viewDirection: 'Posterior',
49
- viewUp: 'Superior',
50
- },
51
- },
52
- };
53
-
54
- /**
55
- * The default view spec.
56
- */
57
- export const DefaultViewSpec = InitViewSpecs[InitViewIDs.Axial];
58
-
59
- /**
60
- * Defines the default layouts.
61
- */
62
- export const Layouts: Record<string, Layout> = [
63
- {
64
- name: 'Axial Primary',
65
- direction: LayoutDirection.V,
66
- items: [
67
- InitViewIDs.Axial,
68
- {
69
- direction: LayoutDirection.H,
70
- items: [InitViewIDs.Three, InitViewIDs.Coronal, InitViewIDs.Sagittal],
71
- },
72
- ],
73
- },
74
- {
75
- name: '3D Primary',
76
- direction: LayoutDirection.V,
77
- items: [
78
- InitViewIDs.Three,
79
- {
80
- direction: LayoutDirection.H,
81
- items: [InitViewIDs.Coronal, InitViewIDs.Sagittal, InitViewIDs.Axial],
82
- },
83
- ],
84
- },
85
- {
86
- name: 'Quad View',
87
- direction: LayoutDirection.H,
88
- items: [
89
- {
90
- direction: LayoutDirection.V,
91
- items: [InitViewIDs.Coronal, InitViewIDs.Three],
92
- },
93
- {
94
- direction: LayoutDirection.V,
95
- items: [InitViewIDs.Sagittal, InitViewIDs.Axial],
96
- },
97
- ],
98
- },
99
- {
100
- name: '3D Only',
101
- direction: LayoutDirection.H,
102
- items: [InitViewIDs.Three],
103
- },
104
- ].reduce((layouts, layout) => {
105
- return { ...layouts, [layout.name]: layout };
106
- }, {});
107
-
108
- export const LABELMAP_PALETTE = {
109
- 0: [0, 0, 0, 0], // eraser
110
- 1: [153, 153, 0, 255],
111
- 2: [76, 76, 0, 255],
112
- 3: [255, 255, 0, 255],
113
- 4: [0, 76, 0, 255],
114
- 5: [0, 153, 0, 255],
115
- 6: [0, 255, 0, 255],
116
- 7: [76, 0, 0, 255],
117
- 8: [153, 0, 0, 255],
118
- 9: [255, 0, 0, 255],
119
- 10: [0, 76, 76, 255],
120
- 11: [0, 153, 153, 255],
121
- 12: [0, 255, 255, 255],
122
- 13: [0, 0, 76, 255],
123
- 14: [0, 0, 153, 255],
124
- } as Record<number, number[]>;
125
-
126
- export const SAMPLE_DATA: SampleDataset[] = [
127
- {
128
- name: 'CTA Head and Neck',
129
- filename: 'CTA-Head_and_Neck.zip',
130
- description:
131
- 'CTA head and neck scan of elderly patient with tumor. (80 MB)',
132
- url: 'https://data.kitware.com/api/v1/item/6347159711dab81428208e24/download',
133
- image: CTAHeadThumbnail,
134
- },
135
- {
136
- name: 'MRA Head and Neck',
137
- filename: 'MRA-Head_and_Neck.zip',
138
- description:
139
- 'MRA from Patient Contributed Image Repository. Click application help icon "(?)" for more info. (15 MB)',
140
- url: 'https://data.kitware.com/api/v1/item/6352a2b311dab8142820a33b/download',
141
- image: MRAHeadThumbnail,
142
- },
143
- {
144
- name: 'MRI Cardiac 3D and Cine',
145
- filename: 'MRI-Cardiac-3D_and_Cine.zip',
146
- description:
147
- 'MRI scan with two series: 3D axial non-gated and 2 chamber cine. (4 MB)',
148
- url: 'https://data.kitware.com/api/v1/item/6350b28f11dab8142820949d/download',
149
- image: MRICardiacThumbnail,
150
- },
151
- {
152
- name: 'MRI PROSTATEx',
153
- filename: 'MRI-PROSTATEx-0004.zip',
154
- description:
155
- 'MRI from the SPIE-AAPM-NCI PROSTATEx challenge. Click application help "(?)" icon for more info. (3 MB)',
156
- url: 'https://data.kitware.com/api/v1/item/63527c7311dab8142820a338/download',
157
- image: MRIPROSTATExThumbnail,
158
- },
159
- {
160
- name: '3D US Fetus',
161
- filename: '3DUS-Fetus.mha',
162
- description:
163
- '3D ultrasound of a baby. Downloaded from tomovision.com.(8 MB)',
164
- url: 'https://data.kitware.com/api/v1/item/635679c311dab8142820a4f4/download',
165
- image: USFetusThumbnail,
166
- },
167
- ];
168
-
169
- export const TOOL_COLORS = [
170
- '#8de4d3',
171
- '#f0a4b1',
172
- '#58f24c',
173
- '#a3c9fe',
174
- '#c8f251',
175
- '#fea53b',
176
- ];
177
-
178
- export const DEFAULT_PRESET_BY_MODALITY: Record<string, string> = {
179
- CT: 'CT-AAA',
180
- MR: 'CT-Coronary-Arteries-2',
181
- US: 'US-Fetal',
182
- };