@cornerstonejs/dicom-image-loader 2.0.0-beta.7 → 2.0.0

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 (245) hide show
  1. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  2. package/dist/dynamic-import/54.min.js +2 -0
  3. package/dist/dynamic-import/54.min.js.map +1 -0
  4. package/dist/dynamic-import/548.min.js +2 -0
  5. package/dist/dynamic-import/548.min.js.map +1 -0
  6. package/dist/dynamic-import/918.min.js +2 -0
  7. package/dist/dynamic-import/918.min.js.map +1 -0
  8. package/dist/dynamic-import/958.min.js +3 -0
  9. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  10. package/dist/dynamic-import/958.min.js.map +1 -0
  11. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  12. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  13. package/dist/esm/codecs/jpeg.d.ts +1 -0
  14. package/dist/esm/codecs/jpeg.js +889 -0
  15. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  16. package/dist/esm/codecs/jpegLossless.js +1218 -0
  17. package/dist/esm/constants/index.d.ts +2 -0
  18. package/dist/esm/constants/index.js +2 -0
  19. package/dist/esm/constants/transferSyntaxes.d.ts +46 -0
  20. package/dist/esm/constants/transferSyntaxes.js +46 -0
  21. package/dist/esm/decodeImageFrameWorker.d.ts +1 -0
  22. package/dist/esm/decodeImageFrameWorker.js +263 -0
  23. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  24. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  25. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  26. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  27. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  28. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  29. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  30. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  31. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  32. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  33. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  34. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  35. package/dist/esm/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  36. package/dist/esm/imageLoader/colorSpaceConverters/index.js +7 -0
  37. package/dist/esm/imageLoader/convertColorSpace.d.ts +1 -0
  38. package/dist/esm/imageLoader/convertColorSpace.js +40 -0
  39. package/dist/esm/imageLoader/createImage.d.ts +5 -0
  40. package/dist/esm/imageLoader/createImage.js +245 -0
  41. package/dist/esm/imageLoader/decodeImageFrame.d.ts +3 -0
  42. package/dist/esm/imageLoader/decodeImageFrame.js +63 -0
  43. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  44. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  45. package/dist/esm/imageLoader/getImageFrame.d.ts +3 -0
  46. package/dist/esm/imageLoader/getImageFrame.js +25 -0
  47. package/dist/esm/imageLoader/getInstanceModule.d.ts +3 -0
  48. package/dist/esm/imageLoader/getInstanceModule.js +40 -0
  49. package/dist/esm/imageLoader/getMinMax.d.ts +4 -0
  50. package/dist/esm/imageLoader/getMinMax.js +15 -0
  51. package/dist/esm/imageLoader/getScalingParameters.d.ts +6 -0
  52. package/dist/esm/imageLoader/getScalingParameters.js +16 -0
  53. package/dist/esm/imageLoader/imageIdToURI.d.ts +1 -0
  54. package/dist/esm/imageLoader/imageIdToURI.js +4 -0
  55. package/dist/esm/imageLoader/index.d.ts +91 -0
  56. package/dist/esm/imageLoader/index.js +34 -0
  57. package/dist/esm/imageLoader/init.d.ts +3 -0
  58. package/dist/esm/imageLoader/init.js +23 -0
  59. package/dist/esm/imageLoader/internal/index.d.ts +10 -0
  60. package/dist/esm/imageLoader/internal/index.js +10 -0
  61. package/dist/esm/imageLoader/internal/options.d.ts +3 -0
  62. package/dist/esm/imageLoader/internal/options.js +19 -0
  63. package/dist/esm/imageLoader/internal/rangeRequest.d.ts +9 -0
  64. package/dist/esm/imageLoader/internal/rangeRequest.js +121 -0
  65. package/dist/esm/imageLoader/internal/streamRequest.d.ts +2 -0
  66. package/dist/esm/imageLoader/internal/streamRequest.js +93 -0
  67. package/dist/esm/imageLoader/internal/xhrRequest.d.ts +3 -0
  68. package/dist/esm/imageLoader/internal/xhrRequest.js +101 -0
  69. package/dist/esm/imageLoader/isColorConversionRequired.d.ts +1 -0
  70. package/dist/esm/imageLoader/isColorConversionRequired.js +22 -0
  71. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  72. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  73. package/dist/esm/imageLoader/isNMReconstructable.d.ts +1 -0
  74. package/dist/esm/imageLoader/isNMReconstructable.js +3 -0
  75. package/dist/esm/imageLoader/registerLoaders.d.ts +2 -0
  76. package/dist/esm/imageLoader/registerLoaders.js +7 -0
  77. package/dist/esm/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  78. package/dist/esm/imageLoader/wadors/combineFrameInstance.js +44 -0
  79. package/dist/esm/imageLoader/wadors/extractMultipart.d.ts +23 -0
  80. package/dist/esm/imageLoader/wadors/extractMultipart.js +73 -0
  81. package/dist/esm/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  82. package/dist/esm/imageLoader/wadors/findIndexOfString.js +32 -0
  83. package/dist/esm/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  84. package/dist/esm/imageLoader/wadors/getImageQualityStatus.js +8 -0
  85. package/dist/esm/imageLoader/wadors/getPixelData.d.ts +26 -0
  86. package/dist/esm/imageLoader/wadors/getPixelData.js +35 -0
  87. package/dist/esm/imageLoader/wadors/getTagValue.d.ts +1 -0
  88. package/dist/esm/imageLoader/wadors/getTagValue.js +9 -0
  89. package/dist/esm/imageLoader/wadors/index.d.ts +29 -0
  90. package/dist/esm/imageLoader/wadors/index.js +25 -0
  91. package/dist/esm/imageLoader/wadors/loadImage.d.ts +25 -0
  92. package/dist/esm/imageLoader/wadors/loadImage.js +124 -0
  93. package/dist/esm/imageLoader/wadors/loadImage_test.d.ts +1 -0
  94. package/dist/esm/imageLoader/wadors/loadImage_test.js +41 -0
  95. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  96. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  97. package/dist/esm/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  98. package/dist/esm/imageLoader/wadors/metaData/USHelpers.js +46 -0
  99. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  100. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  101. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  102. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  103. package/dist/esm/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  104. package/dist/esm/imageLoader/wadors/metaData/getNumberString.js +9 -0
  105. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  106. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  107. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  108. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  109. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  110. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  111. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  112. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  113. package/dist/esm/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  114. package/dist/esm/imageLoader/wadors/metaData/getValue.js +14 -0
  115. package/dist/esm/imageLoader/wadors/metaData/index.d.ts +7 -0
  116. package/dist/esm/imageLoader/wadors/metaData/index.js +7 -0
  117. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  118. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.js +277 -0
  119. package/dist/esm/imageLoader/wadors/metaDataManager.d.ts +19 -0
  120. package/dist/esm/imageLoader/wadors/metaDataManager.js +68 -0
  121. package/dist/esm/imageLoader/wadors/register.d.ts +1 -0
  122. package/dist/esm/imageLoader/wadors/register.js +7 -0
  123. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  124. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  125. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.d.ts +28 -0
  126. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.js +141 -0
  127. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  128. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  129. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  130. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.js +55 -0
  131. package/dist/esm/imageLoader/wadouri/fileManager.d.ts +11 -0
  132. package/dist/esm/imageLoader/wadouri/fileManager.js +20 -0
  133. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  134. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.js +31 -0
  135. package/dist/esm/imageLoader/wadouri/getPixelData.d.ts +3 -0
  136. package/dist/esm/imageLoader/wadouri/getPixelData.js +13 -0
  137. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  138. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  139. package/dist/esm/imageLoader/wadouri/index.d.ts +45 -0
  140. package/dist/esm/imageLoader/wadouri/index.js +34 -0
  141. package/dist/esm/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  142. package/dist/esm/imageLoader/wadouri/loadFileRequest.js +17 -0
  143. package/dist/esm/imageLoader/wadouri/loadImage.d.ts +9 -0
  144. package/dist/esm/imageLoader/wadouri/loadImage.js +104 -0
  145. package/dist/esm/imageLoader/wadouri/loadedDataSets.d.ts +7 -0
  146. package/dist/esm/imageLoader/wadouri/loadedDataSets.js +5 -0
  147. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  148. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  149. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  150. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  151. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  152. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  153. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  154. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  155. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  156. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  157. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  158. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  159. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  160. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  161. package/dist/esm/imageLoader/wadouri/metaData/index.d.ts +5 -0
  162. package/dist/esm/imageLoader/wadouri/metaData/index.js +5 -0
  163. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.d.ts +4 -0
  164. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.js +227 -0
  165. package/dist/esm/imageLoader/wadouri/parseImageId.d.ts +8 -0
  166. package/dist/esm/imageLoader/wadouri/parseImageId.js +20 -0
  167. package/dist/esm/imageLoader/wadouri/register.d.ts +1 -0
  168. package/dist/esm/imageLoader/wadouri/register.js +9 -0
  169. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  170. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  171. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  172. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  173. package/dist/esm/index.d.ts +95 -0
  174. package/dist/esm/index.js +36 -0
  175. package/dist/esm/shared/decoders/decodeBigEndian.d.ts +4 -0
  176. package/dist/esm/shared/decoders/decodeBigEndian.js +28 -0
  177. package/dist/esm/shared/decoders/decodeHTJ2K.d.ts +5 -0
  178. package/dist/esm/shared/decoders/decodeHTJ2K.js +109 -0
  179. package/dist/esm/shared/decoders/decodeJPEG2000.d.ts +5 -0
  180. package/dist/esm/shared/decoders/decodeJPEG2000.js +93 -0
  181. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  182. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  183. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  184. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +0 -0
  185. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  186. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  187. package/dist/esm/shared/decoders/decodeJPEGLS.d.ts +5 -0
  188. package/dist/esm/shared/decoders/decodeJPEGLS.js +84 -0
  189. package/dist/esm/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  190. package/dist/esm/shared/decoders/decodeJPEGLossless.js +39 -0
  191. package/dist/esm/shared/decoders/decodeLittleEndian.d.ts +4 -0
  192. package/dist/esm/shared/decoders/decodeLittleEndian.js +29 -0
  193. package/dist/esm/shared/decoders/decodeRLE.d.ts +4 -0
  194. package/dist/esm/shared/decoders/decodeRLE.js +128 -0
  195. package/dist/esm/shared/getMinMax.d.ts +6 -0
  196. package/dist/esm/shared/getMinMax.js +16 -0
  197. package/dist/esm/shared/getMinMax_test.d.ts +1 -0
  198. package/dist/esm/shared/getMinMax_test.js +9 -0
  199. package/dist/esm/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  200. package/dist/esm/shared/getPixelDataTypeFromMinMax.js +22 -0
  201. package/dist/esm/shared/isColorImage.d.ts +1 -0
  202. package/dist/esm/shared/isColorImage.js +10 -0
  203. package/dist/esm/shared/scaling/bilinear.d.ts +1 -0
  204. package/dist/esm/shared/scaling/bilinear.js +32 -0
  205. package/dist/esm/shared/scaling/replicate.d.ts +1 -0
  206. package/dist/esm/shared/scaling/replicate.js +20 -0
  207. package/dist/esm/shared/scaling/scaleArray.d.ts +2 -0
  208. package/dist/esm/shared/scaling/scaleArray.js +17 -0
  209. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  210. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.js +0 -0
  211. package/dist/esm/types/DICOMLoaderIImage.d.ts +12 -0
  212. package/dist/esm/types/DICOMLoaderIImage.js +0 -0
  213. package/dist/esm/types/DICOMLoaderImageOptions.d.ts +23 -0
  214. package/dist/esm/types/DICOMLoaderImageOptions.js +0 -0
  215. package/dist/esm/types/LoadRequestFunction.d.ts +1 -0
  216. package/dist/esm/types/LoadRequestFunction.js +0 -0
  217. package/dist/esm/types/LoaderDecodeOptions.d.ts +2 -0
  218. package/dist/esm/types/LoaderDecodeOptions.js +0 -0
  219. package/dist/esm/types/LoaderOptions.d.ts +16 -0
  220. package/dist/esm/types/LoaderOptions.js +0 -0
  221. package/dist/esm/types/LutType.d.ts +6 -0
  222. package/dist/esm/types/LutType.js +0 -0
  223. package/dist/esm/types/WADORSMetaData.d.ts +4 -0
  224. package/dist/esm/types/WADORSMetaData.js +0 -0
  225. package/dist/esm/types/WebWorkerTypes.d.ts +64 -0
  226. package/dist/esm/types/WebWorkerTypes.js +0 -0
  227. package/dist/esm/types/XHRRequest.d.ts +16 -0
  228. package/dist/esm/types/XHRRequest.js +0 -0
  229. package/dist/esm/types/index.d.ts +11 -0
  230. package/dist/esm/types/index.js +0 -0
  231. package/dist/esm/version.d.ts +2 -0
  232. package/dist/esm/version.js +1 -0
  233. package/package.json +62 -18
  234. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +0 -2
  235. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +0 -1
  236. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  237. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  238. package/dist/dynamic-import/610.min.worker.js +0 -2
  239. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  240. package/dist/dynamic-import/945.min.worker.js +0 -2
  241. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js +0 -2
  243. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js.map +0 -1
  244. package/dist/index.worker.bundle.min.worker.js +0 -2
  245. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ import type { WebWorkerDecodeConfig } from '../../types';
4
+ export declare function initialize(decodeConfig?: WebWorkerDecodeConfig): Promise<void>;
5
+ declare function decodeJPEGLossless(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
6
+ export default decodeJPEGLossless;
@@ -0,0 +1,39 @@
1
+ const local = {
2
+ jpeg: undefined,
3
+ decodeConfig: {},
4
+ };
5
+ export function initialize(decodeConfig) {
6
+ local.decodeConfig = decodeConfig;
7
+ if (local.jpeg) {
8
+ return Promise.resolve();
9
+ }
10
+ return new Promise((resolve, reject) => {
11
+ import('../../codecs/jpegLossless').then((jpeg) => {
12
+ local.jpeg = jpeg;
13
+ resolve();
14
+ }, reject);
15
+ });
16
+ }
17
+ async function decodeJPEGLossless(imageFrame, pixelData) {
18
+ await initialize();
19
+ if (typeof local.jpeg === 'undefined' ||
20
+ typeof local.jpeg.lossless === 'undefined' ||
21
+ typeof local.jpeg.lossless.Decoder === 'undefined') {
22
+ throw new Error('No JPEG Lossless decoder loaded');
23
+ }
24
+ const byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;
25
+ const buffer = pixelData.buffer;
26
+ const decoder = new local.jpeg.lossless.Decoder();
27
+ const decompressedData = decoder.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);
28
+ if (imageFrame.pixelRepresentation === 0) {
29
+ if (imageFrame.bitsAllocated === 16) {
30
+ imageFrame.pixelData = new Uint16Array(decompressedData.buffer);
31
+ return imageFrame;
32
+ }
33
+ imageFrame.pixelData = new Uint8Array(decompressedData.buffer);
34
+ return imageFrame;
35
+ }
36
+ imageFrame.pixelData = new Int16Array(decompressedData.buffer);
37
+ return imageFrame;
38
+ }
39
+ export default decodeJPEGLossless;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeLittleEndian(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
4
+ export default decodeLittleEndian;
@@ -0,0 +1,29 @@
1
+ async function decodeLittleEndian(imageFrame, pixelData) {
2
+ let arrayBuffer = pixelData.buffer;
3
+ let offset = pixelData.byteOffset;
4
+ const length = pixelData.length;
5
+ if (imageFrame.bitsAllocated === 16) {
6
+ if (offset % 2) {
7
+ arrayBuffer = arrayBuffer.slice(offset);
8
+ offset = 0;
9
+ }
10
+ if (imageFrame.pixelRepresentation === 0) {
11
+ imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);
12
+ }
13
+ else {
14
+ imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);
15
+ }
16
+ }
17
+ else if (imageFrame.bitsAllocated === 8 || imageFrame.bitsAllocated === 1) {
18
+ imageFrame.pixelData = pixelData;
19
+ }
20
+ else if (imageFrame.bitsAllocated === 32) {
21
+ if (offset % 2) {
22
+ arrayBuffer = arrayBuffer.slice(offset);
23
+ offset = 0;
24
+ }
25
+ imageFrame.pixelData = new Float32Array(arrayBuffer, offset, length / 4);
26
+ }
27
+ return imageFrame;
28
+ }
29
+ export default decodeLittleEndian;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeRLE(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
4
+ export default decodeRLE;
@@ -0,0 +1,128 @@
1
+ async function decodeRLE(imageFrame, pixelData) {
2
+ if (imageFrame.bitsAllocated === 8) {
3
+ if (imageFrame.planarConfiguration) {
4
+ return decode8Planar(imageFrame, pixelData);
5
+ }
6
+ return decode8(imageFrame, pixelData);
7
+ }
8
+ else if (imageFrame.bitsAllocated === 16) {
9
+ return decode16(imageFrame, pixelData);
10
+ }
11
+ throw new Error('unsupported pixel format for RLE');
12
+ }
13
+ function decode8(imageFrame, pixelData) {
14
+ const frameData = pixelData;
15
+ const frameSize = imageFrame.rows * imageFrame.columns;
16
+ const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);
17
+ const header = new DataView(frameData.buffer, frameData.byteOffset);
18
+ const data = new Int8Array(frameData.buffer, frameData.byteOffset);
19
+ const out = new Int8Array(outFrame);
20
+ let outIndex = 0;
21
+ const numSegments = header.getInt32(0, true);
22
+ for (let s = 0; s < numSegments; ++s) {
23
+ outIndex = s;
24
+ let inIndex = header.getInt32((s + 1) * 4, true);
25
+ let maxIndex = header.getInt32((s + 2) * 4, true);
26
+ if (maxIndex === 0) {
27
+ maxIndex = frameData.length;
28
+ }
29
+ const endOfSegment = frameSize * numSegments;
30
+ while (inIndex < maxIndex) {
31
+ const n = data[inIndex++];
32
+ if (n >= 0 && n <= 127) {
33
+ for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {
34
+ out[outIndex] = data[inIndex++];
35
+ outIndex += imageFrame.samplesPerPixel;
36
+ }
37
+ }
38
+ else if (n <= -1 && n >= -127) {
39
+ const value = data[inIndex++];
40
+ for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {
41
+ out[outIndex] = value;
42
+ outIndex += imageFrame.samplesPerPixel;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ imageFrame.pixelData = new Uint8Array(outFrame);
48
+ return imageFrame;
49
+ }
50
+ function decode8Planar(imageFrame, pixelData) {
51
+ const frameData = pixelData;
52
+ const frameSize = imageFrame.rows * imageFrame.columns;
53
+ const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);
54
+ const header = new DataView(frameData.buffer, frameData.byteOffset);
55
+ const data = new Int8Array(frameData.buffer, frameData.byteOffset);
56
+ const out = new Int8Array(outFrame);
57
+ let outIndex = 0;
58
+ const numSegments = header.getInt32(0, true);
59
+ for (let s = 0; s < numSegments; ++s) {
60
+ outIndex = s * frameSize;
61
+ let inIndex = header.getInt32((s + 1) * 4, true);
62
+ let maxIndex = header.getInt32((s + 2) * 4, true);
63
+ if (maxIndex === 0) {
64
+ maxIndex = frameData.length;
65
+ }
66
+ const endOfSegment = frameSize * numSegments;
67
+ while (inIndex < maxIndex) {
68
+ const n = data[inIndex++];
69
+ if (n >= 0 && n <= 127) {
70
+ for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {
71
+ out[outIndex] = data[inIndex++];
72
+ outIndex++;
73
+ }
74
+ }
75
+ else if (n <= -1 && n >= -127) {
76
+ const value = data[inIndex++];
77
+ for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {
78
+ out[outIndex] = value;
79
+ outIndex++;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ imageFrame.pixelData = new Uint8Array(outFrame);
85
+ return imageFrame;
86
+ }
87
+ function decode16(imageFrame, pixelData) {
88
+ const frameData = pixelData;
89
+ const frameSize = imageFrame.rows * imageFrame.columns;
90
+ const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel * 2);
91
+ const header = new DataView(frameData.buffer, frameData.byteOffset);
92
+ const data = new Int8Array(frameData.buffer, frameData.byteOffset);
93
+ const out = new Int8Array(outFrame);
94
+ const numSegments = header.getInt32(0, true);
95
+ for (let s = 0; s < numSegments; ++s) {
96
+ let outIndex = 0;
97
+ const highByte = s === 0 ? 1 : 0;
98
+ let inIndex = header.getInt32((s + 1) * 4, true);
99
+ let maxIndex = header.getInt32((s + 2) * 4, true);
100
+ if (maxIndex === 0) {
101
+ maxIndex = frameData.length;
102
+ }
103
+ while (inIndex < maxIndex) {
104
+ const n = data[inIndex++];
105
+ if (n >= 0 && n <= 127) {
106
+ for (let i = 0; i < n + 1 && outIndex < frameSize; ++i) {
107
+ out[outIndex * 2 + highByte] = data[inIndex++];
108
+ outIndex++;
109
+ }
110
+ }
111
+ else if (n <= -1 && n >= -127) {
112
+ const value = data[inIndex++];
113
+ for (let j = 0; j < -n + 1 && outIndex < frameSize; ++j) {
114
+ out[outIndex * 2 + highByte] = value;
115
+ outIndex++;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ if (imageFrame.pixelRepresentation === 0) {
121
+ imageFrame.pixelData = new Uint16Array(outFrame);
122
+ }
123
+ else {
124
+ imageFrame.pixelData = new Int16Array(outFrame);
125
+ }
126
+ return imageFrame;
127
+ }
128
+ export default decodeRLE;
@@ -0,0 +1,6 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function getMinMax(storedPixelData: Types.PixelDataTypedArray): {
3
+ min: number;
4
+ max: number;
5
+ };
6
+ export default getMinMax;
@@ -0,0 +1,16 @@
1
+ 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 = 1; 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
+ }
16
+ export default getMinMax;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { expect } from 'chai';
2
+ import getMinMax from './getMinMax';
3
+ describe('#getMinMax', () => {
4
+ it('should return the right min and max values', () => {
5
+ const result = getMinMax([7, 3, 9, 6, 8, 1, 4, 5, 2]);
6
+ expect(result.min).to.be.equal(1);
7
+ expect(result.max).to.be.equal(9);
8
+ });
9
+ });
@@ -0,0 +1,2 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ export default function getPixelDataTypeFromMinMax(min: number, max: number): Types.PixelDataTypedArray;
@@ -0,0 +1,22 @@
1
+ export default function getPixelDataTypeFromMinMax(min, max) {
2
+ let pixelDataType;
3
+ if (Number.isInteger(min) && Number.isInteger(max)) {
4
+ if (min >= 0) {
5
+ if (max <= 255) {
6
+ pixelDataType = Uint8Array;
7
+ }
8
+ else if (max <= 65535) {
9
+ pixelDataType = Uint16Array;
10
+ }
11
+ }
12
+ else {
13
+ if (min >= -128 && max <= 127) {
14
+ pixelDataType = Int8Array;
15
+ }
16
+ else if (min >= -32768 && max <= 32767) {
17
+ pixelDataType = Int16Array;
18
+ }
19
+ }
20
+ }
21
+ return pixelDataType || Float32Array;
22
+ }
@@ -0,0 +1 @@
1
+ export default function (photoMetricInterpretation: string): boolean;
@@ -0,0 +1,10 @@
1
+ export default function (photoMetricInterpretation) {
2
+ return (photoMetricInterpretation === 'RGB' ||
3
+ photoMetricInterpretation === 'PALETTE COLOR' ||
4
+ photoMetricInterpretation === 'YBR_FULL' ||
5
+ photoMetricInterpretation === 'YBR_FULL_422' ||
6
+ photoMetricInterpretation === 'YBR_PARTIAL_422' ||
7
+ photoMetricInterpretation === 'YBR_PARTIAL_420' ||
8
+ photoMetricInterpretation === 'YBR_RCT' ||
9
+ photoMetricInterpretation === 'YBR_ICT');
10
+ }
@@ -0,0 +1 @@
1
+ export default function bilinear(src: any, dest: any): any;
@@ -0,0 +1,32 @@
1
+ export default function bilinear(src, dest) {
2
+ const { rows: srcRows, columns: srcColumns, data: srcData } = src;
3
+ const { rows, columns, data } = dest;
4
+ const xSrc1Off = [];
5
+ const xSrc2Off = [];
6
+ const xFrac = [];
7
+ for (let x = 0; x < columns; x++) {
8
+ const xSrc = (x * (srcColumns - 1)) / (columns - 1);
9
+ xSrc1Off[x] = Math.floor(xSrc);
10
+ xSrc2Off[x] = Math.min(xSrc1Off[x] + 1, srcColumns - 1);
11
+ xFrac[x] = xSrc - xSrc1Off[x];
12
+ }
13
+ for (let y = 0; y < rows; y++) {
14
+ const ySrc = (y * (srcRows - 1)) / (rows - 1);
15
+ const ySrc1Off = Math.floor(ySrc) * srcColumns;
16
+ const ySrc2Off = Math.min(ySrc1Off + srcColumns, (srcRows - 1) * srcColumns);
17
+ const yFrac = ySrc - Math.floor(ySrc);
18
+ const yFracInv = 1 - yFrac;
19
+ const yOff = y * columns;
20
+ for (let x = 0; x < columns; x++) {
21
+ const p00 = srcData[ySrc1Off + xSrc1Off[x]];
22
+ const p10 = srcData[ySrc1Off + xSrc2Off[x]];
23
+ const p01 = srcData[ySrc2Off + xSrc1Off[x]];
24
+ const p11 = srcData[ySrc2Off + xSrc2Off[x]];
25
+ const xFracInv = 1 - xFrac[x];
26
+ data[yOff + x] =
27
+ (p00 * xFracInv + p10 * xFrac[x]) * yFracInv +
28
+ (p01 * xFracInv + p11 * xFrac[x]) * yFrac;
29
+ }
30
+ }
31
+ return data;
32
+ }
@@ -0,0 +1 @@
1
+ export default function replicate(src: any, dest: any): any;
@@ -0,0 +1,20 @@
1
+ export default function replicate(src, dest) {
2
+ const { rows: srcRows, columns: srcColumns, pixelData: srcData, samplesPerPixel = 1, } = src;
3
+ const { rows, columns, pixelData } = dest;
4
+ const xSrc1Off = [];
5
+ for (let x = 0; x < columns; x++) {
6
+ const xSrc = (x * (srcColumns - 1)) / (columns - 1);
7
+ xSrc1Off[x] = Math.floor(xSrc) * samplesPerPixel;
8
+ }
9
+ for (let y = 0; y < rows; y++) {
10
+ const ySrc = (y * (srcRows - 1)) / (rows - 1);
11
+ const ySrc1Off = Math.floor(ySrc) * srcColumns * samplesPerPixel;
12
+ const yOff = y * columns;
13
+ for (let x = 0; x < columns; x++) {
14
+ for (let sample = 0; sample < samplesPerPixel; sample++) {
15
+ pixelData[yOff + x + sample] = srcData[ySrc1Off + xSrc1Off[x] + sample];
16
+ }
17
+ }
18
+ }
19
+ return pixelData;
20
+ }
@@ -0,0 +1,2 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ export default function scaleArray(array: Types.PixelDataTypedArray, scalingParameters: any): boolean;
@@ -0,0 +1,17 @@
1
+ export default function scaleArray(array, scalingParameters) {
2
+ const arrayLength = array.length;
3
+ const { rescaleSlope, rescaleIntercept, suvbw } = scalingParameters;
4
+ if (scalingParameters.modality === 'PT' &&
5
+ typeof suvbw === 'number' &&
6
+ !isNaN(suvbw)) {
7
+ for (let i = 0; i < arrayLength; i++) {
8
+ array[i] = suvbw * (array[i] * rescaleSlope + rescaleIntercept);
9
+ }
10
+ }
11
+ else {
12
+ for (let i = 0; i < arrayLength; i++) {
13
+ array[i] = array[i] * rescaleSlope + rescaleIntercept;
14
+ }
15
+ }
16
+ return true;
17
+ }
@@ -0,0 +1,9 @@
1
+ import type { DataSet } from 'dicom-parser';
2
+ export interface DICOMLoaderDataSetWithFetchMore extends DataSet {
3
+ fetchMore?: (fetchOptions: {
4
+ uri: string;
5
+ imageId: string;
6
+ fetchedLength: number;
7
+ lengthToFetch: number;
8
+ }) => Promise<DICOMLoaderDataSetWithFetchMore>;
9
+ }
@@ -0,0 +1,12 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import type { ByteArray, DataSet } from 'dicom-parser';
3
+ export interface DICOMLoaderIImage extends Types.IImage {
4
+ decodeTimeInMS: number;
5
+ floatPixelData?: ByteArray | Float32Array;
6
+ loadTimeInMS?: number;
7
+ totalTimeInMS?: number;
8
+ data?: DataSet;
9
+ imageFrame?: Types.IImageFrame;
10
+ voiLUTFunction: string | undefined;
11
+ transferSyntaxUID?: string;
12
+ }
File without changes
@@ -0,0 +1,23 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import type { LoadRequestFunction } from './LoadRequestFunction';
3
+ import type { StreamingData } from '../imageLoader/wadors/loadImage';
4
+ export interface DICOMLoaderImageOptions {
5
+ useRGBA?: boolean;
6
+ allowFloatRendering?: boolean;
7
+ preScale?: {
8
+ enabled: boolean;
9
+ scalingParameters?: Types.ScalingParameters;
10
+ };
11
+ targetBuffer?: {
12
+ type: Types.PixelDataTypedArrayString;
13
+ arrayBuffer: ArrayBufferLike;
14
+ length: number;
15
+ offset: number;
16
+ rows?: number;
17
+ columns?: number;
18
+ };
19
+ loader?: LoadRequestFunction;
20
+ decodeLevel?: number;
21
+ retrieveOptions?: Types.RetrieveOptions;
22
+ streamingData?: StreamingData;
23
+ }
File without changes
@@ -0,0 +1 @@
1
+ export type LoadRequestFunction = (url: string, imageId: string, ...args: unknown[]) => Promise<ArrayBuffer>;
File without changes
@@ -0,0 +1,2 @@
1
+ export interface LoaderDecodeOptions {
2
+ }
File without changes
@@ -0,0 +1,16 @@
1
+ import type { LoaderDecodeOptions } from './LoaderDecodeOptions';
2
+ import type { LoaderXhrRequestError, LoaderXhrRequestParams } from './XHRRequest';
3
+ export interface LoaderOptions {
4
+ maxWebWorkers?: number;
5
+ open?: (xhr: XMLHttpRequest, url: string, defaultHeaders: Record<string, string>, params: LoaderXhrRequestParams) => void;
6
+ beforeSend?: (xhr: XMLHttpRequest, imageId: string, defaultHeaders: Record<string, string>, params: LoaderXhrRequestParams) => Record<string, string> | void;
7
+ beforeProcessing?: (xhr: XMLHttpRequest) => Promise<ArrayBuffer>;
8
+ imageCreated?: (imageObject: unknown) => void;
9
+ onloadstart?: (event: ProgressEvent<EventTarget>, params: unknown) => void;
10
+ onloadend?: (event: ProgressEvent<EventTarget>, params: unknown) => void;
11
+ onreadystatechange?: (event: Event, params: unknown) => void;
12
+ onprogress?: (event: ProgressEvent<EventTarget>, params: unknown) => void;
13
+ errorInterceptor?: (error: LoaderXhrRequestError) => void;
14
+ strict?: boolean;
15
+ decodeConfig?: LoaderDecodeOptions;
16
+ }
File without changes
@@ -0,0 +1,6 @@
1
+ export interface LutType {
2
+ id: string;
3
+ firstValueMapped: number;
4
+ numBitsPerEntry: number;
5
+ lut: number[];
6
+ }
File without changes
@@ -0,0 +1,4 @@
1
+ export interface WADORSMetaDataElement<ValueType = string[] | number[] | boolean> {
2
+ Value: ValueType;
3
+ }
4
+ export type WADORSMetaData = Record<string, WADORSMetaDataElement>;
File without changes
@@ -0,0 +1,64 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ import type { LoaderOptions } from './LoaderOptions';
4
+ import type { LoaderDecodeOptions } from './LoaderDecodeOptions';
5
+ export interface WebWorkerOptions {
6
+ maxWebWorkers?: number;
7
+ startWebWorkersOnDemand?: boolean;
8
+ webWorkerTaskPaths?: string[];
9
+ taskConfiguration?: WebWorkerTaskOptions;
10
+ }
11
+ export interface WebWorkerDecodeConfig {
12
+ initializeCodecsOnStartup: boolean;
13
+ strict?: boolean;
14
+ }
15
+ export interface WebWorkerTaskOptions {
16
+ decodeTask: WebWorkerDecodeConfig;
17
+ }
18
+ export interface WebWorkerDeferredObject<T = unknown> {
19
+ resolve: (arg: T | PromiseLike<T>) => void;
20
+ reject: (err: any) => void;
21
+ }
22
+ export type WorkerTaskTypes = 'decodeTask' | 'loadWebWorkerTask' | 'initialize';
23
+ export interface WorkerTask {
24
+ taskId: number;
25
+ taskType: WorkerTaskTypes;
26
+ status: 'ready' | 'success' | 'failed';
27
+ added: number;
28
+ start?: number;
29
+ data: WebWorkerDecodeTaskData;
30
+ deferred: WebWorkerDeferredObject;
31
+ priority: number;
32
+ transferList: Transferable[];
33
+ }
34
+ export interface WebWorkerDecodeTaskData {
35
+ imageFrame: Types.IImageFrame;
36
+ transferSyntax: string;
37
+ pixelData: ByteArray;
38
+ options: LoaderOptions;
39
+ decodeConfig: LoaderDecodeOptions;
40
+ }
41
+ export interface WebWorkerDecodeData {
42
+ taskType: 'decodeTask';
43
+ workerIndex: number;
44
+ data: WebWorkerDecodeTaskData;
45
+ }
46
+ export interface WebWorkerLoadData {
47
+ taskType: 'loadWebWorkerTask';
48
+ workerIndex: number;
49
+ sourcePath: string;
50
+ config: WebWorkerOptions;
51
+ }
52
+ export interface WebWorkerInitializeData {
53
+ taskType: 'initialize';
54
+ workerIndex: number;
55
+ config: WebWorkerOptions;
56
+ }
57
+ export type WebWorkerData = WebWorkerDecodeData | WebWorkerLoadData | WebWorkerInitializeData;
58
+ export interface WebWorkerResponse {
59
+ taskType: WorkerTaskTypes;
60
+ status: 'failed' | 'success';
61
+ workerIndex: number;
62
+ data?: Types.IImageFrame;
63
+ result: string | Types.IImageFrame;
64
+ }
File without changes
@@ -0,0 +1,16 @@
1
+ export interface LoaderXhrRequestError extends Error {
2
+ request: XMLHttpRequest;
3
+ response: unknown;
4
+ status: number;
5
+ }
6
+ export interface LoaderXhrRequestParams {
7
+ url?: string;
8
+ deferred?: {
9
+ resolve: (value: ArrayBuffer | PromiseLike<ArrayBuffer>) => void;
10
+ reject: (reason: any) => void;
11
+ };
12
+ imageId?: string;
13
+ }
14
+ export interface LoaderXhrRequestPromise<T> extends Promise<T> {
15
+ xhr?: XMLHttpRequest;
16
+ }
File without changes
@@ -0,0 +1,11 @@
1
+ import type { LoaderXhrRequestError, LoaderXhrRequestParams, LoaderXhrRequestPromise } from './XHRRequest';
2
+ import type { WADORSMetaData, WADORSMetaDataElement } from './WADORSMetaData';
3
+ import type { LoaderOptions } from './LoaderOptions';
4
+ import type { LoaderDecodeOptions } from './LoaderDecodeOptions';
5
+ import type { DICOMLoaderIImage } from './DICOMLoaderIImage';
6
+ import type { DICOMLoaderImageOptions } from './DICOMLoaderImageOptions';
7
+ import type { LutType } from './LutType';
8
+ import type { LoadRequestFunction } from './LoadRequestFunction';
9
+ import type { DICOMLoaderDataSetWithFetchMore } from './DICOMLoaderDataSetWithFetchMore';
10
+ import type { WebWorkerOptions, WebWorkerDecodeConfig, WebWorkerTaskOptions, WorkerTaskTypes, WorkerTask, WebWorkerDecodeTaskData, WebWorkerDecodeData, WebWorkerLoadData, WebWorkerInitializeData, WebWorkerData, WebWorkerResponse, WebWorkerDeferredObject } from './WebWorkerTypes';
11
+ export type { LoaderDecodeOptions, LoaderOptions, WADORSMetaData, WADORSMetaDataElement, LoaderXhrRequestError, LoaderXhrRequestParams, LoaderXhrRequestPromise, DICOMLoaderIImage, DICOMLoaderImageOptions, LutType, WebWorkerOptions, WebWorkerDecodeConfig, WebWorkerTaskOptions, WorkerTaskTypes, WorkerTask, WebWorkerDecodeTaskData, WebWorkerDecodeData, WebWorkerLoadData, WebWorkerInitializeData, WebWorkerData, WebWorkerResponse, WebWorkerDeferredObject, LoadRequestFunction, DICOMLoaderDataSetWithFetchMore, };
File without changes
@@ -0,0 +1,2 @@
1
+ declare const _default: "0.0.1";
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export default '0.0.1';