@cornerstonejs/core 1.32.3 → 1.34.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 (145) hide show
  1. package/dist/cjs/RenderingEngine/StackViewport.d.ts +24 -3
  2. package/dist/cjs/RenderingEngine/StackViewport.js +47 -31
  3. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  4. package/dist/cjs/RenderingEngine/helpers/addImageSlicesToViewports.d.ts +3 -0
  5. package/dist/cjs/RenderingEngine/helpers/addImageSlicesToViewports.js +33 -0
  6. package/dist/cjs/RenderingEngine/helpers/addImageSlicesToViewports.js.map +1 -0
  7. package/dist/cjs/RenderingEngine/helpers/index.d.ts +2 -1
  8. package/dist/cjs/RenderingEngine/helpers/index.js +3 -1
  9. package/dist/cjs/RenderingEngine/helpers/index.js.map +1 -1
  10. package/dist/cjs/cache/cache.d.ts +2 -1
  11. package/dist/cjs/cache/cache.js +11 -0
  12. package/dist/cjs/cache/cache.js.map +1 -1
  13. package/dist/cjs/index.d.ts +2 -2
  14. package/dist/cjs/index.js +2 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/loaders/imageLoader.d.ts +21 -1
  17. package/dist/cjs/loaders/imageLoader.js +97 -1
  18. package/dist/cjs/loaders/imageLoader.js.map +1 -1
  19. package/dist/cjs/loaders/volumeLoader.d.ts +2 -2
  20. package/dist/cjs/loaders/volumeLoader.js +6 -28
  21. package/dist/cjs/loaders/volumeLoader.js.map +1 -1
  22. package/dist/cjs/types/IImage.d.ts +1 -0
  23. package/dist/cjs/types/IStackInput.d.ts +12 -0
  24. package/dist/cjs/types/IStackInput.js +3 -0
  25. package/dist/cjs/types/IStackInput.js.map +1 -0
  26. package/dist/cjs/types/IStackViewport.d.ts +3 -0
  27. package/dist/cjs/types/PixelDataTypedArray.d.ts +1 -0
  28. package/dist/cjs/types/index.d.ts +3 -2
  29. package/dist/cjs/utilities/calculateViewportsSpatialRegistration.d.ts +2 -2
  30. package/dist/cjs/utilities/calculateViewportsSpatialRegistration.js.map +1 -1
  31. package/dist/cjs/utilities/genericMetadataProvider.d.ts +6 -0
  32. package/dist/cjs/utilities/genericMetadataProvider.js +23 -0
  33. package/dist/cjs/utilities/genericMetadataProvider.js.map +1 -0
  34. package/dist/cjs/utilities/getBufferConfiguration.d.ts +9 -0
  35. package/dist/cjs/utilities/getBufferConfiguration.js +47 -0
  36. package/dist/cjs/utilities/getBufferConfiguration.js.map +1 -0
  37. package/dist/cjs/utilities/index.d.ts +7 -1
  38. package/dist/cjs/utilities/index.js +13 -1
  39. package/dist/cjs/utilities/index.js.map +1 -1
  40. package/dist/cjs/utilities/isValidVolume.d.ts +2 -0
  41. package/dist/cjs/utilities/isValidVolume.js +35 -0
  42. package/dist/cjs/utilities/isValidVolume.js.map +1 -0
  43. package/dist/cjs/utilities/makeVolumeMetadata.d.ts +2 -0
  44. package/dist/cjs/utilities/makeVolumeMetadata.js +55 -0
  45. package/dist/cjs/utilities/makeVolumeMetadata.js.map +1 -0
  46. package/dist/cjs/utilities/sortImageIdsAndGetSpacing.d.ts +9 -0
  47. package/dist/cjs/utilities/sortImageIdsAndGetSpacing.js +82 -0
  48. package/dist/cjs/utilities/sortImageIdsAndGetSpacing.js.map +1 -0
  49. package/dist/cjs/utilities/updateVTKImageDataWithCornerstoneImage.d.ts +4 -0
  50. package/dist/cjs/utilities/updateVTKImageDataWithCornerstoneImage.js +27 -0
  51. package/dist/cjs/utilities/updateVTKImageDataWithCornerstoneImage.js.map +1 -0
  52. package/dist/esm/RenderingEngine/StackViewport.js +46 -32
  53. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  54. package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js +20 -0
  55. package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js.map +1 -0
  56. package/dist/esm/RenderingEngine/helpers/index.js +2 -1
  57. package/dist/esm/RenderingEngine/helpers/index.js.map +1 -1
  58. package/dist/esm/cache/cache.js +11 -0
  59. package/dist/esm/cache/cache.js.map +1 -1
  60. package/dist/esm/index.js +2 -2
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/loaders/imageLoader.js +94 -1
  63. package/dist/esm/loaders/imageLoader.js.map +1 -1
  64. package/dist/esm/loaders/volumeLoader.js +7 -29
  65. package/dist/esm/loaders/volumeLoader.js.map +1 -1
  66. package/dist/esm/types/IStackInput.js +2 -0
  67. package/dist/esm/types/IStackInput.js.map +1 -0
  68. package/dist/esm/utilities/calculateViewportsSpatialRegistration.js.map +1 -1
  69. package/dist/esm/utilities/genericMetadataProvider.js +20 -0
  70. package/dist/esm/utilities/genericMetadataProvider.js.map +1 -0
  71. package/dist/esm/utilities/getBufferConfiguration.js +44 -0
  72. package/dist/esm/utilities/getBufferConfiguration.js.map +1 -0
  73. package/dist/esm/utilities/index.js +7 -1
  74. package/dist/esm/utilities/index.js.map +1 -1
  75. package/dist/esm/utilities/isValidVolume.js +29 -0
  76. package/dist/esm/utilities/isValidVolume.js.map +1 -0
  77. package/dist/esm/utilities/makeVolumeMetadata.js +52 -0
  78. package/dist/esm/utilities/makeVolumeMetadata.js.map +1 -0
  79. package/dist/esm/utilities/sortImageIdsAndGetSpacing.js +79 -0
  80. package/dist/esm/utilities/sortImageIdsAndGetSpacing.js.map +1 -0
  81. package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js +24 -0
  82. package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js.map +1 -0
  83. package/dist/types/RenderingEngine/StackViewport.d.ts +24 -3
  84. package/dist/types/RenderingEngine/StackViewport.d.ts.map +1 -1
  85. package/dist/types/RenderingEngine/helpers/addImageSlicesToViewports.d.ts +4 -0
  86. package/dist/types/RenderingEngine/helpers/addImageSlicesToViewports.d.ts.map +1 -0
  87. package/dist/types/RenderingEngine/helpers/index.d.ts +2 -1
  88. package/dist/types/RenderingEngine/helpers/index.d.ts.map +1 -1
  89. package/dist/types/cache/cache.d.ts +2 -1
  90. package/dist/types/cache/cache.d.ts.map +1 -1
  91. package/dist/types/index.d.ts +2 -2
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/loaders/imageLoader.d.ts +21 -1
  94. package/dist/types/loaders/imageLoader.d.ts.map +1 -1
  95. package/dist/types/loaders/volumeLoader.d.ts +2 -2
  96. package/dist/types/loaders/volumeLoader.d.ts.map +1 -1
  97. package/dist/types/types/IImage.d.ts +1 -0
  98. package/dist/types/types/IImage.d.ts.map +1 -1
  99. package/dist/types/types/IStackInput.d.ts +13 -0
  100. package/dist/types/types/IStackInput.d.ts.map +1 -0
  101. package/dist/types/types/IStackViewport.d.ts +3 -0
  102. package/dist/types/types/IStackViewport.d.ts.map +1 -1
  103. package/dist/types/types/PixelDataTypedArray.d.ts +1 -0
  104. package/dist/types/types/PixelDataTypedArray.d.ts.map +1 -1
  105. package/dist/types/types/index.d.ts +3 -2
  106. package/dist/types/types/index.d.ts.map +1 -1
  107. package/dist/types/utilities/calculateViewportsSpatialRegistration.d.ts +2 -2
  108. package/dist/types/utilities/calculateViewportsSpatialRegistration.d.ts.map +1 -1
  109. package/dist/types/utilities/genericMetadataProvider.d.ts +7 -0
  110. package/dist/types/utilities/genericMetadataProvider.d.ts.map +1 -0
  111. package/dist/types/utilities/getBufferConfiguration.d.ts +10 -0
  112. package/dist/types/utilities/getBufferConfiguration.d.ts.map +1 -0
  113. package/dist/types/utilities/index.d.ts +7 -1
  114. package/dist/types/utilities/index.d.ts.map +1 -1
  115. package/dist/types/utilities/isValidVolume.d.ts +3 -0
  116. package/dist/types/utilities/isValidVolume.d.ts.map +1 -0
  117. package/dist/types/utilities/makeVolumeMetadata.d.ts +3 -0
  118. package/dist/types/utilities/makeVolumeMetadata.d.ts.map +1 -0
  119. package/dist/types/utilities/sortImageIdsAndGetSpacing.d.ts +10 -0
  120. package/dist/types/utilities/sortImageIdsAndGetSpacing.d.ts.map +1 -0
  121. package/dist/types/utilities/updateVTKImageDataWithCornerstoneImage.d.ts +5 -0
  122. package/dist/types/utilities/updateVTKImageDataWithCornerstoneImage.d.ts.map +1 -0
  123. package/dist/umd/index.js +1 -1
  124. package/dist/umd/index.js.map +1 -1
  125. package/package.json +2 -2
  126. package/src/RenderingEngine/StackViewport.ts +77 -52
  127. package/src/RenderingEngine/helpers/addImageSlicesToViewports.ts +54 -0
  128. package/src/RenderingEngine/helpers/index.ts +2 -0
  129. package/src/cache/cache.ts +22 -0
  130. package/src/index.ts +2 -0
  131. package/src/loaders/imageLoader.ts +202 -2
  132. package/src/loaders/volumeLoader.ts +18 -27
  133. package/src/types/IImage.ts +2 -0
  134. package/src/types/IStackInput.ts +30 -0
  135. package/src/types/IStackViewport.ts +10 -3
  136. package/src/types/PixelDataTypedArray.ts +8 -0
  137. package/src/types/index.ts +8 -1
  138. package/src/utilities/calculateViewportsSpatialRegistration.ts +3 -3
  139. package/src/utilities/genericMetadataProvider.ts +43 -0
  140. package/src/utilities/getBufferConfiguration.ts +69 -0
  141. package/src/utilities/index.ts +12 -0
  142. package/src/utilities/isValidVolume.ts +59 -0
  143. package/src/utilities/makeVolumeMetadata.ts +87 -0
  144. package/src/utilities/sortImageIdsAndGetSpacing.ts +174 -0
  145. package/src/utilities/updateVTKImageDataWithCornerstoneImage.ts +38 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function isValidVolume(imageIds: string[]): boolean;
2
+ export { isValidVolume };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isValidVolume = void 0;
7
+ const __1 = require("..");
8
+ const isEqual_1 = __importDefault(require("./isEqual"));
9
+ function isValidVolume(imageIds) {
10
+ const imageId0 = imageIds[0];
11
+ const { modality, seriesInstanceUID } = __1.metaData.get('generalSeriesModule', imageId0);
12
+ const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = __1.metaData.get('imagePlaneModule', imageId0);
13
+ const baseMetadata = {
14
+ modality,
15
+ imageOrientationPatient,
16
+ pixelSpacing,
17
+ frameOfReferenceUID,
18
+ columns,
19
+ rows,
20
+ seriesInstanceUID,
21
+ };
22
+ const validVolume = imageIds.every((imageId) => {
23
+ const { modality, seriesInstanceUID } = __1.metaData.get('generalSeriesModule', imageId);
24
+ const { imageOrientationPatient, pixelSpacing, columns, rows } = __1.metaData.get('imagePlaneModule', imageId);
25
+ return (seriesInstanceUID === baseMetadata.seriesInstanceUID &&
26
+ modality === baseMetadata.modality &&
27
+ columns === baseMetadata.columns &&
28
+ rows === baseMetadata.rows &&
29
+ (0, isEqual_1.default)(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
30
+ (0, isEqual_1.default)(pixelSpacing, baseMetadata.pixelSpacing));
31
+ });
32
+ return validVolume;
33
+ }
34
+ exports.isValidVolume = isValidVolume;
35
+ //# sourceMappingURL=isValidVolume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidVolume.js","sourceRoot":"","sources":["../../../src/utilities/isValidVolume.ts"],"names":[],"mappings":";;;;;;AAAA,0BAA8B;AAC9B,wDAAgC;AAUhC,SAAS,aAAa,CAAC,QAAkB;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAQ,CAAC,GAAG,CAClD,qBAAqB,EACrB,QAAQ,CACT,CAAC;IAEF,MAAM,EACJ,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,IAAI,GACL,GAAG,YAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG;QACnB,QAAQ;QACR,uBAAuB;QACvB,YAAY;QACZ,mBAAmB;QACnB,OAAO;QACP,IAAI;QACJ,iBAAiB;KAClB,CAAC;IAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAQ,CAAC,GAAG,CAClD,qBAAqB,EACrB,OAAO,CACR,CAAC;QACF,MAAM,EAAE,uBAAuB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,GAC5D,YAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAE5C,OAAO,CACL,iBAAiB,KAAK,YAAY,CAAC,iBAAiB;YACpD,QAAQ,KAAK,YAAY,CAAC,QAAQ;YAClC,OAAO,KAAK,YAAY,CAAC,OAAO;YAChC,IAAI,KAAK,YAAY,CAAC,IAAI;YAC1B,IAAA,iBAAO,EAAC,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC;YACtE,IAAA,iBAAO,EAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAEQ,sCAAa"}
@@ -0,0 +1,2 @@
1
+ import { Metadata } from '../types';
2
+ export default function makeVolumeMetadata(imageIds: Array<string>): Metadata;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("../");
4
+ function makeVolumeMetadata(imageIds) {
5
+ const imageId0 = imageIds[0];
6
+ const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = __1.metaData.get('imagePixelModule', imageId0);
7
+ const voiLut = [];
8
+ const voiLutModule = __1.metaData.get('voiLutModule', imageId0);
9
+ let voiLUTFunction;
10
+ if (voiLutModule) {
11
+ const { windowWidth, windowCenter } = voiLutModule;
12
+ voiLUTFunction = voiLutModule === null || voiLutModule === void 0 ? void 0 : voiLutModule.voiLUTFunction;
13
+ if (Array.isArray(windowWidth)) {
14
+ for (let i = 0; i < windowWidth.length; i++) {
15
+ voiLut.push({
16
+ windowWidth: windowWidth[i],
17
+ windowCenter: windowCenter[i],
18
+ });
19
+ }
20
+ }
21
+ else {
22
+ voiLut.push({
23
+ windowWidth: windowWidth,
24
+ windowCenter: windowCenter,
25
+ });
26
+ }
27
+ }
28
+ else {
29
+ voiLut.push({
30
+ windowWidth: undefined,
31
+ windowCenter: undefined,
32
+ });
33
+ }
34
+ const { modality, seriesInstanceUID } = __1.metaData.get('generalSeriesModule', imageId0);
35
+ const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = __1.metaData.get('imagePlaneModule', imageId0);
36
+ return {
37
+ BitsAllocated: bitsAllocated,
38
+ BitsStored: bitsStored,
39
+ SamplesPerPixel: samplesPerPixel,
40
+ HighBit: highBit,
41
+ PhotometricInterpretation: photometricInterpretation,
42
+ PixelRepresentation: pixelRepresentation,
43
+ Modality: modality,
44
+ ImageOrientationPatient: imageOrientationPatient,
45
+ PixelSpacing: pixelSpacing,
46
+ FrameOfReferenceUID: frameOfReferenceUID,
47
+ Columns: columns,
48
+ Rows: rows,
49
+ voiLut,
50
+ VOILUTFunction: voiLUTFunction,
51
+ SeriesInstanceUID: seriesInstanceUID,
52
+ };
53
+ }
54
+ exports.default = makeVolumeMetadata;
55
+ //# sourceMappingURL=makeVolumeMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeVolumeMetadata.js","sourceRoot":"","sources":["../../../src/utilities/makeVolumeMetadata.ts"],"names":[],"mappings":";;AAAA,2BAA+B;AAU/B,SAAwB,kBAAkB,CAAC,QAAuB;IAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,EACJ,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,OAAO,EACP,yBAAyB,EACzB,eAAe,GAChB,GAAG,YAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAG/C,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,YAAY,GAAG,YAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAG5D,IAAI,cAAc,CAAC;IACnB,IAAI,YAAY,EAAE;QAChB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;QACnD,cAAc,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAC;QAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC3B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;iBAC9B,CAAC,CAAC;aACJ;SACF;aAAM;YACL,MAAM,CAAC,IAAI,CAAC;gBACV,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;SACJ;KACF;SAAM;QACL,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;KACJ;IAED,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAQ,CAAC,GAAG,CAClD,qBAAqB,EACrB,QAAQ,CACT,CAAC;IAEF,MAAM,EACJ,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,IAAI,GACL,GAAG,YAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAI/C,OAAO;QACL,aAAa,EAAE,aAAa;QAC5B,UAAU,EAAE,UAAU;QACtB,eAAe,EAAE,eAAe;QAChC,OAAO,EAAE,OAAO;QAChB,yBAAyB,EAAE,yBAAyB;QACpD,mBAAmB,EAAE,mBAAmB;QACxC,QAAQ,EAAE,QAAQ;QAClB,uBAAuB,EAAE,uBAAuB;QAChD,YAAY,EAAE,YAAY;QAC1B,mBAAmB,EAAE,mBAAmB;QACxC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,IAAI;QAEV,MAAM;QACN,cAAc,EAAE,cAAc;QAC9B,iBAAiB,EAAE,iBAAiB;KACrC,CAAC;AACJ,CAAC;AA5ED,qCA4EC"}
@@ -0,0 +1,9 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import { Point3 } from '../types';
3
+ declare type SortedImageIdsItem = {
4
+ zSpacing: number;
5
+ origin: Point3;
6
+ sortedImageIds: Array<string>;
7
+ };
8
+ export default function sortImageIdsAndGetSpacing(imageIds: Array<string>, scanAxisNormal?: vec3): SortedImageIdsItem;
9
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const gl_matrix_1 = require("gl-matrix");
4
+ const __1 = require("../");
5
+ function sortImageIdsAndGetSpacing(imageIds, scanAxisNormal) {
6
+ const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = __1.metaData.get('imagePlaneModule', imageIds[0]);
7
+ if (!scanAxisNormal) {
8
+ const rowCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
9
+ const colCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
10
+ scanAxisNormal = gl_matrix_1.vec3.create();
11
+ gl_matrix_1.vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
12
+ }
13
+ const refIppVec = gl_matrix_1.vec3.create();
14
+ const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';
15
+ gl_matrix_1.vec3.set(refIppVec, referenceImagePositionPatient[0], referenceImagePositionPatient[1], referenceImagePositionPatient[2]);
16
+ let sortedImageIds;
17
+ let zSpacing;
18
+ function getDistance(imageId) {
19
+ const { imagePositionPatient } = __1.metaData.get('imagePlaneModule', imageId);
20
+ const positionVector = gl_matrix_1.vec3.create();
21
+ gl_matrix_1.vec3.sub(positionVector, referenceImagePositionPatient, imagePositionPatient);
22
+ return gl_matrix_1.vec3.dot(positionVector, scanAxisNormal);
23
+ }
24
+ if (!usingWadoUri) {
25
+ const distanceImagePairs = imageIds.map((imageId) => {
26
+ const distance = getDistance(imageId);
27
+ return {
28
+ distance,
29
+ imageId,
30
+ };
31
+ });
32
+ distanceImagePairs.sort((a, b) => b.distance - a.distance);
33
+ sortedImageIds = distanceImagePairs.map((a) => a.imageId);
34
+ const numImages = distanceImagePairs.length;
35
+ zSpacing =
36
+ Math.abs(distanceImagePairs[numImages - 1].distance -
37
+ distanceImagePairs[0].distance) /
38
+ (numImages - 1);
39
+ }
40
+ else {
41
+ const prefetchedImageIds = [
42
+ imageIds[0],
43
+ imageIds[Math.floor(imageIds.length / 2)],
44
+ ];
45
+ sortedImageIds = imageIds;
46
+ const firstImageDistance = getDistance(prefetchedImageIds[0]);
47
+ const middleImageDistance = getDistance(prefetchedImageIds[1]);
48
+ if (firstImageDistance - middleImageDistance < 0) {
49
+ sortedImageIds.reverse();
50
+ }
51
+ const metadataForMiddleImage = __1.metaData.get('imagePlaneModule', prefetchedImageIds[1]);
52
+ if (!metadataForMiddleImage) {
53
+ throw new Error('Incomplete metadata required for volume construction.');
54
+ }
55
+ const positionVector = gl_matrix_1.vec3.create();
56
+ gl_matrix_1.vec3.sub(positionVector, referenceImagePositionPatient, metadataForMiddleImage.imagePositionPatient);
57
+ const distanceBetweenFirstAndMiddleImages = gl_matrix_1.vec3.dot(positionVector, scanAxisNormal);
58
+ zSpacing =
59
+ Math.abs(distanceBetweenFirstAndMiddleImages) /
60
+ Math.floor(imageIds.length / 2);
61
+ }
62
+ const { imagePositionPatient: origin, sliceThickness } = __1.metaData.get('imagePlaneModule', sortedImageIds[0]);
63
+ const { strictZSpacingForVolumeViewport } = (0, __1.getConfiguration)().rendering;
64
+ if (zSpacing === 0 && !strictZSpacingForVolumeViewport) {
65
+ if (sliceThickness) {
66
+ console.log('Could not calculate zSpacing. Using sliceThickness');
67
+ zSpacing = sliceThickness;
68
+ }
69
+ else {
70
+ console.log('Could not calculate zSpacing. The VolumeViewport visualization is compromised. Setting zSpacing to 1 to render');
71
+ zSpacing = 1;
72
+ }
73
+ }
74
+ const result = {
75
+ zSpacing,
76
+ origin,
77
+ sortedImageIds,
78
+ };
79
+ return result;
80
+ }
81
+ exports.default = sortImageIdsAndGetSpacing;
82
+ //# sourceMappingURL=sortImageIdsAndGetSpacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortImageIdsAndGetSpacing.js","sourceRoot":"","sources":["../../../src/utilities/sortImageIdsAndGetSpacing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
2
+ import { IImage } from '../types';
3
+ declare function updateVTKImageDataWithCornerstoneImage(sourceImageData: vtkImageData, image: IImage): void;
4
+ export { updateVTKImageDataWithCornerstoneImage };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateVTKImageDataWithCornerstoneImage = void 0;
4
+ function updateVTKImageDataWithCornerstoneImage(sourceImageData, image) {
5
+ const pixelData = image.getPixelData();
6
+ const scalarData = sourceImageData
7
+ .getPointData()
8
+ .getScalars()
9
+ .getData();
10
+ if (image.color && image.rgba) {
11
+ const newPixelData = new Uint8Array(image.columns * image.rows * 3);
12
+ for (let i = 0; i < image.columns * image.rows; i++) {
13
+ newPixelData[i * 3] = pixelData[i * 4];
14
+ newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
15
+ newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
16
+ }
17
+ image.rgba = false;
18
+ image.getPixelData = () => newPixelData;
19
+ scalarData.set(newPixelData);
20
+ }
21
+ else {
22
+ scalarData.set(pixelData);
23
+ }
24
+ sourceImageData.modified();
25
+ }
26
+ exports.updateVTKImageDataWithCornerstoneImage = updateVTKImageDataWithCornerstoneImage;
27
+ //# sourceMappingURL=updateVTKImageDataWithCornerstoneImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateVTKImageDataWithCornerstoneImage.js","sourceRoot":"","sources":["../../../src/utilities/updateVTKImageDataWithCornerstoneImage.ts"],"names":[],"mappings":";;;AAGA,SAAS,sCAAsC,CAC7C,eAA6B,EAC7B,KAAa;IAEb,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,eAAe;SAC/B,YAAY,EAAE;SACd,UAAU,EAAE;SACZ,OAAO,EAAyB,CAAC;IAKpC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;QAC7B,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACnD,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAChD;QAGD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;QACxC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KAC9B;SAAM;QACL,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC3B;IAID,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAEQ,wFAAsC"}
@@ -10,7 +10,7 @@ import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransf
10
10
  import * as metaData from '../metaData';
11
11
  import Viewport from './Viewport';
12
12
  import eventTarget from '../eventTarget';
13
- import { triggerEvent, isEqual, invertRgbTransferFunction, createSigmoidRGBTransferFunction, windowLevel as windowLevelUtil, imageIdToURI, isImageActor, actorIsA, colormap as colormapUtils, imageRetrieveMetadataProvider, } from '../utilities';
13
+ import { triggerEvent, isEqual, invertRgbTransferFunction, createSigmoidRGBTransferFunction, windowLevel as windowLevelUtil, imageIdToURI, isImageActor, actorIsA, colormap as colormapUtils, updateVTKImageDataWithCornerstoneImage, imageRetrieveMetadataProvider, } from '../utilities';
14
14
  import drawImageSync from './helpers/cpuFallback/drawImageSync';
15
15
  import { getColormap } from './helpers/cpuFallback/colors/index';
16
16
  import { loadAndCacheImage } from '../loaders/imageLoader';
@@ -984,7 +984,7 @@ class StackViewport extends Viewport {
984
984
  }
985
985
  return numberOfComponents;
986
986
  }
987
- _getImageDataMetadata(image) {
987
+ getImageDataMetadata(image) {
988
988
  const { imagePlaneModule, imagePixelModule } = this.buildMetadata(image);
989
989
  let rowCosines, columnCosines;
990
990
  rowCosines = imagePlaneModule.rowCosines;
@@ -1033,19 +1033,30 @@ class StackViewport extends Viewport {
1033
1033
  viewUp: [viewUp[0], viewUp[1], viewUp[2]],
1034
1034
  };
1035
1035
  }
1036
- _createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
1036
+ createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
1037
1037
  const values = new pixelArray.constructor(pixelArray.length);
1038
1038
  const scalarArray = vtkDataArray.newInstance({
1039
1039
  name: 'Pixels',
1040
1040
  numberOfComponents: numComps,
1041
1041
  values: values,
1042
1042
  });
1043
- this._imageData = vtkImageData.newInstance();
1044
- this._imageData.setDimensions(dimensions);
1045
- this._imageData.setSpacing(spacing);
1046
- this._imageData.setDirection(direction);
1047
- this._imageData.setOrigin(origin);
1048
- this._imageData.getPointData().setScalars(scalarArray);
1043
+ const imageData = vtkImageData.newInstance();
1044
+ imageData.setDimensions(dimensions);
1045
+ imageData.setSpacing(spacing);
1046
+ imageData.setDirection(direction);
1047
+ imageData.setOrigin(origin);
1048
+ imageData.getPointData().setScalars(scalarArray);
1049
+ return imageData;
1050
+ }
1051
+ _createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
1052
+ this._imageData = this.createVTKImageData({
1053
+ origin,
1054
+ direction,
1055
+ dimensions,
1056
+ spacing,
1057
+ numComps,
1058
+ pixelArray,
1059
+ });
1049
1060
  }
1050
1061
  async setStack(imageIds, currentImageIdIndex = 0) {
1051
1062
  this._throwIfDestroyed();
@@ -1116,27 +1127,7 @@ class StackViewport extends Viewport {
1116
1127
  origin = [0, 0, 0];
1117
1128
  }
1118
1129
  this._imageData.setOrigin(origin);
1119
- this._updatePixelData(image);
1120
- }
1121
- _updatePixelData(image) {
1122
- const pixelData = image.getPixelData();
1123
- const scalars = this._imageData.getPointData().getScalars();
1124
- const scalarData = scalars.getData();
1125
- if (image.color && image.rgba) {
1126
- const newPixelData = new Uint8Array(image.columns * image.rows * 3);
1127
- for (let i = 0; i < image.columns * image.rows; i++) {
1128
- newPixelData[i * 3] = pixelData[i * 4];
1129
- newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
1130
- newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
1131
- }
1132
- image.rgba = false;
1133
- image.getPixelData = () => newPixelData;
1134
- scalarData.set(newPixelData);
1135
- }
1136
- else {
1137
- scalarData.set(pixelData);
1138
- }
1139
- this._imageData.modified();
1130
+ updateVTKImageDataWithCornerstoneImage(this._imageData, image);
1140
1131
  }
1141
1132
  _loadAndDisplayImage(imageId, imageIdIndex) {
1142
1133
  return this.useCPURendering
@@ -1318,7 +1309,7 @@ class StackViewport extends Viewport {
1318
1309
  });
1319
1310
  }
1320
1311
  _updateToDisplayImageCPU(image) {
1321
- const metadata = this._getImageDataMetadata(image);
1312
+ const metadata = this.getImageDataMetadata(image);
1322
1313
  const viewport = getDefaultViewport(this.canvas, image, this.modality, this._cpuFallbackEnabledElement.viewport.colormap);
1323
1314
  const { windowCenter, windowWidth } = viewport.voi;
1324
1315
  this.voiRange = windowLevelUtil.toLowHighRange(windowWidth, windowCenter);
@@ -1335,6 +1326,29 @@ class StackViewport extends Viewport {
1335
1326
  this.cpuRenderingInvalidated = true;
1336
1327
  this._cpuFallbackEnabledElement.transform = calculateTransform(this._cpuFallbackEnabledElement);
1337
1328
  }
1329
+ async addImages(stackInputs) {
1330
+ const actors = this.getActors();
1331
+ stackInputs.forEach((stackInput) => {
1332
+ const image = cache.getImage(stackInput.imageId);
1333
+ const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
1334
+ const imagedata = this.createVTKImageData({
1335
+ origin,
1336
+ dimensions,
1337
+ direction,
1338
+ spacing,
1339
+ numComps,
1340
+ pixelArray: image.getPixelData(),
1341
+ });
1342
+ const imageActor = this.createActorMapper(imagedata);
1343
+ if (imageActor) {
1344
+ actors.push({ uid: stackInput.actorUID, actor: imageActor });
1345
+ if (stackInput.callback) {
1346
+ stackInput.callback({ imageActor, imageId: stackInput.imageId });
1347
+ }
1348
+ }
1349
+ });
1350
+ this.setActors(actors);
1351
+ }
1338
1352
  _updateActorToDisplayImageId(image) {
1339
1353
  const sameImageData = this._checkVTKImageDataMatchesCornerstoneImage(image, this._imageData);
1340
1354
  const activeCamera = this.getRenderer().getActiveCamera();
@@ -1356,7 +1370,7 @@ class StackViewport extends Viewport {
1356
1370
  this._setPropertiesFromCache();
1357
1371
  return;
1358
1372
  }
1359
- const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this._getImageDataMetadata(image);
1373
+ const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this.getImageDataMetadata(image);
1360
1374
  this._createVTKImageData({
1361
1375
  origin,
1362
1376
  direction,