larvitar 1.2.0 → 1.2.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 (190) hide show
  1. package/.github/workflows/build-docs.yml +1 -1
  2. package/.github/workflows/deploy.yml +4 -4
  3. package/README.md +3 -3
  4. package/modules/vuex/larvitar.js +1 -0
  5. package/package.json +1 -1
  6. package/docs/documentation/Mixins.polygonSegmentationMixin%20-%20segmentation%20operations%20for%20polyline.html +0 -171
  7. package/docs/documentation/Tools.Annotation.ContoursTool.html +0 -218
  8. package/docs/documentation/Tools.Annotation.DiameterTool.html +0 -219
  9. package/docs/documentation/Tools.Annotation.SeedsTool.html +0 -214
  10. package/docs/documentation/Tools.Brush.BrushTool.html +0 -218
  11. package/docs/documentation/Tools.Brush.ThresholdsBrushTool.html +0 -218
  12. package/docs/documentation/Tools.PolylineScissorsTool.html +0 -218
  13. package/docs/documentation/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  14. package/docs/documentation/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  15. package/docs/documentation/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  16. package/docs/documentation/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  17. package/docs/documentation/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  18. package/docs/documentation/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  19. package/docs/documentation/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  20. package/docs/documentation/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  21. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  22. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
  23. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  24. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  25. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  26. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  27. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
  28. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  29. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  30. package/docs/documentation/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  31. package/docs/documentation/global.html +0 -1303
  32. package/docs/documentation/imageAnonymization.js.html +0 -245
  33. package/docs/documentation/imageColormaps.js.html +0 -283
  34. package/docs/documentation/imageContours.js.html +0 -278
  35. package/docs/documentation/imageIo.js.html +0 -291
  36. package/docs/documentation/imageLayers.js.html +0 -188
  37. package/docs/documentation/imageLoading.js.html +0 -297
  38. package/docs/documentation/imageParsing.js.html +0 -385
  39. package/docs/documentation/imagePresets.js.html +0 -207
  40. package/docs/documentation/imageRendering.js.html +0 -849
  41. package/docs/documentation/imageReslice.js.html +0 -162
  42. package/docs/documentation/imageStore.js.html +0 -360
  43. package/docs/documentation/imageTools.js.html +0 -784
  44. package/docs/documentation/imageUtils.js.html +0 -1609
  45. package/docs/documentation/image_colormaps.js.html +0 -283
  46. package/docs/documentation/image_contours.js.html +0 -279
  47. package/docs/documentation/image_io.js.html +0 -288
  48. package/docs/documentation/image_layers.js.html +0 -188
  49. package/docs/documentation/image_loading.js.html +0 -294
  50. package/docs/documentation/image_parsing.js.html +0 -391
  51. package/docs/documentation/image_presets.js.html +0 -207
  52. package/docs/documentation/image_rendering.js.html +0 -845
  53. package/docs/documentation/image_reslice.js.html +0 -164
  54. package/docs/documentation/image_store.js.html +0 -359
  55. package/docs/documentation/image_tools.js.html +0 -792
  56. package/docs/documentation/image_utils.js.html +0 -1609
  57. package/docs/documentation/index.html +0 -175
  58. package/docs/documentation/loaders_commonLoader.js.html +0 -306
  59. package/docs/documentation/loaders_dicomLoader.js.html +0 -130
  60. package/docs/documentation/loaders_fileLoader.js.html +0 -155
  61. package/docs/documentation/loaders_multiframeLoader.js.html +0 -443
  62. package/docs/documentation/loaders_niftiLoader.js.html +0 -150
  63. package/docs/documentation/loaders_nrrdLoader.js.html +0 -545
  64. package/docs/documentation/loaders_resliceLoader.js.html +0 -258
  65. package/docs/documentation/module-imaging_contours.html +0 -954
  66. package/docs/documentation/module-imaging_imageAnonymization.html +0 -544
  67. package/docs/documentation/module-imaging_imageColormaps.html +0 -1012
  68. package/docs/documentation/module-imaging_imageContours.html +0 -954
  69. package/docs/documentation/module-imaging_imageIo.html +0 -1057
  70. package/docs/documentation/module-imaging_imageLayers.html +0 -904
  71. package/docs/documentation/module-imaging_imageLoading.html +0 -1301
  72. package/docs/documentation/module-imaging_imageParsing.html +0 -1356
  73. package/docs/documentation/module-imaging_imagePresets.html +0 -679
  74. package/docs/documentation/module-imaging_imageRendering.html +0 -3223
  75. package/docs/documentation/module-imaging_imageReslice.html +0 -413
  76. package/docs/documentation/module-imaging_imageStore-Larvitar_Store.html +0 -284
  77. package/docs/documentation/module-imaging_imageStore.html +0 -1560
  78. package/docs/documentation/module-imaging_imageTools.html +0 -3617
  79. package/docs/documentation/module-imaging_imageUtils.html +0 -7253
  80. package/docs/documentation/module-imaging_io.html +0 -1057
  81. package/docs/documentation/module-imaging_layers.html +0 -904
  82. package/docs/documentation/module-imaging_loading.html +0 -1301
  83. package/docs/documentation/module-imaging_parsing.html +0 -1375
  84. package/docs/documentation/module-imaging_presets.html +0 -679
  85. package/docs/documentation/module-imaging_rendering.html +0 -8094
  86. package/docs/documentation/module-imaging_reslice.html +0 -411
  87. package/docs/documentation/module-imaging_store-Larvitar_Store.html +0 -284
  88. package/docs/documentation/module-imaging_store.html +0 -1537
  89. package/docs/documentation/module-imaging_strategies_eraseFreehand.html +0 -708
  90. package/docs/documentation/module-imaging_strategies_fillFreehand.html +0 -708
  91. package/docs/documentation/module-imaging_tools.html +0 -3617
  92. package/docs/documentation/module-imaging_tools_custom_contourTool.html +0 -207
  93. package/docs/documentation/module-imaging_tools_custom_diameterTool.html +0 -205
  94. package/docs/documentation/module-imaging_tools_custom_editMaskTool.html +0 -205
  95. package/docs/documentation/module-imaging_tools_custom_polygonScissorsTool.html +0 -203
  96. package/docs/documentation/module-imaging_tools_custom_thresholdBrushTool.html +0 -684
  97. package/docs/documentation/module-imaging_tools_default.html +0 -205
  98. package/docs/documentation/module-imaging_tools_interaction.html +0 -530
  99. package/docs/documentation/module-imaging_tools_io.html +0 -832
  100. package/docs/documentation/module-imaging_tools_main.html +0 -2028
  101. package/docs/documentation/module-imaging_tools_polygonSegmentationMixin.html +0 -567
  102. package/docs/documentation/module-imaging_tools_segmentation.html +0 -3586
  103. package/docs/documentation/module-imaging_tools_state.html +0 -494
  104. package/docs/documentation/module-imaging_utils.html +0 -7253
  105. package/docs/documentation/module-loaders_commonLoader.html +0 -1313
  106. package/docs/documentation/module-loaders_dicomLoader.html +0 -522
  107. package/docs/documentation/module-loaders_fileLoader.html +0 -593
  108. package/docs/documentation/module-loaders_multiframeLoader.html +0 -1169
  109. package/docs/documentation/module-loaders_niftiLoader.html +0 -565
  110. package/docs/documentation/module-loaders_nrrdLoader.html +0 -1459
  111. package/docs/documentation/module-loaders_resliceLoader.html +0 -590
  112. package/docs/documentation/module-monitors_memory.html +0 -980
  113. package/docs/documentation/module-tools_default.html +0 -740
  114. package/docs/documentation/module.exports_module.exports.html +0 -203
  115. package/docs/documentation/monitors_memory.js.html +0 -189
  116. package/docs/documentation/parsers_nrrd.js.html +0 -569
  117. package/docs/documentation/scripts/collapse.js +0 -20
  118. package/docs/documentation/scripts/linenumber.js +0 -25
  119. package/docs/documentation/scripts/nav.js +0 -12
  120. package/docs/documentation/scripts/polyfill.js +0 -4
  121. package/docs/documentation/scripts/prettify/Apache-License-2.0.txt +0 -202
  122. package/docs/documentation/scripts/prettify/lang-css.js +0 -2
  123. package/docs/documentation/scripts/prettify/prettify.js +0 -28
  124. package/docs/documentation/scripts/search.js +0 -83
  125. package/docs/documentation/styles/jsdoc.css +0 -765
  126. package/docs/documentation/styles/prettify.css +0 -80
  127. package/docs/documentation/tools_contourTool.js.html +0 -1963
  128. package/docs/documentation/tools_custom_contourTool.js.html +0 -1968
  129. package/docs/documentation/tools_custom_diameterTool.js.html +0 -225
  130. package/docs/documentation/tools_custom_editMaskTool.js.html +0 -225
  131. package/docs/documentation/tools_custom_polylineScissorsTool.js.html +0 -143
  132. package/docs/documentation/tools_custom_thresholdsBrushTool.js.html +0 -245
  133. package/docs/documentation/tools_default.js.html +0 -576
  134. package/docs/documentation/tools_diameterTool.js.html +0 -219
  135. package/docs/documentation/tools_editMaskTool.js.html +0 -219
  136. package/docs/documentation/tools_interaction.js.html +0 -258
  137. package/docs/documentation/tools_io.js.html +0 -297
  138. package/docs/documentation/tools_main.js.html +0 -443
  139. package/docs/documentation/tools_polygonSegmentationMixin.js.html +0 -329
  140. package/docs/documentation/tools_polylineScissorsTool.js.html +0 -136
  141. package/docs/documentation/tools_seedTool.js.html +0 -423
  142. package/docs/documentation/tools_segmentation.js.html +0 -558
  143. package/docs/documentation/tools_state.js.html +0 -163
  144. package/docs/documentation/tools_strategies_eraseFreehand.js.html +0 -160
  145. package/docs/documentation/tools_strategies_fillFreehand.js.html +0 -163
  146. package/docs/documentation/tools_thresholdsBrushTool.js.html +0 -239
  147. package/docs/documentation/tools_tools.default.js.html +0 -569
  148. package/docs/documentation/tools_tools.interaction.js.html +0 -251
  149. package/docs/documentation/tools_tools.io.js.html +0 -288
  150. package/docs/documentation/tools_tools.main.js.html +0 -442
  151. package/docs/documentation/tools_tools.segmentation.js.html +0 -445
  152. package/docs/documentation/tools_tools.state.js.html +0 -157
  153. package/docs/examples/base.html +0 -170
  154. package/docs/examples/colorMaps.html +0 -181
  155. package/docs/examples/defaultTools.html +0 -246
  156. package/docs/examples/demo/anon1 +0 -0
  157. package/docs/examples/demo/anon10 +0 -0
  158. package/docs/examples/demo/anon11 +0 -0
  159. package/docs/examples/demo/anon12 +0 -0
  160. package/docs/examples/demo/anon13 +0 -0
  161. package/docs/examples/demo/anon14 +0 -0
  162. package/docs/examples/demo/anon15 +0 -0
  163. package/docs/examples/demo/anon16 +0 -0
  164. package/docs/examples/demo/anon17 +0 -0
  165. package/docs/examples/demo/anon18 +0 -0
  166. package/docs/examples/demo/anon19 +0 -0
  167. package/docs/examples/demo/anon2 +0 -0
  168. package/docs/examples/demo/anon20 +0 -0
  169. package/docs/examples/demo/anon21 +0 -0
  170. package/docs/examples/demo/anon22 +0 -0
  171. package/docs/examples/demo/anon23 +0 -0
  172. package/docs/examples/demo/anon24 +0 -0
  173. package/docs/examples/demo/anon3 +0 -0
  174. package/docs/examples/demo/anon4 +0 -0
  175. package/docs/examples/demo/anon5 +0 -0
  176. package/docs/examples/demo/anon6 +0 -0
  177. package/docs/examples/demo/anon7 +0 -0
  178. package/docs/examples/demo/anon8 +0 -0
  179. package/docs/examples/demo/anon9 +0 -0
  180. package/docs/examples/demo/example.nrrd +0 -0
  181. package/docs/examples/demo/segmentation.nrrd +0 -0
  182. package/docs/examples/demo/xa_integris.dcm +0 -0
  183. package/docs/examples/index.html +0 -129
  184. package/docs/examples/larvitar.js +0 -108623
  185. package/docs/examples/layers.html +0 -250
  186. package/docs/examples/masks.html +0 -273
  187. package/docs/examples/multiframe.html +0 -200
  188. package/docs/examples/nrrd.html +0 -96
  189. package/docs/examples/reslice.html +0 -174
  190. package/docs/index.html +0 -92
@@ -1,391 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
-
5
- <meta charset="utf-8">
6
- <title>image_parsing.js - Larvitar</title>
7
-
8
- <meta name="description" content="Dicom Image Toolkit for CornestoneJS" />
9
-
10
- <meta name="keywords" content="imaging, dataviz, medical, cornerstone" />
11
- <meta name="keyword" content="imaging, dataviz, medical, cornerstone" />
12
-
13
-
14
-
15
- <script src="scripts/prettify/prettify.js"></script>
16
- <script src="scripts/prettify/lang-css.js"></script>
17
- <!--[if lt IE 9]>
18
- <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
19
- <![endif]-->
20
- <link type="text/css" rel="stylesheet" href="styles/prettify.css">
21
- <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
22
- <script src="scripts/nav.js" defer></script>
23
-
24
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
25
- </head>
26
- <body>
27
-
28
- <input type="checkbox" id="nav-trigger" class="nav-trigger" />
29
- <label for="nav-trigger" class="navicon-button x">
30
- <div class="navicon"></div>
31
- </label>
32
-
33
- <label for="nav-trigger" class="overlay"></label>
34
-
35
- <nav >
36
-
37
- <input type="text" id="nav-search" placeholder="Search" />
38
-
39
-
40
- <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/dvisionlab/Larvitar" target="_blank" class="menu-item" id="repository" >Github repo</a></h2><h3>Classes</h3><ul><li><a href="module.exports_module.exports.html">module.exports#module.exports</a></li><li><a href="module-imaging_store-Larvitar_Store.html">imaging/store~Larvitar_Store</a></li><li><a href="Tools.Annotation.ContoursTool.html">Tools.Annotation.ContoursTool</a></li><li><a href="Tools.Annotation.DiameterTool.html">Tools.Annotation.DiameterTool</a></li><li><a href="Tools.Brush.BrushTool.html">Tools.Brush.BrushTool</a></li><li><a href="Tools.Brush.ThresholdsBrushTool.html">Tools.Brush.ThresholdsBrushTool</a></li><li><a href="Tools.PolylineScissorsTool.html">Tools.PolylineScissorsTool</a></li></ul><h3>Modules</h3><ul><li><a href="module-imaging_anonymization.html">imaging/anonymization</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_anonymization.html#anonymize#~anonymize">anonymize</a></li><li data-type='method' style='display: none;'><a href="module-imaging_anonymization.html#encrypt#~encrypt">encrypt</a></li></ul></li><li><a href="module-imaging_contours.html">imaging/contours</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_contours.html#extractSlicePoints#extractSlicePoints">extractSlicePoints</a></li><li data-type='method' style='display: none;'><a href="module-imaging_contours.html#populateContoursObject#populateContoursObject">populateContoursObject</a></li><li data-type='method' style='display: none;'><a href="module-imaging_contours.html#parseContours#~parseContours">parseContours</a></li></ul></li><li><a href="module-imaging_io.html">imaging/io</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_io.html#buildData#~buildData">buildData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_io.html#buildDataAsync#~buildDataAsync">buildDataAsync</a></li><li data-type='method' style='display: none;'><a href="module-imaging_io.html#buildHeader#~buildHeader">buildHeader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_io.html#getCachedPixelData#~getCachedPixelData">getCachedPixelData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_io.html#importNRRDImage#~importNRRDImage">importNRRDImage</a></li></ul></li><li><a href="module-imaging_layers.html">imaging/layers</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_layers.html#getActiveLayer#getActiveLayer">getActiveLayer</a></li><li data-type='method' style='display: none;'><a href="module-imaging_layers.html#setActiveLayer#setActiveLayer">setActiveLayer</a></li><li data-type='method' style='display: none;'><a href="module-imaging_layers.html#updateLayer#updateLayer">updateLayer</a></li><li data-type='method' style='display: none;'><a href="module-imaging_layers.html#buildLayers#~buildLayers">buildLayers</a></li></ul></li><li><a href="module-imaging_loading.html">imaging/loading</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#initializeFileImageLoader#initializeFileImageLoader">initializeFileImageLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#initializeImageLoader#initializeImageLoader">initializeImageLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#initializeWebImageLoader#initializeWebImageLoader">initializeWebImageLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#registerMultiFrameImageLoader#registerMultiFrameImageLoader">registerMultiFrameImageLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#registerNRRDImageLoader#registerNRRDImageLoader">registerNRRDImageLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#registerResliceLoader#registerResliceLoader">registerResliceLoader</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#updateLoadedStack#updateLoadedStack">updateLoadedStack</a></li><li data-type='method' style='display: none;'><a href="module-imaging_loading.html#isNewInstance#~isNewInstance">isNewInstance</a></li></ul></li><li><a href="module-imaging_parsing.html">imaging/parsing</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#clearImageParsing#clearImageParsing">clearImageParsing</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#dumpDataSet#dumpDataSet">dumpDataSet</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#readFile#readFile">readFile</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#readFiles#readFiles">readFiles</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#dumpFile#~dumpFile">dumpFile</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#dumpFiles#~dumpFiles">dumpFiles</a></li><li data-type='method' style='display: none;'><a href="module-imaging_parsing.html#parseNextFile#~parseNextFile">parseNextFile</a></li></ul></li><li><a href="module-imaging_presets.html">imaging/presets</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_presets.html#getImagePresets#getImagePresets">getImagePresets</a></li><li data-type='method' style='display: none;'><a href="module-imaging_presets.html#setImageCustomPreset#setImageCustomPreset">setImageCustomPreset</a></li><li data-type='method' style='display: none;'><a href="module-imaging_presets.html#setImagePreset#setImagePreset">setImagePreset</a></li></ul></li><li><a href="module-imaging_rendering.html">imaging/rendering</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#HSVToRGB#.HSVToRGB">HSVToRGB</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#addColorMap#addColorMap">addColorMap</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#applyColorMap#applyColorMap">applyColorMap</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#clearImageCache#clearImageCache">clearImageCache</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#disableViewport#disableViewport">disableViewport</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#fillPixelData#fillPixelData">fillPixelData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#flipImageHorizontal#flipImageHorizontal">flipImageHorizontal</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#flipImageVertical#flipImageVertical">flipImageVertical</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#getColormapsList#getColormapsList">getColormapsList</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#getSeriesData#getSeriesData">getSeriesData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#invertImage#invertImage">invertImage</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#loadAndCacheImages#loadAndCacheImages">loadAndCacheImages</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#renderImage#renderImage">renderImage</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#renderWebImage#renderWebImage">renderWebImage</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#renderWebImage#renderWebImage">renderWebImage</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#resetViewports#resetViewports">resetViewports</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#resizeViewport#resizeViewport">resizeViewport</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#rotateImageLeft#rotateImageLeft">rotateImageLeft</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#rotateImageRight#rotateImageRight">rotateImageRight</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#storeViewportData#storeViewportData">storeViewportData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#unloadViewport#unloadViewport">unloadViewport</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#updateImage#updateImage">updateImage</a></li><li data-type='method' style='display: none;'><a href="module-imaging_rendering.html#updateViewportData#updateViewportData">updateViewportData</a></li></ul></li><li></li><li><a href="module-imaging_reslice.html">imaging/reslice</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_reslice.html#resliceSeries#resliceSeries">resliceSeries</a></li></ul></li><li><a href="module-imaging_store.html">imaging/store</a><ul class='members'><li data-type='member' style='display: none;'><a href="module-imaging_store.html#.larvitar_store">larvitar_store</a></li></ul><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_store.html#initLarvitarStore#.initLarvitarStore">initLarvitarStore</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#addSeriesIds#~addSeriesIds">addSeriesIds</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#addViewport#~addViewport">addViewport</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#deleteViewport#~deleteViewport">deleteViewport</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#disableVuex#~disableVuex">disableVuex</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#enableVuex#~enableVuex">enableVuex</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#get#~get">get</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#removeSeriesIds#~removeSeriesIds">removeSeriesIds</a></li><li data-type='method' style='display: none;'><a href="module-imaging_store.html#set#~set">set</a></li></ul></li><li><a href="module-imaging_tools.html">imaging/tools</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addContoursTool#~addContoursTool">addContoursTool</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addDefaultTools#~addDefaultTools">addDefaultTools</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addDiameterTool#~addDiameterTool">addDiameterTool</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addMaskEditingTool#~addMaskEditingTool">addMaskEditingTool</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addSeedsTool#~addSeedsTool">addSeedsTool</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addStackStateToElement#~addStackStateToElement">addStackStateToElement</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#addToolStateSingleSlice#~addToolStateSingleSlice">addToolStateSingleSlice</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#clearCornerstoneElements#~clearCornerstoneElements">clearCornerstoneElements</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#clearMeasurements#~clearMeasurements">clearMeasurements</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#clearToolStateByName#~clearToolStateByName">clearToolStateByName</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#getCurrentMaskData#~getCurrentMaskData">getCurrentMaskData</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#getToolState#~getToolState">getToolState</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#isToolMissing#~isToolMissing">isToolMissing</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#setSegmentationConfig#~setSegmentationConfig">setSegmentationConfig</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#setToolActive#~setToolActive">setToolActive</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#setToolActive#~setToolActive">setToolActive</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#setToolEnabled#~setToolEnabled">setToolEnabled</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#setToolPassive#~setToolPassive">setToolPassive</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#syncToolStack#~syncToolStack">syncToolStack</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#updateDiameterTool#~updateDiameterTool">updateDiameterTool</a></li><li data-type='method' style='display: none;'><a href="module-imaging_tools.html#updateStackToolState#~updateStackToolState">updateStackToolState</a></li></ul></li><li><a href="module-imaging_utils.html">imaging/utils</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#formatDate#formatDate">formatDate</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#formatDateTime#formatDateTime">formatDateTime</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getCmprMetadata#getCmprMetadata">getCmprMetadata</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getDICOMTag#getDICOMTag">getDICOMTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getDICOMTagCode#getDICOMTagCode">getDICOMTagCode</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getDistanceBetweenSlices#getDistanceBetweenSlices">getDistanceBetweenSlices</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getMaxPixelValue#getMaxPixelValue">getMaxPixelValue</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getMeanValue#getMeanValue">getMeanValue</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getMinPixelValue#getMinPixelValue">getMinPixelValue</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getNormalOrientation#getNormalOrientation">getNormalOrientation</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getPixelRepresentation#getPixelRepresentation">getPixelRepresentation</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getPixelTypedArray#getPixelTypedArray">getPixelTypedArray</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getReslicedIOP#getReslicedIOP">getReslicedIOP</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getReslicedIPP#getReslicedIPP">getReslicedIPP</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getReslicedMetadata#getReslicedMetadata">getReslicedMetadata</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getReslicedPixeldata#getReslicedPixeldata">getReslicedPixeldata</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getReslicedSliceLocation#getReslicedSliceLocation">getReslicedSliceLocation</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getSortedStack#getSortedStack">getSortedStack</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getSortedUIDs#getSortedUIDs">getSortedUIDs</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getTagValue#getTagValue">getTagValue</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getTypedArray#getTypedArray">getTypedArray</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#getTypedArrayFromDataType#getTypedArrayFromDataType">getTypedArrayFromDataType</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#isElement#isElement">isElement</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#isNegativeSign#isNegativeSign">isNegativeSign</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#isStringVr#isStringVr">isStringVr</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#isValidDate#isValidDate">isValidDate</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseAgeTag#parseAgeTag">parseAgeTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseDateTag#parseDateTag">parseDateTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseDateTimeTag#parseDateTimeTag">parseDateTimeTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseDICOMFileIDTag#parseDICOMFileIDTag">parseDICOMFileIDTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parsePatientNameTag#parsePatientNameTag">parsePatientNameTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseTag#parseTag">parseTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#parseTimeTag#parseTimeTag">parseTimeTag</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#permuteSignedArrays#permuteSignedArrays">permuteSignedArrays</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#permuteValues#permuteValues">permuteValues</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#rand#rand">rand</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#randomId#randomId">randomId</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#sortStackCallback#sortStackCallback">sortStackCallback</a></li><li data-type='method' style='display: none;'><a href="module-imaging_utils.html#spacingArray#spacingArray">spacingArray</a></li></ul></li><li><a href="module-loaders_commonLoader.html">loaders/commonLoader</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#getImageFrame#getImageFrame">getImageFrame</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#getLarvitarImageTracker#getLarvitarImageTracker">getLarvitarImageTracker</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#getLarvitarManager#getLarvitarManager">getLarvitarManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#getSeriesDataFromLarvitarManager#getSeriesDataFromLarvitarManager">getSeriesDataFromLarvitarManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#populateLarvitarManager#populateLarvitarManager">populateLarvitarManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#removeSeriesFromLarvitarManager#removeSeriesFromLarvitarManager">removeSeriesFromLarvitarManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#resetLarvitarManager#resetLarvitarManager">resetLarvitarManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_commonLoader.html#updateLarvitarManager#updateLarvitarManager">updateLarvitarManager</a></li></ul></li><li><a href="module-loaders_dicomLoader.html">loaders/dicomLoader</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-loaders_dicomLoader.html#cacheImages#cacheImages">cacheImages</a></li><li data-type='method' style='display: none;'><a href="module-loaders_dicomLoader.html#getDicomImageId#getDicomImageId">getDicomImageId</a></li></ul></li><li><a href="module-loaders_fileLoader.html">loaders/fileLoader</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-loaders_fileLoader.html#getFileImageId#getFileImageId">getFileImageId</a></li><li data-type='method' style='display: none;'><a href="module-loaders_fileLoader.html#populateFileManager#populateFileManager">populateFileManager</a></li><li data-type='method' style='display: none;'><a href="module-loaders_fileLoader.html#resetFileLoader#resetFileLoader">resetFileLoader</a></li><li data-type='method' style='display: none;'><a href="module-loaders_fileLoader.html#resetFileManager#resetFileManager">resetFileManager</a></li></ul></li><li><a href="module-loaders_nrrdLoader.html">loaders/nrrdLoader</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#buildNrrdImage#buildNrrdImage">buildNrrdImage</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#createCustomImage#createCustomImage">createCustomImage</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#getImageIdFromSlice#getImageIdFromSlice">getImageIdFromSlice</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#getNrrdImageId#getNrrdImageId">getNrrdImageId</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#getNrrdSerieDimensions#getNrrdSerieDimensions">getNrrdSerieDimensions</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#getSliceNumberFromImageId#getSliceNumberFromImageId">getSliceNumberFromImageId</a></li><li data-type='method' style='display: none;'><a href="module-loaders_nrrdLoader.html#loadNrrdImage#loadNrrdImage">loadNrrdImage</a></li></ul></li><li><a href="module-loaders_resliceLoader.html">loaders/resliceLoader</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-loaders_resliceLoader.html#createCustomImage#createCustomImage">createCustomImage</a></li><li data-type='method' style='display: none;'><a href="module-loaders_resliceLoader.html#loadReslicedImage#loadReslicedImage">loadReslicedImage</a></li></ul></li><li><a href="module-monitors_memory.html">monitors/memory</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#checkMemoryAllocation#checkMemoryAllocation">checkMemoryAllocation</a></li><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#checkMemorySupport#checkMemorySupport">checkMemorySupport</a></li><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#getAvailableMemory#getAvailableMemory">getAvailableMemory</a></li><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#getMB#getMB">getMB</a></li><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#getUsedMemory#getUsedMemory">getUsedMemory</a></li><li data-type='method' style='display: none;'><a href="module-monitors_memory.html#setAvailableMemory#setAvailableMemory">setAvailableMemory</a></li></ul></li><li><a href="module-tools_default.html">tools/default</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-tools_default.html#getDefaultToolsByType#~getDefaultToolsByType">getDefaultToolsByType</a></li><li data-type='method' style='display: none;'><a href="module-tools_default.html#setDefaultToolsProps#~setDefaultToolsProps">setDefaultToolsProps</a></li></ul></li></ul><h3>Events</h3><ul><li><a href="ContoursTool.html#event:_drawingDoubleTapClickCallback">ContoursTool#_drawingDoubleTapClickCallback</a></li><li><a href="ContoursTool.html#event:_drawingMouseDoubleClickCallback">ContoursTool#_drawingMouseDoubleClickCallback</a></li><li><a href="ContoursTool.html#event:_drawingMouseDownCallback">ContoursTool#_drawingMouseDownCallback</a></li><li><a href="ContoursTool.html#event:_drawingMouseDragCallback">ContoursTool#_drawingMouseDragCallback</a></li><li><a href="ContoursTool.html#event:_drawingMouseMoveCallback">ContoursTool#_drawingMouseMoveCallback</a></li><li><a href="ContoursTool.html#event:_drawingMouseUpCallback">ContoursTool#_drawingMouseUpCallback</a></li><li><a href="ContoursTool.html#event:_drawingTouchDragCallback">ContoursTool#_drawingTouchDragCallback</a></li><li><a href="ContoursTool.html#event:_drawingTouchStartCallback">ContoursTool#_drawingTouchStartCallback</a></li><li><a href="ContoursTool.html#event:_editMouseDragCallback">ContoursTool#_editMouseDragCallback</a></li><li><a href="ContoursTool.html#event:_editTouchDragCallback">ContoursTool#_editTouchDragCallback</a></li></ul><h3>Mixins</h3><ul><li><a href="Mixins.polygonSegmentationMixin%2520-%2520segmentation%2520operations%2520for%2520polyline.html">Mixins.polygonSegmentationMixin - segmentation operations for polyline</a></li></ul><h3>Global</h3><ul><li><a href="global.html#_checkIfDrawing">_checkIfDrawing</a></li><li><a href="global.html#_paint">_paint</a></li><li><a href="global.html#addDefaultTools">addDefaultTools</a></li><li><a href="global.html#addMouseKeyHandlers">addMouseKeyHandlers</a></li><li><a href="global.html#addSegmentationMask">addSegmentationMask</a></li><li><a href="global.html#addTool">addTool</a></li><li><a href="global.html#buildMultiFrameImage">buildMultiFrameImage</a></li><li><a href="global.html">clearMultiFrameCache</a></li><li><a href="global.html#clearSegmentationState">clearSegmentationState</a></li><li><a href="global.html#config">config</a></li><li><a href="global.html">createCustomImage</a></li><li><a href="global.html#csToolsCreateStack">csToolsCreateStack</a></li><li><a href="global.html#csToolsUpdateImageIndex">csToolsUpdateImageIndex</a></li><li><a href="global.html#deleteMask">deleteMask</a></li><li><a href="global.html#disableBrushTool">disableBrushTool</a></li><li><a href="global.html#download">download</a></li><li><a href="global.html#enableBrushTool">enableBrushTool</a></li><li><a href="global.html#eraseFreehand">eraseFreehand</a></li><li><a href="global.html#eraseInsideFreehand">eraseInsideFreehand</a></li><li><a href="global.html#eraseOutsideFreehand">eraseOutsideFreehand</a></li><li><a href="global.html#exportAnnotations">exportAnnotations</a></li><li><a href="global.html#extractToolInfo">extractToolInfo</a></li><li><a href="global.html#fillFreehand">fillFreehand</a></li><li><a href="global.html#fillInsideFreehand">fillInsideFreehand</a></li><li><a href="global.html#fillOutsideFreehand">fillOutsideFreehand</a></li><li><a href="global.html#forceRender">forceRender</a></li><li><a href="global.html#generateCSV">generateCSV</a></li><li><a href="global.html#generateLUT">generateLUT</a></li><li><a href="global.html#generateUniformLUT">generateUniformLUT</a></li><li><a href="global.html#getActiveLabelmapBuffer">getActiveLabelmapBuffer</a></li><li><a href="global.html#getCircleWithThreshold">getCircleWithThreshold</a></li><li><a href="global.html">getMultiFrameImageId</a></li><li><a href="global.html#HSVtoRGB">HSVtoRGB</a></li><li><a href="global.html#initializeCSTools">initializeCSTools</a></li><li><a href="global.html#initSegmentationModule">initSegmentationModule</a></li><li><a href="global.html#isDrawing">isDrawing</a></li><li><a href="global.html#isToolMissing">isToolMissing</a></li><li><a href="global.html#loadAnnotations">loadAnnotations</a></li><li><a href="global.html#loadMultiFrameImage">loadMultiFrameImage</a></li><li><a href="global.html#NRRD_TYPES_TO_TYPEDARRAY">NRRD_TYPES_TO_TYPEDARRAY</a></li><li><a href="global.html">parse</a></li><li><a href="global.html#redoLastStroke">redoLastStroke</a></li><li><a href="global.html#renderToolData">renderToolData</a></li><li><a href="global.html#restoreToolState">restoreToolState</a></li><li><a href="global.html#saveAnnotations">saveAnnotations</a></li><li><a href="global.html#saveToolState">saveToolState</a></li><li><a href="global.html#setActiveLabelmap">setActiveLabelmap</a></li><li><a href="global.html#setActiveLabelOpacity">setActiveLabelOpacity</a></li><li><a href="global.html#setActiveSegment">setActiveSegment</a></li><li><a href="global.html#setBrushProps">setBrushProps</a></li><li><a href="global.html#setInactiveLabelOpacity">setInactiveLabelOpacity</a></li><li><a href="global.html#setMaskProps">setMaskProps</a></li><li><a href="global.html">setPixelDataType</a></li><li><a href="global.html#setToolActive">setToolActive</a></li><li><a href="global.html#setToolDisabled">setToolDisabled</a></li><li><a href="global.html#setToolEnabled">setToolEnabled</a></li><li><a href="global.html#setToolPassive">setToolPassive</a></li><li><a href="global.html#setToolsStyle">setToolsStyle</a></li><li><a href="global.html#toggleContourMode">toggleContourMode</a></li><li><a href="global.html">toggleMouseHandlers</a></li><li><a href="global.html#tryUpdateImage">tryUpdateImage</a></li><li><a href="global.html#undoLastStroke">undoLastStroke</a></li></ul>
41
-
42
- </nav>
43
-
44
- <div id="main">
45
-
46
- <h1 class="page-title">image_parsing.js</h1>
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
- <section>
55
- <article>
56
- <pre class="prettyprint source linenums"><code>/** @module imaging/parsing
57
- * @desc This file provides functionalities for parsing DICOM image files
58
- */
59
-
60
- // external libraries
61
- import { parseDicom } from "dicom-parser";
62
- import { forEach, each, has, pick } from "lodash";
63
-
64
- // internal libraries
65
- import { getPixelRepresentation, randomId, parseTag } from "./image_utils.js";
66
- import { updateLoadedStack } from "./image_loading.js";
67
- import { checkMemoryAllocation } from "./monitors/memory.js";
68
-
69
- // global module variables
70
- var parsingQueueFlag = null; // flag to handle the queue
71
- var t0 = null; // t0 variable for timing debugging purpose
72
-
73
- /*
74
- * This module provides the following functions to be exported:
75
- * readFiles(fileList, callback)
76
- * readFile(file, callback)
77
- * dumpDataSet(dataSet, metadata, customFilter)
78
- * clearImageParsing(seriesStack)
79
- */
80
-
81
- /**
82
- * Reset series stack object and its internal data
83
- * @instance
84
- * @function clearImageParsing
85
- * @param {Object} seriesStack - Parsed series stack object
86
- */
87
- export const clearImageParsing = function (seriesStack) {
88
- each(seriesStack, function (stack) {
89
- each(stack.instances, function (instance) {
90
- if (instance.dataSet) {
91
- instance.dataSet.byteArray = null;
92
- }
93
- instance.dataSet = null;
94
- instance.file = null;
95
- instance.metadata = null;
96
- });
97
- });
98
- seriesStack = null;
99
- };
100
-
101
- /**
102
- * Read dicom files and return allSeriesStack object
103
- * @instance
104
- * @function readFiles
105
- * @param {Array} entries - List of file objects
106
- * @param {Function} callback - Will receive (imageObject, errorString) as args
107
- */
108
- export const readFiles = function (entries, callback) {
109
- let allSeriesStack = {};
110
- let parsingQueue = [];
111
- dumpFiles(entries, parsingQueue, allSeriesStack, callback);
112
- };
113
-
114
- /**
115
- * Read a single dicom file and return parsed object
116
- * @instance
117
- * @function readFile
118
- * @param {File} entry - File object
119
- * @param {Function} callback - Will receive (imageObject, errorString) as args
120
- */
121
- export const readFile = function (entry, callback) {
122
- dumpFile(entry, callback);
123
- };
124
-
125
- /* Internal module functions */
126
-
127
- /**
128
- * Dump metadata from dicom parser dataSet object
129
- * @instance
130
- * @function dumpDataSet
131
- * @param {Object} dataSet - dicom parser dataSet object
132
- * @param {Array} metadata - Initialized metadata object
133
- * @param {Array} customFilter - Optional filter: {tags:[], frameId: 0}
134
- */
135
- // This function iterates through dataSet recursively and adds new HTML strings
136
- // to the output array passed into it
137
- export const dumpDataSet = function (dataSet, metadata, customFilter) {
138
- // customFilter= {tags:[], frameId:xxx}
139
- // the dataSet.elements object contains properties for each element parsed. The name of the property
140
- // is based on the elements tag and looks like 'xGGGGEEEE' where GGGG is the group number and EEEE is the
141
- // element number both with lowercase hexadecimal letters. For example, the Series Description DICOM element 0008,103E would
142
- // be named 'x0008103e'. Here we iterate over each property (element) so we can build a string describing its
143
- // contents to add to the output array
144
- try {
145
- let elements =
146
- customFilter &amp;&amp; has(customFilter, "tags")
147
- ? pick(dataSet.elements, customFilter.tags)
148
- : dataSet.elements;
149
- for (let propertyName in elements) {
150
- let element = elements[propertyName];
151
- // Here we check for Sequence items and iterate over them if present. items will not be set in the
152
- // element object for elements that don't have SQ VR type. Note that implicit little endian
153
- // sequences will are currently not parsed.
154
- if (element.items) {
155
- // each item contains its own data set so we iterate over the items
156
- // and recursively call this function
157
- if (customFilter &amp;&amp; has(customFilter, "frameId")) {
158
- let item = element.items[customFilter.frameId];
159
- dumpDataSet(item.dataSet, metadata);
160
- } else {
161
- element.items.forEach(function (item) {
162
- dumpDataSet(item.dataSet, metadata);
163
- });
164
- }
165
- } else {
166
- let tagValue = parseTag(dataSet, propertyName, element);
167
- metadata[propertyName] = tagValue;
168
- }
169
- }
170
- } catch (err) {
171
- console.log(err);
172
- }
173
- };
174
-
175
- /**
176
- * Manage the parsing process waiting for the parsed object before proceeding with the next parse request
177
- * @inner
178
- * @function parseNextFile
179
- * @param {Array} parsingQueue - Array of queued files to be parsed
180
- * @param {Object} allSeriesStack - Series stack object to be populated
181
- * @param {Function} callback - Passed through
182
- */
183
- let parseNextFile = function (parsingQueue, allSeriesStack, callback) {
184
- // initialize t0 on first file of the queue
185
- if (
186
- Object.keys(allSeriesStack).length === 0 &amp;&amp;
187
- allSeriesStack.constructor === Object
188
- ) {
189
- t0 = performance.now();
190
- }
191
-
192
- if (!parsingQueueFlag || parsingQueue.length === 0) {
193
- if (parsingQueue.length === 0) {
194
- let t1 = performance.now();
195
- console.log(`Call to readFiles took ${t1 - t0} milliseconds.`);
196
- parsingQueueFlag = null;
197
- callback(allSeriesStack);
198
- }
199
- return;
200
- }
201
-
202
- parsingQueueFlag = false;
203
-
204
- // remove and return first item from queue
205
- let file = parsingQueue.shift();
206
-
207
- // Check if there is enough memory to dump the file
208
- if (checkMemoryAllocation(file.size) === false) {
209
- // do not parse the file and stop parsing
210
- clearImageParsing(allSeriesStack);
211
- let t1 = performance.now();
212
- console.log(`Call to readFiles took ${t1 - t0} milliseconds.`);
213
- parsingQueueFlag = null;
214
- file = null;
215
- callback(allSeriesStack, "Available memory is not enough");
216
- } else {
217
- // parse the file and wait for results
218
- dumpFile(file, function (seriesData, err) {
219
- if (parsingQueueFlag === null) {
220
- console.log("parsingQueueFlag is null");
221
- // parsing process has been stopped, but there could be a
222
- // dumpFile callback still working: prevent actions
223
- return;
224
- }
225
- if (err) {
226
- console.warn(err);
227
- parsingQueueFlag = true;
228
- parseNextFile(parsingQueue, allSeriesStack, callback);
229
- } else {
230
- // add file to cornerstoneWADOImageLoader file manager
231
- updateLoadedStack(seriesData, allSeriesStack);
232
- // proceed with the next file to parse
233
- parsingQueueFlag = true;
234
- parseNextFile(parsingQueue, allSeriesStack, callback);
235
- }
236
- file = null;
237
- seriesData = null;
238
- });
239
- }
240
- };
241
-
242
- /**
243
- * Push files in queue and start parsing next file
244
- * @inner
245
- * @function dumpFiles
246
- * @param {Array} fileList - Array of file objects
247
- * @param {Array} parsingQueue - Array of queued files to be parsed
248
- * @param {Object} allSeriesStack - Series stack object to be populated
249
- * @param {Function} callback - Passed through
250
- */
251
- let dumpFiles = function (fileList, parsingQueue, allSeriesStack, callback) {
252
- forEach(fileList, function (file) {
253
- if (!file.name.startsWith(".") &amp;&amp; !file.name.startsWith("DICOMDIR")) {
254
- parsingQueue.push(file);
255
- // enable parsing on first available path
256
- if (parsingQueueFlag === null) {
257
- parsingQueueFlag = true;
258
- }
259
- }
260
- });
261
- parseNextFile(parsingQueue, allSeriesStack, callback);
262
- };
263
-
264
- /**
265
- * Dump a single DICOM File (metaData and pixelData)
266
- * @inner
267
- * @function dumpFile
268
- * @param {File} file - File object to be dumped
269
- * @param {Function} callback - called with (imageObject, errorString)
270
- */
271
- let dumpFile = function (file, callback) {
272
- let reader = new FileReader();
273
- reader.onload = function () {
274
- let arrayBuffer = reader.result;
275
- // Here we have the file data as an ArrayBuffer.
276
- // dicomParser requires as input a Uint8Array so we create that here.
277
- let byteArray = new Uint8Array(arrayBuffer);
278
-
279
- let dataSet;
280
- try {
281
- dataSet = parseDicom(byteArray);
282
- byteArray = null;
283
- let metadata = {};
284
- dumpDataSet(dataSet, metadata);
285
-
286
- let numberOfFrames = metadata["x00280008"];
287
- let isMultiframe = numberOfFrames > 1 ? true : false;
288
- // Overwrite SOPInstanceUID to manage multiframes.
289
- // Usually different SeriesInstanceUID means different series and that value
290
- // is used into the application to group different instances into the same series,
291
- // but if a DICOM file contains a multiframe series, then the SeriesInstanceUID
292
- // can be shared by other files of the same study.
293
- // In multiframe cases, the SOPInstanceUID (unique) is used as SeriesInstanceUID.
294
- let seriesInstanceUID = isMultiframe
295
- ? metadata["x00080018"]
296
- : metadata["x0020000e"];
297
- let pixelSpacing = metadata["x00280030"];
298
- let imageOrientation = metadata["x00200037"];
299
- let imagePosition = metadata["x00200032"];
300
- let sliceThickness = metadata["x00180050"];
301
-
302
- if (dataSet.warnings.length > 0) {
303
- // warnings
304
- callback(null, dataSet.warnings);
305
- } else {
306
- let pixelDataElement = dataSet.elements.x7fe00010;
307
-
308
- if (pixelDataElement) {
309
- // done, pixelDataElement found
310
- let instanceUID = metadata["x00080018"] || randomId();
311
- let imageObject = {
312
- // data needed for rendering
313
- file: file,
314
- dataSet: dataSet
315
- };
316
- imageObject.metadata = metadata;
317
- imageObject.metadata.seriesUID = seriesInstanceUID;
318
- imageObject.metadata.instanceUID = instanceUID;
319
- imageObject.metadata.studyUID = metadata["x0020000d"];
320
- imageObject.metadata.accessionNumber = metadata["x00080050"];
321
- imageObject.metadata.studyDescription = metadata["x00081030"];
322
- imageObject.metadata.patientName = metadata["x00100010"];
323
- imageObject.metadata.patientBirthdate = metadata["x00100030"];
324
- imageObject.metadata.seriesDescription = metadata["x0008103e"];
325
- imageObject.metadata.seriesDate = metadata["x00080021"];
326
- imageObject.metadata.seriesModality =
327
- metadata["x00080060"].toLowerCase();
328
- imageObject.metadata.intercept = metadata["x00281052"];
329
- imageObject.metadata.slope = metadata["x00281053"];
330
- imageObject.metadata.pixelSpacing = pixelSpacing;
331
- imageObject.metadata.sliceThickness = sliceThickness;
332
- imageObject.metadata.imageOrientation = imageOrientation;
333
- imageObject.metadata.imagePosition = imagePosition;
334
- imageObject.metadata.rows = metadata["x00280010"];
335
- imageObject.metadata.cols = metadata["x00280011"];
336
- imageObject.metadata.numberOfSlices = metadata["x00540081"]
337
- ? metadata["x00540081"] // number of slices
338
- : metadata["x00201002"]; // number of instances
339
- imageObject.metadata.numberOfFrames = numberOfFrames;
340
- if (isMultiframe) {
341
- imageObject.metadata.frameTime = metadata["x00181063"];
342
- imageObject.metadata.frameDelay = metadata["x00181066"];
343
- }
344
- imageObject.metadata.windowCenter = metadata["x00281050"];
345
- imageObject.metadata.windowWidth = metadata["x00281051"];
346
- imageObject.metadata.minPixelValue = metadata["x00280106"];
347
- imageObject.metadata.maxPixelValue = metadata["x00280107"];
348
- imageObject.metadata.length = pixelDataElement.length;
349
- imageObject.metadata.repr = getPixelRepresentation(dataSet);
350
- callback(imageObject);
351
- } else {
352
- // done, no pixelData
353
- callback(null, "no pixelData.");
354
- }
355
- }
356
- } catch (err) {
357
- console.log(err);
358
- callback(null, "can not read this file.");
359
- }
360
- };
361
- reader.readAsArrayBuffer(file);
362
- };
363
- </code></pre>
364
- </article>
365
- </section>
366
-
367
-
368
-
369
-
370
-
371
-
372
- </div>
373
-
374
- <br class="clear">
375
-
376
- <footer>
377
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a> using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
378
- </footer>
379
-
380
- <script>prettyPrint();</script>
381
- <script src="scripts/polyfill.js"></script>
382
- <script src="scripts/linenumber.js"></script>
383
-
384
- <script src="scripts/search.js" defer></script>
385
-
386
-
387
- <script src="scripts/collapse.js" defer></script>
388
-
389
-
390
- </body>
391
- </html>