@cornerstonejs/core 2.5.3 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/RenderingEngine/StackViewport.js +6 -0
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport.js +4 -12
- package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js +2 -3
- package/dist/esm/utilities/VoxelManager.js +7 -6
- package/package.json +2 -2
|
@@ -478,6 +478,9 @@ class StackViewport extends Viewport {
|
|
|
478
478
|
}
|
|
479
479
|
getImageDataCPU() {
|
|
480
480
|
const { metadata } = this._cpuFallbackEnabledElement;
|
|
481
|
+
if (!metadata) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
481
484
|
const spacing = metadata.spacing;
|
|
482
485
|
const csImage = this.csImage;
|
|
483
486
|
return {
|
|
@@ -697,6 +700,9 @@ class StackViewport extends Viewport {
|
|
|
697
700
|
}
|
|
698
701
|
getCameraCPU() {
|
|
699
702
|
const { metadata, viewport } = this._cpuFallbackEnabledElement;
|
|
703
|
+
if (!metadata) {
|
|
704
|
+
return {};
|
|
705
|
+
}
|
|
700
706
|
const { direction } = metadata;
|
|
701
707
|
const viewPlaneNormal = direction.slice(6, 9).map((x) => -x);
|
|
702
708
|
let viewUp = direction.slice(3, 6).map((x) => -x);
|
|
@@ -20,7 +20,7 @@ declare class VolumeViewport extends BaseVolumeViewport {
|
|
|
20
20
|
resetCamera(options?: any): boolean;
|
|
21
21
|
setSlabThickness(slabThickness: number, filterActorUIDs?: any[]): void;
|
|
22
22
|
resetSlabThickness(): void;
|
|
23
|
-
getCurrentImageIdIndex: (volumeId?: string) => number;
|
|
23
|
+
getCurrentImageIdIndex: (volumeId?: string, useSlabThickness?: boolean) => number;
|
|
24
24
|
getSliceIndex: () => number;
|
|
25
25
|
getSliceViewInfo(): {
|
|
26
26
|
sliceIndex: number;
|
|
@@ -15,6 +15,7 @@ import { setTransferFunctionNodes } from '../utilities/transferFunctionUtils';
|
|
|
15
15
|
import getImageSliceDataForVolumeViewport from '../utilities/getImageSliceDataForVolumeViewport';
|
|
16
16
|
import { transformCanvasToIJK } from '../utilities/transformCanvasToIJK';
|
|
17
17
|
import { transformIJKToCanvas } from '../utilities/transformIJKToCanvas';
|
|
18
|
+
import getVolumeViewportScrollInfo from '../utilities/getVolumeViewportScrollInfo';
|
|
18
19
|
class VolumeViewport extends BaseVolumeViewport {
|
|
19
20
|
constructor(props) {
|
|
20
21
|
super(props);
|
|
@@ -32,18 +33,9 @@ class VolumeViewport extends BaseVolumeViewport {
|
|
|
32
33
|
suppressEvents: true,
|
|
33
34
|
});
|
|
34
35
|
};
|
|
35
|
-
this.getCurrentImageIdIndex = (volumeId) => {
|
|
36
|
-
const {
|
|
37
|
-
|
|
38
|
-
if (!imageData) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const { origin, direction, spacing } = imageData;
|
|
42
|
-
const spacingInNormal = getSpacingInNormalDirection({ direction, spacing }, viewPlaneNormal);
|
|
43
|
-
const sub = vec3.create();
|
|
44
|
-
vec3.sub(sub, focalPoint, origin);
|
|
45
|
-
const distance = vec3.dot(sub, viewPlaneNormal);
|
|
46
|
-
return Math.round(Math.abs(distance) / spacingInNormal);
|
|
36
|
+
this.getCurrentImageIdIndex = (volumeId, useSlabThickness = true) => {
|
|
37
|
+
const { currentStepIndex } = getVolumeViewportScrollInfo(this, volumeId || this.getVolumeId(), useSlabThickness);
|
|
38
|
+
return currentStepIndex;
|
|
47
39
|
};
|
|
48
40
|
this.getSliceIndex = () => {
|
|
49
41
|
const { imageIndex } = getImageSliceDataForVolumeViewport(this) || {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds) {
|
|
2
2
|
for (const viewportId of viewportIds) {
|
|
3
3
|
const viewport = renderingEngine.getStackViewport(viewportId);
|
|
4
4
|
if (!viewport) {
|
|
@@ -9,10 +9,9 @@ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportI
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
viewportIds.forEach((viewportId) => {
|
|
13
13
|
const viewport = renderingEngine.getStackViewport(viewportId);
|
|
14
14
|
viewport.addImages(stackInputs);
|
|
15
15
|
});
|
|
16
|
-
await Promise.all(addStackPromises);
|
|
17
16
|
}
|
|
18
17
|
export default addImageSlicesToViewports;
|
|
@@ -427,11 +427,11 @@ export default class VoxelManager {
|
|
|
427
427
|
return true;
|
|
428
428
|
}
|
|
429
429
|
const _getConstructor = () => {
|
|
430
|
-
const
|
|
431
|
-
if (!
|
|
430
|
+
const { voxelManager: imageVoxelManager } = getPixelInfo(0);
|
|
431
|
+
if (!imageVoxelManager) {
|
|
432
432
|
return null;
|
|
433
433
|
}
|
|
434
|
-
return
|
|
434
|
+
return imageVoxelManager.getConstructor();
|
|
435
435
|
};
|
|
436
436
|
const voxelManager = new VoxelManager(dimensions, {
|
|
437
437
|
_get: getVoxelValue,
|
|
@@ -497,13 +497,13 @@ export default class VoxelManager {
|
|
|
497
497
|
let minValue = Infinity;
|
|
498
498
|
let maxValue = -Infinity;
|
|
499
499
|
for (let sliceIndex = 0; sliceIndex < dimensions[2]; sliceIndex++) {
|
|
500
|
-
const {
|
|
501
|
-
if (
|
|
500
|
+
const { voxelManager: imageVoxelManager } = getPixelInfo((sliceIndex * sliceSize) / numberOfComponents);
|
|
501
|
+
if (imageVoxelManager && SliceDataConstructor) {
|
|
502
502
|
const sliceStart = sliceIndex * sliceSize;
|
|
503
503
|
const sliceEnd = sliceStart + sliceSize;
|
|
504
504
|
const sliceData = new SliceDataConstructor(sliceSize);
|
|
505
505
|
sliceData.set(scalarData.subarray(sliceStart, sliceEnd));
|
|
506
|
-
|
|
506
|
+
imageVoxelManager.scalarData = sliceData;
|
|
507
507
|
for (let i = 0; i < sliceData.length; i++) {
|
|
508
508
|
const value = sliceData[i];
|
|
509
509
|
minValue = Math.min(minValue, value);
|
|
@@ -641,6 +641,7 @@ export default class VoxelManager {
|
|
|
641
641
|
scalarData[index] = v;
|
|
642
642
|
return isChanged;
|
|
643
643
|
},
|
|
644
|
+
_getConstructor: () => scalarData.constructor,
|
|
644
645
|
_id: '_createNumberVolumeVoxelManager',
|
|
645
646
|
});
|
|
646
647
|
voxels.scalarData = scalarData;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"type": "individual",
|
|
83
83
|
"url": "https://ohif.org/donate"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "35fc8b154edd7fe386392d58a93d7c8b48798e47"
|
|
86
86
|
}
|