@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,2 @@
1
+ declare function findIndexOfString(data: Uint8Array, str: string, offset?: number): number;
2
+ export default findIndexOfString;
@@ -0,0 +1,32 @@
1
+ function checkToken(token, data, dataOffset) {
2
+ if (dataOffset + token.length > data.length) {
3
+ return false;
4
+ }
5
+ let endIndex = dataOffset;
6
+ for (let i = 0; i < token.length; i++) {
7
+ if (token[i] !== data[endIndex++]) {
8
+ return false;
9
+ }
10
+ }
11
+ return true;
12
+ }
13
+ function stringToUint8Array(str) {
14
+ const uint = new Uint8Array(str.length);
15
+ for (let i = 0, j = str.length; i < j; i++) {
16
+ uint[i] = str.charCodeAt(i);
17
+ }
18
+ return uint;
19
+ }
20
+ function findIndexOfString(data, str, offset) {
21
+ offset = offset || 0;
22
+ const token = stringToUint8Array(str);
23
+ for (let i = offset; i < data.length; i++) {
24
+ if (token[0] === data[i]) {
25
+ if (checkToken(token, data, i)) {
26
+ return i;
27
+ }
28
+ }
29
+ }
30
+ return -1;
31
+ }
32
+ export default findIndexOfString;
@@ -0,0 +1,3 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import { Enums } from '@cornerstonejs/core';
3
+ export declare function getImageQualityStatus(retrieveOptions: Types.RetrieveOptions, done?: boolean): Enums.ImageQualityStatus;
@@ -0,0 +1,8 @@
1
+ import { Enums } from '@cornerstonejs/core';
2
+ const { ImageQualityStatus } = Enums;
3
+ export function getImageQualityStatus(retrieveOptions, done = true) {
4
+ if (!done) {
5
+ return ImageQualityStatus.SUBRESOLUTION;
6
+ }
7
+ return (retrieveOptions.imageQualityStatus ?? ImageQualityStatus.FULL_RESOLUTION);
8
+ }
@@ -0,0 +1,26 @@
1
+ import type { CornerstoneWadoRsLoaderOptions } from './loadImage';
2
+ declare function getPixelData(uri: string, imageId: string, mediaType?: string, options?: CornerstoneWadoRsLoaderOptions): import("packages/core/dist/esm/utilities/ProgressiveIterator").PromiseIterator<unknown> | import("../../types").LoaderXhrRequestPromise<{
3
+ contentType: string;
4
+ pixelData: Uint8Array;
5
+ imageQualityStatus: import("packages/core/dist/esm/enums").ImageQualityStatus;
6
+ percentComplete: number;
7
+ }> | Promise<{
8
+ contentType: string;
9
+ imageQualityStatus: import("packages/core/dist/esm/enums").ImageQualityStatus;
10
+ pixelData: Uint8Array;
11
+ extractDone?: undefined;
12
+ tokenIndex?: undefined;
13
+ responseHeaders?: undefined;
14
+ boundary?: undefined;
15
+ multipartContentType?: undefined;
16
+ } | {
17
+ contentType: any;
18
+ extractDone: boolean;
19
+ tokenIndex: any;
20
+ responseHeaders: any;
21
+ boundary: any;
22
+ multipartContentType: any;
23
+ pixelData: any;
24
+ imageQualityStatus?: undefined;
25
+ }>;
26
+ export default getPixelData;
@@ -0,0 +1,35 @@
1
+ import { xhrRequest } from '../internal/index';
2
+ import streamRequest from '../internal/streamRequest';
3
+ import rangeRequest from '../internal/rangeRequest';
4
+ import extractMultipart from './extractMultipart';
5
+ import { getImageQualityStatus } from './getImageQualityStatus';
6
+ function getPixelData(uri, imageId, mediaType = 'application/octet-stream', options) {
7
+ const { streamingData, retrieveOptions = {} } = options || {};
8
+ const headers = {
9
+ Accept: mediaType,
10
+ };
11
+ let url = retrieveOptions.urlArguments
12
+ ? `${uri}${uri.indexOf('?') === -1 ? '?' : '&'}${retrieveOptions.urlArguments}`
13
+ : uri;
14
+ if (retrieveOptions.framesPath) {
15
+ url = url.replace('/frames/', retrieveOptions.framesPath);
16
+ }
17
+ if (streamingData?.url !== url) {
18
+ options.streamingData = { url };
19
+ }
20
+ if (retrieveOptions.rangeIndex !== undefined) {
21
+ return rangeRequest(url, imageId, headers, options);
22
+ }
23
+ if (retrieveOptions.streaming) {
24
+ return streamRequest(url, imageId, headers, options);
25
+ }
26
+ const loadPromise = xhrRequest(url, imageId, headers);
27
+ const { xhr } = loadPromise;
28
+ return loadPromise.then(function (imageFrameAsArrayBuffer) {
29
+ const contentType = xhr.getResponseHeader('Content-Type') || 'application/octet-stream';
30
+ const extracted = extractMultipart(contentType, new Uint8Array(imageFrameAsArrayBuffer));
31
+ extracted.imageQualityStatus = getImageQualityStatus(retrieveOptions, true);
32
+ return extracted;
33
+ });
34
+ }
35
+ export default getPixelData;
@@ -0,0 +1 @@
1
+ export default function getTagValue(tag: any, justElement?: boolean): any;
@@ -0,0 +1,9 @@
1
+ export default function getTagValue(tag, justElement = true) {
2
+ if (tag && tag.Value) {
3
+ if (tag.Value[0] && justElement) {
4
+ return tag.Value[0];
5
+ }
6
+ return tag.Value;
7
+ }
8
+ return tag;
9
+ }
@@ -0,0 +1,29 @@
1
+ import getNumberString from './metaData/getNumberString';
2
+ import getNumberValue from './metaData/getNumberValue';
3
+ import getNumberValues from './metaData/getNumberValues';
4
+ import getValue from './metaData/getValue';
5
+ import metaDataProvider from './metaData/metaDataProvider';
6
+ import findIndexOfString from './findIndexOfString';
7
+ import getPixelData from './getPixelData';
8
+ import loadImage from './loadImage';
9
+ import register from './register';
10
+ declare const _default: {
11
+ metaData: {
12
+ getNumberString: typeof getNumberString;
13
+ getNumberValue: typeof getNumberValue;
14
+ getNumberValues: typeof getNumberValues;
15
+ getValue: typeof getValue;
16
+ metaDataProvider: typeof metaDataProvider;
17
+ };
18
+ findIndexOfString: typeof findIndexOfString;
19
+ getPixelData: typeof getPixelData;
20
+ loadImage: typeof loadImage;
21
+ metaDataManager: {
22
+ add: (imageId: string, metadata: import("../../types").WADORSMetaData) => void;
23
+ get: (imageId: string) => import("../../types").WADORSMetaData;
24
+ remove: (imageId: any) => void;
25
+ purge: () => void;
26
+ };
27
+ register: typeof register;
28
+ };
29
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import getNumberString from './metaData/getNumberString';
2
+ import getNumberValue from './metaData/getNumberValue';
3
+ import getNumberValues from './metaData/getNumberValues';
4
+ import getValue from './metaData/getValue';
5
+ import metaDataProvider from './metaData/metaDataProvider';
6
+ import findIndexOfString from './findIndexOfString';
7
+ import getPixelData from './getPixelData';
8
+ import metaDataManager from './metaDataManager';
9
+ import loadImage from './loadImage';
10
+ import register from './register';
11
+ const metaData = {
12
+ getNumberString,
13
+ getNumberValue,
14
+ getNumberValues,
15
+ getValue,
16
+ metaDataProvider,
17
+ };
18
+ export default {
19
+ metaData,
20
+ findIndexOfString,
21
+ getPixelData,
22
+ loadImage,
23
+ metaDataManager,
24
+ register,
25
+ };
@@ -0,0 +1,25 @@
1
+ import { Enums as csCoreEnums, type Types } from '@cornerstonejs/core';
2
+ import type { DICOMLoaderImageOptions } from '../../types';
3
+ export declare function getTransferSyntaxForContentType(contentType: string): string;
4
+ export interface StreamingData {
5
+ url: string;
6
+ encodedData?: Uint8Array;
7
+ totalBytes?: number;
8
+ chunkSize?: number;
9
+ totalRanges?: number;
10
+ rangesFetched?: number;
11
+ }
12
+ export interface CornerstoneWadoRsLoaderOptions extends DICOMLoaderImageOptions {
13
+ requestType?: csCoreEnums.RequestType;
14
+ additionalDetails?: {
15
+ imageId: string;
16
+ };
17
+ priority?: number;
18
+ addToBeginning?: boolean;
19
+ retrieveType?: string;
20
+ transferSyntaxUID?: string;
21
+ retrieveOptions?: Types.RangeRetrieveOptions;
22
+ streamingData?: StreamingData;
23
+ }
24
+ declare function loadImage(imageId: string, options?: CornerstoneWadoRsLoaderOptions): Types.IImageLoadObject;
25
+ export default loadImage;
@@ -0,0 +1,124 @@
1
+ import { Enums, imageRetrievalPoolManager, utilities, } from '@cornerstonejs/core';
2
+ import { Enums as csCoreEnums } from '@cornerstonejs/core';
3
+ import createImage from '../createImage';
4
+ import getPixelData from './getPixelData';
5
+ const { ProgressiveIterator } = utilities;
6
+ const { ImageQualityStatus } = Enums;
7
+ const streamableTransferSyntaxes = new Set([
8
+ '3.2.840.10008.1.2.4.96',
9
+ '1.2.840.10008.1.2.4.202',
10
+ '1.2.840.10008.1.2.4.203',
11
+ ]);
12
+ export function getTransferSyntaxForContentType(contentType) {
13
+ const defaultTransferSyntax = '1.2.840.10008.1.2';
14
+ if (!contentType) {
15
+ return defaultTransferSyntax;
16
+ }
17
+ const parameters = contentType.split(';');
18
+ const params = {};
19
+ parameters.forEach((parameter) => {
20
+ const parameterValues = parameter.split('=');
21
+ if (parameterValues.length !== 2) {
22
+ return;
23
+ }
24
+ const value = parameterValues[1].trim().replace(/"/g, '');
25
+ params[parameterValues[0].trim()] = value;
26
+ });
27
+ const defaultTransferSyntaxByType = {
28
+ 'image/jpeg': '1.2.840.10008.1.2.4.50',
29
+ 'image/x-dicom-rle': '1.2.840.10008.1.2.5',
30
+ 'image/x-jls': '1.2.840.10008.1.2.4.80',
31
+ 'image/jls': '1.2.840.10008.1.2.4.80',
32
+ 'image/jll': '1.2.840.10008.1.2.4.70',
33
+ 'image/jp2': '1.2.840.10008.1.2.4.90',
34
+ 'image/jpx': '1.2.840.10008.1.2.4.92',
35
+ 'image/jphc': '3.2.840.10008.1.2.4.96',
36
+ 'image/jxl': '1.2.840.10008.1.2.4.140',
37
+ };
38
+ if (params['transfer-syntax']) {
39
+ return params['transfer-syntax'];
40
+ }
41
+ else if (contentType &&
42
+ !Object.keys(params).length &&
43
+ defaultTransferSyntaxByType[contentType]) {
44
+ return defaultTransferSyntaxByType[contentType];
45
+ }
46
+ else if (params.type && defaultTransferSyntaxByType[params.type]) {
47
+ return defaultTransferSyntaxByType[params.type];
48
+ }
49
+ else if (defaultTransferSyntaxByType[contentType]) {
50
+ return defaultTransferSyntaxByType[contentType];
51
+ }
52
+ return defaultTransferSyntax;
53
+ }
54
+ function getImageRetrievalPool() {
55
+ return imageRetrievalPoolManager;
56
+ }
57
+ const mediaType = 'multipart/related; type=application/octet-stream; transfer-syntax=*';
58
+ function loadImage(imageId, options = {}) {
59
+ const imageRetrievalPool = getImageRetrievalPool();
60
+ const start = new Date().getTime();
61
+ const uncompressedIterator = new ProgressiveIterator('decompress');
62
+ async function sendXHR(imageURI, imageId, mediaType) {
63
+ uncompressedIterator.generate(async (it) => {
64
+ const compressedIt = ProgressiveIterator.as(getPixelData(imageURI, imageId, mediaType, options));
65
+ let lastDecodeLevel = 10;
66
+ for await (const result of compressedIt) {
67
+ const { pixelData, imageQualityStatus = ImageQualityStatus.FULL_RESOLUTION, percentComplete, done = true, extractDone = true, } = result;
68
+ const transferSyntax = getTransferSyntaxForContentType(result.contentType);
69
+ if (!extractDone && !streamableTransferSyntaxes.has(transferSyntax)) {
70
+ continue;
71
+ }
72
+ const decodeLevel = result.decodeLevel ??
73
+ (imageQualityStatus === ImageQualityStatus.FULL_RESOLUTION
74
+ ? 0
75
+ : decodeLevelFromComplete(percentComplete, options.retrieveOptions?.decodeLevel));
76
+ if (!done && lastDecodeLevel <= decodeLevel) {
77
+ continue;
78
+ }
79
+ try {
80
+ const useOptions = {
81
+ ...options,
82
+ decodeLevel,
83
+ };
84
+ const image = (await createImage(imageId, pixelData, transferSyntax, useOptions));
85
+ const end = new Date().getTime();
86
+ image.loadTimeInMS = end - start;
87
+ image.transferSyntaxUID = transferSyntax;
88
+ image.imageQualityStatus = imageQualityStatus;
89
+ it.add(image, done);
90
+ lastDecodeLevel = decodeLevel;
91
+ }
92
+ catch (e) {
93
+ if (extractDone) {
94
+ console.warn("Couldn't decode", e);
95
+ throw e;
96
+ }
97
+ }
98
+ }
99
+ });
100
+ }
101
+ const requestType = options.requestType || csCoreEnums.RequestType.Interaction;
102
+ const additionalDetails = options.additionalDetails || { imageId };
103
+ const priority = options.priority === undefined ? 5 : options.priority;
104
+ const uri = imageId.substring(7);
105
+ imageRetrievalPool.addRequest(sendXHR.bind(this, uri, imageId, mediaType), requestType, additionalDetails, priority);
106
+ return {
107
+ promise: uncompressedIterator.getDonePromise(),
108
+ cancelFn: undefined,
109
+ };
110
+ }
111
+ function decodeLevelFromComplete(percent, retrieveDecodeLevel = 4) {
112
+ const testSize = percent / 100 - 0.02;
113
+ if (testSize > 1 / 4) {
114
+ return Math.min(retrieveDecodeLevel, 0);
115
+ }
116
+ if (testSize > 1 / 16) {
117
+ return Math.min(retrieveDecodeLevel, 1);
118
+ }
119
+ if (testSize > 1 / 64) {
120
+ return Math.min(retrieveDecodeLevel, 2);
121
+ }
122
+ return Math.min(retrieveDecodeLevel, 3);
123
+ }
124
+ export default loadImage;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ import { expect } from 'chai';
2
+ import { getTransferSyntaxForContentType } from './loadImage';
3
+ const cases = [
4
+ [undefined, '1.2.840.10008.1.2'],
5
+ [null, '1.2.840.10008.1.2'],
6
+ ['', '1.2.840.10008.1.2'],
7
+ ['multipart/related; type="application/octet-stream"', '1.2.840.10008.1.2'],
8
+ [
9
+ 'multipart/related; type="application/octet-stream"; transfer-syntax= ',
10
+ '1.2.840.10008.1.2',
11
+ ],
12
+ [
13
+ 'multipart/related; type=image/dicom+jpeg; transfer-syntax=1.2.840.10008.1.2.4.70',
14
+ '1.2.840.10008.1.2.4.70',
15
+ ],
16
+ [
17
+ 'multipart/related; image/dicom+jpx; transfer-syntax=1.2.840.10008.1.2.4.93',
18
+ '1.2.840.10008.1.2.4.93',
19
+ ],
20
+ [
21
+ 'multipart/related; video/mpeg; transfer-syntax=1.2.840.10008.1.2.4.100',
22
+ '1.2.840.10008.1.2.4.100',
23
+ ],
24
+ ['multipart/related; type="image/jpeg"', '1.2.840.10008.1.2.4.50'],
25
+ ['multipart/related; type="image/x-jls"', '1.2.840.10008.1.2.4.80'],
26
+ ['multipart/related; type="image/x-dicom-rle"', '1.2.840.10008.1.2.5'],
27
+ ['multipart/related; type="image/jp2"', '1.2.840.10008.1.2.4.90'],
28
+ ['multipart/related; type="image/jpx"', '1.2.840.10008.1.2.4.92'],
29
+ ];
30
+ describe('#getTransferSyntaxForContentType', function () {
31
+ cases.forEach(function (testCase) {
32
+ const contentType = testCase[0];
33
+ const expectedTransferSyntax = testCase[1];
34
+ it(`given a content type of ${contentType}, should return ${expectedTransferSyntax}`, () => {
35
+ const transferSyntax = getTransferSyntaxForContentType(contentType);
36
+ console.log(transferSyntax);
37
+ console.log(expectedTransferSyntax);
38
+ expect(transferSyntax).to.be.equal(expectedTransferSyntax);
39
+ });
40
+ });
41
+ });
@@ -0,0 +1,5 @@
1
+ declare function isNMModality(metaData: any): boolean;
2
+ declare function getImageTypeSubItemFromMetadata(metaData: any, index: any): any;
3
+ declare function extractOrientationFromNMMultiframeMetadata(metaData: any): any;
4
+ declare function extractPositionFromNMMultiframeMetadata(metaData: any): any;
5
+ export { extractOrientationFromNMMultiframeMetadata, extractPositionFromNMMultiframeMetadata, isNMModality, getImageTypeSubItemFromMetadata, };
@@ -0,0 +1,38 @@
1
+ import getTagValue from '../getTagValue';
2
+ import getValue from './getValue';
3
+ import isNMReconstructable from '../../isNMReconstructable';
4
+ import getNumberValues from './getNumberValues';
5
+ function isNMModality(metaData) {
6
+ const modality = getValue(metaData['00080060']);
7
+ return modality.includes('NM');
8
+ }
9
+ function getImageTypeSubItemFromMetadata(metaData, index) {
10
+ const imageType = getTagValue(metaData['00080008'], false);
11
+ if (imageType) {
12
+ return imageType[index];
13
+ }
14
+ return undefined;
15
+ }
16
+ function extractOrientationFromNMMultiframeMetadata(metaData) {
17
+ let imageOrientationPatient;
18
+ const imageSubType = getImageTypeSubItemFromMetadata(metaData, 2);
19
+ if (imageSubType && isNMReconstructable(imageSubType)) {
20
+ const detectorInformationSequence = getTagValue(metaData['00540022']);
21
+ if (detectorInformationSequence) {
22
+ imageOrientationPatient = getNumberValues(detectorInformationSequence['00200037'], 6);
23
+ }
24
+ }
25
+ return imageOrientationPatient;
26
+ }
27
+ function extractPositionFromNMMultiframeMetadata(metaData) {
28
+ let imagePositionPatient;
29
+ const imageSubType = getImageTypeSubItemFromMetadata(metaData, 2);
30
+ if (imageSubType && isNMReconstructable(imageSubType)) {
31
+ const detectorInformationSequence = getTagValue(metaData['00540022']);
32
+ if (detectorInformationSequence) {
33
+ imagePositionPatient = getNumberValues(detectorInformationSequence['00200032'], 3);
34
+ }
35
+ }
36
+ return imagePositionPatient;
37
+ }
38
+ export { extractOrientationFromNMMultiframeMetadata, extractPositionFromNMMultiframeMetadata, isNMModality, getImageTypeSubItemFromMetadata, };
@@ -0,0 +1,19 @@
1
+ declare function getUSEnhancedRegions(metadata: any): {
2
+ regionLocationMinY0: number;
3
+ regionLocationMaxY1: number;
4
+ regionLocationMinX0: number;
5
+ regionLocationMaxX1: number;
6
+ referencePixelX0: number;
7
+ referencePixelY0: number;
8
+ physicalDeltaX: number;
9
+ physicalDeltaY: number;
10
+ physicalUnitsXDirection: number;
11
+ physicalUnitsYDirection: number;
12
+ referencePhysicalPixelValueY: number;
13
+ referencePhysicalPixelValueX: number;
14
+ regionSpatialFormat: number;
15
+ regionDataType: number;
16
+ regionFlags: number;
17
+ transducerFrequency: number;
18
+ }[];
19
+ export { getUSEnhancedRegions };
@@ -0,0 +1,46 @@
1
+ import { getFirstNumberValue } from './getFirstNumberValue';
2
+ import getSequenceItems from './getSequenceItems';
3
+ function getUSEnhancedRegions(metadata) {
4
+ const sequenceOfUltrasoundRegions = getSequenceItems(metadata['00186011']);
5
+ if (!sequenceOfUltrasoundRegions || !sequenceOfUltrasoundRegions.length) {
6
+ return null;
7
+ }
8
+ const regions = sequenceOfUltrasoundRegions.map((sequence) => {
9
+ const physicalDeltaX = getFirstNumberValue(sequence, '0018602C');
10
+ const physicalDeltaY = getFirstNumberValue(sequence, '0018602E');
11
+ const physicalUnitsXDirection = getFirstNumberValue(sequence, '00186024');
12
+ const physicalUnitsYDirection = getFirstNumberValue(sequence, '00186026');
13
+ const regionLocationMinY0 = getFirstNumberValue(sequence, '0018601A');
14
+ const regionLocationMaxY1 = getFirstNumberValue(sequence, '0018601E');
15
+ const regionLocationMinX0 = getFirstNumberValue(sequence, '00186018');
16
+ const regionLocationMaxX1 = getFirstNumberValue(sequence, '0018601C');
17
+ const referencePixelX0 = getFirstNumberValue(sequence, '00186020');
18
+ const referencePixelY0 = getFirstNumberValue(sequence, '00186022');
19
+ const referencePhysicalPixelValueY = getFirstNumberValue(sequence, '0018602A');
20
+ const referencePhysicalPixelValueX = getFirstNumberValue(sequence, '00186028');
21
+ const regionSpatialFormat = getFirstNumberValue(sequence, '00186012');
22
+ const regionDataType = getFirstNumberValue(sequence, '00186014');
23
+ const regionFlags = getFirstNumberValue(sequence, '00186016');
24
+ const transducerFrequency = getFirstNumberValue(sequence, '00186030');
25
+ return {
26
+ regionLocationMinY0,
27
+ regionLocationMaxY1,
28
+ regionLocationMinX0,
29
+ regionLocationMaxX1,
30
+ referencePixelX0,
31
+ referencePixelY0,
32
+ physicalDeltaX,
33
+ physicalDeltaY,
34
+ physicalUnitsXDirection,
35
+ physicalUnitsYDirection,
36
+ referencePhysicalPixelValueY,
37
+ referencePhysicalPixelValueX,
38
+ regionSpatialFormat,
39
+ regionDataType,
40
+ regionFlags,
41
+ transducerFrequency,
42
+ };
43
+ });
44
+ return regions;
45
+ }
46
+ export { getUSEnhancedRegions };
@@ -0,0 +1,3 @@
1
+ declare function extractOrientationFromMetadata(metaData: any): number[];
2
+ declare function extractPositionFromMetadata(metaData: any): number[];
3
+ export { extractOrientationFromMetadata, extractPositionFromMetadata };
@@ -0,0 +1,18 @@
1
+ import getNumberValues from './getNumberValues';
2
+ import { extractOrientationFromNMMultiframeMetadata, extractPositionFromNMMultiframeMetadata, isNMModality, } from './NMHelpers';
3
+ function extractOrientationFromMetadata(metaData) {
4
+ let imageOrientationPatient = getNumberValues(metaData['00200037'], 6);
5
+ if (!imageOrientationPatient && isNMModality(metaData)) {
6
+ imageOrientationPatient =
7
+ extractOrientationFromNMMultiframeMetadata(metaData);
8
+ }
9
+ return imageOrientationPatient;
10
+ }
11
+ function extractPositionFromMetadata(metaData) {
12
+ let imagePositionPatient = getNumberValues(metaData['00200032'], 3);
13
+ if (!imagePositionPatient && isNMModality(metaData)) {
14
+ imagePositionPatient = extractPositionFromNMMultiframeMetadata(metaData);
15
+ }
16
+ return imagePositionPatient;
17
+ }
18
+ export { extractOrientationFromMetadata, extractPositionFromMetadata };
@@ -0,0 +1,2 @@
1
+ declare function getFirstNumberValue(sequence: unknown, key: string): number | null;
2
+ export { getFirstNumberValue };
@@ -0,0 +1,6 @@
1
+ import getNumberValues from './getNumberValues';
2
+ function getFirstNumberValue(sequence, key) {
3
+ const values = getNumberValues(sequence[key]);
4
+ return values ? values[0] : null;
5
+ }
6
+ export { getFirstNumberValue };
@@ -0,0 +1,3 @@
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
+ declare function getNumberString(element: WADORSMetaDataElement, index: number, defaultValue: number): number;
3
+ export default getNumberString;
@@ -0,0 +1,9 @@
1
+ import getValue from './getValue';
2
+ function getNumberString(element, index, defaultValue) {
3
+ const value = getValue(element, index, defaultValue);
4
+ if (value === undefined) {
5
+ return;
6
+ }
7
+ return parseFloat(String(value));
8
+ }
9
+ export default getNumberString;
@@ -0,0 +1,3 @@
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
+ declare function getNumberValue(element: WADORSMetaDataElement, index?: number): number;
3
+ export default getNumberValue;
@@ -0,0 +1,9 @@
1
+ import getValue from './getValue';
2
+ function getNumberValue(element, index) {
3
+ const value = getValue(element, index);
4
+ if (value === undefined) {
5
+ return;
6
+ }
7
+ return parseFloat(value);
8
+ }
9
+ export default getNumberValue;
@@ -0,0 +1,3 @@
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
+ declare function getNumberValues(element: WADORSMetaDataElement, minimumLength?: number): number[];
3
+ export default getNumberValues;
@@ -0,0 +1,20 @@
1
+ function getNumberValues(element, minimumLength) {
2
+ if (!element) {
3
+ return;
4
+ }
5
+ if (!element.Value) {
6
+ return;
7
+ }
8
+ if (!Array.isArray(element.Value)) {
9
+ return;
10
+ }
11
+ if (minimumLength && element.Value.length < minimumLength) {
12
+ return;
13
+ }
14
+ const values = [];
15
+ for (let i = 0; i < element.Value.length; i++) {
16
+ values.push(parseFloat(element.Value[i]));
17
+ }
18
+ return values;
19
+ }
20
+ export default getNumberValues;
@@ -0,0 +1,4 @@
1
+ import type { WADORSMetaData } from '../../../types';
2
+ export default function getOverlayPlaneModule(metaData: WADORSMetaData): {
3
+ overlays: any[];
4
+ };
@@ -0,0 +1,38 @@
1
+ import getValue from './getValue';
2
+ import getNumberValue from './getNumberValue';
3
+ export default function getOverlayPlaneModule(metaData) {
4
+ const overlays = [];
5
+ for (let overlayGroup = 0x00; overlayGroup <= 0x1e; overlayGroup += 0x02) {
6
+ let groupStr = `x60${overlayGroup.toString(16)}`;
7
+ if (groupStr.length === 4) {
8
+ groupStr = `x600${overlayGroup.toString(16)}`;
9
+ }
10
+ const data = getValue(metaData[`${groupStr}3000`]);
11
+ if (!data) {
12
+ continue;
13
+ }
14
+ const pixelData = [];
15
+ for (let i = 0; i < data.length; i++) {
16
+ for (let k = 0; k < 8; k++) {
17
+ const byte_as_int = metaData.Value[data.dataOffset + i];
18
+ pixelData[i * 8 + k] = (byte_as_int >> k) & 0b1;
19
+ }
20
+ }
21
+ overlays.push({
22
+ rows: getNumberValue(metaData[`${groupStr}0010`]),
23
+ columns: getNumberValue(metaData[`${groupStr}0011`]),
24
+ type: getValue(metaData[`${groupStr}0040`]),
25
+ x: getNumberValue(metaData[`${groupStr}0050`], 1) - 1,
26
+ y: getNumberValue(metaData[`${groupStr}0050`], 0) - 1,
27
+ pixelData,
28
+ description: getValue(metaData[`${groupStr}0022`]),
29
+ label: getValue(metaData[`${groupStr}1500`]),
30
+ roiArea: getValue(metaData[`${groupStr}1301`]),
31
+ roiMean: getValue(metaData[`${groupStr}1302`]),
32
+ roiStandardDeviation: getValue(metaData[`${groupStr}1303`]),
33
+ });
34
+ }
35
+ return {
36
+ overlays,
37
+ };
38
+ }
@@ -0,0 +1,3 @@
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
+ declare function getSequenceItems(element: any): WADORSMetaDataElement[];
3
+ export default getSequenceItems;
@@ -0,0 +1,14 @@
1
+ function getSequenceItems(element) {
2
+ if (!element?.Value?.length) {
3
+ return [];
4
+ }
5
+ if (!Array.isArray(element.Value)) {
6
+ if (typeof element.Value === 'object') {
7
+ console.warn('Warning: Value should be an array, but an object was found. Encapsulating the object in an array.');
8
+ return [element.Value];
9
+ }
10
+ return [];
11
+ }
12
+ return element.Value;
13
+ }
14
+ export default getSequenceItems;