@cornerstonejs/core 2.9.0 → 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.
@@ -591,7 +591,6 @@ class BaseVolumeViewport extends Viewport {
591
591
  }
592
592
  if (slabThickness !== undefined) {
593
593
  this.setSlabThickness(slabThickness);
594
- this.viewportProperties.slabThickness = slabThickness;
595
594
  }
596
595
  }
597
596
  resetToDefaultProperties(volumeId) {
@@ -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 && filterActorUIDs.length > 0) {
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 && filterActorUIDs.length > 0) {
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 type vtkVolumeMapper from '@kitware/vtk.js/Rendering/Core/VolumeMapper';
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
+ }
@@ -1,7 +1,8 @@
1
- declare enum BlendModes {
1
+ export declare enum BlendModes {
2
2
  COMPOSITE,
3
3
  MAXIMUM_INTENSITY_BLEND,
4
4
  MINIMUM_INTENSITY_BLEND,
5
- AVERAGE_INTENSITY_BLEND
5
+ AVERAGE_INTENSITY_BLEND,
6
+ LABELMAP_EDGE_PROJECTION_BLEND
6
7
  }
7
8
  export default BlendModes;
@@ -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;
@@ -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
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "2.9.0",
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": "06611b57ab0630cae3487040cc3034d544d63a98"
85
+ "gitHead": "aab86e3f13a86bcd2d975a4cfbdf7eee7fa1627a"
86
86
  }