@cornerstonejs/core 2.8.6 → 2.10.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.
- package/dist/esm/RenderingEngine/BaseVolumeViewport.js +0 -1
- package/dist/esm/RenderingEngine/CanvasActor/index.d.ts +1 -0
- package/dist/esm/RenderingEngine/CanvasActor/index.js +3 -0
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -0
- package/dist/esm/RenderingEngine/VolumeViewport.js +11 -2
- package/dist/esm/RenderingEngine/helpers/createVolumeMapper.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/createVolumeMapper.js +18 -0
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +1 -1
- package/dist/esm/enums/BlendModes.d.ts +3 -2
- package/dist/esm/enums/BlendModes.js +2 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/types/IActor.d.ts +6 -0
- package/dist/esm/utilities/createPositionCallback.js +2 -2
- package/package.json +3 -3
|
@@ -12,6 +12,7 @@ export default class CanvasActor {
|
|
|
12
12
|
protected canvas: any;
|
|
13
13
|
constructor(viewport: IViewport, derivedImage: any);
|
|
14
14
|
protected renderRLE(viewport: any, context: any, voxelManager: any): void;
|
|
15
|
+
setMapper(mapper: CanvasMapper): void;
|
|
15
16
|
render(viewport: IViewport, context: CanvasRenderingContext2D): void;
|
|
16
17
|
getClassName(): string;
|
|
17
18
|
getProperty(): CanvasProperties;
|
|
@@ -62,6 +62,9 @@ export default class CanvasActor {
|
|
|
62
62
|
localContext.putImageData(imageData, 0, 0, dirtyX - 1, dirtyY - 1, dirtyWidth + 2, dirtyHeight + 2);
|
|
63
63
|
context.drawImage(canvas, dirtyX, dirtyY, dirtyWidth, dirtyHeight, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
|
|
64
64
|
}
|
|
65
|
+
setMapper(mapper) {
|
|
66
|
+
this.mapper = mapper;
|
|
67
|
+
}
|
|
65
68
|
render(viewport, context) {
|
|
66
69
|
if (!this.visibility) {
|
|
67
70
|
return;
|
|
@@ -15,6 +15,7 @@ declare class VolumeViewport extends BaseVolumeViewport {
|
|
|
15
15
|
protected setCameraClippingRange(): void;
|
|
16
16
|
private _getAcquisitionPlaneOrientation;
|
|
17
17
|
private _setViewPlaneToAcquisitionPlane;
|
|
18
|
+
getBlendMode(filterActorUIDs?: string[]): BlendModes;
|
|
18
19
|
setBlendMode(blendMode: BlendModes, filterActorUIDs?: any[], immediate?: boolean): void;
|
|
19
20
|
resetCameraForResize: () => boolean;
|
|
20
21
|
resetCamera(options?: any): boolean;
|
|
@@ -203,9 +203,17 @@ class VolumeViewport extends BaseVolumeViewport {
|
|
|
203
203
|
this.initialViewUp = viewUp;
|
|
204
204
|
this.resetCamera();
|
|
205
205
|
}
|
|
206
|
+
getBlendMode(filterActorUIDs) {
|
|
207
|
+
const actorEntries = this.getActors();
|
|
208
|
+
const actorForBlend = filterActorUIDs?.length > 0
|
|
209
|
+
? actorEntries.find((actorEntry) => filterActorUIDs.includes(actorEntry.uid))
|
|
210
|
+
: actorEntries[0];
|
|
211
|
+
return (actorForBlend?.blendMode ||
|
|
212
|
+
actorForBlend?.actor.getMapper().getBlendMode());
|
|
213
|
+
}
|
|
206
214
|
setBlendMode(blendMode, filterActorUIDs = [], immediate = false) {
|
|
207
215
|
let actorEntries = this.getActors();
|
|
208
|
-
if (filterActorUIDs
|
|
216
|
+
if (filterActorUIDs?.length > 0) {
|
|
209
217
|
actorEntries = actorEntries.filter((actorEntry) => {
|
|
210
218
|
return filterActorUIDs.includes(actorEntry.uid);
|
|
211
219
|
});
|
|
@@ -214,6 +222,7 @@ class VolumeViewport extends BaseVolumeViewport {
|
|
|
214
222
|
const { actor } = actorEntry;
|
|
215
223
|
const mapper = actor.getMapper();
|
|
216
224
|
mapper.setBlendMode?.(blendMode);
|
|
225
|
+
actorEntry.blendMode = blendMode;
|
|
217
226
|
});
|
|
218
227
|
if (immediate) {
|
|
219
228
|
this.render();
|
|
@@ -273,7 +282,7 @@ class VolumeViewport extends BaseVolumeViewport {
|
|
|
273
282
|
slabThickness = 0.1;
|
|
274
283
|
}
|
|
275
284
|
let actorEntries = this.getActors();
|
|
276
|
-
if (filterActorUIDs
|
|
285
|
+
if (filterActorUIDs?.length > 0) {
|
|
277
286
|
actorEntries = actorEntries.filter((actorEntry) => {
|
|
278
287
|
return filterActorUIDs.includes(actorEntry.uid);
|
|
279
288
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
2
2
|
import type vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';
|
|
3
|
-
import
|
|
3
|
+
import vtkVolumeMapper from '@kitware/vtk.js/Rendering/Core/VolumeMapper';
|
|
4
4
|
export default function createVolumeMapper(imageData: vtkImageData, vtkOpenGLTexture: vtkOpenGLTexture): vtkVolumeMapper;
|
|
5
|
+
export declare function convertMapperToNotSharedMapper(sharedMapper: vtkVolumeMapper): vtkVolumeMapper;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { vtkSharedVolumeMapper } from '../vtkClasses';
|
|
2
2
|
import { getConfiguration } from '../../init';
|
|
3
|
+
import vtkVolumeMapper from '@kitware/vtk.js/Rendering/Core/VolumeMapper';
|
|
4
|
+
import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
|
|
3
5
|
export default function createVolumeMapper(imageData, vtkOpenGLTexture) {
|
|
4
6
|
const volumeMapper = vtkSharedVolumeMapper.newInstance();
|
|
5
7
|
if (getConfiguration().rendering.preferSizeOverAccuracy) {
|
|
@@ -13,3 +15,19 @@ export default function createVolumeMapper(imageData, vtkOpenGLTexture) {
|
|
|
13
15
|
volumeMapper.setScalarTexture(vtkOpenGLTexture);
|
|
14
16
|
return volumeMapper;
|
|
15
17
|
}
|
|
18
|
+
export function convertMapperToNotSharedMapper(sharedMapper) {
|
|
19
|
+
const volumeMapper = vtkVolumeMapper.newInstance();
|
|
20
|
+
volumeMapper.setBlendMode(sharedMapper.getBlendMode());
|
|
21
|
+
const imageData = sharedMapper.getInputData();
|
|
22
|
+
const { voxelManager } = imageData.get('voxelManager');
|
|
23
|
+
const values = voxelManager.getCompleteScalarDataArray();
|
|
24
|
+
const scalarArray = vtkDataArray.newInstance({
|
|
25
|
+
name: `Pixels`,
|
|
26
|
+
values,
|
|
27
|
+
});
|
|
28
|
+
imageData.getPointData().setScalars(scalarArray);
|
|
29
|
+
volumeMapper.setInputData(imageData);
|
|
30
|
+
volumeMapper.setMaximumSamplesPerRay(sharedMapper.getMaximumSamplesPerRay());
|
|
31
|
+
volumeMapper.setSampleDistance(sharedMapper.getSampleDistance());
|
|
32
|
+
return volumeMapper;
|
|
33
|
+
}
|
|
@@ -95,7 +95,7 @@ async function getVOIFromMiddleSliceMinMax(imageVolume) {
|
|
|
95
95
|
image = await loadAndCacheImage(imageId, { ...options, ignoreCache: true });
|
|
96
96
|
}
|
|
97
97
|
let { min, max } = image.voxelManager.getMinMax();
|
|
98
|
-
if (min
|
|
98
|
+
if (min?.length > 1) {
|
|
99
99
|
min = Math.min(...min);
|
|
100
100
|
max = Math.max(...max);
|
|
101
101
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import vtkConstants from '@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants';
|
|
2
2
|
const { BlendMode } = vtkConstants;
|
|
3
|
-
var BlendModes;
|
|
3
|
+
export var BlendModes;
|
|
4
4
|
(function (BlendModes) {
|
|
5
5
|
BlendModes[BlendModes["COMPOSITE"] = BlendMode.COMPOSITE_BLEND] = "COMPOSITE";
|
|
6
6
|
BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = BlendMode.MAXIMUM_INTENSITY_BLEND] = "MAXIMUM_INTENSITY_BLEND";
|
|
7
7
|
BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = BlendMode.MINIMUM_INTENSITY_BLEND] = "MINIMUM_INTENSITY_BLEND";
|
|
8
8
|
BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = BlendMode.AVERAGE_INTENSITY_BLEND] = "AVERAGE_INTENSITY_BLEND";
|
|
9
|
+
BlendModes[BlendModes["LABELMAP_EDGE_PROJECTION_BLEND"] = BlendMode.LABELMAP_EDGE_PROJECTION_BLEND] = "LABELMAP_EDGE_PROJECTION_BLEND";
|
|
9
10
|
})(BlendModes || (BlendModes = {}));
|
|
10
11
|
export default BlendModes;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as CONSTANTS from './constants';
|
|
|
3
3
|
import { Events } from './enums';
|
|
4
4
|
import RenderingEngine from './RenderingEngine';
|
|
5
5
|
import createVolumeActor from './RenderingEngine/helpers/createVolumeActor';
|
|
6
|
-
import createVolumeMapper from './RenderingEngine/helpers/createVolumeMapper';
|
|
6
|
+
import createVolumeMapper, { convertMapperToNotSharedMapper } from './RenderingEngine/helpers/createVolumeMapper';
|
|
7
7
|
import getOrCreateCanvas from './RenderingEngine/helpers/getOrCreateCanvas';
|
|
8
8
|
import VolumeViewport from './RenderingEngine/VolumeViewport';
|
|
9
9
|
import VolumeViewport3D from './RenderingEngine/VolumeViewport3D';
|
|
@@ -35,4 +35,4 @@ import { cornerstoneStreamingImageVolumeLoader } from './loaders/cornerstoneStre
|
|
|
35
35
|
import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerstoneStreamingDynamicImageVolumeLoader';
|
|
36
36
|
import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports } from './RenderingEngine/helpers';
|
|
37
37
|
export type { Types, IRetrieveConfiguration, RetrieveOptions, RetrieveStage, ImageLoadListener, IImagesLoader, };
|
|
38
|
-
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, };
|
|
38
|
+
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, };
|
package/dist/esm/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as CONSTANTS from './constants';
|
|
|
3
3
|
import { Events } from './enums';
|
|
4
4
|
import RenderingEngine from './RenderingEngine';
|
|
5
5
|
import createVolumeActor from './RenderingEngine/helpers/createVolumeActor';
|
|
6
|
-
import createVolumeMapper from './RenderingEngine/helpers/createVolumeMapper';
|
|
6
|
+
import createVolumeMapper, { convertMapperToNotSharedMapper, } from './RenderingEngine/helpers/createVolumeMapper';
|
|
7
7
|
import getOrCreateCanvas from './RenderingEngine/helpers/getOrCreateCanvas';
|
|
8
8
|
import VolumeViewport from './RenderingEngine/VolumeViewport';
|
|
9
9
|
import VolumeViewport3D from './RenderingEngine/VolumeViewport3D';
|
|
@@ -32,4 +32,4 @@ import triggerEvent from './utilities/triggerEvent';
|
|
|
32
32
|
import { cornerstoneStreamingImageVolumeLoader } from './loaders/cornerstoneStreamingImageVolumeLoader';
|
|
33
33
|
import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerstoneStreamingDynamicImageVolumeLoader';
|
|
34
34
|
import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, } from './RenderingEngine/helpers';
|
|
35
|
-
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, };
|
|
35
|
+
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, };
|
|
@@ -2,6 +2,7 @@ import type vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
|
|
|
2
2
|
import type vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
|
|
3
3
|
import type vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
|
|
4
4
|
import type CanvasActor from '../RenderingEngine/CanvasActor';
|
|
5
|
+
import type { BlendModes } from '../enums';
|
|
5
6
|
export type Actor = vtkActor;
|
|
6
7
|
export type VolumeActor = vtkVolume;
|
|
7
8
|
export type ImageActor = vtkImageSlice;
|
|
@@ -12,5 +13,10 @@ export interface ActorEntry {
|
|
|
12
13
|
referencedId?: string;
|
|
13
14
|
slabThickness?: number;
|
|
14
15
|
clippingFilter?: any;
|
|
16
|
+
blendMode?: BlendModes;
|
|
17
|
+
callbacks?: ({ volumeActor, volumeId, }: {
|
|
18
|
+
volumeActor: VolumeActor;
|
|
19
|
+
volumeId: string;
|
|
20
|
+
}) => void;
|
|
15
21
|
[key: string]: unknown;
|
|
16
22
|
}
|
|
@@ -20,10 +20,10 @@ export function createPositionCallback(imageData) {
|
|
|
20
20
|
for (let i = 0; i < dimensions[0]; i++) {
|
|
21
21
|
positionI.push(vec3.add(scaled, worldPosStart, vec3.scale(scaled, rowStep, i)));
|
|
22
22
|
}
|
|
23
|
-
for (let j = 0; j < dimensions[
|
|
23
|
+
for (let j = 0; j < dimensions[1]; j++) {
|
|
24
24
|
positionJ.push(vec3.scale(scaled, columnStep, j));
|
|
25
25
|
}
|
|
26
|
-
for (let k = 0; k < dimensions[
|
|
26
|
+
for (let k = 0; k < dimensions[2]; k++) {
|
|
27
27
|
positionK.push(vec3.scale(scaled, scanAxisStep, k));
|
|
28
28
|
}
|
|
29
29
|
const dataI = positionI.getTypedArray();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "2.10.0",
|
|
4
|
+
"description": "Cornerstone3D Core",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
7
7
|
"repository": "https://github.com/cornerstonejs/cornerstone3D",
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"type": "individual",
|
|
83
83
|
"url": "https://ohif.org/donate"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "aab86e3f13a86bcd2d975a4cfbdf7eee7fa1627a"
|
|
86
86
|
}
|