@cornerstonejs/core 2.5.3 → 2.6.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.
|
@@ -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.0",
|
|
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": "d5c8036b08e8927a3fbbc1af6a0557687fc0645c"
|
|
86
86
|
}
|