@cornerstonejs/core 2.0.0-beta.28 → 2.0.0-beta.29
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/vtkClasses/vtkStreamingOpenGLTexture.js +9 -2
- package/dist/esm/cache/classes/BaseStreamingImageVolume.d.ts +0 -1
- package/dist/esm/cache/classes/BaseStreamingImageVolume.js +6 -4
- package/dist/esm/init.js +1 -0
- package/dist/esm/loaders/configuration/interleavedRetrieve.js +0 -41
- package/dist/esm/loaders/cornerstoneStreamingDynamicImageVolumeLoader.js +2 -1
- package/dist/esm/loaders/volumeLoader.js +3 -1
- package/dist/esm/utilities/VoxelManager.js +15 -12
- package/dist/esm/utilities/deepClone.js +1 -6
- package/dist/esm/utilities/deepEqual.d.ts +1 -0
- package/dist/esm/utilities/deepEqual.js +15 -0
- package/dist/esm/utilities/getBufferConfiguration.d.ts +2 -1
- package/dist/esm/utilities/getBufferConfiguration.js +17 -18
- package/dist/esm/utilities/getClosestImageId.js +5 -1
- package/dist/esm/utilities/index.d.ts +2 -1
- package/dist/esm/utilities/index.js +2 -1
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import macro from '@kitware/vtk.js/macros';
|
|
2
2
|
import vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';
|
|
3
3
|
import cache from '../../cache/cache';
|
|
4
|
+
import { getConstructorFromType } from '../../utilities/getBufferConfiguration';
|
|
4
5
|
function vtkStreamingOpenGLTexture(publicAPI, model) {
|
|
5
6
|
model.classHierarchy.push('vtkStreamingOpenGLTexture');
|
|
6
7
|
model.updatedFrames = [];
|
|
@@ -71,13 +72,19 @@ function vtkStreamingOpenGLTexture(publicAPI, model) {
|
|
|
71
72
|
function updateDynamicVolumeTexture() {
|
|
72
73
|
const volume = cache.getVolume(model.volumeId);
|
|
73
74
|
const imageIds = volume.getCurrentTimePointImageIds();
|
|
75
|
+
let constructor;
|
|
74
76
|
for (let i = 0; i < imageIds.length; i++) {
|
|
75
77
|
const imageId = imageIds[i];
|
|
76
78
|
const image = cache.getImage(imageId);
|
|
79
|
+
let data;
|
|
77
80
|
if (!image) {
|
|
78
|
-
|
|
81
|
+
constructor = getConstructorFromType(volume.dataType, true);
|
|
82
|
+
data = new constructor(model.width * model.height);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
data = image.voxelManager.getScalarData();
|
|
86
|
+
constructor = data.constructor;
|
|
79
87
|
}
|
|
80
|
-
const data = image.voxelManager.getScalarData();
|
|
81
88
|
const gl = model.context;
|
|
82
89
|
const dataType = data.constructor.name;
|
|
83
90
|
const [pixData] = publicAPI.updateArrayDataTypeForGL(dataType, [data]);
|
|
@@ -9,7 +9,6 @@ export default class BaseStreamingImageVolume extends ImageVolume implements IIm
|
|
|
9
9
|
protected cachedFrames: any[];
|
|
10
10
|
protected reRenderTarget: number;
|
|
11
11
|
protected reRenderFraction: number;
|
|
12
|
-
dataType: PixelDataTypedArrayString;
|
|
13
12
|
loadStatus: {
|
|
14
13
|
loaded: boolean;
|
|
15
14
|
loading: boolean;
|
|
@@ -36,10 +36,12 @@ export default class BaseStreamingImageVolume extends ImageVolume {
|
|
|
36
36
|
const { imageIds, loadStatus, numFrames } = this;
|
|
37
37
|
const { transferSyntaxUID } = metaData.get('transferSyntax', imageIds[0]) || {};
|
|
38
38
|
const imageRetrieveConfiguration = metaData.get(imageRetrieveMetadataProvider.IMAGE_RETRIEVE_CONFIGURATION, this.volumeId, transferSyntaxUID, 'volume');
|
|
39
|
-
this.imagesLoader =
|
|
40
|
-
?
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
this.imagesLoader = this.isDynamicVolume()
|
|
40
|
+
? this
|
|
41
|
+
: imageRetrieveConfiguration
|
|
42
|
+
? (imageRetrieveConfiguration.create ||
|
|
43
|
+
ProgressiveRetrieveImages.createProgressive)(imageRetrieveConfiguration)
|
|
44
|
+
: this;
|
|
43
45
|
if (loadStatus.loading === true) {
|
|
44
46
|
return;
|
|
45
47
|
}
|
package/dist/esm/init.js
CHANGED
|
@@ -28,46 +28,5 @@ const interleavedRetrieveConfiguration = [
|
|
|
28
28
|
priority: 6,
|
|
29
29
|
nearbyFrames,
|
|
30
30
|
},
|
|
31
|
-
{
|
|
32
|
-
id: 'halfThumb',
|
|
33
|
-
decimate: 4,
|
|
34
|
-
offset: 1,
|
|
35
|
-
priority: 7,
|
|
36
|
-
requestType: RequestType.Thumbnail,
|
|
37
|
-
retrieveType: 'multipleFast',
|
|
38
|
-
nearbyFrames,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
id: 'quarterFull',
|
|
42
|
-
decimate: 4,
|
|
43
|
-
offset: 2,
|
|
44
|
-
priority: 8,
|
|
45
|
-
requestType: RequestType.Thumbnail,
|
|
46
|
-
retrieveType: 'multipleFinal',
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: 'halfFull',
|
|
50
|
-
decimate: 4,
|
|
51
|
-
offset: 0,
|
|
52
|
-
priority: 9,
|
|
53
|
-
requestType: RequestType.Thumbnail,
|
|
54
|
-
retrieveType: 'multipleFinal',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
id: 'threeQuarterFull',
|
|
58
|
-
decimate: 4,
|
|
59
|
-
offset: 1,
|
|
60
|
-
priority: 10,
|
|
61
|
-
requestType: RequestType.Thumbnail,
|
|
62
|
-
retrieveType: 'multipleFinal',
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: 'finalFull',
|
|
66
|
-
decimate: 4,
|
|
67
|
-
offset: 3,
|
|
68
|
-
priority: 11,
|
|
69
|
-
requestType: RequestType.Thumbnail,
|
|
70
|
-
retrieveType: 'multipleFinal',
|
|
71
|
-
},
|
|
72
31
|
];
|
|
73
32
|
export default interleavedRetrieveConfiguration;
|
|
@@ -6,7 +6,8 @@ function cornerstoneStreamingDynamicImageVolumeLoader(volumeId, options) {
|
|
|
6
6
|
}
|
|
7
7
|
const { imageIds } = options;
|
|
8
8
|
const { splittingTag, imageIdGroups } = splitImageIdsBy4DTags(imageIds);
|
|
9
|
-
const
|
|
9
|
+
const middleIndex = Math.floor(imageIdGroups.length / 2);
|
|
10
|
+
const volumeProps = generateVolumePropsFromImageIds(imageIdGroups[middleIndex], volumeId);
|
|
10
11
|
const { metadata: volumeMetadata, dimensions, spacing, direction, sizeInBytes, origin, numberOfComponents, dataType, } = volumeProps;
|
|
11
12
|
const scanAxisNormal = direction.slice(6, 9);
|
|
12
13
|
const sortedImageIdGroups = imageIdGroups.map((imageIds) => {
|
|
@@ -68,7 +68,9 @@ export function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
|
68
68
|
volumeId = uuidv4();
|
|
69
69
|
}
|
|
70
70
|
const { metadata, dimensions, spacing, origin, direction } = referencedVolume;
|
|
71
|
-
const referencedImageIds = referencedVolume.
|
|
71
|
+
const referencedImageIds = referencedVolume.isDynamicVolume()
|
|
72
|
+
? referencedVolume.getCurrentTimePointImageIds()
|
|
73
|
+
: referencedVolume.imageIds ?? [];
|
|
72
74
|
const derivedImages = createAndCacheDerivedImages(referencedImageIds, {
|
|
73
75
|
targetBuffer: options.targetBuffer,
|
|
74
76
|
});
|
|
@@ -21,7 +21,7 @@ export default class VoxelManager {
|
|
|
21
21
|
this.setAtIJK = (i, j, k, v) => {
|
|
22
22
|
const index = this.toIndex([i, j, k]);
|
|
23
23
|
const changed = this._set(index, v);
|
|
24
|
-
if (changed) {
|
|
24
|
+
if (changed !== false) {
|
|
25
25
|
this.modifiedSlices.add(k);
|
|
26
26
|
VoxelManager.addBounds(this.boundsIJK, [i, j, k]);
|
|
27
27
|
}
|
|
@@ -34,7 +34,7 @@ export default class VoxelManager {
|
|
|
34
34
|
this.getAtIndex = (index) => this._get(index);
|
|
35
35
|
this.setAtIndex = (index, v) => {
|
|
36
36
|
const changed = this._set(index, v);
|
|
37
|
-
if (changed) {
|
|
37
|
+
if (changed !== false) {
|
|
38
38
|
const pointIJK = this.toIJK(index);
|
|
39
39
|
this.modifiedSlices.add(pointIJK[2]);
|
|
40
40
|
VoxelManager.addBounds(this.boundsIJK, pointIJK);
|
|
@@ -519,33 +519,36 @@ export default class VoxelManager {
|
|
|
519
519
|
numberOfComponents,
|
|
520
520
|
});
|
|
521
521
|
});
|
|
522
|
-
const voxelManager = new VoxelManager(dimensions, (index) => voxelGroups[timePoint]._get(index), (index, v) => voxelGroups[timePoint]._set(index, v));
|
|
522
|
+
const voxelManager = new VoxelManager(dimensions, (index) => voxelGroups[timePoint - 1]._get(index), (index, v) => voxelGroups[timePoint - 1]._set(index, v));
|
|
523
523
|
voxelManager.numberOfComponents = numberOfComponents;
|
|
524
524
|
voxelManager.getScalarDataLength = () => {
|
|
525
|
-
return voxelGroups[timePoint].getScalarDataLength();
|
|
525
|
+
return voxelGroups[timePoint - 1].getScalarDataLength();
|
|
526
526
|
};
|
|
527
527
|
voxelManager.getConstructor = () => {
|
|
528
|
-
return voxelGroups[timePoint].getConstructor();
|
|
528
|
+
return voxelGroups[timePoint - 1].getConstructor();
|
|
529
529
|
};
|
|
530
530
|
voxelManager.getRange = () => {
|
|
531
|
-
return voxelGroups[timePoint].getRange();
|
|
531
|
+
return voxelGroups[timePoint - 1].getRange();
|
|
532
532
|
};
|
|
533
533
|
voxelManager.getMiddleSliceData = () => {
|
|
534
|
-
return voxelGroups[timePoint].getMiddleSliceData();
|
|
534
|
+
return voxelGroups[timePoint - 1].getMiddleSliceData();
|
|
535
535
|
};
|
|
536
536
|
voxelManager.setTimePoint = (newTimePoint) => {
|
|
537
537
|
timePoint = newTimePoint;
|
|
538
|
-
voxelManager._get = (index) => voxelGroups[timePoint]._get(index);
|
|
539
|
-
voxelManager._set = (index, v) => voxelGroups[timePoint]._set(index, v);
|
|
538
|
+
voxelManager._get = (index) => voxelGroups[timePoint - 1]._get(index);
|
|
539
|
+
voxelManager._set = (index, v) => voxelGroups[timePoint - 1]._set(index, v);
|
|
540
540
|
};
|
|
541
541
|
voxelManager.getAtIndexAndTimePoint = (index, tp) => {
|
|
542
|
-
return voxelGroups[tp]._get(index);
|
|
542
|
+
return voxelGroups[tp - 1]._get(index);
|
|
543
543
|
};
|
|
544
544
|
voxelManager.getTimePointScalarData = (tp) => {
|
|
545
|
-
return voxelGroups[tp].getCompleteScalarDataArray();
|
|
545
|
+
return voxelGroups[tp - 1].getCompleteScalarDataArray();
|
|
546
|
+
};
|
|
547
|
+
voxelManager.getTimePointScalarData = (tp) => {
|
|
548
|
+
return voxelGroups[tp - 1].getCompleteScalarDataArray();
|
|
546
549
|
};
|
|
547
550
|
voxelManager.getCurrentTimePointScalarData = () => {
|
|
548
|
-
return voxelGroups[timePoint].getCompleteScalarDataArray();
|
|
551
|
+
return voxelGroups[timePoint - 1].getCompleteScalarDataArray();
|
|
549
552
|
};
|
|
550
553
|
return voxelManager;
|
|
551
554
|
}
|
|
@@ -6,12 +6,7 @@ export function deepClone(obj) {
|
|
|
6
6
|
return obj;
|
|
7
7
|
}
|
|
8
8
|
if (typeof structuredClone === 'function') {
|
|
9
|
-
|
|
10
|
-
return structuredClone(obj);
|
|
11
|
-
}
|
|
12
|
-
catch (error) {
|
|
13
|
-
console.debug('structuredClone failed, falling back to custom implementation');
|
|
14
|
-
}
|
|
9
|
+
return obj;
|
|
15
10
|
}
|
|
16
11
|
if (Array.isArray(obj)) {
|
|
17
12
|
return obj.map(deepClone);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deepEqual(obj1: unknown, obj2: unknown): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function deepEqual(obj1, obj2) {
|
|
2
|
+
if (obj1 === obj2) {
|
|
3
|
+
return true;
|
|
4
|
+
}
|
|
5
|
+
if (obj1 == null || obj2 == null) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
console.debug('Error in JSON.stringify during deep comparison:', error);
|
|
13
|
+
return obj1 === obj2;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { PixelDataTypedArray, PixelDataTypedArrayString } from '../types';
|
|
2
|
+
declare function getConstructorFromType(bufferType: PixelDataTypedArrayString, isVolumeBuffer: boolean): new (length: number) => PixelDataTypedArray;
|
|
2
3
|
declare function getBufferConfiguration(targetBufferType: PixelDataTypedArrayString, length: number, options?: {
|
|
3
4
|
isVolumeBuffer?: boolean;
|
|
4
5
|
}): {
|
|
5
6
|
numBytes: number;
|
|
6
7
|
TypedArrayConstructor: new (length: number) => PixelDataTypedArray;
|
|
7
8
|
};
|
|
8
|
-
export { getBufferConfiguration };
|
|
9
|
+
export { getBufferConfiguration, getConstructorFromType };
|
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
switch (targetBufferType) {
|
|
1
|
+
function getConstructorFromType(bufferType, isVolumeBuffer) {
|
|
2
|
+
switch (bufferType) {
|
|
4
3
|
case 'Float32Array':
|
|
5
|
-
return
|
|
4
|
+
return Float32Array;
|
|
6
5
|
case 'Uint8Array':
|
|
7
|
-
return
|
|
6
|
+
return Uint8Array;
|
|
8
7
|
case 'Uint16Array':
|
|
9
|
-
if (!isVolumeBuffer) {
|
|
10
|
-
return { numBytes: length * 2, TypedArrayConstructor: Uint16Array };
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
console.warn('Uint16Array is not supported for volume rendering, switching back to Float32Array');
|
|
14
|
-
return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
|
|
15
|
-
}
|
|
16
8
|
case 'Int16Array':
|
|
17
9
|
if (!isVolumeBuffer) {
|
|
18
|
-
return
|
|
10
|
+
return bufferType === 'Uint16Array' ? Uint16Array : Int16Array;
|
|
19
11
|
}
|
|
20
12
|
else {
|
|
21
|
-
console.
|
|
22
|
-
return
|
|
13
|
+
console.debug(`${bufferType} is not supported for volume rendering, switching back to Float32Array`);
|
|
14
|
+
return Float32Array;
|
|
23
15
|
}
|
|
24
16
|
default:
|
|
25
|
-
if (
|
|
17
|
+
if (bufferType) {
|
|
26
18
|
throw new Error('TargetBuffer should be Float32Array, Uint8Array, Uint16Array, or Int16Array');
|
|
27
19
|
}
|
|
28
20
|
else {
|
|
29
|
-
return
|
|
21
|
+
return Float32Array;
|
|
30
22
|
}
|
|
31
23
|
}
|
|
32
24
|
}
|
|
33
|
-
|
|
25
|
+
function getBufferConfiguration(targetBufferType, length, options = {}) {
|
|
26
|
+
const { isVolumeBuffer = false } = options;
|
|
27
|
+
const TypedArrayConstructor = getConstructorFromType(targetBufferType, isVolumeBuffer);
|
|
28
|
+
const bytesPerElement = TypedArrayConstructor.BYTES_PER_ELEMENT;
|
|
29
|
+
const numBytes = length * bytesPerElement;
|
|
30
|
+
return { numBytes, TypedArrayConstructor };
|
|
31
|
+
}
|
|
32
|
+
export { getBufferConfiguration, getConstructorFromType };
|
|
@@ -6,10 +6,14 @@ export default function getClosestImageId(imageVolume, worldPos, viewPlaneNormal
|
|
|
6
6
|
if (!imageVolume) {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
|
-
const { direction
|
|
9
|
+
const { direction } = imageVolume;
|
|
10
|
+
let { imageIds } = imageVolume;
|
|
10
11
|
if (!imageIds.length) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
14
|
+
if ('getCurrentTimePointImageIds' in imageVolume) {
|
|
15
|
+
imageIds = imageVolume.getCurrentTimePointImageIds();
|
|
16
|
+
}
|
|
13
17
|
const kVector = direction.slice(6, 9);
|
|
14
18
|
const dotProducts = vec3.dot(kVector, viewPlaneNormal);
|
|
15
19
|
if (Math.abs(dotProducts) < 1 - EPSILON) {
|
|
@@ -73,6 +73,7 @@ import * as windowLevel from './windowLevel';
|
|
|
73
73
|
import * as colormap from './colormap';
|
|
74
74
|
import * as transferFunctionUtils from './transferFunctionUtils';
|
|
75
75
|
import * as color from './color';
|
|
76
|
+
import { deepEqual } from './deepEqual';
|
|
76
77
|
import type { IViewport } from '../types/IViewport';
|
|
77
78
|
import getDynamicVolumeInfo from './getDynamicVolumeInfo';
|
|
78
79
|
import autoLoad from './autoLoad';
|
|
@@ -80,4 +81,4 @@ import scaleArray from './scaleArray';
|
|
|
80
81
|
import splitImageIdsBy4DTags from './splitImageIdsBy4DTags';
|
|
81
82
|
import { deepClone } from './deepClone';
|
|
82
83
|
declare const getViewportModality: (viewport: IViewport, volumeId?: string) => string;
|
|
83
|
-
export { eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isEqualAbs, isEqualNegative, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, };
|
|
84
|
+
export { eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isEqualAbs, isEqualNegative, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, };
|
|
@@ -73,6 +73,7 @@ import * as windowLevel from './windowLevel';
|
|
|
73
73
|
import * as colormap from './colormap';
|
|
74
74
|
import * as transferFunctionUtils from './transferFunctionUtils';
|
|
75
75
|
import * as color from './color';
|
|
76
|
+
import { deepEqual } from './deepEqual';
|
|
76
77
|
import { _getViewportModality } from './getViewportModality';
|
|
77
78
|
import cache from '../cache/cache';
|
|
78
79
|
import getDynamicVolumeInfo from './getDynamicVolumeInfo';
|
|
@@ -81,4 +82,4 @@ import scaleArray from './scaleArray';
|
|
|
81
82
|
import splitImageIdsBy4DTags from './splitImageIdsBy4DTags';
|
|
82
83
|
import { deepClone } from './deepClone';
|
|
83
84
|
const getViewportModality = (viewport, volumeId) => _getViewportModality(viewport, volumeId, cache.getVolume);
|
|
84
|
-
export { eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isEqualAbs, isEqualNegative, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, };
|
|
85
|
+
export { eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isEqualAbs, isEqualNegative, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.29",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/umd/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"type": "individual",
|
|
86
86
|
"url": "https://ohif.org/donate"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "fd9316cac241522bc5c43d267e41c7a4e36bec96"
|
|
89
89
|
}
|