@cornerstonejs/dicom-image-loader 2.0.0-beta.2 → 2.0.0-beta.21

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 (248) hide show
  1. package/dist/920.bundle.min.js +3 -0
  2. package/dist/920.bundle.min.js.LICENSE.txt +5 -0
  3. package/dist/920.bundle.min.js.map +1 -0
  4. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
  5. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
  6. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  7. package/dist/dynamic-import/20fc4c659b85ccd2a9c0.wasm +0 -0
  8. package/dist/dynamic-import/584.min.js +2 -0
  9. package/dist/dynamic-import/584.min.js.map +1 -0
  10. package/dist/dynamic-import/610.min.js +2 -0
  11. package/dist/dynamic-import/610.min.js.map +1 -0
  12. package/dist/dynamic-import/918.min.js +2 -0
  13. package/dist/dynamic-import/918.min.js.map +1 -0
  14. package/dist/dynamic-import/958.min.js +3 -0
  15. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  16. package/dist/dynamic-import/958.min.js.map +1 -0
  17. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  18. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  19. package/dist/esm/codecs/jpeg.d.ts +1 -0
  20. package/dist/esm/codecs/jpeg.js +890 -0
  21. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  22. package/dist/esm/codecs/jpegLossless.js +1219 -0
  23. package/dist/esm/src/constants/transferSyntaxes.d.ts +46 -0
  24. package/dist/esm/src/constants/transferSyntaxes.js +46 -0
  25. package/dist/esm/src/decodeImageFrameWorker.d.ts +1 -0
  26. package/dist/esm/src/decodeImageFrameWorker.js +262 -0
  27. package/dist/esm/src/externalModules.d.ts +5 -0
  28. package/dist/esm/src/externalModules.js +44 -0
  29. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  30. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  31. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  32. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  33. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  34. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  35. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  36. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  37. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  38. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  39. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  40. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  41. package/dist/esm/src/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  42. package/dist/esm/src/imageLoader/colorSpaceConverters/index.js +7 -0
  43. package/dist/esm/src/imageLoader/configure.d.ts +3 -0
  44. package/dist/esm/src/imageLoader/configure.js +11 -0
  45. package/dist/esm/src/imageLoader/convertColorSpace.d.ts +1 -0
  46. package/dist/esm/src/imageLoader/convertColorSpace.js +40 -0
  47. package/dist/esm/src/imageLoader/createImage.d.ts +5 -0
  48. package/dist/esm/src/imageLoader/createImage.js +241 -0
  49. package/dist/esm/src/imageLoader/decodeImageFrame.d.ts +3 -0
  50. package/dist/esm/src/imageLoader/decodeImageFrame.js +63 -0
  51. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  52. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  53. package/dist/esm/src/imageLoader/getImageFrame.d.ts +3 -0
  54. package/dist/esm/src/imageLoader/getImageFrame.js +26 -0
  55. package/dist/esm/src/imageLoader/getInstanceModule.d.ts +3 -0
  56. package/dist/esm/src/imageLoader/getInstanceModule.js +40 -0
  57. package/dist/esm/src/imageLoader/getMinMax.d.ts +4 -0
  58. package/dist/esm/src/imageLoader/getMinMax.js +15 -0
  59. package/dist/esm/src/imageLoader/getScalingParameters.d.ts +6 -0
  60. package/dist/esm/src/imageLoader/getScalingParameters.js +16 -0
  61. package/dist/esm/src/imageLoader/imageIdToURI.d.ts +1 -0
  62. package/dist/esm/src/imageLoader/imageIdToURI.js +4 -0
  63. package/dist/esm/src/imageLoader/index.d.ts +94 -0
  64. package/dist/esm/src/imageLoader/index.js +36 -0
  65. package/dist/esm/src/imageLoader/internal/index.d.ts +10 -0
  66. package/dist/esm/src/imageLoader/internal/index.js +10 -0
  67. package/dist/esm/src/imageLoader/internal/options.d.ts +3 -0
  68. package/dist/esm/src/imageLoader/internal/options.js +19 -0
  69. package/dist/esm/src/imageLoader/internal/rangeRequest.d.ts +9 -0
  70. package/dist/esm/src/imageLoader/internal/rangeRequest.js +121 -0
  71. package/dist/esm/src/imageLoader/internal/streamRequest.d.ts +2 -0
  72. package/dist/esm/src/imageLoader/internal/streamRequest.js +92 -0
  73. package/dist/esm/src/imageLoader/internal/xhrRequest.d.ts +3 -0
  74. package/dist/esm/src/imageLoader/internal/xhrRequest.js +102 -0
  75. package/dist/esm/src/imageLoader/isColorConversionRequired.d.ts +1 -0
  76. package/dist/esm/src/imageLoader/isColorConversionRequired.js +22 -0
  77. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  78. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  79. package/dist/esm/src/imageLoader/isNMReconstructable.d.ts +1 -0
  80. package/dist/esm/src/imageLoader/isNMReconstructable.js +3 -0
  81. package/dist/esm/src/imageLoader/registerLoaders.d.ts +2 -0
  82. package/dist/esm/src/imageLoader/registerLoaders.js +7 -0
  83. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  84. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js +44 -0
  85. package/dist/esm/src/imageLoader/wadors/extractMultipart.d.ts +23 -0
  86. package/dist/esm/src/imageLoader/wadors/extractMultipart.js +73 -0
  87. package/dist/esm/src/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  88. package/dist/esm/src/imageLoader/wadors/findIndexOfString.js +32 -0
  89. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  90. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js +8 -0
  91. package/dist/esm/src/imageLoader/wadors/getPixelData.d.ts +26 -0
  92. package/dist/esm/src/imageLoader/wadors/getPixelData.js +35 -0
  93. package/dist/esm/src/imageLoader/wadors/getTagValue.d.ts +1 -0
  94. package/dist/esm/src/imageLoader/wadors/getTagValue.js +9 -0
  95. package/dist/esm/src/imageLoader/wadors/index.d.ts +25 -0
  96. package/dist/esm/src/imageLoader/wadors/index.js +21 -0
  97. package/dist/esm/src/imageLoader/wadors/loadImage.d.ts +25 -0
  98. package/dist/esm/src/imageLoader/wadors/loadImage.js +125 -0
  99. package/dist/esm/src/imageLoader/wadors/loadImage_test.d.ts +1 -0
  100. package/dist/esm/src/imageLoader/wadors/loadImage_test.js +41 -0
  101. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  102. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  103. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  104. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js +46 -0
  105. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  106. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  107. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  108. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  109. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  110. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +9 -0
  111. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  112. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  113. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  114. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  115. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  116. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  117. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  118. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  119. package/dist/esm/src/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  120. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +14 -0
  121. package/dist/esm/src/imageLoader/wadors/metaData/index.d.ts +7 -0
  122. package/dist/esm/src/imageLoader/wadors/metaData/index.js +7 -0
  123. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  124. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +261 -0
  125. package/dist/esm/src/imageLoader/wadors/metaDataManager.d.ts +14 -0
  126. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +50 -0
  127. package/dist/esm/src/imageLoader/wadors/register.d.ts +1 -0
  128. package/dist/esm/src/imageLoader/wadors/register.js +6 -0
  129. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +15 -0
  130. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +26 -0
  131. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  132. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  133. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.d.ts +31 -0
  134. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +142 -0
  135. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  136. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  137. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  138. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js +56 -0
  139. package/dist/esm/src/imageLoader/wadouri/fileManager.d.ts +11 -0
  140. package/dist/esm/src/imageLoader/wadouri/fileManager.js +20 -0
  141. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  142. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js +33 -0
  143. package/dist/esm/src/imageLoader/wadouri/getPixelData.d.ts +3 -0
  144. package/dist/esm/src/imageLoader/wadouri/getPixelData.js +13 -0
  145. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  146. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  147. package/dist/esm/src/imageLoader/wadouri/index.d.ts +42 -0
  148. package/dist/esm/src/imageLoader/wadouri/index.js +31 -0
  149. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  150. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js +17 -0
  151. package/dist/esm/src/imageLoader/wadouri/loadImage.d.ts +9 -0
  152. package/dist/esm/src/imageLoader/wadouri/loadImage.js +104 -0
  153. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  154. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  155. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  156. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  157. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  158. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  159. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  160. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  161. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  162. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  163. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  164. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  165. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  166. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  167. package/dist/esm/src/imageLoader/wadouri/metaData/index.d.ts +5 -0
  168. package/dist/esm/src/imageLoader/wadouri/metaData/index.js +5 -0
  169. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +2 -0
  170. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +223 -0
  171. package/dist/esm/src/imageLoader/wadouri/parseImageId.d.ts +8 -0
  172. package/dist/esm/src/imageLoader/wadouri/parseImageId.js +20 -0
  173. package/dist/esm/src/imageLoader/wadouri/register.d.ts +2 -0
  174. package/dist/esm/src/imageLoader/wadouri/register.js +8 -0
  175. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  176. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  177. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  178. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  179. package/dist/esm/src/shared/decoders/decodeBigEndian.d.ts +4 -0
  180. package/dist/esm/src/shared/decoders/decodeBigEndian.js +28 -0
  181. package/dist/esm/src/shared/decoders/decodeHTJ2K.d.ts +5 -0
  182. package/dist/esm/src/shared/decoders/decodeHTJ2K.js +109 -0
  183. package/dist/esm/src/shared/decoders/decodeJPEG2000.d.ts +5 -0
  184. package/dist/esm/src/shared/decoders/decodeJPEG2000.js +93 -0
  185. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  186. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  187. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  188. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +1 -0
  189. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  190. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  191. package/dist/esm/src/shared/decoders/decodeJPEGLS.d.ts +5 -0
  192. package/dist/esm/src/shared/decoders/decodeJPEGLS.js +84 -0
  193. package/dist/esm/src/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  194. package/dist/esm/src/shared/decoders/decodeJPEGLossless.js +39 -0
  195. package/dist/esm/src/shared/decoders/decodeLittleEndian.d.ts +4 -0
  196. package/dist/esm/src/shared/decoders/decodeLittleEndian.js +29 -0
  197. package/dist/esm/src/shared/decoders/decodeRLE.d.ts +4 -0
  198. package/dist/esm/src/shared/decoders/decodeRLE.js +128 -0
  199. package/dist/esm/src/shared/getMinMax.d.ts +6 -0
  200. package/dist/esm/src/shared/getMinMax.js +16 -0
  201. package/dist/esm/src/shared/getMinMax_test.d.ts +1 -0
  202. package/dist/esm/src/shared/getMinMax_test.js +9 -0
  203. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  204. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js +22 -0
  205. package/dist/esm/src/shared/isColorImage.d.ts +1 -0
  206. package/dist/esm/src/shared/isColorImage.js +10 -0
  207. package/dist/esm/src/shared/scaling/bilinear.d.ts +1 -0
  208. package/dist/esm/src/shared/scaling/bilinear.js +32 -0
  209. package/dist/esm/src/shared/scaling/replicate.d.ts +1 -0
  210. package/dist/esm/src/shared/scaling/replicate.js +20 -0
  211. package/dist/esm/src/shared/scaling/scaleArray.d.ts +2 -0
  212. package/dist/esm/src/shared/scaling/scaleArray.js +15 -0
  213. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  214. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js +1 -0
  215. package/dist/esm/src/types/DICOMLoaderIImage.d.ts +12 -0
  216. package/dist/esm/src/types/DICOMLoaderIImage.js +1 -0
  217. package/dist/esm/src/types/DICOMLoaderImageOptions.d.ts +23 -0
  218. package/dist/esm/src/types/DICOMLoaderImageOptions.js +1 -0
  219. package/dist/esm/src/types/LoadRequestFunction.d.ts +1 -0
  220. package/dist/esm/src/types/LoadRequestFunction.js +1 -0
  221. package/dist/esm/src/types/LoaderDecodeOptions.d.ts +2 -0
  222. package/dist/esm/src/types/LoaderDecodeOptions.js +1 -0
  223. package/dist/esm/src/types/LoaderOptions.d.ts +18 -0
  224. package/dist/esm/src/types/LoaderOptions.js +1 -0
  225. package/dist/esm/src/types/LutType.d.ts +6 -0
  226. package/dist/esm/src/types/LutType.js +1 -0
  227. package/dist/esm/src/types/WADORSMetaData.d.ts +4 -0
  228. package/dist/esm/src/types/WADORSMetaData.js +1 -0
  229. package/dist/esm/src/types/WebWorkerTypes.d.ts +64 -0
  230. package/dist/esm/src/types/WebWorkerTypes.js +1 -0
  231. package/dist/esm/src/types/XHRRequest.d.ts +16 -0
  232. package/dist/esm/src/types/XHRRequest.js +1 -0
  233. package/dist/esm/src/types/index.d.ts +11 -0
  234. package/dist/esm/src/types/index.js +1 -0
  235. package/dist/esm/src/version.d.ts +2 -0
  236. package/dist/esm/src/version.js +1 -0
  237. package/package.json +24 -17
  238. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  239. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  240. package/dist/dynamic-import/610.min.worker.js +0 -2
  241. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/75788f12450d4c5ed494.wasm +0 -0
  243. package/dist/dynamic-import/945.min.worker.js +0 -2
  244. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  245. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js +0 -2
  246. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
  247. package/dist/index.worker.bundle.min.worker.js +0 -2
  248. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ export default function (imageFrame, colorBuffer, useRGBA) {
2
+ if (imageFrame === undefined) {
3
+ throw new Error('convertYBRFullByPlane: ybrBuffer must be defined');
4
+ }
5
+ if (imageFrame.length % 3 !== 0) {
6
+ throw new Error(`convertYBRFullByPlane: ybrBuffer length ${imageFrame.length} must be divisible by 3`);
7
+ }
8
+ const numPixels = imageFrame.length / 3;
9
+ let bufferIndex = 0;
10
+ let yIndex = 0;
11
+ let cbIndex = numPixels;
12
+ let crIndex = numPixels * 2;
13
+ if (useRGBA) {
14
+ for (let i = 0; i < numPixels; i++) {
15
+ const y = imageFrame[yIndex++];
16
+ const cb = imageFrame[cbIndex++];
17
+ const cr = imageFrame[crIndex++];
18
+ colorBuffer[bufferIndex++] = y + 1.402 * (cr - 128);
19
+ colorBuffer[bufferIndex++] =
20
+ y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
21
+ colorBuffer[bufferIndex++] = y + 1.772 * (cb - 128);
22
+ colorBuffer[bufferIndex++] = 255;
23
+ }
24
+ return;
25
+ }
26
+ for (let i = 0; i < numPixels; i++) {
27
+ const y = imageFrame[yIndex++];
28
+ const cb = imageFrame[cbIndex++];
29
+ const cr = imageFrame[crIndex++];
30
+ colorBuffer[bufferIndex++] = y + 1.402 * (cr - 128);
31
+ colorBuffer[bufferIndex++] =
32
+ y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
33
+ colorBuffer[bufferIndex++] = y + 1.772 * (cb - 128);
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ import { default as convertRGBColorByPixel } from './convertRGBColorByPixel';
2
+ import { default as convertRGBColorByPlane } from './convertRGBColorByPlane';
3
+ import { default as convertYBRFullByPixel } from './convertYBRFullByPixel';
4
+ import { default as convertYBRFullByPlane } from './convertYBRFullByPlane';
5
+ import { default as convertYBRFull422ByPixel } from './convertYBRFull422ByPixel';
6
+ import { default as convertPALETTECOLOR } from './convertPALETTECOLOR';
7
+ export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertYBRFull422ByPixel, convertPALETTECOLOR, };
@@ -0,0 +1,7 @@
1
+ import { default as convertRGBColorByPixel } from './convertRGBColorByPixel';
2
+ import { default as convertRGBColorByPlane } from './convertRGBColorByPlane';
3
+ import { default as convertYBRFullByPixel } from './convertYBRFullByPixel';
4
+ import { default as convertYBRFullByPlane } from './convertYBRFullByPlane';
5
+ import { default as convertYBRFull422ByPixel } from './convertYBRFull422ByPixel';
6
+ import { default as convertPALETTECOLOR } from './convertPALETTECOLOR';
7
+ export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertYBRFull422ByPixel, convertPALETTECOLOR, };
@@ -0,0 +1,3 @@
1
+ import type { LoaderOptions } from '../types';
2
+ declare function configure(options: LoaderOptions): void;
3
+ export default configure;
@@ -0,0 +1,11 @@
1
+ import { setOptions } from './internal/index';
2
+ import external from '../externalModules';
3
+ function configure(options) {
4
+ if (!options.cornerstone || !options.dicomParser) {
5
+ throw new Error('cornerstoneWADOImageLoader.configure: Options object must contain the keys "cornerstone" and "dicomParser".');
6
+ }
7
+ setOptions(options);
8
+ external.cornerstone = options.cornerstone;
9
+ external.dicomParser = options.dicomParser;
10
+ }
11
+ export default configure;
@@ -0,0 +1 @@
1
+ export default function convertColorSpace(imageFrame: any, colorBuffer: any, useRGBA: any): void;
@@ -0,0 +1,40 @@
1
+ import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFull422ByPixel, convertYBRFullByPlane, convertPALETTECOLOR, } from './colorSpaceConverters/index';
2
+ function convertRGB(imageFrame, colorBuffer, useRGBA) {
3
+ if (imageFrame.planarConfiguration === 0) {
4
+ convertRGBColorByPixel(imageFrame.pixelData, colorBuffer, useRGBA);
5
+ }
6
+ else {
7
+ convertRGBColorByPlane(imageFrame.pixelData, colorBuffer, useRGBA);
8
+ }
9
+ }
10
+ function convertYBRFull(imageFrame, colorBuffer, useRGBA) {
11
+ if (imageFrame.planarConfiguration === 0) {
12
+ convertYBRFullByPixel(imageFrame.pixelData, colorBuffer, useRGBA);
13
+ }
14
+ else {
15
+ convertYBRFullByPlane(imageFrame.pixelData, colorBuffer, useRGBA);
16
+ }
17
+ }
18
+ export default function convertColorSpace(imageFrame, colorBuffer, useRGBA) {
19
+ if (imageFrame.photometricInterpretation === 'RGB') {
20
+ convertRGB(imageFrame, colorBuffer, useRGBA);
21
+ }
22
+ else if (imageFrame.photometricInterpretation === 'YBR_RCT') {
23
+ convertRGB(imageFrame, colorBuffer, useRGBA);
24
+ }
25
+ else if (imageFrame.photometricInterpretation === 'YBR_ICT') {
26
+ convertRGB(imageFrame, colorBuffer, useRGBA);
27
+ }
28
+ else if (imageFrame.photometricInterpretation === 'PALETTE COLOR') {
29
+ convertPALETTECOLOR(imageFrame, colorBuffer, useRGBA);
30
+ }
31
+ else if (imageFrame.photometricInterpretation === 'YBR_FULL_422') {
32
+ convertYBRFull422ByPixel(imageFrame.pixelData, colorBuffer, useRGBA);
33
+ }
34
+ else if (imageFrame.photometricInterpretation === 'YBR_FULL') {
35
+ convertYBRFull(imageFrame, colorBuffer, useRGBA);
36
+ }
37
+ else {
38
+ throw new Error(`No color space conversion for photometric interpretation ${imageFrame.photometricInterpretation}`);
39
+ }
40
+ }
@@ -0,0 +1,5 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { DICOMLoaderImageOptions, DICOMLoaderIImage } from '../types';
3
+ import type { Types } from '@cornerstonejs/core/src';
4
+ declare function createImage(imageId: string, pixelData: ByteArray, transferSyntax: string, options?: DICOMLoaderImageOptions): Promise<DICOMLoaderIImage | Types.IImageFrame>;
5
+ export default createImage;
@@ -0,0 +1,241 @@
1
+ import external from '../externalModules';
2
+ import getMinMax from '../shared/getMinMax';
3
+ import getPixelDataTypeFromMinMax from '../shared/getPixelDataTypeFromMinMax';
4
+ import convertColorSpace from './convertColorSpace';
5
+ import isColorConversionRequired from './isColorConversionRequired';
6
+ import decodeImageFrame from './decodeImageFrame';
7
+ import getImageFrame from './getImageFrame';
8
+ import getScalingParameters from './getScalingParameters';
9
+ import { getOptions } from './internal/options';
10
+ import isColorImageFn from '../shared/isColorImage';
11
+ let lastImageIdDrawn = '';
12
+ function isModalityLUTForDisplay(sopClassUid) {
13
+ return (sopClassUid !== '1.2.840.10008.5.1.4.1.1.12.1' &&
14
+ sopClassUid !== '1.2.840.10008.5.1.4.1.1.12.2.1');
15
+ }
16
+ function setPixelDataType(imageFrame) {
17
+ const minValue = imageFrame.smallestPixelValue;
18
+ const maxValue = imageFrame.largestPixelValue;
19
+ const TypedArray = getPixelDataTypeFromMinMax(minValue, maxValue);
20
+ if (TypedArray) {
21
+ const typedArray = new TypedArray(imageFrame.pixelData);
22
+ imageFrame.pixelData = typedArray;
23
+ }
24
+ else {
25
+ throw new Error('Could not apply a typed array to the pixel data');
26
+ }
27
+ }
28
+ function removeAFromRGBA(pixelData, targetBuffer) {
29
+ const numPixels = pixelData.length / 4;
30
+ let rgbIndex = 0;
31
+ let bufferIndex = 0;
32
+ for (let i = 0; i < numPixels; i++) {
33
+ targetBuffer[bufferIndex++] = pixelData[rgbIndex++];
34
+ targetBuffer[bufferIndex++] = pixelData[rgbIndex++];
35
+ targetBuffer[bufferIndex++] = pixelData[rgbIndex++];
36
+ rgbIndex++;
37
+ }
38
+ return targetBuffer;
39
+ }
40
+ function createImage(imageId, pixelData, transferSyntax, options = {}) {
41
+ const useRGBA = options.useRGBA;
42
+ options.preScale = {
43
+ enabled: options.preScale && options.preScale.enabled !== undefined
44
+ ? options.preScale.enabled
45
+ : true,
46
+ };
47
+ if (!pixelData?.length) {
48
+ return Promise.reject(new Error('The pixel data is missing'));
49
+ }
50
+ const { cornerstone } = external;
51
+ const { MetadataModules } = cornerstone.Enums;
52
+ const canvas = document.createElement('canvas');
53
+ const imageFrame = getImageFrame(imageId);
54
+ imageFrame.decodeLevel = options.decodeLevel;
55
+ options.allowFloatRendering = cornerstone.canRenderFloatTextures();
56
+ if (options.preScale.enabled) {
57
+ const scalingParameters = getScalingParameters(cornerstone.metaData, imageId);
58
+ if (scalingParameters) {
59
+ options.preScale = {
60
+ ...options.preScale,
61
+ scalingParameters: scalingParameters,
62
+ };
63
+ }
64
+ }
65
+ const { decodeConfig } = getOptions();
66
+ Object.keys(imageFrame).forEach((key) => {
67
+ if (typeof imageFrame[key] === 'function' ||
68
+ imageFrame[key] instanceof Promise) {
69
+ delete imageFrame[key];
70
+ }
71
+ });
72
+ const decodePromise = decodeImageFrame(imageFrame, transferSyntax, pixelData, canvas, options, decodeConfig);
73
+ const isColorImage = isColorImageFn(imageFrame.photometricInterpretation);
74
+ return new Promise((resolve, reject) => {
75
+ decodePromise.then(function (imageFrame) {
76
+ let alreadyTyped = false;
77
+ if (options.targetBuffer &&
78
+ options.targetBuffer.type &&
79
+ !isColorImage) {
80
+ const { arrayBuffer, type, offset: rawOffset = 0, length: rawLength, } = options.targetBuffer;
81
+ const imageFrameLength = imageFrame.pixelDataLength;
82
+ const offset = rawOffset;
83
+ const length = rawLength !== null && rawLength !== undefined
84
+ ? rawLength
85
+ : imageFrameLength - offset;
86
+ const typedArrayConstructors = {
87
+ Uint8Array,
88
+ Uint16Array,
89
+ Int16Array,
90
+ Float32Array,
91
+ };
92
+ if (length !== imageFrame.pixelDataLength) {
93
+ throw new Error(`target array for image does not have the same length (${length}) as the decoded image length (${imageFrame.pixelDataLength}).`);
94
+ }
95
+ const TypedArrayConstructor = typedArrayConstructors[type];
96
+ const typedArray = arrayBuffer
97
+ ? new TypedArrayConstructor(arrayBuffer, offset, length)
98
+ : new TypedArrayConstructor(imageFrame.pixelData);
99
+ if (length !== imageFrame.pixelDataLength) {
100
+ throw new Error('target array for image does not have the same length as the decoded image length.');
101
+ }
102
+ imageFrame.pixelData = typedArray;
103
+ alreadyTyped = true;
104
+ }
105
+ if (!alreadyTyped) {
106
+ setPixelDataType(imageFrame);
107
+ }
108
+ const imagePlaneModule = cornerstone.metaData.get(MetadataModules.IMAGE_PLANE, imageId) || {};
109
+ const voiLutModule = cornerstone.metaData.get(MetadataModules.VOI_LUT, imageId) || {};
110
+ const modalityLutModule = cornerstone.metaData.get(MetadataModules.MODALITY_LUT, imageId) || {};
111
+ const sopCommonModule = cornerstone.metaData.get(MetadataModules.SOP_COMMON, imageId) || {};
112
+ const calibrationModule = cornerstone.metaData.get(MetadataModules.CALIBRATION, imageId) || {};
113
+ const { rows, columns } = imageFrame;
114
+ if (isColorImage) {
115
+ if (isColorConversionRequired(imageFrame)) {
116
+ canvas.height = imageFrame.rows;
117
+ canvas.width = imageFrame.columns;
118
+ const context = canvas.getContext('2d');
119
+ let imageData = context.createImageData(imageFrame.columns, imageFrame.rows);
120
+ if (!useRGBA) {
121
+ imageData = {
122
+ ...imageData,
123
+ data: new Uint8ClampedArray(imageFrame.samplesPerPixel *
124
+ imageFrame.columns *
125
+ imageFrame.rows),
126
+ };
127
+ }
128
+ convertColorSpace(imageFrame, imageData.data, useRGBA);
129
+ imageFrame.imageData = imageData;
130
+ imageFrame.pixelData = imageData.data;
131
+ imageFrame.pixelDataLength = imageData.data.length;
132
+ }
133
+ else if (!useRGBA &&
134
+ imageFrame.pixelDataLength === 4 * rows * columns) {
135
+ const colorBuffer = new Uint8Array((imageFrame.pixelData.length / 4) * 3);
136
+ imageFrame.pixelData = removeAFromRGBA(imageFrame.pixelData, colorBuffer);
137
+ imageFrame.pixelDataLength = imageFrame.pixelData.length;
138
+ }
139
+ const minMax = getMinMax(imageFrame.pixelData);
140
+ imageFrame.smallestPixelValue = minMax.min;
141
+ imageFrame.largestPixelValue = minMax.max;
142
+ }
143
+ const image = {
144
+ imageId,
145
+ dataType: imageFrame.pixelData.constructor
146
+ .name,
147
+ color: isColorImage,
148
+ calibration: calibrationModule,
149
+ columnPixelSpacing: imagePlaneModule.columnPixelSpacing,
150
+ columns: imageFrame.columns,
151
+ height: imageFrame.rows,
152
+ preScale: imageFrame.preScale,
153
+ intercept: modalityLutModule.rescaleIntercept
154
+ ? modalityLutModule.rescaleIntercept
155
+ : 0,
156
+ slope: modalityLutModule.rescaleSlope
157
+ ? modalityLutModule.rescaleSlope
158
+ : 1,
159
+ invert: imageFrame.photometricInterpretation === 'MONOCHROME1',
160
+ minPixelValue: imageFrame.smallestPixelValue,
161
+ maxPixelValue: imageFrame.largestPixelValue,
162
+ rowPixelSpacing: imagePlaneModule.rowPixelSpacing,
163
+ rows: imageFrame.rows,
164
+ sizeInBytes: imageFrame.pixelData.byteLength,
165
+ width: imageFrame.columns,
166
+ windowCenter: voiLutModule.windowCenter
167
+ ? voiLutModule.windowCenter[0]
168
+ : undefined,
169
+ windowWidth: voiLutModule.windowWidth
170
+ ? voiLutModule.windowWidth[0]
171
+ : undefined,
172
+ voiLUTFunction: voiLutModule.voiLUTFunction
173
+ ? voiLutModule.voiLUTFunction
174
+ : undefined,
175
+ decodeTimeInMS: imageFrame.decodeTimeInMS,
176
+ floatPixelData: undefined,
177
+ imageFrame,
178
+ rgba: isColorImage && useRGBA,
179
+ getPixelData: () => imageFrame.pixelData,
180
+ getCanvas: undefined,
181
+ numberOfComponents: imageFrame.samplesPerPixel,
182
+ };
183
+ if (image.color) {
184
+ image.getCanvas = function () {
185
+ if (lastImageIdDrawn === imageId) {
186
+ return canvas;
187
+ }
188
+ const width = image.columns;
189
+ const height = image.rows;
190
+ canvas.height = height;
191
+ canvas.width = width;
192
+ const ctx = canvas.getContext('2d');
193
+ const imageData = ctx.createImageData(width, height);
194
+ const arr = imageFrame.pixelData;
195
+ if (arr.length === width * height * 4) {
196
+ for (let i = 0; i < arr.length; i++) {
197
+ imageData.data[i] = arr[i];
198
+ }
199
+ }
200
+ else if (arr.length === width * height * 3) {
201
+ let j = 0;
202
+ for (let i = 0; i < arr.length; i += 3) {
203
+ imageData.data[j++] = arr[i];
204
+ imageData.data[j++] = arr[i + 1];
205
+ imageData.data[j++] = arr[i + 2];
206
+ imageData.data[j++] = 255;
207
+ }
208
+ }
209
+ imageFrame.pixelData = imageData.data;
210
+ imageFrame.pixelDataLength = imageData.data.length;
211
+ imageFrame.imageData = imageData;
212
+ ctx.putImageData(imageFrame.imageData, 0, 0);
213
+ lastImageIdDrawn = imageId;
214
+ return canvas;
215
+ };
216
+ }
217
+ if (modalityLutModule.modalityLUTSequence &&
218
+ modalityLutModule.modalityLUTSequence.length > 0 &&
219
+ isModalityLUTForDisplay(sopCommonModule.sopClassUID)) {
220
+ image.modalityLUT = modalityLutModule.modalityLUTSequence[0];
221
+ }
222
+ if (voiLutModule.voiLUTSequence &&
223
+ voiLutModule.voiLUTSequence.length > 0) {
224
+ image.voiLUT = voiLutModule.voiLUTSequence[0];
225
+ }
226
+ if (image.color) {
227
+ image.windowWidth = 256;
228
+ image.windowCenter = 128;
229
+ }
230
+ if (image.windowCenter === undefined ||
231
+ image.windowWidth === undefined) {
232
+ const minVoi = image.imageFrame.smallestPixelValue;
233
+ const maxVoi = image.imageFrame.largestPixelValue;
234
+ image.windowWidth = maxVoi - minVoi;
235
+ image.windowCenter = (maxVoi + minVoi) / 2;
236
+ }
237
+ resolve(image);
238
+ }, reject);
239
+ });
240
+ }
241
+ export default createImage;
@@ -0,0 +1,3 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function decodeImageFrame(imageFrame: any, transferSyntax: any, pixelData: any, canvas: any, options: {}, decodeConfig: any): Promise<Types.IImageFrame>;
3
+ export default decodeImageFrame;
@@ -0,0 +1,63 @@
1
+ import decodeJPEGBaseline8BitColor from './decodeJPEGBaseline8BitColor';
2
+ import external from '../externalModules';
3
+ function processDecodeTask(imageFrame, transferSyntax, pixelData, srcOptions, decodeConfig) {
4
+ const options = { ...srcOptions };
5
+ delete options.loader;
6
+ delete options.streamingData;
7
+ const webWorkerManager = external.cornerstone.getWebWorkerManager();
8
+ const priority = options.priority || undefined;
9
+ const transferList = options.transferPixelData
10
+ ? [pixelData.buffer]
11
+ : undefined;
12
+ return webWorkerManager.executeTask('dicomImageLoader', 'decodeTask', {
13
+ imageFrame,
14
+ transferSyntax,
15
+ pixelData,
16
+ options,
17
+ decodeConfig,
18
+ }, {
19
+ priority,
20
+ requestType: options?.requestType,
21
+ });
22
+ }
23
+ function decodeImageFrame(imageFrame, transferSyntax, pixelData, canvas, options = {}, decodeConfig) {
24
+ switch (transferSyntax) {
25
+ case '1.2.840.10008.1.2':
26
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
27
+ case '1.2.840.10008.1.2.1':
28
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
29
+ case '1.2.840.10008.1.2.2':
30
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
31
+ case '1.2.840.10008.1.2.1.99':
32
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
33
+ case '1.2.840.10008.1.2.5':
34
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
35
+ case '1.2.840.10008.1.2.4.50':
36
+ if (imageFrame.bitsAllocated === 8 &&
37
+ (imageFrame.samplesPerPixel === 3 || imageFrame.samplesPerPixel === 4)) {
38
+ return decodeJPEGBaseline8BitColor(imageFrame, pixelData, canvas);
39
+ }
40
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
41
+ case '1.2.840.10008.1.2.4.51':
42
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
43
+ case '1.2.840.10008.1.2.4.57':
44
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
45
+ case '1.2.840.10008.1.2.4.70':
46
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
47
+ case '1.2.840.10008.1.2.4.80':
48
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
49
+ case '1.2.840.10008.1.2.4.81':
50
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
51
+ case '1.2.840.10008.1.2.4.90':
52
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
53
+ case '1.2.840.10008.1.2.4.91':
54
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
55
+ case '3.2.840.10008.1.2.4.96':
56
+ case '1.2.840.10008.1.2.4.201':
57
+ case '1.2.840.10008.1.2.4.202':
58
+ case '1.2.840.10008.1.2.4.203':
59
+ return processDecodeTask(imageFrame, transferSyntax, pixelData, options, decodeConfig);
60
+ }
61
+ return Promise.reject(new Error(`No decoder for transfer syntax ${transferSyntax}`));
62
+ }
63
+ export default decodeImageFrame;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeJPEGBaseline8BitColor(imageFrame: Types.IImageFrame, pixelData: ByteArray, canvas: HTMLCanvasElement): Promise<Types.IImageFrame>;
4
+ export default decodeJPEGBaseline8BitColor;
@@ -0,0 +1,64 @@
1
+ import getMinMax from '../shared/getMinMax';
2
+ function arrayBufferToString(buffer) {
3
+ return binaryToString(String.fromCharCode.apply(null, Array.prototype.slice.apply(new Uint8Array(buffer))));
4
+ }
5
+ function binaryToString(binary) {
6
+ let error;
7
+ try {
8
+ return decodeURIComponent(escape(binary));
9
+ }
10
+ catch (_error) {
11
+ error = _error;
12
+ if (error instanceof URIError) {
13
+ return binary;
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ function decodeJPEGBaseline8BitColor(imageFrame, pixelData, canvas) {
19
+ const start = new Date().getTime();
20
+ const imgBlob = new Blob([pixelData], { type: 'image/jpeg' });
21
+ return new Promise((resolve, reject) => {
22
+ const fileReader = new FileReader();
23
+ if (fileReader.readAsBinaryString === undefined) {
24
+ fileReader.readAsArrayBuffer(imgBlob);
25
+ }
26
+ else {
27
+ fileReader.readAsBinaryString(imgBlob);
28
+ }
29
+ fileReader.onload = function () {
30
+ const img = new Image();
31
+ img.onload = function () {
32
+ canvas.height = img.height;
33
+ canvas.width = img.width;
34
+ imageFrame.rows = img.height;
35
+ imageFrame.columns = img.width;
36
+ const context = canvas.getContext('2d');
37
+ context.drawImage(this, 0, 0);
38
+ const imageData = context.getImageData(0, 0, img.width, img.height);
39
+ const end = new Date().getTime();
40
+ imageFrame.pixelData = new Uint8Array(imageData.data.buffer);
41
+ imageFrame.imageData = imageData;
42
+ imageFrame.decodeTimeInMS = end - start;
43
+ const minMax = getMinMax(imageFrame.pixelData);
44
+ imageFrame.smallestPixelValue = minMax.min;
45
+ imageFrame.largestPixelValue = minMax.max;
46
+ imageFrame.pixelDataLength = imageFrame.pixelData.length;
47
+ resolve(imageFrame);
48
+ };
49
+ img.onerror = function (error) {
50
+ reject(error);
51
+ };
52
+ if (fileReader.readAsBinaryString === undefined) {
53
+ img.src = `data:image/jpeg;base64,${window.btoa(arrayBufferToString(fileReader.result))}`;
54
+ }
55
+ else {
56
+ img.src = `data:image/jpeg;base64,${window.btoa(fileReader.result)}`;
57
+ }
58
+ };
59
+ fileReader.onerror = (e) => {
60
+ reject(e);
61
+ };
62
+ });
63
+ }
64
+ export default decodeJPEGBaseline8BitColor;
@@ -0,0 +1,3 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function getImageFrame(imageId: string): Types.IImageFrame;
3
+ export default getImageFrame;
@@ -0,0 +1,26 @@
1
+ import external from '../externalModules';
2
+ function getImageFrame(imageId) {
3
+ const { cornerstone } = external;
4
+ const imagePixelModule = cornerstone.metaData.get('imagePixelModule', imageId);
5
+ return {
6
+ samplesPerPixel: imagePixelModule.samplesPerPixel,
7
+ photometricInterpretation: imagePixelModule.photometricInterpretation,
8
+ planarConfiguration: imagePixelModule.planarConfiguration,
9
+ rows: imagePixelModule.rows,
10
+ columns: imagePixelModule.columns,
11
+ bitsAllocated: imagePixelModule.bitsAllocated,
12
+ bitsStored: imagePixelModule.bitsStored,
13
+ pixelRepresentation: imagePixelModule.pixelRepresentation,
14
+ smallestPixelValue: imagePixelModule.smallestPixelValue,
15
+ largestPixelValue: imagePixelModule.largestPixelValue,
16
+ redPaletteColorLookupTableDescriptor: imagePixelModule.redPaletteColorLookupTableDescriptor,
17
+ greenPaletteColorLookupTableDescriptor: imagePixelModule.greenPaletteColorLookupTableDescriptor,
18
+ bluePaletteColorLookupTableDescriptor: imagePixelModule.bluePaletteColorLookupTableDescriptor,
19
+ redPaletteColorLookupTableData: imagePixelModule.redPaletteColorLookupTableData,
20
+ greenPaletteColorLookupTableData: imagePixelModule.greenPaletteColorLookupTableData,
21
+ bluePaletteColorLookupTableData: imagePixelModule.bluePaletteColorLookupTableData,
22
+ pixelData: undefined,
23
+ imageId,
24
+ };
25
+ }
26
+ export default getImageFrame;
@@ -0,0 +1,3 @@
1
+ declare function getInstanceModule(imageId: any, metaDataProvider: any, types: any): {};
2
+ declare const instanceModuleNames: string[];
3
+ export { getInstanceModule, instanceModuleNames };
@@ -0,0 +1,40 @@
1
+ function getInstanceModule(imageId, metaDataProvider, types) {
2
+ const result = {};
3
+ for (const t of types) {
4
+ try {
5
+ const data = metaDataProvider(t, imageId);
6
+ if (data) {
7
+ const capitalizedData = {};
8
+ for (const key in data) {
9
+ if (key in data) {
10
+ const capitalizedKey = capitalizeTag(key);
11
+ capitalizedData[capitalizedKey] = data[key];
12
+ }
13
+ }
14
+ Object.assign(result, capitalizedData);
15
+ }
16
+ }
17
+ catch (error) {
18
+ console.error(`Error retrieving ${t} data:`, error);
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ const capitalizeTag = (tag) => tag.charAt(0).toUpperCase() + tag.slice(1);
24
+ const instanceModuleNames = [
25
+ 'multiframeModule',
26
+ 'generalSeriesModule',
27
+ 'patientStudyModule',
28
+ 'imagePlaneModule',
29
+ 'nmMultiframeGeometryModule',
30
+ 'imagePixelModule',
31
+ 'modalityLutModule',
32
+ 'voiLutModule',
33
+ 'sopCommonModule',
34
+ 'petIsotopeModule',
35
+ 'overlayPlaneModule',
36
+ 'transferSyntax',
37
+ 'petSeriesModule',
38
+ 'petImageModule',
39
+ ];
40
+ export { getInstanceModule, instanceModuleNames };
@@ -0,0 +1,4 @@
1
+ export default function getMinMax(storedPixelData: ArrayLike<number>): {
2
+ min: number;
3
+ max: number;
4
+ };
@@ -0,0 +1,15 @@
1
+ export default function getMinMax(storedPixelData) {
2
+ let min = storedPixelData[0];
3
+ let max = storedPixelData[0];
4
+ let storedPixel;
5
+ const numPixels = storedPixelData.length;
6
+ for (let index = 0; index < numPixels; index++) {
7
+ storedPixel = storedPixelData[index];
8
+ min = Math.min(min, storedPixel);
9
+ max = Math.max(max, storedPixel);
10
+ }
11
+ return {
12
+ min,
13
+ max,
14
+ };
15
+ }
@@ -0,0 +1,6 @@
1
+ export default function getScalingParameters(metaData: any, imageId: string): {
2
+ suvbw: any;
3
+ rescaleSlope: any;
4
+ rescaleIntercept: any;
5
+ modality: string;
6
+ };
@@ -0,0 +1,16 @@
1
+ export default function getScalingParameters(metaData, imageId) {
2
+ const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
3
+ const generalSeriesModule = (metaData.get('generalSeriesModule', imageId) ||
4
+ {});
5
+ const { modality } = generalSeriesModule;
6
+ const scalingParameters = {
7
+ rescaleSlope: modalityLutModule.rescaleSlope,
8
+ rescaleIntercept: modalityLutModule.rescaleIntercept,
9
+ modality,
10
+ };
11
+ const suvFactor = metaData.get('scalingModule', imageId) || {};
12
+ return {
13
+ ...scalingParameters,
14
+ ...(modality === 'PT' && { suvbw: suvFactor.suvbw }),
15
+ };
16
+ }
@@ -0,0 +1 @@
1
+ export default function imageIdToURI(imageId: string): string;
@@ -0,0 +1,4 @@
1
+ export default function imageIdToURI(imageId) {
2
+ const colonIndex = imageId.indexOf(':');
3
+ return imageId.substring(colonIndex + 1);
4
+ }