@cornerstonejs/tools 5.2.2 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/eventListeners/segmentation/renderingPipelineChangedListener.d.ts +2 -0
- package/dist/esm/eventListeners/segmentation/renderingPipelineChangedListener.js +14 -0
- package/dist/esm/init.js +3 -0
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/createLabelmapRenderPlan.d.ts +4 -2
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/createLabelmapRenderPlan.js +7 -3
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/legacyVolumePlan.js +8 -2
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/types.d.ts +1 -0
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.d.ts +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.js +9 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { triggerSegmentationRender } from '../../stateManagement/segmentation/SegmentationRenderingEngine.js';
|
|
2
|
+
import { getSegmentationRepresentations } from '../../stateManagement/segmentation/getSegmentationRepresentation.js';
|
|
3
|
+
const renderingPipelineChangedListener = function (evt) {
|
|
4
|
+
const viewportId = evt.detail?.viewportId;
|
|
5
|
+
if (!viewportId) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const representations = getSegmentationRepresentations(viewportId);
|
|
9
|
+
if (!representations?.length) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
triggerSegmentationRender(viewportId);
|
|
13
|
+
};
|
|
14
|
+
export default renderingPipelineChangedListener;
|
package/dist/esm/init.js
CHANGED
|
@@ -10,6 +10,7 @@ import { defaultSegmentationStateManager } from './stateManagement/segmentation/
|
|
|
10
10
|
import segmentationRepresentationModifiedListener from './eventListeners/segmentation/segmentationRepresentationModifiedListener.js';
|
|
11
11
|
import { setConfig } from './config.js';
|
|
12
12
|
import segmentationRemovedListener from './eventListeners/segmentation/segmentationRemovedEventListener.js';
|
|
13
|
+
import renderingPipelineChangedListener from './eventListeners/segmentation/renderingPipelineChangedListener.js';
|
|
13
14
|
import { registerBuiltInSegmentationRepresentationDisplays } from './tools/displayTools/registerBuiltInSegmentationRepresentationDisplays.js';
|
|
14
15
|
let csToolsInitialized = false;
|
|
15
16
|
export function init(defaultConfiguration = {}) {
|
|
@@ -39,6 +40,7 @@ function _addCornerstoneEventListeners() {
|
|
|
39
40
|
const elementDisabledEvent = Enums.Events.ELEMENT_DISABLED;
|
|
40
41
|
eventTarget.addEventListener(elementEnabledEvent, addEnabledElement);
|
|
41
42
|
eventTarget.addEventListener(elementDisabledEvent, removeEnabledElement);
|
|
43
|
+
eventTarget.addEventListener(Enums.Events.RENDERING_PIPELINE_CHANGED, renderingPipelineChangedListener);
|
|
42
44
|
annotationInterpolationEventDispatcher.enable();
|
|
43
45
|
}
|
|
44
46
|
function _removeCornerstoneEventListeners() {
|
|
@@ -46,6 +48,7 @@ function _removeCornerstoneEventListeners() {
|
|
|
46
48
|
const elementDisabledEvent = Enums.Events.ELEMENT_DISABLED;
|
|
47
49
|
eventTarget.removeEventListener(elementEnabledEvent, addEnabledElement);
|
|
48
50
|
eventTarget.removeEventListener(elementDisabledEvent, removeEnabledElement);
|
|
51
|
+
eventTarget.removeEventListener(Enums.Events.RENDERING_PIPELINE_CHANGED, renderingPipelineChangedListener);
|
|
49
52
|
annotationInterpolationEventDispatcher.disable();
|
|
50
53
|
}
|
|
51
54
|
function _addCornerstoneToolsEventListeners() {
|
package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/createLabelmapRenderPlan.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
1
2
|
import type { CreateLabelmapRenderPlanArgs, LabelmapRenderPlan } from './types.js';
|
|
2
|
-
declare function createLabelmapRenderPlan({ isVolumeImageMapper, kind, renderMode, segmentationId, unsupportedStateKey, updateAfterMount, useSliceRendering, viewport, canRenderCurrentViewport, getExpectedRepresentationUIDs, mount, update, }: CreateLabelmapRenderPlanArgs): LabelmapRenderPlan;
|
|
3
|
-
|
|
3
|
+
declare function createLabelmapRenderPlan({ isVolumeImageMapper, kind, renderMode, segmentationId, unsupportedStateKey, updateAfterMount, useSliceRendering, viewport, canRenderCurrentViewport, getExpectedRepresentationUIDs, isActorEntryCompatible, mount, update, }: CreateLabelmapRenderPlanArgs): LabelmapRenderPlan;
|
|
4
|
+
declare function getActorEntryRenderMode(actorEntry: Types.ActorEntry): Types.ActorRenderMode | undefined;
|
|
5
|
+
export { createLabelmapRenderPlan, getActorEntryRenderMode };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { getLabelmapActorEntries } from '../../../../stateManagement/segmentation/helpers/getSegmentationActor.js';
|
|
2
2
|
import { removeLabelmapRepresentationFromViewport } from './removeLabelmapRepresentationFromViewport.js';
|
|
3
|
-
function createLabelmapRenderPlan({ isVolumeImageMapper, kind, renderMode, segmentationId, unsupportedStateKey, updateAfterMount = true, useSliceRendering, viewport, canRenderCurrentViewport = () => kind !== 'unsupported', getExpectedRepresentationUIDs = () => [], mount = async () => undefined, update = () => undefined, }) {
|
|
3
|
+
function createLabelmapRenderPlan({ isVolumeImageMapper, kind, renderMode, segmentationId, unsupportedStateKey, updateAfterMount = true, useSliceRendering, viewport, canRenderCurrentViewport = () => kind !== 'unsupported', getExpectedRepresentationUIDs = () => [], isActorEntryCompatible = () => true, mount = async () => undefined, update = () => undefined, }) {
|
|
4
4
|
const remove = () => removeLabelmapRepresentationFromViewport(viewport, segmentationId);
|
|
5
|
-
const needsRemount = (actorEntries) => haveActorUIDsChanged(actorEntries, getExpectedRepresentationUIDs())
|
|
5
|
+
const needsRemount = (actorEntries) => haveActorUIDsChanged(actorEntries, getExpectedRepresentationUIDs()) ||
|
|
6
|
+
(actorEntries ?? []).some((actorEntry) => !isActorEntryCompatible(actorEntry));
|
|
6
7
|
return {
|
|
7
8
|
kind,
|
|
8
9
|
renderMode,
|
|
@@ -35,6 +36,9 @@ function createLabelmapRenderPlan({ isVolumeImageMapper, kind, renderMode, segme
|
|
|
35
36
|
},
|
|
36
37
|
};
|
|
37
38
|
}
|
|
39
|
+
function getActorEntryRenderMode(actorEntry) {
|
|
40
|
+
return actorEntry.actorMapper?.renderMode;
|
|
41
|
+
}
|
|
38
42
|
function haveActorUIDsChanged(actorEntries, expectedRepresentationUIDs) {
|
|
39
43
|
const actualUIDs = new Set((actorEntries ?? []).map((entry) => entry.representationUID));
|
|
40
44
|
const expectedUIDs = new Set(expectedRepresentationUIDs);
|
|
@@ -48,4 +52,4 @@ function haveActorUIDsChanged(actorEntries, expectedRepresentationUIDs) {
|
|
|
48
52
|
}
|
|
49
53
|
return false;
|
|
50
54
|
}
|
|
51
|
-
export { createLabelmapRenderPlan };
|
|
55
|
+
export { createLabelmapRenderPlan, getActorEntryRenderMode };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { addVolumesToViewports, Enums, cache, volumeLoader, utilities, } from '@cornerstonejs/core';
|
|
1
|
+
import { ActorRenderMode, addVolumesToViewports, Enums, cache, volumeLoader, utilities, } from '@cornerstonejs/core';
|
|
2
2
|
import { triggerSegmentationDataModified, triggerSegmentationModified, } from '../../../../stateManagement/segmentation/triggerSegmentationEvents.js';
|
|
3
3
|
import { getLabelmaps, getOrCreateLabelmapVolume, } from '../../../../stateManagement/segmentation/helpers/labelmapSegmentationState.js';
|
|
4
4
|
import { addVolumesAsIndependentComponents } from '../addVolumesAsIndependentComponents.js';
|
|
5
5
|
import { createLabelmapRepresentationUID } from '../labelmapRepresentationUID.js';
|
|
6
|
-
import { createLabelmapRenderPlan } from './createLabelmapRenderPlan.js';
|
|
6
|
+
import { createLabelmapRenderPlan, getActorEntryRenderMode, } from './createLabelmapRenderPlan.js';
|
|
7
7
|
import { addLabelmapToPlanarGenericViewport, isPlanarNextVolumeViewport, } from './planarGenericVolumeLabelmap.js';
|
|
8
8
|
const { uuidv4 } = utilities;
|
|
9
9
|
function createLegacyVolumeLabelmapPlan({ config, isVolumeImageMapper, renderMode, segmentation, segmentationId, useSliceRendering, viewport, }) {
|
|
@@ -15,6 +15,7 @@ function createLegacyVolumeLabelmapPlan({ config, isVolumeImageMapper, renderMod
|
|
|
15
15
|
useSliceRendering,
|
|
16
16
|
viewport,
|
|
17
17
|
getExpectedRepresentationUIDs: () => getExpectedVolumeLabelmapRepresentationUIDs(segmentation, segmentationId),
|
|
18
|
+
isActorEntryCompatible: (actorEntry) => !isImageMountedActorEntry(actorEntry),
|
|
18
19
|
mount: ({ labelMapData }) => mountLegacyVolumeLabelmap({
|
|
19
20
|
config,
|
|
20
21
|
labelMapData,
|
|
@@ -24,6 +25,11 @@ function createLegacyVolumeLabelmapPlan({ config, isVolumeImageMapper, renderMod
|
|
|
24
25
|
}),
|
|
25
26
|
});
|
|
26
27
|
}
|
|
28
|
+
function isImageMountedActorEntry(actorEntry) {
|
|
29
|
+
const renderMode = getActorEntryRenderMode(actorEntry);
|
|
30
|
+
return (renderMode === ActorRenderMode.VTK_IMAGE ||
|
|
31
|
+
renderMode === ActorRenderMode.CPU_IMAGE);
|
|
32
|
+
}
|
|
27
33
|
function getExpectedVolumeLabelmapRepresentationUIDs(segmentation, segmentationId) {
|
|
28
34
|
return getLabelmaps(segmentation)
|
|
29
35
|
.filter(canResolveLayerAsVolume)
|
|
@@ -42,6 +42,7 @@ type CreateLabelmapRenderPlanArgs = {
|
|
|
42
42
|
viewport: Types.IViewport;
|
|
43
43
|
canRenderCurrentViewport?: () => boolean;
|
|
44
44
|
getExpectedRepresentationUIDs?: () => string[];
|
|
45
|
+
isActorEntryCompatible?: (actorEntry: Types.ActorEntry) => boolean;
|
|
45
46
|
mount?: (args: LabelmapRenderPlanMountArgs) => Promise<LabelmapRenderPlanMountResult>;
|
|
46
47
|
update?: (args: LabelmapRenderPlanUpdateArgs) => void;
|
|
47
48
|
};
|
package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Types } from '@cornerstonejs/core';
|
|
2
2
|
import type { ViewportLabelmapRenderMode } from '../../../../stateManagement/segmentation/helpers/getViewportLabelmapRenderMode.js';
|
|
3
3
|
import type { Segmentation } from '../../../../types/SegmentationStateTypes.js';
|
|
4
4
|
import type { LabelmapRenderPlan } from './types.js';
|
package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { ActorRenderMode } from '@cornerstonejs/core';
|
|
1
2
|
import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/triggerSegmentationEvents.js';
|
|
2
3
|
import { addVolumeLabelmapImageMapperActors, getVolumeLabelmapImageMapperRepresentationUIDs, updateVolumeLabelmapImageMapperActors, } from '../volumeLabelmapImageMapper.js';
|
|
3
|
-
import { createLabelmapRenderPlan } from './createLabelmapRenderPlan.js';
|
|
4
|
+
import { createLabelmapRenderPlan, getActorEntryRenderMode, } from './createLabelmapRenderPlan.js';
|
|
4
5
|
function createVolumeSliceImageMapperPlan({ isVolumeImageMapper, renderMode, segmentation, segmentationId, useSliceRendering, viewport, }) {
|
|
5
6
|
return createLabelmapRenderPlan({
|
|
6
7
|
isVolumeImageMapper,
|
|
@@ -10,6 +11,7 @@ function createVolumeSliceImageMapperPlan({ isVolumeImageMapper, renderMode, seg
|
|
|
10
11
|
useSliceRendering,
|
|
11
12
|
viewport,
|
|
12
13
|
getExpectedRepresentationUIDs: () => getVolumeLabelmapImageMapperRepresentationUIDs(viewport, segmentationId, segmentation),
|
|
14
|
+
isActorEntryCompatible: (actorEntry) => !isVolumeMountedActorEntry(actorEntry),
|
|
13
15
|
mount: () => mountVolumeLabelmapImageMapper({
|
|
14
16
|
viewport,
|
|
15
17
|
segmentation,
|
|
@@ -23,6 +25,12 @@ function createVolumeSliceImageMapperPlan({ isVolumeImageMapper, renderMode, seg
|
|
|
23
25
|
}),
|
|
24
26
|
});
|
|
25
27
|
}
|
|
28
|
+
function isVolumeMountedActorEntry(actorEntry) {
|
|
29
|
+
const renderMode = getActorEntryRenderMode(actorEntry);
|
|
30
|
+
return (renderMode === ActorRenderMode.VTK_VOLUME ||
|
|
31
|
+
renderMode === ActorRenderMode.VTK_VOLUME_SLICE ||
|
|
32
|
+
renderMode === ActorRenderMode.CPU_VOLUME);
|
|
33
|
+
}
|
|
26
34
|
async function mountVolumeLabelmapImageMapper({ viewport, segmentation, segmentationId, }) {
|
|
27
35
|
await addVolumeLabelmapImageMapperActors({
|
|
28
36
|
viewport,
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.
|
|
1
|
+
export declare const version = "5.3.0";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '5.
|
|
1
|
+
export const version = '5.3.0';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/tools",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "Cornerstone3D Tools",
|
|
5
5
|
"types": "./dist/esm/index.d.ts",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -126,11 +126,11 @@
|
|
|
126
126
|
"lodash.get": "4.4.2"
|
|
127
127
|
},
|
|
128
128
|
"devDependencies": {
|
|
129
|
-
"@cornerstonejs/core": "5.
|
|
129
|
+
"@cornerstonejs/core": "5.3.0",
|
|
130
130
|
"canvas": "3.2.0"
|
|
131
131
|
},
|
|
132
132
|
"peerDependencies": {
|
|
133
|
-
"@cornerstonejs/core": "5.
|
|
133
|
+
"@cornerstonejs/core": "5.3.0",
|
|
134
134
|
"@kitware/vtk.js": "35.5.3",
|
|
135
135
|
"@types/d3-array": "3.2.1",
|
|
136
136
|
"@types/d3-interpolate": "3.0.4",
|
|
@@ -149,5 +149,5 @@
|
|
|
149
149
|
"type": "individual",
|
|
150
150
|
"url": "https://ohif.org/donate"
|
|
151
151
|
},
|
|
152
|
-
"gitHead": "
|
|
152
|
+
"gitHead": "6032c1e2640bcd18c7bd2bfb27181052b0e5d28e"
|
|
153
153
|
}
|