@cornerstonejs/core 2.0.0-beta.21 → 2.0.0-beta.22

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.
Files changed (51) hide show
  1. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +1 -1
  2. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +16 -6
  3. package/dist/esm/RenderingEngine/RenderingEngine.d.ts +1 -2
  4. package/dist/esm/RenderingEngine/RenderingEngine.js +2 -1
  5. package/dist/esm/RenderingEngine/StackViewport.d.ts +1 -3
  6. package/dist/esm/RenderingEngine/StackViewport.js +15 -8
  7. package/dist/esm/RenderingEngine/VideoViewport.js +2 -2
  8. package/dist/esm/RenderingEngine/Viewport.js +4 -1
  9. package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -1
  10. package/dist/esm/RenderingEngine/VolumeViewport.js +8 -3
  11. package/dist/esm/RenderingEngine/WSIViewport.js +1 -1
  12. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js +1 -1
  13. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +1 -1
  14. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +3 -2
  15. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +4 -4
  16. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLTexture.js +1 -1
  17. package/dist/esm/cache/cache.js +2 -1
  18. package/dist/esm/cache/classes/ImageVolume.js +2 -1
  19. package/dist/esm/cache/index.d.ts +1 -2
  20. package/dist/esm/cache/index.js +1 -2
  21. package/dist/esm/index.d.ts +5 -2
  22. package/dist/esm/index.js +5 -2
  23. package/dist/esm/init.js +1 -1
  24. package/dist/esm/loaders/ProgressiveRetrieveImages.js +4 -2
  25. package/dist/esm/loaders/geometryLoader.js +1 -1
  26. package/dist/esm/loaders/imageLoader.js +6 -2
  27. package/dist/esm/loaders/volumeLoader.d.ts +1 -0
  28. package/dist/esm/loaders/volumeLoader.js +34 -5
  29. package/dist/esm/requestPool/requestPoolManager.js +1 -1
  30. package/dist/esm/types/CPUFallbackEnabledElement.d.ts +1 -39
  31. package/dist/esm/types/IImage.d.ts +37 -2
  32. package/dist/esm/types/index.d.ts +2 -2
  33. package/dist/esm/utilities/VoxelManager.js +1 -1
  34. package/dist/esm/utilities/calculateViewportsSpatialRegistration.js +3 -3
  35. package/dist/esm/utilities/convertVolumeToStackViewport.js +2 -1
  36. package/dist/esm/utilities/getClosestStackImageIndexForPoint.js +2 -2
  37. package/dist/esm/utilities/getImageLegacy.js +1 -1
  38. package/dist/esm/utilities/getScalingParameters.js +4 -4
  39. package/dist/esm/utilities/getViewportImageIds.js +1 -1
  40. package/dist/esm/utilities/imageToWorldCoords.js +2 -2
  41. package/dist/esm/utilities/index.js +1 -1
  42. package/dist/esm/utilities/isValidVolume.js +1 -1
  43. package/dist/esm/utilities/loadImageToCanvas.js +1 -1
  44. package/dist/esm/utilities/makeVolumeMetadata.js +5 -5
  45. package/dist/esm/utilities/sortImageIdsAndGetSpacing.js +2 -1
  46. package/dist/esm/utilities/worldToImageCoords.js +2 -2
  47. package/dist/umd/index.js +1 -1
  48. package/dist/umd/index.js.map +1 -1
  49. package/package.json +3 -2
  50. package/dist/esm/utilities/isTypedArray.d.ts +0 -1
  51. package/dist/esm/utilities/isTypedArray.js +0 -11
@@ -3,8 +3,8 @@ import type { BlendModes, InterpolationType, OrientationAxis } from '../enums';
3
3
  import type { FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewReference, IVolumeViewport } from '../types';
4
4
  import type { VoiModifiedEventDetail } from '../types/EventTypes';
5
5
  import type { ViewportInput } from '../types/IViewport';
6
- import Viewport from './Viewport';
7
6
  import type { TransferFunctionNodes } from '../types/ITransferFunctionNode';
7
+ import Viewport from './Viewport';
8
8
  declare abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport {
9
9
  useCPURendering: boolean;
10
10
  private _FrameOfReferenceUID;
@@ -2,20 +2,30 @@ import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransf
2
2
  import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps';
3
3
  import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
4
4
  import { vec2, vec3 } from 'gl-matrix';
5
- import cache from '../cache';
5
+ import cache from '../cache/cache';
6
6
  import { MPR_CAMERA_VALUES, RENDERING_DEFAULTS, VIEWPORT_PRESETS, } from '../constants';
7
7
  import { Events, ViewportStatus, VOILUTFunctionType } from '../enums';
8
8
  import ViewportType from '../enums/ViewportType';
9
9
  import eventTarget from '../eventTarget';
10
10
  import { getShouldUseCPURendering } from '../init';
11
- import { actorIsA, applyPreset, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, imageIdToURI, invertRgbTransferFunction, triggerEvent, colormap as colormapUtils, isEqualNegative, getVolumeViewportScrollInfo, snapFocalPointToSlice, isEqual, } from '../utilities';
12
- import { createVolumeActor } from './helpers';
13
- import volumeNewImageEventDispatcher, { resetVolumeNewImageState, } from './helpers/volumeNewImageEventDispatcher';
14
- import Viewport from './Viewport';
15
- import vtkSlabCamera from './vtkClasses/vtkSlabCamera';
11
+ import triggerEvent from '../utilities/triggerEvent';
12
+ import * as colormapUtils from '../utilities/colormap';
13
+ import invertRgbTransferFunction from '../utilities/invertRgbTransferFunction';
14
+ import createSigmoidRGBTransferFunction from '../utilities/createSigmoidRGBTransferFunction';
16
15
  import transformWorldToIndex from '../utilities/transformWorldToIndex';
17
16
  import { findMatchingColormap } from '../utilities/colormap';
18
17
  import { getTransferFunctionNodes } from '../utilities/transferFunctionUtils';
18
+ import createVolumeActor from './helpers/createVolumeActor';
19
+ import volumeNewImageEventDispatcher, { resetVolumeNewImageState, } from './helpers/volumeNewImageEventDispatcher';
20
+ import Viewport from './Viewport';
21
+ import vtkSlabCamera from './vtkClasses/vtkSlabCamera';
22
+ import getVolumeViewportScrollInfo from '../utilities/getVolumeViewportScrollInfo';
23
+ import { actorIsA } from '../utilities/actorCheck';
24
+ import snapFocalPointToSlice from '../utilities/snapFocalPointToSlice';
25
+ import getVoiFromSigmoidRGBTransferFunction from '../utilities/getVoiFromSigmoidRGBTransferFunction';
26
+ import isEqual, { isEqualNegative } from '../utilities/isEqual';
27
+ import applyPreset from '../utilities/applyPreset';
28
+ import imageIdToURI from '../utilities/imageIdToURI';
19
29
  class BaseVolumeViewport extends Viewport {
20
30
  constructor(props) {
21
31
  super(props);
@@ -1,8 +1,7 @@
1
1
  import type IStackViewport from '../types/IStackViewport';
2
2
  import type IRenderingEngine from '../types/IRenderingEngine';
3
3
  import type IVolumeViewport from '../types/IVolumeViewport';
4
- import type { IViewport } from '../types/IViewport';
5
- import type { PublicViewportInput } from '../types/IViewport';
4
+ import type { PublicViewportInput, IViewport } from '../types/IViewport';
6
5
  declare class RenderingEngine implements IRenderingEngine {
7
6
  readonly id: string;
8
7
  hasBeenDestroyed: boolean;
@@ -1,7 +1,8 @@
1
1
  import Events from '../enums/Events';
2
2
  import renderingEngineCache from './renderingEngineCache';
3
3
  import eventTarget from '../eventTarget';
4
- import { triggerEvent, uuidv4 } from '../utilities';
4
+ import uuidv4 from '../utilities/uuidv4';
5
+ import triggerEvent from '../utilities/triggerEvent';
5
6
  import { vtkOffscreenMultiRenderWindow } from './vtkClasses';
6
7
  import ViewportType from '../enums/ViewportType';
7
8
  import VolumeViewport from './VolumeViewport';
@@ -1,10 +1,8 @@
1
1
  import type { vtkImageData as vtkImageDataType } from '@kitware/vtk.js/Common/DataModel/ImageData';
2
2
  import { mat4 } from 'gl-matrix';
3
- import type { ActorEntry, CPUIImageData, ICamera, IImage, IImageData, IImagesLoader, IStackInput, IStackViewport, ImageLoadListener, Mat3, Point2, Point3, Scaling, StackViewportProperties, ViewReference } from '../types';
4
- import type { ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewportInput } from '../types/IViewport';
3
+ import type { ActorEntry, CPUIImageData, ICamera, IImage, IImageData, IImagesLoader, IStackInput, IStackViewport, ImageLoadListener, Mat3, Point2, Point3, Scaling, StackViewportProperties, ViewReference, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewportInput, ImagePixelModule, ImagePlaneModule } from '../types';
5
4
  import Viewport from './Viewport';
6
5
  import { InterpolationType, RequestType, ViewportStatus } from '../enums';
7
- import type { ImagePixelModule, ImagePlaneModule } from '../types';
8
6
  import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
9
7
  export interface ImageDataMetaData {
10
8
  bitsAllocated: number;
@@ -8,9 +8,19 @@ import vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
8
8
  import { mat4, vec2, vec3 } from 'gl-matrix';
9
9
  import eventTarget from '../eventTarget';
10
10
  import * as metaData from '../metaData';
11
- import { actorIsA, colormap as colormapUtils, createSigmoidRGBTransferFunction, imageIdToURI, imageRetrieveMetadataProvider, invertRgbTransferFunction, isEqual, isImageActor, triggerEvent, updateVTKImageDataWithCornerstoneImage, windowLevel as windowLevelUtil, } from '../utilities';
11
+ import { actorIsA, isImageActor } from '../utilities/actorCheck';
12
+ import * as colormapUtils from '../utilities/colormap';
13
+ import { getTransferFunctionNodes, setTransferFunctionNodes, } from '../utilities/transferFunctionUtils';
14
+ import * as windowLevelUtil from '../utilities/windowLevel';
15
+ import createLinearRGBTransferFunction from '../utilities/createLinearRGBTransferFunction';
16
+ import createSigmoidRGBTransferFunction from '../utilities/createSigmoidRGBTransferFunction';
17
+ import { updateVTKImageDataWithCornerstoneImage } from '../utilities/updateVTKImageDataWithCornerstoneImage';
18
+ import triggerEvent from '../utilities/triggerEvent';
19
+ import { isEqual } from '../utilities/isEqual';
20
+ import invertRgbTransferFunction from '../utilities/invertRgbTransferFunction';
21
+ import imageRetrieveMetadataProvider from '../utilities/imageRetrieveMetadataProvider';
22
+ import imageIdToURI from '../utilities/imageIdToURI';
12
23
  import Viewport from './Viewport';
13
- import { getColormap } from './helpers/cpuFallback/colors/index';
14
24
  import drawImageSync from './helpers/cpuFallback/drawImageSync';
15
25
  import { Events, InterpolationType, MetadataModules, RequestType, VOILUTFunctionType, ViewportStatus, } from '../enums';
16
26
  import { loadAndCacheImage } from '../loaders/imageLoader';
@@ -20,15 +30,12 @@ import canvasToPixel from './helpers/cpuFallback/rendering/canvasToPixel';
20
30
  import getDefaultViewport from './helpers/cpuFallback/rendering/getDefaultViewport';
21
31
  import pixelToCanvas from './helpers/cpuFallback/rendering/pixelToCanvas';
22
32
  import resize from './helpers/cpuFallback/rendering/resize';
23
- import cache from '../cache';
33
+ import cache from '../cache/cache';
24
34
  import { getConfiguration, getShouldUseCPURendering } from '../init';
25
35
  import { createProgressive } from '../loaders/ProgressiveRetrieveImages';
26
- import createLinearRGBTransferFunction from '../utilities/createLinearRGBTransferFunction';
27
- import { getTransferFunctionNodes, setTransferFunctionNodes, } from '../utilities/transferFunctionUtils';
28
36
  import correctShift from './helpers/cpuFallback/rendering/correctShift';
29
37
  import resetCamera from './helpers/cpuFallback/rendering/resetCamera';
30
38
  import { Transform } from './helpers/cpuFallback/rendering/transform';
31
- import { findMatchingColormap } from '../utilities/colormap';
32
39
  const EPSILON = 1;
33
40
  class StackViewport extends Viewport {
34
41
  constructor(props) {
@@ -627,7 +634,7 @@ class StackViewport extends Viewport {
627
634
  return acc;
628
635
  }, []);
629
636
  const defaultActor = this.getDefaultActor();
630
- const matchedColormap = findMatchingColormap(RGBPoints, defaultActor.actor);
637
+ const matchedColormap = colormapUtils.findMatchingColormap(RGBPoints, defaultActor.actor);
631
638
  this.setColormap(matchedColormap);
632
639
  }
633
640
  resetToDefaultProperties() {
@@ -1772,7 +1779,7 @@ class StackViewport extends Viewport {
1772
1779
  }
1773
1780
  setColormapCPU(colormapData) {
1774
1781
  this.colormap = colormapData;
1775
- const colormap = getColormap(colormapData.name, colormapData);
1782
+ const colormap = colormapUtils.getColormap(colormapData.name);
1776
1783
  this._cpuFallbackEnabledElement.viewport.colormap = colormap;
1777
1784
  this._cpuFallbackEnabledElement.renderingTools = {};
1778
1785
  this.fillWithBackgroundColor();
@@ -2,11 +2,11 @@ import { vec3 } from 'gl-matrix';
2
2
  import { Events as EVENTS, VideoEnums as VideoViewportEnum, MetadataModules, } from '../enums';
3
3
  import * as metaData from '../metaData';
4
4
  import { Transform } from './helpers/cpuFallback/rendering/transform';
5
- import { triggerEvent } from '../utilities';
5
+ import triggerEvent from '../utilities/triggerEvent';
6
6
  import Viewport from './Viewport';
7
7
  import { getOrCreateCanvas } from './helpers';
8
8
  import CanvasActor from './CanvasActor';
9
- import cache from '../cache';
9
+ import cache from '../cache/cache';
10
10
  class VideoViewport extends Viewport {
11
11
  static { this.frameRangeExtractor = /(\/frames\/|[&?]frameNumber=)([^/&?]*)/i; }
12
12
  constructor(props) {
@@ -6,7 +6,10 @@ import Events from '../enums/Events';
6
6
  import ViewportStatus from '../enums/ViewportStatus';
7
7
  import ViewportType from '../enums/ViewportType';
8
8
  import renderingEngineCache from './renderingEngineCache';
9
- import { triggerEvent, planar, isImageActor, actorIsA, isEqual, } from '../utilities';
9
+ import { actorIsA, isImageActor } from '../utilities/actorCheck';
10
+ import triggerEvent from '../utilities/triggerEvent';
11
+ import * as planar from '../utilities/planar';
12
+ import isEqual from '../utilities/isEqual';
10
13
  import hasNaNValues from '../utilities/hasNaNValues';
11
14
  import { RENDERING_DEFAULTS } from '../constants';
12
15
  import { InterpolationType } from '../enums';
@@ -1,9 +1,9 @@
1
+ import { mat4 } from 'gl-matrix';
1
2
  import type { BlendModes } from '../enums';
2
3
  import { OrientationAxis } from '../enums';
3
4
  import type { IVolumeInput, OrientationVectors, Point3, ViewReference, ViewReferenceSpecifier } from '../types';
4
5
  import type { ViewportInput } from '../types/IViewport';
5
6
  import BaseVolumeViewport from './BaseVolumeViewport';
6
- import { mat4 } from 'gl-matrix';
7
7
  declare class VolumeViewport extends BaseVolumeViewport {
8
8
  private _useAcquisitionPlaneForViewPlane;
9
9
  constructor(props: ViewportInput);
@@ -1,13 +1,18 @@
1
+ import { mat4, vec3 } from 'gl-matrix';
1
2
  import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
2
- import cache from '../cache';
3
+ import cache from '../cache/cache';
3
4
  import { EPSILON, MPR_CAMERA_VALUES, RENDERING_DEFAULTS } from '../constants';
4
5
  import { OrientationAxis, Events } from '../enums';
5
- import { actorIsA, getClosestImageId, getSliceRange, getSpacingInNormalDirection, isImageActor, snapFocalPointToSlice, triggerEvent, } from '../utilities';
6
+ import { actorIsA, isImageActor } from '../utilities/actorCheck';
7
+ import getClosestImageId from '../utilities/getClosestImageId';
8
+ import getSliceRange from '../utilities/getSliceRange';
9
+ import getSpacingInNormalDirection from '../utilities/getSpacingInNormalDirection';
10
+ import snapFocalPointToSlice from '../utilities/snapFocalPointToSlice';
11
+ import triggerEvent from '../utilities/triggerEvent';
6
12
  import BaseVolumeViewport from './BaseVolumeViewport';
7
13
  import setDefaultVolumeVOI from './helpers/setDefaultVolumeVOI';
8
14
  import { setTransferFunctionNodes } from '../utilities/transferFunctionUtils';
9
15
  import getImageSliceDataForVolumeViewport from '../utilities/getImageSliceDataForVolumeViewport';
10
- import { mat4, vec3 } from 'gl-matrix';
11
16
  import { transformCanvasToIJK } from '../utilities/transformCanvasToIJK';
12
17
  import { transformIJKToCanvas } from '../utilities/transformIJKToCanvas';
13
18
  class VolumeViewport extends BaseVolumeViewport {
@@ -6,7 +6,7 @@ import { Transform } from './helpers/cpuFallback/rendering/transform';
6
6
  import Viewport from './Viewport';
7
7
  import { getOrCreateCanvas } from './helpers';
8
8
  import { EPSILON } from '../constants';
9
- import { triggerEvent } from '../utilities';
9
+ import triggerEvent from '../utilities/triggerEvent';
10
10
  import { peerImport } from '../init';
11
11
  const _map = Symbol.for('map');
12
12
  const EVENT_POSTRENDER = 'postrender';
@@ -7,7 +7,7 @@ import doesImageNeedToBeRendered from './doesImageNeedToBeRendered';
7
7
  import storedPixelDataToCanvasImageDataPseudocolorLUT from './storedPixelDataToCanvasImageDataPseudocolorLUT';
8
8
  import storedPixelDataToCanvasImageDataPseudocolorLUTPET from './storedPixelDataToCanvasImageDataPseudocolorLUTPET';
9
9
  import * as colors from '../colors/index';
10
- import { clamp } from '../../../../utilities';
10
+ import { clamp } from '../../../../utilities/clamp';
11
11
  function getRenderCanvas(enabledElement, image, invalidated) {
12
12
  if (!enabledElement.renderingTools.renderCanvas) {
13
13
  enabledElement.renderingTools.renderCanvas =
@@ -1,7 +1,7 @@
1
1
  import vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
2
2
  import { loadVolume } from '../../loaders/volumeLoader';
3
3
  import createVolumeMapper from './createVolumeMapper';
4
- import { triggerEvent } from '../../utilities';
4
+ import triggerEvent from '../../utilities/triggerEvent';
5
5
  import { Events } from '../../enums';
6
6
  import setDefaultVolumeVOI from './setDefaultVolumeVOI';
7
7
  async function createVolumeActor(props, element, viewportId, suppressEvents = false) {
@@ -1,8 +1,9 @@
1
1
  import { loadAndCacheImage } from '../../loaders/imageLoader';
2
2
  import * as metaData from '../../metaData';
3
- import { getMinMax, windowLevel } from '../../utilities';
3
+ import getMinMax from '../../utilities/getMinMax';
4
+ import * as windowLevel from '../../utilities/windowLevel';
4
5
  import { RequestType } from '../../enums';
5
- import cache from '../../cache';
6
+ import cache from '../../cache/cache';
6
7
  const PRIORITY = 0;
7
8
  const REQUEST_TYPE = RequestType.Prefetch;
8
9
  async function setDefaultVolumeVOI(volumeActor, imageVolume) {
@@ -1,7 +1,7 @@
1
- import { getImageSliceDataForVolumeViewport, triggerEvent, } from '../../utilities';
1
+ import getImageSliceDataForVolumeViewport from '../../utilities/getImageSliceDataForVolumeViewport';
2
+ import triggerEvent from '../../utilities/triggerEvent';
2
3
  import { Events } from '../../enums';
3
4
  import { getRenderingEngine } from '../getRenderingEngine';
4
- import BaseVolumeViewport from '../BaseVolumeViewport';
5
5
  const state = {};
6
6
  export function resetVolumeNewImageState(viewportId) {
7
7
  if (state[viewportId] !== undefined) {
@@ -12,8 +12,8 @@ function volumeNewImageEventDispatcher(cameraEvent) {
12
12
  const { renderingEngineId, viewportId } = cameraEvent.detail;
13
13
  const renderingEngine = getRenderingEngine(renderingEngineId);
14
14
  const viewport = renderingEngine.getViewport(viewportId);
15
- if (!(viewport instanceof BaseVolumeViewport)) {
16
- throw new Error(`volumeNewImageEventDispatcher: viewport is not a BaseVolumeViewport`);
15
+ if (!('setVolumes' in viewport)) {
16
+ throw new Error(`volumeNewImageEventDispatcher: viewport does not have setVolumes method`);
17
17
  }
18
18
  if (state[viewport.id] === undefined) {
19
19
  state[viewport.id] = 0;
@@ -1,6 +1,6 @@
1
1
  import macro from '@kitware/vtk.js/macros';
2
2
  import vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';
3
- import cache from '../../cache';
3
+ import cache from '../../cache/cache';
4
4
  function vtkStreamingOpenGLTexture(publicAPI, model) {
5
5
  model.classHierarchy.push('vtkStreamingOpenGLTexture');
6
6
  model.updatedFrames = [];
@@ -1,4 +1,5 @@
1
- import { triggerEvent, imageIdToURI } from '../utilities';
1
+ import triggerEvent from '../utilities/triggerEvent';
2
+ import imageIdToURI from '../utilities/imageIdToURI';
2
3
  import eventTarget from '../eventTarget';
3
4
  import Events from '../enums/Events';
4
5
  const ONE_GB = 1073741824;
@@ -1,5 +1,6 @@
1
1
  import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
2
- import { imageIdToURI, VoxelManager } from '../../utilities';
2
+ import imageIdToURI from '../../utilities/imageIdToURI';
3
+ import VoxelManager from '../../utilities/VoxelManager';
3
4
  import { vtkStreamingOpenGLTexture } from '../../RenderingEngine/vtkClasses';
4
5
  import cache from '../cache';
5
6
  export class ImageVolume {
@@ -1,5 +1,4 @@
1
- import cache, { Cache } from './cache';
1
+ import { Cache } from './cache';
2
2
  import ImageVolume from './classes/ImageVolume';
3
3
  import { Surface } from './classes/Surface';
4
4
  export { ImageVolume, Cache, Surface };
5
- export default cache;
@@ -1,5 +1,4 @@
1
- import cache, { Cache } from './cache';
1
+ import { Cache } from './cache';
2
2
  import ImageVolume from './classes/ImageVolume';
3
3
  import { Surface } from './classes/Surface';
4
4
  export { ImageVolume, Cache, Surface };
5
- export default cache;
@@ -1,8 +1,10 @@
1
1
  import * as Enums from './enums';
2
2
  import * as CONSTANTS from './constants';
3
3
  import { Events } from './enums';
4
- import { createVolumeActor, createVolumeMapper, getOrCreateCanvas } from './RenderingEngine';
5
4
  import RenderingEngine from './RenderingEngine';
5
+ import createVolumeActor from './RenderingEngine/helpers/createVolumeActor';
6
+ import createVolumeMapper from './RenderingEngine/helpers/createVolumeMapper';
7
+ import getOrCreateCanvas from './RenderingEngine/helpers/getOrCreateCanvas';
6
8
  import VolumeViewport from './RenderingEngine/VolumeViewport';
7
9
  import VolumeViewport3D from './RenderingEngine/VolumeViewport3D';
8
10
  import BaseVolumeViewport from './RenderingEngine/BaseVolumeViewport';
@@ -12,7 +14,8 @@ import WSIViewport from './RenderingEngine/WSIViewport';
12
14
  import Viewport from './RenderingEngine/Viewport';
13
15
  import eventTarget from './eventTarget';
14
16
  import { getRenderingEngine, getRenderingEngines } from './RenderingEngine/getRenderingEngine';
15
- import cache, { ImageVolume, Surface } from './cache';
17
+ import { ImageVolume, Surface } from './cache';
18
+ import cache from './cache/cache';
16
19
  import imageRetrievalPoolManager from './requestPool/imageRetrievalPoolManager';
17
20
  import imageLoadPoolManager from './requestPool/imageLoadPoolManager';
18
21
  import getEnabledElement, { getEnabledElementByIds, getEnabledElementByViewportId, getEnabledElements } from './getEnabledElement';
package/dist/esm/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import * as Enums from './enums';
2
2
  import * as CONSTANTS from './constants';
3
3
  import { Events } from './enums';
4
- import { createVolumeActor, createVolumeMapper, getOrCreateCanvas, } from './RenderingEngine';
5
4
  import RenderingEngine from './RenderingEngine';
5
+ import createVolumeActor from './RenderingEngine/helpers/createVolumeActor';
6
+ import createVolumeMapper from './RenderingEngine/helpers/createVolumeMapper';
7
+ import getOrCreateCanvas from './RenderingEngine/helpers/getOrCreateCanvas';
6
8
  import VolumeViewport from './RenderingEngine/VolumeViewport';
7
9
  import VolumeViewport3D from './RenderingEngine/VolumeViewport3D';
8
10
  import BaseVolumeViewport from './RenderingEngine/BaseVolumeViewport';
@@ -12,7 +14,8 @@ import WSIViewport from './RenderingEngine/WSIViewport';
12
14
  import Viewport from './RenderingEngine/Viewport';
13
15
  import eventTarget from './eventTarget';
14
16
  import { getRenderingEngine, getRenderingEngines, } from './RenderingEngine/getRenderingEngine';
15
- import cache, { ImageVolume, Surface } from './cache';
17
+ import { ImageVolume, Surface } from './cache';
18
+ import cache from './cache/cache';
16
19
  import imageRetrievalPoolManager from './requestPool/imageRetrievalPoolManager';
17
20
  import imageLoadPoolManager from './requestPool/imageLoadPoolManager';
18
21
  import getEnabledElement, { getEnabledElementByIds, getEnabledElementByViewportId, getEnabledElements, } from './getEnabledElement';
package/dist/esm/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { getRenderingEngines } from './RenderingEngine/getRenderingEngine';
2
2
  let csRenderInitialized = false;
3
- import { deepMerge } from './utilities';
3
+ import deepMerge from './utilities/deepMerge';
4
4
  import CentralizedWebWorkerManager from './webWorkerManager/webWorkerManager';
5
5
  const defaultConfig = {
6
6
  gpuTier: { tier: 2 },
@@ -2,10 +2,12 @@ import singleRetrieveStages from './configuration/singleRetrieve';
2
2
  import sequentialRetrieveStages from './configuration/sequentialRetrieve';
3
3
  import interleavedRetrieveStages from './configuration/interleavedRetrieve';
4
4
  import { loadAndCacheImage } from './imageLoader';
5
- import { triggerEvent, ProgressiveIterator, decimate } from '../utilities';
5
+ import triggerEvent from '../utilities/triggerEvent';
6
+ import ProgressiveIterator from '../utilities/ProgressiveIterator';
7
+ import decimate from '../utilities/decimate';
6
8
  import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
7
9
  import { ImageQualityStatus, RequestType, Events } from '../enums';
8
- import cache from '../cache';
10
+ import cache from '../cache/cache';
9
11
  import eventTarget from '../eventTarget';
10
12
  import { fillNearbyFrames } from './fillNearbyFrames';
11
13
  export { sequentialRetrieveStages, interleavedRetrieveStages, singleRetrieveStages, };
@@ -1,5 +1,5 @@
1
1
  import '@kitware/vtk.js/Rendering/Profiles/Geometry';
2
- import cache from '../cache';
2
+ import cache from '../cache/cache';
3
3
  import { GeometryType } from '../enums';
4
4
  import { createContourSet } from './utils/contourSet/createContourSet';
5
5
  import { createSurface } from './utils/surface/createSurface';
@@ -1,9 +1,13 @@
1
1
  import cache from '../cache/cache';
2
2
  import Events from '../enums/Events';
3
3
  import eventTarget from '../eventTarget';
4
- import { genericMetadataProvider, getBufferConfiguration, triggerEvent, uuidv4, VoxelManager, } from '../utilities';
4
+ import genericMetadataProvider from '../utilities/genericMetadataProvider';
5
+ import { getBufferConfiguration } from '../utilities/getBufferConfiguration';
6
+ import triggerEvent from '../utilities/triggerEvent';
7
+ import uuidv4 from '../utilities/uuidv4';
8
+ import VoxelManager from '../utilities/VoxelManager';
5
9
  import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
6
- import { metaData } from '../';
10
+ import * as metaData from '../metaData';
7
11
  const imageLoaders = {};
8
12
  let unknownImageLoader;
9
13
  function loadImageFromImageLoader(imageId, options) {
@@ -2,6 +2,7 @@ import '@kitware/vtk.js/Rendering/Profiles/Volume';
2
2
  import type { Point3, Metadata, Mat3, IImageVolume, VolumeLoaderFn, PixelDataTypedArray, PixelDataTypedArrayString } from '../types';
3
3
  interface VolumeLoaderOptions {
4
4
  imageIds: string[];
5
+ progressiveRendering?: boolean;
5
6
  }
6
7
  interface DerivedVolumeOptions {
7
8
  volumeId: string;
@@ -4,9 +4,9 @@ import cache from '../cache/cache';
4
4
  import Events from '../enums/Events';
5
5
  import eventTarget from '../eventTarget';
6
6
  import triggerEvent from '../utilities/triggerEvent';
7
- import { getBufferConfiguration, uuidv4, VoxelManager } from '../utilities';
8
- import { imageLoader } from '..';
9
- import { createAndCacheLocalImage } from './imageLoader';
7
+ import uuidv4 from '../utilities/uuidv4';
8
+ import VoxelManager from '../utilities/VoxelManager';
9
+ import { createAndCacheLocalImage, createAndCacheDerivedImages, } from './imageLoader';
10
10
  const volumeLoaders = {};
11
11
  let unknownVolumeLoader;
12
12
  function loadVolumeFromVolumeLoader(volumeId, options) {
@@ -68,7 +68,15 @@ export function createAndCacheDerivedVolume(referencedVolumeId, options) {
68
68
  }
69
69
  const { metadata, dimensions, spacing, origin, direction } = referencedVolume;
70
70
  const referencedImageIds = referencedVolume.imageIds ?? [];
71
- const derivedImages = imageLoader.createAndCacheDerivedImages(referencedImageIds, {
71
+ const byteLength = referencedImageIds.reduce((total, imageId) => {
72
+ const image = cache.getImage(imageId);
73
+ return total + image.sizeInBytes;
74
+ }, 0);
75
+ const isCacheable = cache.isCacheable(byteLength);
76
+ if (!isCacheable) {
77
+ throw new Error(`Cannot created derived volume: Referenced volume with id ${referencedVolumeId} does not exist.`);
78
+ }
79
+ const derivedImages = createAndCacheDerivedImages(referencedImageIds, {
72
80
  targetBufferType: options.targetBufferType,
73
81
  });
74
82
  const dataType = derivedImages[0].dataType;
@@ -114,6 +122,25 @@ export function createLocalVolume(volumeId, options = {}) {
114
122
  const dataType = scalarData
115
123
  ? scalarData.constructor.name
116
124
  : targetBufferType;
125
+ const totalNumberOfVoxels = sliceLength * dimensions[2];
126
+ let byteLength;
127
+ switch (dataType) {
128
+ case 'Uint8Array':
129
+ case 'Int8Array':
130
+ byteLength = totalNumberOfVoxels;
131
+ break;
132
+ case 'Uint16Array':
133
+ case 'Int16Array':
134
+ byteLength = totalNumberOfVoxels * 2;
135
+ break;
136
+ case 'Float32Array':
137
+ byteLength = totalNumberOfVoxels * 4;
138
+ break;
139
+ }
140
+ const isCacheable = cache.isCacheable(byteLength);
141
+ if (!isCacheable) {
142
+ throw new Error(`Cannot created derived volume: Volume with id ${volumeId} is not cacheable.`);
143
+ }
117
144
  const imageIds = [];
118
145
  const derivedImages = [];
119
146
  for (let i = 0; i < dimensions[2]; i++) {
@@ -146,7 +173,9 @@ export function createLocalVolume(volumeId, options = {}) {
146
173
  numberOfComponents: 1,
147
174
  });
148
175
  imageVolume.voxelManager = voxelManager;
149
- cache.putVolumeSync(volumeId, imageVolume);
176
+ if (!preventCache) {
177
+ cache.putVolumeSync(volumeId, imageVolume);
178
+ }
150
179
  return imageVolume;
151
180
  }
152
181
  export function registerVolumeLoader(scheme, volumeLoader) {
@@ -1,5 +1,5 @@
1
1
  import RequestType from '../enums/RequestType';
2
- import { uuidv4 } from '../utilities';
2
+ import uuidv4 from '../utilities/uuidv4';
3
3
  class RequestPoolManager {
4
4
  constructor(id) {
5
5
  this.numRequests = {
@@ -1,40 +1,2 @@
1
- import type Point2 from './Point2';
2
- import type Point3 from './Point3';
3
- import type Mat3 from './Mat3';
4
- import type IImage from './IImage';
5
- import type CPUFallbackViewport from './CPUFallbackViewport';
6
- import type CPUFallbackTransform from './CPUFallbackTransform';
7
- import type CPUFallbackColormap from './CPUFallbackColormap';
8
- import type CPUFallbackRenderingTools from './CPUFallbackRenderingTools';
9
- import type { ImagePlaneModule } from './ImagePlaneModule';
10
- import type { ImagePixelModule } from './ImagePixelModule';
11
- import type RGB from './RGB';
12
- import type { IVoxelManager } from './IVoxelManager';
13
- interface CPUFallbackEnabledElement {
14
- scale?: number;
15
- pan?: Point2;
16
- zoom?: number;
17
- rotation?: number;
18
- image?: IImage;
19
- canvas?: HTMLCanvasElement;
20
- viewport?: CPUFallbackViewport;
21
- colormap?: CPUFallbackColormap;
22
- options?: {
23
- [key: string]: unknown;
24
- colormap?: CPUFallbackColormap;
25
- };
26
- renderingTools?: CPUFallbackRenderingTools;
27
- transform?: CPUFallbackTransform;
28
- invalid?: boolean;
29
- needsRedraw?: boolean;
30
- metadata?: {
31
- direction?: Mat3;
32
- dimensions?: Point3;
33
- spacing?: Point3;
34
- origin?: Point3;
35
- imagePlaneModule?: ImagePlaneModule;
36
- imagePixelModule?: ImagePixelModule;
37
- };
38
- voxelManager?: IVoxelManager<number> | IVoxelManager<RGB>;
39
- }
1
+ import type { CPUFallbackEnabledElement } from './IImage';
40
2
  export type { CPUFallbackEnabledElement as default };
@@ -1,11 +1,18 @@
1
1
  import type CPUFallbackLUT from './CPUFallbackLUT';
2
- import type CPUFallbackColormap from './CPUFallbackColormap';
3
- import type CPUFallbackEnabledElement from './CPUFallbackEnabledElement';
4
2
  import type { PixelDataTypedArray, PixelDataTypedArrayString } from './PixelDataTypedArray';
5
3
  import type { ImageQualityStatus } from '../enums';
6
4
  import type IImageCalibration from './IImageCalibration';
7
5
  import type RGB from './RGB';
8
6
  import type IImageFrame from './IImageFrame';
7
+ import type Point2 from './Point2';
8
+ import type Point3 from './Point3';
9
+ import type Mat3 from './Mat3';
10
+ import type CPUFallbackViewport from './CPUFallbackViewport';
11
+ import type CPUFallbackTransform from './CPUFallbackTransform';
12
+ import type CPUFallbackColormap from './CPUFallbackColormap';
13
+ import type CPUFallbackRenderingTools from './CPUFallbackRenderingTools';
14
+ import type { ImagePlaneModule } from './ImagePlaneModule';
15
+ import type { ImagePixelModule } from './ImagePixelModule';
9
16
  import type { IVoxelManager } from './IVoxelManager';
10
17
  interface IImage {
11
18
  imageId: string;
@@ -85,4 +92,32 @@ interface IImage {
85
92
  offset: number;
86
93
  };
87
94
  }
95
+ interface CPUFallbackEnabledElement {
96
+ scale?: number;
97
+ pan?: Point2;
98
+ zoom?: number;
99
+ rotation?: number;
100
+ image?: IImage;
101
+ canvas?: HTMLCanvasElement;
102
+ viewport?: CPUFallbackViewport;
103
+ colormap?: CPUFallbackColormap;
104
+ options?: {
105
+ [key: string]: unknown;
106
+ colormap?: CPUFallbackColormap;
107
+ };
108
+ renderingTools?: CPUFallbackRenderingTools;
109
+ transform?: CPUFallbackTransform;
110
+ invalid?: boolean;
111
+ needsRedraw?: boolean;
112
+ metadata?: {
113
+ direction?: Mat3;
114
+ dimensions?: Point3;
115
+ spacing?: Point3;
116
+ origin?: Point3;
117
+ imagePlaneModule?: ImagePlaneModule;
118
+ imagePixelModule?: ImagePixelModule;
119
+ };
120
+ voxelManager?: IVoxelManager<number> | IVoxelManager<RGB>;
121
+ }
88
122
  export type { IImage as default };
123
+ export type { CPUFallbackEnabledElement };
@@ -13,7 +13,7 @@ import type IRegisterImageLoader from './IRegisterImageLoader';
13
13
  import type IStreamingVolumeProperties from './IStreamingVolumeProperties';
14
14
  import type CustomEventType from './CustomEventType';
15
15
  import type { LocalVolumeOptions } from './../loaders/volumeLoader';
16
- import type { IViewport, PublicViewportInput, ViewReferenceSpecifier, DataSetOptions, ReferenceCompatibleOptions, ViewReference, ViewPresentation, ViewPresentationSelector } from './IViewport';
16
+ import type { IViewport, PublicViewportInput, ViewReferenceSpecifier, DataSetOptions, ReferenceCompatibleOptions, ViewReference, ViewPresentation, ViewPresentationSelector, ViewportInput } from './IViewport';
17
17
  import type { VolumeActor, Actor, ActorEntry, ImageActor, ICanvasActor } from './IActor';
18
18
  import type { IImageLoadObject, IVolumeLoadObject, IGeometryLoadObject } from './ILoadObject';
19
19
  import type Metadata from './Metadata';
@@ -92,4 +92,4 @@ import type IImageFrame from './IImageFrame';
92
92
  import type { DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata } from './MetadataModuleTypes';
93
93
  import type { IVoxelManager } from './IVoxelManager';
94
94
  import type { IRLEVoxelMap, RLERun } from './IRLEVoxelMap';
95
- export type { Cornerstone3DConfig, ICamera, IStackViewport, IVideoViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ImageActor, ICanvasActor, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, IStackInput, StackInputCallback, ViewportPreset, Metadata, OrientationVectors, AABB2, AABB3, Point2, Point3, PointsXYZ, Point4, Mat3, Plane, ViewportInputOptions, VideoViewportProperties, WSIViewportProperties, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, PublicSurfaceData, SurfaceData, ISurface, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, WSIViewportInput, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, };
95
+ export type { Cornerstone3DConfig, ICamera, IStackViewport, IVideoViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ImageActor, ICanvasActor, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, IStackInput, StackInputCallback, ViewportPreset, Metadata, OrientationVectors, AABB2, AABB3, Point2, Point3, PointsXYZ, Point4, Mat3, Plane, ViewportInputOptions, VideoViewportProperties, WSIViewportProperties, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, PublicSurfaceData, SurfaceData, ISurface, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, WSIViewportInput, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, };