@cornerstonejs/core 5.4.9 → 5.4.11
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/GenericViewport/Planar/PlanarRenderPathDecisionService.d.ts +1 -2
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.js +4 -8
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathResolver.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.js +15 -27
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportTypes.d.ts +3 -3
- package/dist/esm/RenderingEngine/helpers/renderBackendRegistry.d.ts +38 -0
- package/dist/esm/RenderingEngine/helpers/renderBackendRegistry.js +133 -0
- package/dist/esm/RenderingEngine/index.d.ts +1 -1
- package/dist/esm/enums/RenderBackends.d.ts +6 -0
- package/dist/esm/enums/RenderBackends.js +14 -0
- package/dist/esm/enums/index.d.ts +2 -2
- package/dist/esm/enums/index.js +2 -2
- package/dist/esm/index.d.ts +11 -7
- package/dist/esm/index.js +3 -2
- package/dist/esm/init.d.ts +5 -5
- package/dist/esm/init.js +20 -13
- package/dist/esm/types/Cornerstone3DConfig.d.ts +2 -2
- package/dist/esm/types/RenderBackendRegistry.d.ts +16 -0
- package/dist/esm/types/RenderBackendRegistry.js +0 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +6 -6
- package/dist/esm/enums/RenderBackend.d.ts +0 -7
- package/dist/esm/enums/RenderBackend.js +0 -7
package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { RenderBackend } from '../../../enums/index.js';
|
|
2
1
|
import type { RenderBackendValue } from '../../../enums/index.js';
|
|
3
2
|
import type { PlanarViewState, PlanarEffectiveRenderMode, PlanarOrientation, PlanarRegisteredDataSet } from './PlanarViewportTypes.js';
|
|
4
3
|
export interface SelectedPlanarRenderPath {
|
|
@@ -9,7 +8,7 @@ export interface SelectedPlanarRenderPath {
|
|
|
9
8
|
export interface PlanarRenderPathDecisionOptions {
|
|
10
9
|
orientation?: PlanarOrientation;
|
|
11
10
|
useSliceRendering?: boolean;
|
|
12
|
-
renderBackend?:
|
|
11
|
+
renderBackend?: RenderBackendValue;
|
|
13
12
|
}
|
|
14
13
|
export declare class PlanarRenderPathDecisionService {
|
|
15
14
|
select(dataSet: PlanarRegisteredDataSet, options?: PlanarRenderPathDecisionOptions): SelectedPlanarRenderPath;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { vec3 } from 'gl-matrix';
|
|
2
2
|
import cache from '../../../cache/cache.js';
|
|
3
|
-
import { OrientationAxis
|
|
3
|
+
import { OrientationAxis } from '../../../enums/index.js';
|
|
4
4
|
import { getEffectiveRenderBackend } from '../../../init.js';
|
|
5
5
|
import * as metaData from '../../../metaData.js';
|
|
6
|
-
import {
|
|
6
|
+
import { getRenderModeForBackend } from '../../helpers/renderBackendRegistry.js';
|
|
7
7
|
import { isValidVolume } from '../../../utilities/isValidVolume.js';
|
|
8
8
|
import { getOrientationFromScanAxisNormal } from '../../helpers/getCameraVectors.js';
|
|
9
9
|
export class PlanarRenderPathDecisionService {
|
|
@@ -55,14 +55,10 @@ export class PlanarRenderPathDecisionService {
|
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
57
|
selectImageRenderMode(options) {
|
|
58
|
-
return this.resolveBackend(options)
|
|
59
|
-
? ActorRenderMode.CPU_IMAGE
|
|
60
|
-
: ActorRenderMode.VTK_IMAGE;
|
|
58
|
+
return getRenderModeForBackend(this.resolveBackend(options), 'image');
|
|
61
59
|
}
|
|
62
60
|
selectVolumeRenderMode(options) {
|
|
63
|
-
return this.resolveBackend(options)
|
|
64
|
-
? ActorRenderMode.CPU_VOLUME
|
|
65
|
-
: ActorRenderMode.VTK_VOLUME_SLICE;
|
|
61
|
+
return getRenderModeForBackend(this.resolveBackend(options), 'volume');
|
|
66
62
|
}
|
|
67
63
|
resolveBackend(options) {
|
|
68
64
|
return getEffectiveRenderBackend(options.renderBackend);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createRegisteredPlanarRenderPaths } from '../../helpers/renderBackendRegistry.js';
|
|
1
2
|
import { DefaultRenderPathResolver } from '../DefaultRenderPathResolver.js';
|
|
2
3
|
import { CpuImageSlicePath } from './CpuImageSliceRenderPath.js';
|
|
3
4
|
import { CpuVolumeSlicePath } from './CpuVolumeSliceRenderPath.js';
|
|
@@ -9,6 +10,7 @@ export function createDefaultPlanarRenderPaths() {
|
|
|
9
10
|
new CpuVolumeSlicePath(),
|
|
10
11
|
new VtkImageMapperPath(),
|
|
11
12
|
new VtkVolumeSlicePath(),
|
|
13
|
+
...createRegisteredPlanarRenderPaths(),
|
|
12
14
|
];
|
|
13
15
|
}
|
|
14
16
|
export function createPlanarRenderPathResolver(paths = createDefaultPlanarRenderPaths()) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Events, OrientationAxis,
|
|
1
|
+
import { Events, OrientationAxis, ViewportStatus, ViewportType, VOILUTFunctionType, } from '../../../enums/index.js';
|
|
2
2
|
import { ActorRenderMode } from '../../../types/index.js';
|
|
3
|
+
import { getRenderBackendForRenderMode, getRenderSurfaceForRenderMode, isImageRenderMode, isVolumeRenderMode, } from '../../helpers/renderBackendRegistry.js';
|
|
3
4
|
import { isImageActor } from '../../../utilities/actorCheck.js';
|
|
4
5
|
import cache from '../../../cache/cache.js';
|
|
5
6
|
import { deepClone } from '../../../utilities/deepClone.js';
|
|
@@ -272,17 +273,18 @@ class PlanarViewport extends GenericViewport {
|
|
|
272
273
|
}
|
|
273
274
|
getCanvas() {
|
|
274
275
|
const rendering = this.getCurrentPlanarRendering();
|
|
275
|
-
if (rendering?.renderMode ===
|
|
276
|
-
rendering?.renderMode === ActorRenderMode.CPU_VOLUME) {
|
|
276
|
+
if (getRenderSurfaceForRenderMode(rendering?.renderMode) === 'cpu') {
|
|
277
277
|
return this.renderContext.cpu.canvas;
|
|
278
278
|
}
|
|
279
279
|
return this.renderContext.vtk.canvas;
|
|
280
280
|
}
|
|
281
281
|
async addImages(stackInputs) {
|
|
282
282
|
const rendering = this.getCurrentPlanarRendering();
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
283
|
+
const renderMode = rendering?.renderMode;
|
|
284
|
+
const supportsImageOverlays = isImageRenderMode(renderMode) ||
|
|
285
|
+
(isVolumeRenderMode(renderMode) &&
|
|
286
|
+
getRenderSurfaceForRenderMode(renderMode) !== 'cpu');
|
|
287
|
+
if (!supportsImageOverlays) {
|
|
286
288
|
return;
|
|
287
289
|
}
|
|
288
290
|
for (const stackInput of stackInputs) {
|
|
@@ -338,12 +340,10 @@ class PlanarViewport extends GenericViewport {
|
|
|
338
340
|
}
|
|
339
341
|
const renderMode = binding.rendering.renderMode;
|
|
340
342
|
if (renderMode === ActorRenderMode.VTK_VOLUME ||
|
|
341
|
-
renderMode
|
|
342
|
-
renderMode === ActorRenderMode.CPU_VOLUME) {
|
|
343
|
+
isVolumeRenderMode(renderMode)) {
|
|
343
344
|
return 'volume';
|
|
344
345
|
}
|
|
345
|
-
if (renderMode
|
|
346
|
-
renderMode === ActorRenderMode.CPU_IMAGE) {
|
|
346
|
+
if (isImageRenderMode(renderMode)) {
|
|
347
347
|
return 'stack';
|
|
348
348
|
}
|
|
349
349
|
return this.getVolumeId() ? 'volume' : 'stack';
|
|
@@ -624,8 +624,7 @@ class PlanarViewport extends GenericViewport {
|
|
|
624
624
|
const clampedImageIdIndex = Math.min(Math.max(0, imageIdIndex), this.getMaxImageIdIndex());
|
|
625
625
|
const resolvedImageId = imageIds[clampedImageIdIndex] || imageIds[imageIds.length - 1];
|
|
626
626
|
const rendering = this.getCurrentPlanarRendering();
|
|
627
|
-
if (rendering?.renderMode
|
|
628
|
-
rendering?.renderMode === ActorRenderMode.VTK_VOLUME_SLICE) {
|
|
627
|
+
if (isVolumeRenderMode(rendering?.renderMode)) {
|
|
629
628
|
const sliceWorldPoint = this.getVolumeSliceWorldPointForImageIdIndex(clampedImageIdIndex);
|
|
630
629
|
if (sliceWorldPoint) {
|
|
631
630
|
this.setViewState({
|
|
@@ -878,8 +877,7 @@ class PlanarViewport extends GenericViewport {
|
|
|
878
877
|
}
|
|
879
878
|
}
|
|
880
879
|
setRenderModeVisibility(renderMode, cpuCanvas, vtkCanvas) {
|
|
881
|
-
const useCPUCanvas = renderMode ===
|
|
882
|
-
renderMode === ActorRenderMode.CPU_VOLUME;
|
|
880
|
+
const useCPUCanvas = getRenderSurfaceForRenderMode(renderMode) === 'cpu';
|
|
883
881
|
const viewportElement = this.element.querySelector('.viewport-element');
|
|
884
882
|
cpuCanvas.style.display = useCPUCanvas ? '' : 'none';
|
|
885
883
|
cpuCanvas.style.pointerEvents = useCPUCanvas ? 'auto' : 'none';
|
|
@@ -1042,20 +1040,10 @@ class PlanarViewport extends GenericViewport {
|
|
|
1042
1040
|
if (role === 'source') {
|
|
1043
1041
|
return undefined;
|
|
1044
1042
|
}
|
|
1045
|
-
|
|
1046
|
-
case ActorRenderMode.CPU_IMAGE:
|
|
1047
|
-
case ActorRenderMode.CPU_VOLUME:
|
|
1048
|
-
return RenderBackend.CPU;
|
|
1049
|
-
case ActorRenderMode.VTK_IMAGE:
|
|
1050
|
-
case ActorRenderMode.VTK_VOLUME_SLICE:
|
|
1051
|
-
return RenderBackend.GPU;
|
|
1052
|
-
default:
|
|
1053
|
-
return undefined;
|
|
1054
|
-
}
|
|
1043
|
+
return getRenderBackendForRenderMode(this.getCurrentPlanarRendering()?.renderMode);
|
|
1055
1044
|
}
|
|
1056
1045
|
applyLoadedPlanarViewState(resolvedOrientation, planarData, selectedPath) {
|
|
1057
|
-
const isVolumePath = selectedPath.renderMode
|
|
1058
|
-
selectedPath.renderMode === ActorRenderMode.VTK_VOLUME_SLICE;
|
|
1046
|
+
const isVolumePath = isVolumeRenderMode(selectedPath.renderMode);
|
|
1059
1047
|
const orientation = normalizePlanarOrientation(resolvedOrientation, selectedPath.acquisitionOrientation);
|
|
1060
1048
|
const slice = isVolumePath
|
|
1061
1049
|
? this.createInitialVolumeSliceState(planarData, selectedPath.renderMode, orientation)
|
|
@@ -1075,7 +1063,7 @@ class PlanarViewport extends GenericViewport {
|
|
|
1075
1063
|
return;
|
|
1076
1064
|
}
|
|
1077
1065
|
const { height, width } = this.getCurrentCanvasDimensions();
|
|
1078
|
-
const createSliceBasis = renderMode ===
|
|
1066
|
+
const createSliceBasis = getRenderSurfaceForRenderMode(renderMode) === 'cpu'
|
|
1079
1067
|
? createPlanarCpuVolumeSliceBasis
|
|
1080
1068
|
: createPlanarVolumeSliceBasis;
|
|
1081
1069
|
const initialImageIdIndex = orientation === OrientationAxis.ACQUISITION
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
|
|
2
2
|
import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
3
|
-
import type { BlendModes, InterpolationType, OrientationAxis,
|
|
3
|
+
import type { BlendModes, InterpolationType, OrientationAxis, RenderBackendValue, VOILUTFunctionType } from '../../../enums/index.js';
|
|
4
4
|
import type { ActorEntry, ActorRenderMode, ColormapPublic, IImage, IImageVolume, OrientationVectors, Point2, Point3, VOIRange } from '../../../types/index.js';
|
|
5
5
|
import type { ViewportInput } from '../../../types/IViewport.js';
|
|
6
6
|
import type ViewportInputOptions from '../../../types/ViewportInputOptions.js';
|
|
@@ -11,7 +11,7 @@ import type { CameraScaleMode, ViewAnchor } from '../ViewportCameraTypes.js';
|
|
|
11
11
|
import type DisplayArea from '../../../types/displayArea.js';
|
|
12
12
|
import type { PlanarScaleInput } from './planarCameraScale.js';
|
|
13
13
|
export type PlanarRenderMode = ActorRenderMode.CPU_IMAGE | 'webgl2d' | ActorRenderMode.VTK_IMAGE | ActorRenderMode.VTK_VOLUME_SLICE;
|
|
14
|
-
export type PlanarEffectiveRenderMode = ActorRenderMode.CPU_IMAGE | 'webgl2d' | ActorRenderMode.VTK_IMAGE | ActorRenderMode.VTK_VOLUME_SLICE | ActorRenderMode.CPU_VOLUME;
|
|
14
|
+
export type PlanarEffectiveRenderMode = ActorRenderMode.CPU_IMAGE | 'webgl2d' | ActorRenderMode.VTK_IMAGE | ActorRenderMode.VTK_VOLUME_SLICE | ActorRenderMode.CPU_VOLUME | (string & {});
|
|
15
15
|
export type PlanarOrientation = OrientationAxis.ACQUISITION | OrientationAxis.AXIAL | OrientationAxis.CORONAL | OrientationAxis.SAGITTAL | OrientationVectors;
|
|
16
16
|
export interface PlanarRegisteredDataSet {
|
|
17
17
|
imageIds: string[];
|
|
@@ -24,7 +24,7 @@ export interface PlanarRegisteredDataSet {
|
|
|
24
24
|
}
|
|
25
25
|
export interface PlanarSetDataOptions {
|
|
26
26
|
orientation?: PlanarOrientation;
|
|
27
|
-
renderBackend?:
|
|
27
|
+
renderBackend?: RenderBackendValue;
|
|
28
28
|
role?: BindingRole;
|
|
29
29
|
}
|
|
30
30
|
export interface PlanarDataLoadOptions {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EffectiveRenderBackend, RenderBackend as RenderBackendWire, RenderBackendConstants } from '../../types/RenderBackendRegistry.js';
|
|
2
|
+
import type { RenderPathDefinition } from '../GenericViewport/ViewportArchitectureTypes.js';
|
|
3
|
+
export type RenderSurface = 'vtk' | 'cpu';
|
|
4
|
+
export type RenderBackendDataKind = 'image' | 'volume';
|
|
5
|
+
export interface RenderBackendRenderMode {
|
|
6
|
+
id: string;
|
|
7
|
+
createDefinition?: () => RenderPathDefinition;
|
|
8
|
+
}
|
|
9
|
+
export interface RenderBackendRenderModes {
|
|
10
|
+
image: RenderBackendRenderMode;
|
|
11
|
+
volume?: RenderBackendRenderMode;
|
|
12
|
+
}
|
|
13
|
+
export interface RenderBackendDefinition {
|
|
14
|
+
backend: string;
|
|
15
|
+
renderModes: RenderBackendRenderModes;
|
|
16
|
+
surface?: RenderSurface;
|
|
17
|
+
}
|
|
18
|
+
type RegisterRenderBackendNamedOptions<Name extends keyof RenderBackendConstants> = RenderBackendDefinition & {
|
|
19
|
+
name: Name;
|
|
20
|
+
backend: RenderBackendConstants[Name];
|
|
21
|
+
};
|
|
22
|
+
type RegisterRenderBackendUnnamedOptions = RenderBackendDefinition & {
|
|
23
|
+
backend: RenderBackendWire | string;
|
|
24
|
+
name?: never;
|
|
25
|
+
};
|
|
26
|
+
export type RegisterRenderBackendOptions = RegisterRenderBackendNamedOptions<keyof RenderBackendConstants> | RegisterRenderBackendUnnamedOptions;
|
|
27
|
+
export declare function registerRenderBackend<Name extends keyof RenderBackendConstants>(options: RegisterRenderBackendNamedOptions<Name>): void;
|
|
28
|
+
export declare function registerRenderBackend(options: RegisterRenderBackendUnnamedOptions): void;
|
|
29
|
+
export declare function isRegisteredRenderBackend(backend: string): boolean;
|
|
30
|
+
export declare function getRenderBackendDefinition(backend: string): Readonly<RenderBackendDefinition> | undefined;
|
|
31
|
+
export declare function getRenderModeForBackend(backend: string, kind: RenderBackendDataKind): string;
|
|
32
|
+
export declare function getRenderBackendForRenderMode(renderMode: string | undefined): EffectiveRenderBackend | undefined;
|
|
33
|
+
export declare function isVolumeRenderMode(renderMode: string | undefined): boolean;
|
|
34
|
+
export declare function isImageRenderMode(renderMode: string | undefined): boolean;
|
|
35
|
+
export declare function getRenderSurfaceForRenderMode(renderMode: string | undefined): RenderSurface;
|
|
36
|
+
export declare function createRegisteredPlanarRenderPaths(): RenderPathDefinition[];
|
|
37
|
+
export declare function __resetRenderBackendRegistry(): void;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import RenderBackends, { registerRenderBackendsConstant, } from '../../enums/RenderBackends.js';
|
|
2
|
+
import { ActorRenderMode } from '../../types/IActor.js';
|
|
3
|
+
const backendDefinitions = new Map();
|
|
4
|
+
const renderModeIndex = new Map();
|
|
5
|
+
const registeredConstantNames = [];
|
|
6
|
+
let hasRegisteredCoreRenderBackends = false;
|
|
7
|
+
function registerCoreRenderBackends() {
|
|
8
|
+
if (hasRegisteredCoreRenderBackends) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
hasRegisteredCoreRenderBackends = true;
|
|
12
|
+
registerRenderBackend({
|
|
13
|
+
backend: RenderBackends.GPU,
|
|
14
|
+
renderModes: {
|
|
15
|
+
image: { id: ActorRenderMode.VTK_IMAGE },
|
|
16
|
+
volume: { id: ActorRenderMode.VTK_VOLUME_SLICE },
|
|
17
|
+
},
|
|
18
|
+
surface: 'vtk',
|
|
19
|
+
});
|
|
20
|
+
registerRenderBackend({
|
|
21
|
+
backend: RenderBackends.CPU,
|
|
22
|
+
renderModes: {
|
|
23
|
+
image: { id: ActorRenderMode.CPU_IMAGE },
|
|
24
|
+
volume: { id: ActorRenderMode.CPU_VOLUME },
|
|
25
|
+
},
|
|
26
|
+
surface: 'cpu',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function registerRenderBackend({ backend, name, renderModes, surface = 'vtk', }) {
|
|
30
|
+
registerCoreRenderBackends();
|
|
31
|
+
if (backend === RenderBackends.Auto) {
|
|
32
|
+
throw new Error(`Render backend id "${RenderBackends.Auto}" is reserved for the automatic backend resolution`);
|
|
33
|
+
}
|
|
34
|
+
if (backendDefinitions.has(backend)) {
|
|
35
|
+
throw new Error(`Render backend "${backend}" is already registered`);
|
|
36
|
+
}
|
|
37
|
+
if (!renderModes?.image?.id) {
|
|
38
|
+
throw new Error(`Render backend "${backend}" must declare renderModes.image`);
|
|
39
|
+
}
|
|
40
|
+
if (renderModes.volume && renderModes.volume.id === renderModes.image.id) {
|
|
41
|
+
throw new Error(`Render backend "${backend}" must use distinct render modes for image and volume`);
|
|
42
|
+
}
|
|
43
|
+
const modeEntries = [
|
|
44
|
+
[renderModes.image.id, 'image'],
|
|
45
|
+
];
|
|
46
|
+
if (renderModes.volume) {
|
|
47
|
+
modeEntries.push([renderModes.volume.id, 'volume']);
|
|
48
|
+
}
|
|
49
|
+
for (const [renderMode] of modeEntries) {
|
|
50
|
+
const existing = renderModeIndex.get(renderMode);
|
|
51
|
+
if (existing && existing.backend !== backend) {
|
|
52
|
+
throw new Error(`Render mode "${renderMode}" is already provided by render backend "${existing.backend}"`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (name && Object.prototype.hasOwnProperty.call(RenderBackends, name)) {
|
|
56
|
+
throw new Error(`Render backend constant "${String(name)}" already exists`);
|
|
57
|
+
}
|
|
58
|
+
backendDefinitions.set(backend, {
|
|
59
|
+
backend,
|
|
60
|
+
renderModes,
|
|
61
|
+
surface,
|
|
62
|
+
});
|
|
63
|
+
for (const [renderMode, kind] of modeEntries) {
|
|
64
|
+
renderModeIndex.set(renderMode, {
|
|
65
|
+
backend: backend,
|
|
66
|
+
kind,
|
|
67
|
+
surface,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (name) {
|
|
71
|
+
registerRenderBackendsConstant(name, backend);
|
|
72
|
+
registeredConstantNames.push(name);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function isRegisteredRenderBackend(backend) {
|
|
76
|
+
registerCoreRenderBackends();
|
|
77
|
+
return backendDefinitions.has(backend);
|
|
78
|
+
}
|
|
79
|
+
export function getRenderBackendDefinition(backend) {
|
|
80
|
+
registerCoreRenderBackends();
|
|
81
|
+
return backendDefinitions.get(backend);
|
|
82
|
+
}
|
|
83
|
+
export function getRenderModeForBackend(backend, kind) {
|
|
84
|
+
const definition = getRenderBackendDefinition(backend);
|
|
85
|
+
if (!definition) {
|
|
86
|
+
throw new Error(`Unknown render backend "${backend}". Register it with registerRenderBackend() first.`);
|
|
87
|
+
}
|
|
88
|
+
const renderMode = definition.renderModes[kind];
|
|
89
|
+
if (!renderMode) {
|
|
90
|
+
throw new Error(`Render backend "${backend}" does not support ${kind}-backed rendering`);
|
|
91
|
+
}
|
|
92
|
+
return renderMode.id;
|
|
93
|
+
}
|
|
94
|
+
export function getRenderBackendForRenderMode(renderMode) {
|
|
95
|
+
registerCoreRenderBackends();
|
|
96
|
+
return renderMode ? renderModeIndex.get(renderMode)?.backend : undefined;
|
|
97
|
+
}
|
|
98
|
+
export function isVolumeRenderMode(renderMode) {
|
|
99
|
+
registerCoreRenderBackends();
|
|
100
|
+
return renderMode
|
|
101
|
+
? renderModeIndex.get(renderMode)?.kind === 'volume'
|
|
102
|
+
: false;
|
|
103
|
+
}
|
|
104
|
+
export function isImageRenderMode(renderMode) {
|
|
105
|
+
registerCoreRenderBackends();
|
|
106
|
+
return renderMode ? renderModeIndex.get(renderMode)?.kind === 'image' : false;
|
|
107
|
+
}
|
|
108
|
+
export function getRenderSurfaceForRenderMode(renderMode) {
|
|
109
|
+
registerCoreRenderBackends();
|
|
110
|
+
return (renderMode && renderModeIndex.get(renderMode)?.surface) || 'vtk';
|
|
111
|
+
}
|
|
112
|
+
export function createRegisteredPlanarRenderPaths() {
|
|
113
|
+
registerCoreRenderBackends();
|
|
114
|
+
const paths = [];
|
|
115
|
+
for (const definition of backendDefinitions.values()) {
|
|
116
|
+
const { image, volume } = definition.renderModes;
|
|
117
|
+
for (const mode of [image, volume]) {
|
|
118
|
+
if (mode?.createDefinition) {
|
|
119
|
+
paths.push(mode.createDefinition());
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return paths;
|
|
124
|
+
}
|
|
125
|
+
export function __resetRenderBackendRegistry() {
|
|
126
|
+
backendDefinitions.clear();
|
|
127
|
+
renderModeIndex.clear();
|
|
128
|
+
hasRegisteredCoreRenderBackends = false;
|
|
129
|
+
for (const name of registeredConstantNames) {
|
|
130
|
+
delete RenderBackends[name];
|
|
131
|
+
}
|
|
132
|
+
registeredConstantNames.length = 0;
|
|
133
|
+
}
|
|
@@ -46,7 +46,7 @@ declare const renderingEngineExportsV2: {
|
|
|
46
46
|
createPlanarRenderPathResolver: typeof createPlanarRenderPathResolver;
|
|
47
47
|
DefaultPlanarDataProvider: typeof DefaultPlanarDataProvider;
|
|
48
48
|
planarProjection: {
|
|
49
|
-
adapter: import("./GenericViewport/index.js").ViewportProjectionAdapter<import("./GenericViewport/index.js").PlanarViewState, import("
|
|
49
|
+
adapter: import("./GenericViewport/index.js").ViewportProjectionAdapter<import("./GenericViewport/index.js").PlanarViewState, import("./index.js").PlanarViewPresentation, import("./GenericViewport/index.js").PlanarProjectionSnapshot>;
|
|
50
50
|
getSnapshot: typeof import("./GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionSnapshot;
|
|
51
51
|
getZoom: typeof import("./GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionZoom;
|
|
52
52
|
getScale: typeof import("./GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionScale;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RenderBackendConstants, RenderBackend as RenderBackendWire } from '../types/RenderBackendRegistry.js';
|
|
2
|
+
export type RenderBackendsMap = RenderBackendConstants;
|
|
3
|
+
export type RenderBackendValue = RenderBackendWire;
|
|
4
|
+
declare const RenderBackends: RenderBackendsMap;
|
|
5
|
+
export declare function registerRenderBackendsConstant<Name extends keyof RenderBackendConstants>(name: Name, backend: RenderBackendConstants[Name]): void;
|
|
6
|
+
export default RenderBackends;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const builtInRenderBackends = {
|
|
2
|
+
Auto: 'auto',
|
|
3
|
+
GPU: 'gpu',
|
|
4
|
+
CPU: 'cpu',
|
|
5
|
+
};
|
|
6
|
+
const RenderBackends = builtInRenderBackends;
|
|
7
|
+
export function registerRenderBackendsConstant(name, backend) {
|
|
8
|
+
if (Object.prototype.hasOwnProperty.call(RenderBackends, name)) {
|
|
9
|
+
throw new Error(`Render backend constant "${String(name)}" already exists`);
|
|
10
|
+
}
|
|
11
|
+
RenderBackends[name] =
|
|
12
|
+
backend;
|
|
13
|
+
}
|
|
14
|
+
export default RenderBackends;
|
|
@@ -18,5 +18,5 @@ import MetadataModules from './MetadataModules.js';
|
|
|
18
18
|
import { GenerateImageType } from './GenerateImageType.js';
|
|
19
19
|
import VoxelManagerEnum from './VoxelManagerEnum.js';
|
|
20
20
|
import RenderingEngineModeEnum from './RenderingEngineModeEnum.js';
|
|
21
|
-
import
|
|
22
|
-
export { Events, BlendModes, CalibrationTypes, InterpolationType, RequestType, ViewportType, ViewportTypes, type ViewportTypesMap, OrientationAxis, GeometryType, ContourType, MeshType, VOILUTFunctionType, DynamicOperatorType, ViewportStatus, VideoEnums, MetadataModules, ImageQualityStatus, VoxelManagerEnum, GenerateImageType, RenderingEngineModeEnum,
|
|
21
|
+
import RenderBackends, { type RenderBackendValue, type RenderBackendsMap } from './RenderBackends.js';
|
|
22
|
+
export { Events, BlendModes, CalibrationTypes, InterpolationType, RequestType, ViewportType, ViewportTypes, type ViewportTypesMap, OrientationAxis, GeometryType, ContourType, MeshType, VOILUTFunctionType, DynamicOperatorType, ViewportStatus, VideoEnums, MetadataModules, ImageQualityStatus, VoxelManagerEnum, GenerateImageType, RenderingEngineModeEnum, RenderBackends, type RenderBackendValue, type RenderBackendsMap, };
|
package/dist/esm/enums/index.js
CHANGED
|
@@ -18,5 +18,5 @@ import MetadataModules from './MetadataModules.js';
|
|
|
18
18
|
import { GenerateImageType } from './GenerateImageType.js';
|
|
19
19
|
import VoxelManagerEnum from './VoxelManagerEnum.js';
|
|
20
20
|
import RenderingEngineModeEnum from './RenderingEngineModeEnum.js';
|
|
21
|
-
import
|
|
22
|
-
export { Events, BlendModes, CalibrationTypes, InterpolationType, RequestType, ViewportType, ViewportTypes, OrientationAxis, GeometryType, ContourType, MeshType, VOILUTFunctionType, DynamicOperatorType, ViewportStatus, VideoEnums, MetadataModules, ImageQualityStatus, VoxelManagerEnum, GenerateImageType, RenderingEngineModeEnum,
|
|
21
|
+
import RenderBackends, {} from './RenderBackends.js';
|
|
22
|
+
export { Events, BlendModes, CalibrationTypes, InterpolationType, RequestType, ViewportType, ViewportTypes, OrientationAxis, GeometryType, ContourType, MeshType, VOILUTFunctionType, DynamicOperatorType, ViewportStatus, VideoEnums, MetadataModules, ImageQualityStatus, VoxelManagerEnum, GenerateImageType, RenderingEngineModeEnum, RenderBackends, };
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Enums from './enums/index.js';
|
|
2
2
|
import * as CONSTANTS from './constants/index.js';
|
|
3
|
-
import { Events } from './enums/index.js';
|
|
3
|
+
import { Events, RenderBackends } from './enums/index.js';
|
|
4
4
|
import RenderingEngine, { BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine } from './RenderingEngine/index.js';
|
|
5
5
|
import createVolumeActor from './RenderingEngine/helpers/createVolumeActor.js';
|
|
6
6
|
import createVolumeMapper, { convertMapperToNotSharedMapper } from './RenderingEngine/helpers/createVolumeMapper.js';
|
|
@@ -54,8 +54,12 @@ import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerst
|
|
|
54
54
|
import { cornerstoneMeshLoader } from './loaders/cornerstoneMeshLoader.js';
|
|
55
55
|
import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, getProjectionScaleMatrix } from './RenderingEngine/helpers/index.js';
|
|
56
56
|
import { registerViewportType, isRegisteredViewportType } from './RenderingEngine/helpers/viewportTypeToViewportClass.js';
|
|
57
|
+
import { registerRenderBackend, isRegisteredRenderBackend } from './RenderingEngine/helpers/renderBackendRegistry.js';
|
|
57
58
|
export type { ViewportType, ViewportTypeConstants, ViewportTypeRegistry, } from './types/ViewportTypeRegistry.js';
|
|
58
59
|
export type { ViewportTypesMap } from './enums/ViewportTypes.js';
|
|
60
|
+
export type { EffectiveRenderBackend, RenderBackendConstants, RenderBackendRegistry, } from './types/RenderBackendRegistry.js';
|
|
61
|
+
export type { RenderBackendsMap, RenderBackendValue, } from './enums/RenderBackends.js';
|
|
62
|
+
export type { RegisterRenderBackendOptions, RenderBackendDefinition, RenderBackendRenderMode, RenderBackendRenderModes, RenderSurface, } from './RenderingEngine/helpers/renderBackendRegistry.js';
|
|
59
63
|
export * from './loaders/decimatedVolumeLoader.js';
|
|
60
64
|
declare const renderingEngineExportsV2: {
|
|
61
65
|
GenericViewport: typeof GenericViewport;
|
|
@@ -66,7 +70,7 @@ declare const renderingEngineExportsV2: {
|
|
|
66
70
|
createECGRenderPathResolver: typeof createECGRenderPathResolver;
|
|
67
71
|
DefaultECGDataProvider: typeof DefaultECGDataProvider;
|
|
68
72
|
ecgProjection: {
|
|
69
|
-
adapter: import("./index.js").ViewportProjectionAdapter<import("./index.js").ECGViewState, Types.ViewPresentation, import("./index.js").ECGProjectionSnapshot>;
|
|
73
|
+
adapter: import("./RenderingEngine/index.js").ViewportProjectionAdapter<import("./RenderingEngine/index.js").ECGViewState, Types.ViewPresentation, import("./RenderingEngine/index.js").ECGProjectionSnapshot>;
|
|
70
74
|
getSnapshot: typeof import("./RenderingEngine/GenericViewport/ECG/ecgProjectionSnapshot.js").getECGProjectionSnapshot;
|
|
71
75
|
};
|
|
72
76
|
VideoGenericViewport: typeof VideoGenericViewport;
|
|
@@ -74,7 +78,7 @@ declare const renderingEngineExportsV2: {
|
|
|
74
78
|
createVideoRenderPathResolver: typeof createVideoRenderPathResolver;
|
|
75
79
|
DefaultVideoDataProvider: typeof DefaultVideoDataProvider;
|
|
76
80
|
videoProjection: {
|
|
77
|
-
adapter: import("./index.js").ViewportProjectionAdapter<import("./index.js").VideoViewState, Types.ViewPresentation, import("./index.js").VideoProjectionSnapshot>;
|
|
81
|
+
adapter: import("./RenderingEngine/index.js").ViewportProjectionAdapter<import("./RenderingEngine/index.js").VideoViewState, Types.ViewPresentation, import("./RenderingEngine/index.js").VideoProjectionSnapshot>;
|
|
78
82
|
getSnapshot: typeof import("./RenderingEngine/GenericViewport/Video/videoProjectionSnapshot.js").getVideoProjectionSnapshot;
|
|
79
83
|
};
|
|
80
84
|
PlanarViewport: typeof PlanarViewport;
|
|
@@ -82,7 +86,7 @@ declare const renderingEngineExportsV2: {
|
|
|
82
86
|
createPlanarRenderPathResolver: typeof createPlanarRenderPathResolver;
|
|
83
87
|
DefaultPlanarDataProvider: typeof DefaultPlanarDataProvider;
|
|
84
88
|
planarProjection: {
|
|
85
|
-
adapter: import("./index.js").ViewportProjectionAdapter<import("./index.js").PlanarViewState, import("./index.js").PlanarViewPresentation, import("./index.js").PlanarProjectionSnapshot>;
|
|
89
|
+
adapter: import("./RenderingEngine/index.js").ViewportProjectionAdapter<import("./RenderingEngine/index.js").PlanarViewState, import("./RenderingEngine/index.js").PlanarViewPresentation, import("./RenderingEngine/index.js").PlanarProjectionSnapshot>;
|
|
86
90
|
getSnapshot: typeof import("./RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionSnapshot;
|
|
87
91
|
getZoom: typeof import("./RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionZoom;
|
|
88
92
|
getScale: typeof import("./RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.js").getPlanarProjectionScale;
|
|
@@ -98,7 +102,7 @@ declare const renderingEngineExportsV2: {
|
|
|
98
102
|
createVolume3DRenderPathResolver: typeof createVolume3DRenderPathResolver;
|
|
99
103
|
DefaultVolume3DDataProvider: typeof DefaultVolume3DDataProvider;
|
|
100
104
|
volume3DProjection: {
|
|
101
|
-
adapter: import("./index.js").ViewportProjectionAdapter<import("./index.js").Volume3DCamera, import("./index.js").Volume3DProjectionPresentation, import("./index.js").Volume3DProjectionSnapshot>;
|
|
105
|
+
adapter: import("./RenderingEngine/index.js").ViewportProjectionAdapter<import("./RenderingEngine/index.js").Volume3DCamera, import("./RenderingEngine/index.js").Volume3DProjectionPresentation, import("./RenderingEngine/index.js").Volume3DProjectionSnapshot>;
|
|
102
106
|
getSnapshot: typeof import("./RenderingEngine/GenericViewport/Volume3D/volume3DProjectionSnapshot.js").getVolume3DProjectionSnapshot;
|
|
103
107
|
};
|
|
104
108
|
WSIGenericViewport: typeof WSIGenericViewport;
|
|
@@ -106,10 +110,10 @@ declare const renderingEngineExportsV2: {
|
|
|
106
110
|
createWSIRenderPathResolver: typeof createWSIRenderPathResolver;
|
|
107
111
|
DefaultWSIDataProvider: typeof DefaultWSIDataProvider;
|
|
108
112
|
wsiProjection: {
|
|
109
|
-
adapter: import("./index.js").ViewportProjectionAdapter<import("./index.js").WSIViewState, Types.ViewPresentation, import("./index.js").WSIProjectionSnapshot>;
|
|
113
|
+
adapter: import("./RenderingEngine/index.js").ViewportProjectionAdapter<import("./RenderingEngine/index.js").WSIViewState, Types.ViewPresentation, import("./RenderingEngine/index.js").WSIProjectionSnapshot>;
|
|
110
114
|
getSnapshot: typeof import("./RenderingEngine/GenericViewport/WSI/wsiProjectionSnapshot.js").getWSIProjectionSnapshot;
|
|
111
115
|
};
|
|
112
116
|
};
|
|
113
117
|
declare const LegacyVolumeViewport3D: typeof VolumeViewport3D;
|
|
114
118
|
export type { Types, IRetrieveConfiguration, RetrieveOptions, RetrieveStage, ImageLoadListener, IImagesLoader, };
|
|
115
|
-
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, LegacyVolumeViewport3D, VolumeViewport3D, GenericVolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, ECGViewport, ECGGenericViewport, GenericViewport, ViewportProjectionService, viewportProjection, viewportHasCanvasWorldTransform, viewportHasFrameOfReferenceUID, viewportHasPan, viewportHasZoom, RenderingEngine, BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, createVolumeMapper, cache, eventTarget, triggerEvent, convertColorArrayToRgbString, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, DefaultRenderPathResolver, defaultRenderPathResolver, createDefaultECGRenderPaths, createECGRenderPathResolver, DefaultECGDataProvider, ecgProjection, VideoGenericViewport, createDefaultVideoRenderPaths, createVideoRenderPathResolver, DefaultVideoDataProvider, videoProjection, PlanarViewport, createDefaultPlanarRenderPaths, createPlanarRenderPathResolver, DefaultPlanarDataProvider, planarProjection, createDefaultVolume3DRenderPaths, createVolume3DRenderPathResolver, DefaultVolume3DDataProvider, volume3DProjection, WSIGenericViewport, createDefaultWSIRenderPaths, createWSIRenderPathResolver, DefaultWSIDataProvider, wsiProjection, renderingEngineExportsV2, getProjectionScaleMatrix, registerViewportType, isRegisteredViewportType, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, getRenderBackend, setRenderBackend, getEffectiveRenderBackend, getRenderingCapabilities, detectRenderingCapabilities, getUseGenericViewport, geometryLoader, cornerstoneMeshLoader, ProgressiveRetrieveImages, decimatedVolumeLoader, ActorRenderMode, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, version, };
|
|
119
|
+
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, LegacyVolumeViewport3D, VolumeViewport3D, GenericVolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, ECGViewport, ECGGenericViewport, GenericViewport, ViewportProjectionService, viewportProjection, viewportHasCanvasWorldTransform, viewportHasFrameOfReferenceUID, viewportHasPan, viewportHasZoom, RenderingEngine, BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, createVolumeMapper, cache, eventTarget, triggerEvent, convertColorArrayToRgbString, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, DefaultRenderPathResolver, defaultRenderPathResolver, createDefaultECGRenderPaths, createECGRenderPathResolver, DefaultECGDataProvider, ecgProjection, VideoGenericViewport, createDefaultVideoRenderPaths, createVideoRenderPathResolver, DefaultVideoDataProvider, videoProjection, PlanarViewport, createDefaultPlanarRenderPaths, createPlanarRenderPathResolver, DefaultPlanarDataProvider, planarProjection, createDefaultVolume3DRenderPaths, createVolume3DRenderPathResolver, DefaultVolume3DDataProvider, volume3DProjection, WSIGenericViewport, createDefaultWSIRenderPaths, createWSIRenderPathResolver, DefaultWSIDataProvider, wsiProjection, renderingEngineExportsV2, getProjectionScaleMatrix, registerViewportType, isRegisteredViewportType, registerRenderBackend, isRegisteredRenderBackend, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, RenderBackends, getRenderBackend, setRenderBackend, getEffectiveRenderBackend, getRenderingCapabilities, detectRenderingCapabilities, getUseGenericViewport, geometryLoader, cornerstoneMeshLoader, ProgressiveRetrieveImages, decimatedVolumeLoader, ActorRenderMode, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, version, };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Enums from './enums/index.js';
|
|
2
2
|
import * as CONSTANTS from './constants/index.js';
|
|
3
|
-
import { Events } from './enums/index.js';
|
|
3
|
+
import { Events, RenderBackends } from './enums/index.js';
|
|
4
4
|
import RenderingEngine, { BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine, } from './RenderingEngine/index.js';
|
|
5
5
|
import createVolumeActor from './RenderingEngine/helpers/createVolumeActor.js';
|
|
6
6
|
import createVolumeMapper, { convertMapperToNotSharedMapper, } from './RenderingEngine/helpers/createVolumeMapper.js';
|
|
@@ -46,6 +46,7 @@ import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerst
|
|
|
46
46
|
import { cornerstoneMeshLoader } from './loaders/cornerstoneMeshLoader.js';
|
|
47
47
|
import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, getProjectionScaleMatrix, } from './RenderingEngine/helpers/index.js';
|
|
48
48
|
import { registerViewportType, isRegisteredViewportType, } from './RenderingEngine/helpers/viewportTypeToViewportClass.js';
|
|
49
|
+
import { registerRenderBackend, isRegisteredRenderBackend, } from './RenderingEngine/helpers/renderBackendRegistry.js';
|
|
49
50
|
export * from './loaders/decimatedVolumeLoader.js';
|
|
50
51
|
const renderingEngineExportsV2 = {
|
|
51
52
|
GenericViewport,
|
|
@@ -78,4 +79,4 @@ const renderingEngineExportsV2 = {
|
|
|
78
79
|
wsiProjection,
|
|
79
80
|
};
|
|
80
81
|
const LegacyVolumeViewport3D = VolumeViewport3D;
|
|
81
|
-
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, LegacyVolumeViewport3D, VolumeViewport3D, GenericVolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, ECGViewport, ECGGenericViewport, GenericViewport, ViewportProjectionService, viewportProjection, viewportHasCanvasWorldTransform, viewportHasFrameOfReferenceUID, viewportHasPan, viewportHasZoom, RenderingEngine, BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, createVolumeMapper, cache, eventTarget, triggerEvent, convertColorArrayToRgbString, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, DefaultRenderPathResolver, defaultRenderPathResolver, createDefaultECGRenderPaths, createECGRenderPathResolver, DefaultECGDataProvider, ecgProjection, VideoGenericViewport, createDefaultVideoRenderPaths, createVideoRenderPathResolver, DefaultVideoDataProvider, videoProjection, PlanarViewport, createDefaultPlanarRenderPaths, createPlanarRenderPathResolver, DefaultPlanarDataProvider, planarProjection, createDefaultVolume3DRenderPaths, createVolume3DRenderPathResolver, DefaultVolume3DDataProvider, volume3DProjection, WSIGenericViewport, createDefaultWSIRenderPaths, createWSIRenderPathResolver, DefaultWSIDataProvider, wsiProjection, renderingEngineExportsV2, getProjectionScaleMatrix, registerViewportType, isRegisteredViewportType, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, getRenderBackend, setRenderBackend, getEffectiveRenderBackend, getRenderingCapabilities, detectRenderingCapabilities, getUseGenericViewport, geometryLoader, cornerstoneMeshLoader, ProgressiveRetrieveImages, decimatedVolumeLoader, ActorRenderMode, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, version, };
|
|
82
|
+
export { init, isCornerstoneInitialized, peerImport, resetInitialization, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, LegacyVolumeViewport3D, VolumeViewport3D, GenericVolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, ECGViewport, ECGGenericViewport, GenericViewport, ViewportProjectionService, viewportProjection, viewportHasCanvasWorldTransform, viewportHasFrameOfReferenceUID, viewportHasPan, viewportHasZoom, RenderingEngine, BaseRenderingEngine, TiledRenderingEngine, ContextPoolRenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, createVolumeMapper, cache, eventTarget, triggerEvent, convertColorArrayToRgbString, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, DefaultRenderPathResolver, defaultRenderPathResolver, createDefaultECGRenderPaths, createECGRenderPathResolver, DefaultECGDataProvider, ecgProjection, VideoGenericViewport, createDefaultVideoRenderPaths, createVideoRenderPathResolver, DefaultVideoDataProvider, videoProjection, PlanarViewport, createDefaultPlanarRenderPaths, createPlanarRenderPathResolver, DefaultPlanarDataProvider, planarProjection, createDefaultVolume3DRenderPaths, createVolume3DRenderPathResolver, DefaultVolume3DDataProvider, volume3DProjection, WSIGenericViewport, createDefaultWSIRenderPaths, createWSIRenderPathResolver, DefaultWSIDataProvider, wsiProjection, renderingEngineExportsV2, getProjectionScaleMatrix, registerViewportType, isRegisteredViewportType, registerRenderBackend, isRegisteredRenderBackend, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, RenderBackends, getRenderBackend, setRenderBackend, getEffectiveRenderBackend, getRenderingCapabilities, detectRenderingCapabilities, getUseGenericViewport, geometryLoader, cornerstoneMeshLoader, ProgressiveRetrieveImages, decimatedVolumeLoader, ActorRenderMode, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, StreamingDynamicImageVolume, StreamingImageVolume, convertMapperToNotSharedMapper, version, };
|
package/dist/esm/init.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Cornerstone3DConfig } from './types/index.js';
|
|
2
2
|
import CentralizedWebWorkerManager from './webWorkerManager/webWorkerManager.js';
|
|
3
|
-
import { RenderBackend } from './enums/index.js';
|
|
4
3
|
import type { RenderBackendValue } from './enums/index.js';
|
|
4
|
+
import type { EffectiveRenderBackend } from './types/RenderBackendRegistry.js';
|
|
5
5
|
declare function init(configuration?: Cornerstone3DConfig): boolean;
|
|
6
6
|
declare function getCanUseNorm16Texture(): boolean;
|
|
7
|
-
declare function getRenderBackend():
|
|
8
|
-
declare function resolveAutoRenderBackend():
|
|
9
|
-
declare function getEffectiveRenderBackend(override?:
|
|
10
|
-
declare function setRenderBackend(backend:
|
|
7
|
+
declare function getRenderBackend(): RenderBackendValue;
|
|
8
|
+
declare function resolveAutoRenderBackend(): EffectiveRenderBackend;
|
|
9
|
+
declare function getEffectiveRenderBackend(override?: RenderBackendValue): EffectiveRenderBackend;
|
|
10
|
+
declare function setRenderBackend(backend: RenderBackendValue, reason?: string): void;
|
|
11
11
|
declare function setUseCPURendering(status: boolean, updateViewports?: boolean): void;
|
|
12
12
|
declare function setPreferSizeOverAccuracy(status: boolean): void;
|
|
13
13
|
declare function canRenderFloatTextures(): boolean;
|
package/dist/esm/init.js
CHANGED
|
@@ -5,7 +5,8 @@ import CentralizedWebWorkerManager from './webWorkerManager/webWorkerManager.js'
|
|
|
5
5
|
import { getRenderingCapabilities } from './utilities/renderingCapabilities.js';
|
|
6
6
|
import triggerEvent from './utilities/triggerEvent.js';
|
|
7
7
|
import eventTarget from './eventTarget.js';
|
|
8
|
-
import { Events,
|
|
8
|
+
import { Events, RenderBackends, RenderingEngineModeEnum } from './enums/index.js';
|
|
9
|
+
import { isRegisteredRenderBackend } from './RenderingEngine/helpers/renderBackendRegistry.js';
|
|
9
10
|
const defaultConfig = {
|
|
10
11
|
isMobile: false,
|
|
11
12
|
rendering: {
|
|
@@ -16,7 +17,7 @@ const defaultConfig = {
|
|
|
16
17
|
renderingEngineMode: RenderingEngineModeEnum.ContextPool,
|
|
17
18
|
webGlContextCount: 7,
|
|
18
19
|
planar: {
|
|
19
|
-
renderBackend:
|
|
20
|
+
renderBackend: RenderBackends.Auto,
|
|
20
21
|
cpuVolume: {
|
|
21
22
|
useViewportSamplingForLinear: true,
|
|
22
23
|
volumeModifiedThrottleMs: 5000,
|
|
@@ -87,26 +88,32 @@ function getCanUseNorm16Texture() {
|
|
|
87
88
|
return _hasNorm16TextureSupport();
|
|
88
89
|
}
|
|
89
90
|
function getRenderBackend() {
|
|
90
|
-
return
|
|
91
|
-
RenderBackend.Auto);
|
|
91
|
+
return config.rendering.planar?.renderBackend ?? RenderBackends.Auto;
|
|
92
92
|
}
|
|
93
93
|
function resolveAutoRenderBackend() {
|
|
94
94
|
return config.rendering.useCPURendering
|
|
95
|
-
?
|
|
96
|
-
:
|
|
95
|
+
? RenderBackends.CPU
|
|
96
|
+
: RenderBackends.GPU;
|
|
97
97
|
}
|
|
98
|
+
const warnedUnregisteredBackends = new Set();
|
|
98
99
|
function getEffectiveRenderBackend(override) {
|
|
99
|
-
const backend =
|
|
100
|
-
if (backend
|
|
101
|
-
|
|
100
|
+
const backend = override ?? getRenderBackend();
|
|
101
|
+
if (backend !== RenderBackends.Auto) {
|
|
102
|
+
if (isRegisteredRenderBackend(backend)) {
|
|
103
|
+
return backend;
|
|
104
|
+
}
|
|
105
|
+
if (!warnedUnregisteredBackends.has(backend)) {
|
|
106
|
+
warnedUnregisteredBackends.add(backend);
|
|
107
|
+
console.warn(`[getEffectiveRenderBackend] Unregistered render backend "${backend}"; ` +
|
|
108
|
+
`falling back to 'auto'. Register custom backends with registerRenderBackend().`);
|
|
109
|
+
}
|
|
102
110
|
}
|
|
103
111
|
return resolveAutoRenderBackend();
|
|
104
112
|
}
|
|
105
113
|
function setRenderBackend(backend, reason) {
|
|
106
|
-
if (backend !==
|
|
107
|
-
backend
|
|
108
|
-
|
|
109
|
-
throw new Error(`[setRenderBackend] Invalid render backend: ${String(backend)}`);
|
|
114
|
+
if (backend !== RenderBackends.Auto && !isRegisteredRenderBackend(backend)) {
|
|
115
|
+
throw new Error(`[setRenderBackend] Invalid render backend: ${String(backend)}. ` +
|
|
116
|
+
`Register custom backends with registerRenderBackend() before selecting them.`);
|
|
110
117
|
}
|
|
111
118
|
const previous = getRenderBackend();
|
|
112
119
|
if (previous === backend) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RenderingEngineModeType } from '../types/index.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { RenderBackendValue } from '../enums/index.js';
|
|
3
3
|
interface Cornerstone3DConfig {
|
|
4
4
|
isMobile?: boolean;
|
|
5
5
|
rendering?: {
|
|
@@ -10,7 +10,7 @@ interface Cornerstone3DConfig {
|
|
|
10
10
|
renderingEngineMode?: RenderingEngineModeType;
|
|
11
11
|
webGlContextCount?: number;
|
|
12
12
|
planar?: {
|
|
13
|
-
renderBackend?:
|
|
13
|
+
renderBackend?: RenderBackendValue;
|
|
14
14
|
cpuVolume?: {
|
|
15
15
|
useViewportSamplingForLinear?: boolean;
|
|
16
16
|
volumeModifiedThrottleMs?: number;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface CoreRenderBackendRegistry {
|
|
2
|
+
auto: 'auto';
|
|
3
|
+
gpu: 'gpu';
|
|
4
|
+
cpu: 'cpu';
|
|
5
|
+
}
|
|
6
|
+
export interface CoreRenderBackendConstants {
|
|
7
|
+
readonly Auto: 'auto';
|
|
8
|
+
readonly GPU: 'gpu';
|
|
9
|
+
readonly CPU: 'cpu';
|
|
10
|
+
}
|
|
11
|
+
export interface RenderBackendRegistry extends CoreRenderBackendRegistry {
|
|
12
|
+
}
|
|
13
|
+
export interface RenderBackendConstants extends CoreRenderBackendConstants {
|
|
14
|
+
}
|
|
15
|
+
export type RenderBackend = RenderBackendRegistry[keyof RenderBackendRegistry];
|
|
16
|
+
export type EffectiveRenderBackend = Exclude<RenderBackend, 'auto'>;
|
|
File without changes
|
|
@@ -113,7 +113,8 @@ import type { VtkOffscreenMultiRenderWindow } from './VtkOffscreenMultiRenderWin
|
|
|
113
113
|
import type { ViewportDataReference } from '../RenderingEngine/GenericViewport/index.js';
|
|
114
114
|
import type { ResetCameraOptions } from './ICamera.js';
|
|
115
115
|
import type { ViewportType, ViewportTypeConstants, ViewportTypeRegistry } from './ViewportTypeRegistry.js';
|
|
116
|
+
import type { EffectiveRenderBackend, RenderBackendConstants, RenderBackendRegistry } from './RenderBackendRegistry.js';
|
|
116
117
|
export type * from './MetadataModuleTypes.js';
|
|
117
118
|
export type * from './InstanceTypes.js';
|
|
118
|
-
export type { Cornerstone3DConfig, IBaseStreamingImageVolume, ICamera, ResetCameraOptions, IStackViewport, IVideoViewport, IECGViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, ScalingDescriptor, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, IGenericViewport, ViewportContentMode, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, RenderingEngineResizeOptions, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ActorMapperProxy, 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, PublicMeshData, MeshData, IMesh, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, InternalECGCamera, ECGViewportInput, ECGChannel, ECGWaveformData, ECGViewportProperties, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, ImageLoadRequests, IBaseVolumeViewport, GeometryLoaderFn, ScrollOptions, JumpToSliceOptions, Memo, HistoryMemo, VoxelManager, RLEVoxelMap, RenderingEngineModeType, VtkOffscreenMultiRenderWindow, ViewportDataReference, ViewportType, ViewportTypeRegistry, ViewportTypeConstants, };
|
|
119
|
+
export type { Cornerstone3DConfig, IBaseStreamingImageVolume, ICamera, ResetCameraOptions, IStackViewport, IVideoViewport, IECGViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, ScalingDescriptor, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, IGenericViewport, ViewportContentMode, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, RenderingEngineResizeOptions, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ActorMapperProxy, 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, PublicMeshData, MeshData, IMesh, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, InternalECGCamera, ECGViewportInput, ECGChannel, ECGWaveformData, ECGViewportProperties, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, ImageLoadRequests, IBaseVolumeViewport, GeometryLoaderFn, ScrollOptions, JumpToSliceOptions, Memo, HistoryMemo, VoxelManager, RLEVoxelMap, RenderingEngineModeType, VtkOffscreenMultiRenderWindow, ViewportDataReference, ViewportType, ViewportTypeRegistry, ViewportTypeConstants, EffectiveRenderBackend, RenderBackendRegistry, RenderBackendConstants, };
|
|
119
120
|
export { ActorRenderMode };
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.4.
|
|
1
|
+
export declare const version = "5.4.11";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '5.4.
|
|
1
|
+
export const version = '5.4.11';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.11",
|
|
4
4
|
"description": "Cornerstone3D Core",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -85,18 +85,18 @@
|
|
|
85
85
|
"prepublishOnly": "pnpm run build"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@cornerstonejs/utils": "5.4.
|
|
88
|
+
"@cornerstonejs/utils": "5.4.11",
|
|
89
89
|
"@kitware/vtk.js": "35.5.3",
|
|
90
90
|
"comlink": "4.4.2",
|
|
91
91
|
"gl-matrix": "3.4.3",
|
|
92
92
|
"loglevel": "1.9.2"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
|
-
"@cornerstonejs/metadata": "5.4.
|
|
95
|
+
"@cornerstonejs/metadata": "5.4.11"
|
|
96
96
|
},
|
|
97
97
|
"peerDependencies": {
|
|
98
|
-
"@cornerstonejs/metadata": "5.4.
|
|
99
|
-
"@cornerstonejs/utils": "5.4.
|
|
98
|
+
"@cornerstonejs/metadata": "5.4.11",
|
|
99
|
+
"@cornerstonejs/utils": "5.4.11"
|
|
100
100
|
},
|
|
101
101
|
"contributors": [
|
|
102
102
|
{
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"type": "individual",
|
|
110
110
|
"url": "https://ohif.org/donate"
|
|
111
111
|
},
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "b6139a8e5a81a2f5a1bf5e1d1e238605d85c6d65"
|
|
113
113
|
}
|