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,186 +0,0 @@
1
- <template>
2
- <item-group
3
- mandatory
4
- class="d-flex flex-column align-center"
5
- :value="currentTool"
6
- @change="setCurrentTool($event)"
7
- >
8
- <div class="my-1 tool-separator" />
9
- <groupable-item
10
- v-slot:default="{ active, toggle }"
11
- :value="Tools.WindowLevel"
12
- >
13
- <tool-button
14
- size="40"
15
- icon="mdi-circle-half-full"
16
- name="Window & Level"
17
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
18
- :disabled="noCurrentImage"
19
- @click="toggle"
20
- />
21
- </groupable-item>
22
- <groupable-item v-slot:default="{ active, toggle }" :value="Tools.Pan">
23
- <tool-button
24
- size="40"
25
- icon="mdi-cursor-move"
26
- name="Pan"
27
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
28
- :disabled="noCurrentImage"
29
- @click="toggle"
30
- />
31
- </groupable-item>
32
- <groupable-item v-slot:default="{ active, toggle }" :value="Tools.Zoom">
33
- <tool-button
34
- size="40"
35
- icon="mdi-magnify-plus-outline"
36
- name="Zoom"
37
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
38
- :disabled="noCurrentImage"
39
- @click="toggle"
40
- />
41
- </groupable-item>
42
- <groupable-item
43
- v-slot:default="{ active, toggle }"
44
- :value="Tools.Crosshairs"
45
- >
46
- <tool-button
47
- size="40"
48
- icon="mdi-crosshairs"
49
- name="Crosshairs"
50
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
51
- :disabled="noCurrentImage"
52
- @click="toggle"
53
- />
54
- </groupable-item>
55
- <div class="my-1 tool-separator" />
56
- <groupable-item v-slot:default="{ active, toggle }" :value="Tools.Paint">
57
- <v-menu
58
- v-model="paintMenu"
59
- offset-x
60
- :close-on-content-click="false"
61
- :disabled="!active"
62
- >
63
- <template v-slot:activator="{ attrs, on }">
64
- <div>
65
- <tool-button
66
- size="40"
67
- icon="mdi-brush"
68
- name="Paint"
69
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
70
- :disabled="noCurrentImage"
71
- @click.stop="toggle"
72
- v-on="on"
73
- v-bind="attrs"
74
- >
75
- <v-icon v-if="active" class="menu-more" size="18">
76
- mdi-menu-right
77
- </v-icon>
78
- </tool-button>
79
- </div>
80
- </template>
81
- <paint-controls />
82
- </v-menu>
83
- </groupable-item>
84
- <groupable-item v-slot:default="{ active, toggle }" :value="Tools.Ruler">
85
- <tool-button
86
- size="40"
87
- icon="mdi-ruler"
88
- name="Ruler"
89
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
90
- :disabled="noCurrentImage"
91
- @click="toggle"
92
- />
93
- </groupable-item>
94
- <div class="my-1 tool-separator" />
95
- <groupable-item v-slot:default="{ active, toggle }" :value="Tools.Crop">
96
- <v-menu v-model="cropMenu" offset-x open-on-hover close-on-content-click>
97
- <template v-slot:activator="{ attrs, on }">
98
- <div>
99
- <tool-button
100
- size="40"
101
- icon="mdi-crop"
102
- name="Crop"
103
- :buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
104
- :disabled="noCurrentImage"
105
- @click.stop="toggle"
106
- v-on="on"
107
- v-bind="attrs"
108
- >
109
- <v-icon v-if="active" class="menu-more" size="18">
110
- mdi-menu-right
111
- </v-icon>
112
- </tool-button>
113
- </div>
114
- </template>
115
- <crop-controls />
116
- </v-menu>
117
- </groupable-item>
118
- </item-group>
119
- </template>
120
-
121
- <script lang="ts">
122
- import { computed, defineComponent, ref } from '@vue/composition-api';
123
- import { onKeyDown } from '@vueuse/core';
124
- import { Tools } from '@/src/store/tools/types';
125
- import ToolButton from './ToolButton.vue';
126
- import ItemGroup from './ItemGroup.vue';
127
- import GroupableItem from './GroupableItem.vue';
128
- import { useDatasetStore } from '../store/datasets';
129
- import { useToolStore } from '../store/tools';
130
- import PaintControls from './PaintControls.vue';
131
- import CropControls from './tools/crop/CropControls.vue';
132
-
133
- export default defineComponent({
134
- components: {
135
- ToolButton,
136
- ItemGroup,
137
- GroupableItem,
138
- PaintControls,
139
- CropControls,
140
- },
141
- setup() {
142
- const dataStore = useDatasetStore();
143
- const toolStore = useToolStore();
144
-
145
- const noCurrentImage = computed(() => !dataStore.primaryDataset);
146
- const currentTool = computed(() => toolStore.currentTool);
147
-
148
- const paintMenu = ref(false);
149
- const cropMenu = ref(false);
150
-
151
- onKeyDown('Escape', () => {
152
- paintMenu.value = false;
153
- cropMenu.value = false;
154
- });
155
-
156
- return {
157
- currentTool,
158
- setCurrentTool: toolStore.setCurrentTool,
159
- noCurrentImage,
160
- Tools,
161
- paintMenu,
162
- cropMenu,
163
- };
164
- },
165
- });
166
- </script>
167
-
168
- <style>
169
- .tool-btn-selected {
170
- background-color: rgba(128, 128, 255, 0.7);
171
- }
172
- </style>
173
-
174
- <style scoped>
175
- .menu-more {
176
- position: absolute;
177
- right: -50%;
178
- }
179
-
180
- .tool-separator {
181
- width: 75%;
182
- height: 1px;
183
- border: none;
184
- border-top: 1px solid rgb(112, 112, 112);
185
- }
186
- </style>
@@ -1,84 +0,0 @@
1
- <template>
2
- <div :class="$style.gridRoot">
3
- <div :class="[$style.top, $style.row]">
4
- <div :class="[$style.left, $style.cell]">
5
- <slot name="top-left" />
6
- </div>
7
- <div :class="[$style.center, $style.cell]">
8
- <slot name="top-middle" />
9
- </div>
10
- <div :class="[$style.right, $style.cell]">
11
- <slot name="top-right" />
12
- </div>
13
- </div>
14
- <div :class="[$style.middle, $style.row]">
15
- <div :class="[$style.left, $style.cell]">
16
- <slot name="middle-left" />
17
- </div>
18
- <div :class="[$style.center, $style.cell]">
19
- <slot name="middle-center" />
20
- </div>
21
- <div :class="[$style.right, $style.cell]">
22
- <slot name="middle-right" />
23
- </div>
24
- </div>
25
- <div :class="[$style.bottom, $style.row]">
26
- <div :class="[$style.left, $style.cell]">
27
- <slot name="bottom-left" />
28
- </div>
29
- <div :class="[$style.center, $style.cell]">
30
- <slot name="bottom-center" />
31
- </div>
32
- <div :class="[$style.right, $style.cell]">
33
- <slot name="bottom-right" />
34
- </div>
35
- </div>
36
- </div>
37
- </template>
38
-
39
- <style module>
40
- .gridRoot {
41
- height: 100%;
42
- display: flex;
43
- flex-direction: column;
44
- align-items: stretch;
45
- }
46
-
47
- .row {
48
- flex: 1;
49
- display: flex;
50
- flex-direction: row;
51
- align-items: stretch;
52
- }
53
-
54
- .cell {
55
- flex: 1;
56
- }
57
-
58
- .top,
59
- .left {
60
- align-items: flex-start;
61
- }
62
-
63
- .center,
64
- .middle {
65
- align-items: center;
66
- }
67
-
68
- .bottom,
69
- .right {
70
- align-items: flex-end;
71
- }
72
-
73
- .left {
74
- text-align: left;
75
- }
76
-
77
- .center {
78
- text-align: center;
79
- }
80
-
81
- .right {
82
- text-align: right;
83
- }
84
- </style>
@@ -1,165 +0,0 @@
1
- <script lang="ts">
2
- import { computed, defineComponent, watch } from '@vue/composition-api';
3
- import { PresetNameList } from '@/src/vtk/ColorMaps';
4
- import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps';
5
- import ItemGroup from '@/src/components/ItemGroup.vue';
6
- import GroupableItem from '@/src/components/GroupableItem.vue';
7
- import { useCurrentImage } from '../composables/useCurrentImage';
8
- import { useViewConfigStore } from '../store/view-configs';
9
- import { getColorFunctionRangeFromPreset } from '../utils/vtk-helpers';
10
- import { useVolumeThumbnailing } from '../composables/useVolumeThumbnailing';
11
-
12
- const THUMBNAIL_SIZE = 80;
13
- const TARGET_VIEW_ID = '3D';
14
-
15
- export default defineComponent({
16
- name: 'VolumePresets',
17
- components: {
18
- ItemGroup,
19
- GroupableItem,
20
- },
21
- setup() {
22
- const viewConfigStore = useViewConfigStore();
23
-
24
- const { currentImageID, currentImageData } = useCurrentImage();
25
-
26
- const volumeColorConfig = viewConfigStore.getComputedVolumeColorConfig(
27
- TARGET_VIEW_ID,
28
- currentImageID
29
- );
30
-
31
- watch(volumeColorConfig, () => {
32
- const imageID = currentImageID.value;
33
- if (imageID && !volumeColorConfig.value) {
34
- // creates a default color config
35
- viewConfigStore.updateVolumeColorConfig(TARGET_VIEW_ID, imageID, {});
36
- }
37
- });
38
-
39
- const colorTransferFunctionRef = computed(
40
- () => volumeColorConfig.value?.transferFunction
41
- );
42
-
43
- const { currentThumbnails } = useVolumeThumbnailing(THUMBNAIL_SIZE);
44
-
45
- // --- selection and updates --- //
46
-
47
- const selectedPreset = computed(
48
- () => colorTransferFunctionRef.value?.preset || null
49
- );
50
- const hasCurrentImage = computed(() => !!currentImageData.value);
51
-
52
- // the data range, if any
53
- const imageDataRange = computed((): [number, number] => {
54
- const image = currentImageData.value;
55
- if (image) {
56
- return image.getPointData().getScalars().getRange();
57
- }
58
- return [0, 1];
59
- });
60
- const effectiveMappingRange = computed(
61
- () =>
62
- getColorFunctionRangeFromPreset(selectedPreset.value || '') ||
63
- imageDataRange.value
64
- );
65
-
66
- const selectPreset = (name: string) => {
67
- if (!currentImageID.value) return;
68
- viewConfigStore.setVolumeColorPreset(
69
- TARGET_VIEW_ID,
70
- currentImageID.value,
71
- name
72
- );
73
- };
74
-
75
- const rgbPoints = computed(
76
- () =>
77
- vtkColorMaps.getPresetByName(colorTransferFunctionRef.value!.preset)
78
- ?.RGBPoints
79
- );
80
-
81
- const updateColorMappingRange = (range: [number, number]) => {
82
- const { mappingRange } = colorTransferFunctionRef.value ?? {};
83
- // guard against infinite loops
84
- if (
85
- currentImageID.value &&
86
- mappingRange &&
87
- (Math.abs(range[0] - mappingRange[0]) > 1e-6 ||
88
- Math.abs(range[1] - mappingRange[1]) > 1e-6)
89
- ) {
90
- viewConfigStore.updateVolumeColorTransferFunction(
91
- TARGET_VIEW_ID,
92
- currentImageID.value,
93
- {
94
- mappingRange: range,
95
- }
96
- );
97
- }
98
- };
99
-
100
- return {
101
- thumbnails: currentThumbnails,
102
- hasCurrentImage,
103
- preset: selectedPreset,
104
- fullMappingRange: effectiveMappingRange,
105
- mappingRange: computed(
106
- () => colorTransferFunctionRef.value!.mappingRange
107
- ),
108
- presetList: PresetNameList,
109
- size: THUMBNAIL_SIZE,
110
- rgbPoints,
111
- selectPreset,
112
- updateColorMappingRange,
113
- };
114
- },
115
- });
116
- </script>
117
-
118
- <template>
119
- <div class="overflow-x-visible mx-2">
120
- <item-group class="container" :value="preset" @change="selectPreset">
121
- <v-row no-gutters justify="center">
122
- <groupable-item
123
- v-for="preset in presetList"
124
- :key="preset"
125
- v-slot="{ active, select }"
126
- :value="preset"
127
- >
128
- <v-col
129
- cols="4"
130
- :class="{
131
- 'thumbnail-container': true,
132
- blue: active,
133
- }"
134
- @click="select"
135
- >
136
- <v-img :src="thumbnails[preset] || ''" contain aspect-ratio="1">
137
- <v-overlay
138
- absolute
139
- :value="true"
140
- opacity="0.3"
141
- class="thumbnail-overlay"
142
- >
143
- {{ preset.replace(/-/g, ' ') }}
144
- </v-overlay>
145
- </v-img>
146
- </v-col>
147
- </groupable-item>
148
- </v-row>
149
- </item-group>
150
- </div>
151
- </template>
152
-
153
- <style scoped>
154
- .thumbnail-container {
155
- cursor: pointer;
156
- padding: 6px !important;
157
- }
158
-
159
- .thumbnail-overlay {
160
- top: 70%;
161
- height: 30%;
162
- font-size: 0.75em;
163
- text-align: center;
164
- }
165
- </style>
@@ -1,171 +0,0 @@
1
- <script lang="ts">
2
- import { computed, defineComponent, ref, watch } from '@vue/composition-api';
3
- import { useCurrentImage } from '../composables/useCurrentImage';
4
- import { useViewConfigStore } from '../store/view-configs';
5
- import { CVRConfig } from '../types/views';
6
-
7
- const TARGET_VIEW_ID = '3D';
8
-
9
- const LIGHTING_MODELS = {
10
- standard: 'Standard',
11
- hybrid: 'Hybrid',
12
- lao: 'Ambient Occlusion',
13
- };
14
-
15
- export default defineComponent({
16
- name: 'VolumeRendering',
17
- setup() {
18
- const viewConfigStore = useViewConfigStore();
19
-
20
- const { currentImageID } = useCurrentImage();
21
-
22
- const volumeColorConfig = viewConfigStore.getComputedVolumeColorConfig(
23
- TARGET_VIEW_ID,
24
- currentImageID
25
- );
26
-
27
- watch(volumeColorConfig, () => {
28
- const imageID = currentImageID.value;
29
- if (imageID && !volumeColorConfig.value) {
30
- // creates a default color config
31
- viewConfigStore.updateVolumeColorConfig(TARGET_VIEW_ID, imageID, {});
32
- }
33
- });
34
-
35
- // --- CVR --- //
36
-
37
- const cvrParams = computed(() => volumeColorConfig.value?.cvr);
38
-
39
- const setCVRParam = (key: keyof CVRConfig, value: any) => {
40
- if (!currentImageID.value) return;
41
- viewConfigStore.updateVolumeCVRParameters(
42
- TARGET_VIEW_ID,
43
- currentImageID.value,
44
- {
45
- [key]: value,
46
- }
47
- );
48
- };
49
-
50
- const laoEnabled = computed(
51
- () => !!cvrParams.value?.useLocalAmbientOcclusion
52
- );
53
- const vsbEnabled = computed(
54
- () => !!cvrParams.value?.useVolumetricScatteringBlending
55
- );
56
-
57
- const lightingModel = ref(2); // LAO is default
58
- const selectLightingMode = (buttonIdx: number) => {
59
- if (buttonIdx === 0) {
60
- setCVRParam('useVolumetricScatteringBlending', false);
61
- setCVRParam('useLocalAmbientOcclusion', false);
62
- } else if (buttonIdx === 1) {
63
- setCVRParam('useVolumetricScatteringBlending', true);
64
- setCVRParam('useLocalAmbientOcclusion', false);
65
- } else if (buttonIdx === 2) {
66
- setCVRParam('useVolumetricScatteringBlending', false);
67
- setCVRParam('useLocalAmbientOcclusion', true);
68
- }
69
- };
70
-
71
- return {
72
- cvrParams,
73
- laoEnabled,
74
- vsbEnabled,
75
- setCVRParam,
76
- LIGHTING_MODELS,
77
- selectLightingMode,
78
- lightingModel,
79
- };
80
- },
81
- });
82
- </script>
83
-
84
- <template>
85
- <div class="mx-2">
86
- <div class="mt-4" ref="editorContainerRef">
87
- <div ref="pwfEditorRef" />
88
- </div>
89
- <div v-if="!!cvrParams">
90
- <v-slider
91
- label="Ambient"
92
- min="0"
93
- max="1"
94
- step="0.1"
95
- dense
96
- hide-details
97
- thumb-label
98
- :value="cvrParams.ambient"
99
- @change="setCVRParam('ambient', $event)"
100
- />
101
- <v-slider
102
- label="Diffuse"
103
- min="0"
104
- max="2"
105
- step="0.1"
106
- dense
107
- hide-details
108
- thumb-label
109
- :value="cvrParams.diffuse"
110
- @change="setCVRParam('diffuse', $event)"
111
- />
112
- <v-switch
113
- label="Light follows camera"
114
- dense
115
- hide-details
116
- :input-value="cvrParams.lightFollowsCamera"
117
- @change="setCVRParam('lightFollowsCamera', !!$event)"
118
- />
119
- <v-divider class="my-8" />
120
-
121
- <v-row class="my-4">
122
- <v-btn-toggle
123
- v-model="lightingModel"
124
- @change="selectLightingMode"
125
- mandatory
126
- >
127
- <v-btn v-for="model in Object.values(LIGHTING_MODELS)" :key="model">
128
- {{ model }}
129
- </v-btn>
130
- </v-btn-toggle>
131
- </v-row>
132
-
133
- <v-slider
134
- label="Scatter Blending"
135
- min="0"
136
- max="1"
137
- step="0.05"
138
- dense
139
- hide-details
140
- thumb-label
141
- v-if="vsbEnabled"
142
- :value="cvrParams.volumetricScatteringBlending"
143
- @change="setCVRParam('volumetricScatteringBlending', $event)"
144
- />
145
- <v-slider
146
- label="LAO Kernel Size"
147
- min="2"
148
- max="10"
149
- step="1"
150
- dense
151
- hide-details
152
- thumb-label
153
- v-if="laoEnabled"
154
- :value="cvrParams.laoKernelSize"
155
- @change="setCVRParam('laoKernelSize', $event)"
156
- />
157
- <v-slider
158
- label="LAO Kernel Radius"
159
- :min="cvrParams.laoKernelSize * 2"
160
- :max="cvrParams.laoKernelSize * 2 + 10"
161
- step="1"
162
- dense
163
- hide-details
164
- thumb-label
165
- v-if="laoEnabled"
166
- :value="cvrParams.laoKernelRadius"
167
- @change="setCVRParam('laoKernelRadius', $event)"
168
- />
169
- </div>
170
- </div>
171
- </template>