@cornerstonejs/tools 0.27.2 → 0.28.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/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -2
- package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
- package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +0 -9
- package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.d.ts +6 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +42 -4
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/index.d.ts +2 -2
- package/dist/cjs/stateManagement/segmentation/config/index.js +5 -1
- package/dist/cjs/stateManagement/segmentation/config/index.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationColor.d.ts +2 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js +9 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.d.ts +6 -2
- package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js +18 -2
- package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +39 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +1 -1
- package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +6 -7
- package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +8 -3
- package/dist/cjs/stateManagement/segmentation/segmentationState.js +44 -16
- package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +1 -1
- package/dist/cjs/store/SynchronizerManager/Synchronizer.js +29 -18
- package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +30 -5
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js +2 -0
- package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js.map +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.d.ts +3 -0
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +72 -0
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -0
- package/dist/cjs/synchronizers/index.d.ts +2 -1
- package/dist/cjs/synchronizers/index.js +3 -1
- package/dist/cjs/synchronizers/index.js.map +1 -1
- package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +2 -0
- package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js +15 -0
- package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js.map +1 -0
- package/dist/cjs/synchronizers/synchronizers/index.d.ts +2 -1
- package/dist/cjs/synchronizers/synchronizers/index.js +3 -1
- package/dist/cjs/synchronizers/synchronizers/index.js.map +1 -1
- package/dist/cjs/tools/CrosshairsTool.d.ts +6 -1
- package/dist/cjs/tools/CrosshairsTool.js +47 -15
- package/dist/cjs/tools/CrosshairsTool.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -0
- package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js +7 -3
- package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.d.ts +2 -2
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +128 -86
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +14 -9
- package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
- package/dist/cjs/types/LabelmapTypes.d.ts +2 -0
- package/dist/cjs/types/SegmentationStateTypes.d.ts +5 -0
- package/dist/cjs/utilities/index.d.ts +2 -1
- package/dist/cjs/utilities/index.js +3 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/segmentation/index.d.ts +2 -1
- package/dist/cjs/utilities/segmentation/index.js +3 -1
- package/dist/cjs/utilities/segmentation/index.js.map +1 -1
- package/dist/cjs/utilities/{triggerSegmentationRender.d.ts → segmentation/triggerSegmentationRender.d.ts} +1 -0
- package/dist/cjs/utilities/{triggerSegmentationRender.js → segmentation/triggerSegmentationRender.js} +9 -3
- package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js.map +1 -0
- package/dist/cjs/utilities/viewport/index.d.ts +4 -0
- package/dist/cjs/utilities/viewport/index.js +13 -0
- package/dist/cjs/utilities/viewport/index.js.map +1 -0
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -2
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +2 -2
- package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stateManagement/annotation/config/ToolStyle.js +0 -9
- package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +6 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +42 -4
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
- package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
- package/dist/esm/stateManagement/segmentation/config/index.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +2 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +6 -2
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +17 -2
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +15 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +6 -7
- package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +8 -3
- package/dist/esm/stateManagement/segmentation/segmentationState.js +38 -15
- package/dist/esm/stateManagement/segmentation/segmentationState.js.map +1 -1
- package/dist/esm/store/SynchronizerManager/Synchronizer.js +2 -2
- package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +30 -5
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +2 -0
- package/dist/esm/store/ToolGroupManager/destroyToolGroup.js.map +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.d.ts +3 -0
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +58 -0
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -0
- package/dist/esm/synchronizers/index.d.ts +2 -1
- package/dist/esm/synchronizers/index.js +2 -1
- package/dist/esm/synchronizers/index.js.map +1 -1
- package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +2 -0
- package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js +9 -0
- package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js.map +1 -0
- package/dist/esm/synchronizers/synchronizers/index.d.ts +2 -1
- package/dist/esm/synchronizers/synchronizers/index.js +2 -1
- package/dist/esm/synchronizers/synchronizers/index.js.map +1 -1
- package/dist/esm/tools/CrosshairsTool.d.ts +6 -1
- package/dist/esm/tools/CrosshairsTool.js +47 -15
- package/dist/esm/tools/CrosshairsTool.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +7 -3
- package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +2 -2
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +119 -76
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +14 -9
- package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
- package/dist/esm/types/LabelmapTypes.d.ts +2 -0
- package/dist/esm/types/SegmentationStateTypes.d.ts +5 -0
- package/dist/esm/utilities/index.d.ts +2 -1
- package/dist/esm/utilities/index.js +2 -1
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/segmentation/index.d.ts +2 -1
- package/dist/esm/utilities/segmentation/index.js +2 -1
- package/dist/esm/utilities/segmentation/index.js.map +1 -1
- package/dist/esm/utilities/{triggerSegmentationRender.d.ts → segmentation/triggerSegmentationRender.d.ts} +1 -0
- package/dist/esm/utilities/{triggerSegmentationRender.js → segmentation/triggerSegmentationRender.js} +9 -3
- package/dist/esm/utilities/segmentation/triggerSegmentationRender.js.map +1 -0
- package/dist/esm/utilities/viewport/index.d.ts +4 -0
- package/dist/esm/utilities/viewport/index.js +5 -0
- package/dist/esm/utilities/viewport/index.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/cjs/utilities/triggerSegmentationRender.js.map +0 -1
- package/dist/esm/utilities/triggerSegmentationRender.js.map +0 -1
|
@@ -50,16 +50,14 @@ const labelMapConfigCache = new Map();
|
|
|
50
50
|
function addSegmentationRepresentation(toolGroupId, representationInput, toolGroupSpecificConfig) {
|
|
51
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
52
|
const { segmentationId } = representationInput;
|
|
53
|
-
const segmentation = SegmentationState.getSegmentation(segmentationId);
|
|
54
|
-
const { volumeId } = segmentation.representationData[SegmentationRepresentations_1.default.Labelmap];
|
|
55
53
|
const segmentationRepresentationUID = core_1.utilities.uuidv4();
|
|
56
|
-
yield _addLabelmapToToolGroupViewports(toolGroupId, volumeId, segmentationRepresentationUID);
|
|
57
54
|
const segmentsHidden = new Set();
|
|
58
55
|
const visibility = true;
|
|
59
56
|
const colorLUTIndex = 0;
|
|
60
57
|
const active = true;
|
|
61
58
|
const cfun = ColorTransferFunction_1.default.newInstance();
|
|
62
59
|
const ofun = PiecewiseFunction_1.default.newInstance();
|
|
60
|
+
ofun.addPoint(0, 0);
|
|
63
61
|
const toolGroupSpecificRepresentation = {
|
|
64
62
|
segmentationId,
|
|
65
63
|
segmentationRepresentationUID,
|
|
@@ -68,13 +66,14 @@ function addSegmentationRepresentation(toolGroupId, representationInput, toolGro
|
|
|
68
66
|
visibility,
|
|
69
67
|
colorLUTIndex,
|
|
70
68
|
active,
|
|
69
|
+
segmentationRepresentationSpecificConfig: {},
|
|
70
|
+
segmentSpecificConfig: {},
|
|
71
71
|
config: {
|
|
72
72
|
cfun,
|
|
73
73
|
ofun,
|
|
74
74
|
},
|
|
75
75
|
};
|
|
76
76
|
if (toolGroupSpecificConfig) {
|
|
77
|
-
const suppressEvents = true;
|
|
78
77
|
const currentToolGroupConfig = SegmentationConfig.getToolGroupSpecificConfig(toolGroupId);
|
|
79
78
|
const mergedConfig = (0, utilities_1.deepMerge)(currentToolGroupConfig, toolGroupSpecificConfig);
|
|
80
79
|
SegmentationConfig.setToolGroupSpecificConfig(toolGroupId, {
|
|
@@ -86,97 +85,150 @@ function addSegmentationRepresentation(toolGroupId, representationInput, toolGro
|
|
|
86
85
|
return segmentationRepresentationUID;
|
|
87
86
|
});
|
|
88
87
|
}
|
|
89
|
-
function removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID) {
|
|
88
|
+
function removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID, renderImmediate = false) {
|
|
90
89
|
_removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresentationUID);
|
|
91
90
|
SegmentationState.removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID);
|
|
91
|
+
if (renderImmediate) {
|
|
92
|
+
const viewportsInfo = (0, ToolGroupManager_1.getToolGroup)(toolGroupId).getViewportsInfo();
|
|
93
|
+
viewportsInfo.forEach(({ viewportId, renderingEngineId }) => {
|
|
94
|
+
const enabledElement = (0, core_1.getEnabledElementByIds)(viewportId, renderingEngineId);
|
|
95
|
+
enabledElement.viewport.render();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
92
98
|
}
|
|
93
99
|
function render(viewport, representation, toolGroupConfig) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
const { colorLUTIndex, active, segmentationId, segmentationRepresentationUID, visibility, segmentsHidden, config: renderingConfig, } = representation;
|
|
102
|
+
const segmentation = SegmentationState.getSegmentation(segmentationId);
|
|
103
|
+
const labelmapData = segmentation.representationData[SegmentationRepresentations_1.default.Labelmap];
|
|
104
|
+
const { volumeId: labelmapUID } = labelmapData;
|
|
105
|
+
const labelmap = core_1.cache.getVolume(labelmapUID);
|
|
106
|
+
if (!labelmap) {
|
|
107
|
+
throw new Error(`No Labelmap found for volumeId: ${labelmapUID}`);
|
|
108
|
+
}
|
|
109
|
+
let actorEntry = viewport.getActor(segmentationRepresentationUID);
|
|
110
|
+
if (!actorEntry) {
|
|
111
|
+
const segmentation = SegmentationState.getSegmentation(segmentationId);
|
|
112
|
+
const { volumeId } = segmentation.representationData[SegmentationRepresentations_1.default.Labelmap];
|
|
113
|
+
yield _addLabelmapToViewport(viewport, volumeId, segmentationRepresentationUID);
|
|
114
|
+
actorEntry = viewport.getActor(segmentationRepresentationUID);
|
|
115
|
+
}
|
|
116
|
+
const { cfun, ofun } = renderingConfig;
|
|
117
|
+
const renderInactiveSegmentations = toolGroupConfig.renderInactiveSegmentations;
|
|
118
|
+
_setLabelmapColorAndOpacity(viewport.id, actorEntry, cfun, ofun, colorLUTIndex, toolGroupConfig.representations[SegmentationRepresentations_1.default.Labelmap], representation, active, renderInactiveSegmentations, segmentsHidden, visibility);
|
|
119
|
+
});
|
|
111
120
|
}
|
|
112
|
-
function _setLabelmapColorAndOpacity(viewportId, actorEntry, cfun, ofun, colorLUTIndex,
|
|
113
|
-
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
: labelmapConfig.fillAlphaInactive;
|
|
117
|
-
const outlineWidth = isActiveLabelmap
|
|
118
|
-
? labelmapConfig.outlineWidthActive
|
|
119
|
-
: labelmapConfig.outlineWidthInactive;
|
|
120
|
-
const renderFill = isActiveLabelmap
|
|
121
|
-
? labelmapConfig.renderFill
|
|
122
|
-
: labelmapConfig.renderFillInactive;
|
|
121
|
+
function _setLabelmapColorAndOpacity(viewportId, actorEntry, cfun, ofun, colorLUTIndex, toolGroupLabelmapConfig, segmentationRepresentation, isActiveLabelmap, renderInactiveSegmentations, segmentsHidden, visibility = true) {
|
|
122
|
+
var _a;
|
|
123
|
+
const { segmentSpecificConfig, segmentationRepresentationSpecificConfig } = segmentationRepresentation;
|
|
124
|
+
const segmentationRepresentationLabelmapConfig = segmentationRepresentationSpecificConfig[SegmentationRepresentations_1.default.Labelmap];
|
|
123
125
|
const colorLUT = SegmentationState.getColorLUT(colorLUTIndex);
|
|
124
126
|
const numColors = Math.min(256, colorLUT.length);
|
|
125
|
-
const { uid } = actorEntry;
|
|
126
127
|
const volumeActor = actorEntry.actor;
|
|
127
|
-
const {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
const { uid: actorUID } = actorEntry;
|
|
129
|
+
const { outlineWidth, renderOutline, outlineOpacity } = _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap);
|
|
130
|
+
for (let i = 0; i < numColors; i++) {
|
|
131
|
+
const segmentIndex = i;
|
|
132
|
+
const segmentColor = colorLUT[segmentIndex];
|
|
133
|
+
const segmentSpecificLabelmapConfig = (_a = segmentSpecificConfig[segmentIndex]) === null || _a === void 0 ? void 0 : _a[SegmentationRepresentations_1.default.Labelmap];
|
|
134
|
+
const { fillAlpha, outlineWidth, renderFill, renderOutline } = _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap, segmentSpecificLabelmapConfig);
|
|
135
|
+
const { forceOpacityUpdate, forceColorUpdate } = _needsTransferFunctionUpdate(viewportId, actorUID, segmentIndex, {
|
|
136
|
+
fillAlpha,
|
|
137
|
+
renderFill,
|
|
138
|
+
renderOutline,
|
|
139
|
+
segmentColor,
|
|
140
|
+
outlineWidth,
|
|
141
|
+
segmentsHidden,
|
|
142
|
+
});
|
|
143
|
+
if (forceColorUpdate) {
|
|
144
|
+
cfun.addRGBPoint(segmentIndex, segmentColor[0] / MAX_NUMBER_COLORS, segmentColor[1] / MAX_NUMBER_COLORS, segmentColor[2] / MAX_NUMBER_COLORS);
|
|
132
145
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
ofun.addPoint(i, segmentOpacity);
|
|
146
|
+
if (forceOpacityUpdate) {
|
|
147
|
+
if (renderFill) {
|
|
148
|
+
const segmentOpacity = segmentsHidden.has(segmentIndex)
|
|
149
|
+
? 0
|
|
150
|
+
: (segmentColor[3] / 255) * fillAlpha;
|
|
151
|
+
ofun.removePoint(segmentIndex);
|
|
152
|
+
ofun.addPointLong(segmentIndex, segmentOpacity, 0.5, 1.0);
|
|
141
153
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
for (let i = 0; i < numColors; i++) {
|
|
145
|
-
ofun.addPoint(i, 0.01);
|
|
154
|
+
else {
|
|
155
|
+
ofun.addPointLong(segmentIndex, 0.01, 0.5, 1.0);
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
|
-
ofun.setClamping(false);
|
|
149
|
-
volumeActor.getProperty().setScalarOpacity(0, ofun);
|
|
150
158
|
}
|
|
159
|
+
volumeActor.getProperty().setRGBTransferFunction(0, cfun);
|
|
160
|
+
ofun.setClamping(false);
|
|
161
|
+
volumeActor.getProperty().setScalarOpacity(0, ofun);
|
|
151
162
|
volumeActor.getProperty().setInterpolationTypeToNearest();
|
|
152
|
-
volumeActor.getProperty().setUseLabelOutline(
|
|
163
|
+
volumeActor.getProperty().setUseLabelOutline(renderOutline);
|
|
164
|
+
volumeActor.getProperty().setLabelOutlineOpacity(outlineOpacity);
|
|
153
165
|
volumeActor.getProperty().setLabelOutlineThickness(outlineWidth);
|
|
154
166
|
const visible = visibility && (isActiveLabelmap || renderInactiveSegmentations);
|
|
155
167
|
volumeActor.setVisibility(visible);
|
|
156
168
|
}
|
|
157
|
-
function
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
169
|
+
function _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap, segmentsLabelmapConfig) {
|
|
170
|
+
const segmentLabelmapConfig = segmentsLabelmapConfig || {};
|
|
171
|
+
const configToUse = Object.assign(Object.assign(Object.assign({}, toolGroupLabelmapConfig), segmentationRepresentationLabelmapConfig), segmentLabelmapConfig);
|
|
172
|
+
const fillAlpha = isActiveLabelmap
|
|
173
|
+
? configToUse.fillAlpha
|
|
174
|
+
: configToUse.fillAlphaInactive;
|
|
175
|
+
const outlineWidth = isActiveLabelmap
|
|
176
|
+
? configToUse.outlineWidthActive
|
|
177
|
+
: configToUse.outlineWidthInactive;
|
|
178
|
+
const renderFill = isActiveLabelmap
|
|
179
|
+
? configToUse.renderFill
|
|
180
|
+
: configToUse.renderFillInactive;
|
|
181
|
+
const renderOutline = configToUse.renderOutline;
|
|
182
|
+
const outlineOpacity = isActiveLabelmap
|
|
183
|
+
? configToUse.outlineOpacity
|
|
184
|
+
: configToUse.outlineOpacityInactive;
|
|
185
|
+
return {
|
|
186
|
+
fillAlpha,
|
|
187
|
+
outlineWidth,
|
|
188
|
+
renderFill,
|
|
189
|
+
renderOutline,
|
|
190
|
+
outlineOpacity,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function _needsTransferFunctionUpdate(viewportId, actorUID, segmentIndex, { fillAlpha, renderFill, renderOutline, segmentColor, outlineWidth, segmentsHidden, }) {
|
|
194
|
+
const cacheUID = `${viewportId}-${actorUID}-${segmentIndex}`;
|
|
195
|
+
const oldConfig = labelMapConfigCache.get(cacheUID);
|
|
196
|
+
if (!oldConfig) {
|
|
197
|
+
labelMapConfigCache.set(cacheUID, {
|
|
198
|
+
fillAlpha,
|
|
199
|
+
renderFill,
|
|
200
|
+
renderOutline,
|
|
201
|
+
outlineWidth,
|
|
202
|
+
segmentColor,
|
|
203
|
+
segmentsHidden: new Set(segmentsHidden),
|
|
204
|
+
});
|
|
205
|
+
return {
|
|
206
|
+
forceOpacityUpdate: true,
|
|
207
|
+
forceColorUpdate: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const { fillAlpha: oldFillAlpha, renderFill: oldRenderFill, renderOutline: oldRenderOutline, outlineWidth: oldOutlineWidth, segmentColor: oldSegmentColor, segmentsHidden: oldSegmentsHidden, } = oldConfig;
|
|
211
|
+
const forceColorUpdate = oldSegmentColor[0] !== segmentColor[0] ||
|
|
212
|
+
oldSegmentColor[1] !== segmentColor[1] ||
|
|
213
|
+
oldSegmentColor[2] !== segmentColor[2];
|
|
214
|
+
const forceOpacityUpdate = oldSegmentColor[3] !== segmentColor[3] ||
|
|
215
|
+
oldFillAlpha !== fillAlpha ||
|
|
216
|
+
oldRenderFill !== renderFill ||
|
|
217
|
+
oldRenderOutline !== renderOutline ||
|
|
218
|
+
oldOutlineWidth !== outlineWidth ||
|
|
219
|
+
oldSegmentsHidden.has(segmentIndex) !== segmentsHidden.has(segmentIndex);
|
|
162
220
|
labelMapConfigCache.set(cacheUID, {
|
|
163
221
|
fillAlpha,
|
|
164
|
-
|
|
222
|
+
renderFill,
|
|
223
|
+
renderOutline,
|
|
224
|
+
outlineWidth,
|
|
225
|
+
segmentColor,
|
|
226
|
+
segmentsHidden: new Set(segmentsHidden),
|
|
165
227
|
});
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
if (config && config.fillAlpha !== fillAlpha) {
|
|
171
|
-
needOpacityUpdate = true;
|
|
172
|
-
}
|
|
173
|
-
if (config && config.colorLUTIndex !== colorLUTIndex) {
|
|
174
|
-
needColorUpdate = true;
|
|
175
|
-
}
|
|
176
|
-
if (config && config.renderFill !== renderFill) {
|
|
177
|
-
needOpacityUpdate = true;
|
|
178
|
-
}
|
|
179
|
-
return { needColorUpdate, needOpacityUpdate };
|
|
228
|
+
return {
|
|
229
|
+
forceOpacityUpdate,
|
|
230
|
+
forceColorUpdate,
|
|
231
|
+
};
|
|
180
232
|
}
|
|
181
233
|
function _removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresentationUID) {
|
|
182
234
|
const toolGroup = (0, ToolGroupManager_1.getToolGroup)(toolGroupId);
|
|
@@ -190,19 +242,9 @@ function _removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresen
|
|
|
190
242
|
(0, removeLabelmapFromElement_1.default)(enabledElement.viewport.element, segmentationRepresentationUID);
|
|
191
243
|
}
|
|
192
244
|
}
|
|
193
|
-
function
|
|
245
|
+
function _addLabelmapToViewport(viewport, volumeId, segmentationRepresentationUID) {
|
|
194
246
|
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
-
|
|
196
|
-
const { viewportsInfo } = toolGroup;
|
|
197
|
-
for (const viewportInfo of viewportsInfo) {
|
|
198
|
-
const { viewportId, renderingEngineId } = viewportInfo;
|
|
199
|
-
const enabledElement = (0, core_1.getEnabledElementByIds)(viewportId, renderingEngineId);
|
|
200
|
-
if (!enabledElement) {
|
|
201
|
-
throw new Error(`No enabled element found for rendering engine: ${renderingEngineId} and viewport: ${viewportId}`);
|
|
202
|
-
}
|
|
203
|
-
const { viewport } = enabledElement;
|
|
204
|
-
(0, addLabelmapToElement_1.default)(viewport.element, volumeId, segmentationRepresentationUID);
|
|
205
|
-
}
|
|
247
|
+
yield (0, addLabelmapToElement_1.default)(viewport.element, volumeId, segmentationRepresentationUID);
|
|
206
248
|
});
|
|
207
249
|
}
|
|
208
250
|
exports.default = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labelmapDisplay.js","sourceRoot":"","sources":["../../../../../src/tools/displayTools/Labelmap/labelmapDisplay.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iHAA4F;AAC5F,2GAAsF;AAEtF,8CAK6B;AAE7B,2GAA6F;AAC7F,oHAAsG;AACtG,6GAAyE;AACzE,sEAA+D;AAQ/D,kFAA0D;AAE1D,kDAA+C;
|
|
1
|
+
{"version":3,"file":"labelmapDisplay.js","sourceRoot":"","sources":["../../../../../src/tools/displayTools/Labelmap/labelmapDisplay.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,25 +23,30 @@ class SegmentationDisplayTool extends base_1.BaseTool {
|
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
const toolGroupSegmentationRepresentations = (0, segmentationState_1.getSegmentationRepresentations)(toolGroupId);
|
|
26
|
+
if (!toolGroupSegmentationRepresentations ||
|
|
27
|
+
toolGroupSegmentationRepresentations.length === 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
26
30
|
const toolGroupViewports = toolGroup.viewportsInfo.map(({ renderingEngineId, viewportId }) => {
|
|
27
31
|
const enabledElement = (0, core_1.getEnabledElementByIds)(viewportId, renderingEngineId);
|
|
28
32
|
if (enabledElement) {
|
|
29
33
|
return enabledElement.viewport;
|
|
30
34
|
}
|
|
31
35
|
});
|
|
32
|
-
toolGroupSegmentationRepresentations.
|
|
36
|
+
const segmentationRenderList = toolGroupSegmentationRepresentations.map((representation) => {
|
|
33
37
|
const config = this._getMergedRepresentationsConfig(toolGroupId);
|
|
34
|
-
|
|
38
|
+
const viewportsRenderList = [];
|
|
39
|
+
for (const viewport of toolGroupViewports) {
|
|
35
40
|
if (representation.type == SegmentationRepresentations_1.default.Labelmap) {
|
|
36
|
-
Labelmap_1.labelmapDisplay.render(viewport, representation, config);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
throw new Error(`Render for ${representation.type} is not supported yet`);
|
|
41
|
+
viewportsRenderList.push(Labelmap_1.labelmapDisplay.render(viewport, representation, config));
|
|
40
42
|
}
|
|
41
|
-
}
|
|
43
|
+
}
|
|
44
|
+
return viewportsRenderList;
|
|
42
45
|
});
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
Promise.allSettled(segmentationRenderList).then(() => {
|
|
47
|
+
toolGroupViewports.forEach((viewport) => {
|
|
48
|
+
viewport.render();
|
|
49
|
+
});
|
|
45
50
|
});
|
|
46
51
|
};
|
|
47
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentationDisplayTool.js","sourceRoot":"","sources":["../../../../src/tools/displayTools/SegmentationDisplayTool.ts"],"names":[],"mappings":";;;;;AAAA,kCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"SegmentationDisplayTool.js","sourceRoot":"","sources":["../../../../src/tools/displayTools/SegmentationDisplayTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export declare type LabelmapConfig = {
|
|
|
8
8
|
renderFillInactive?: boolean;
|
|
9
9
|
fillAlpha?: number;
|
|
10
10
|
fillAlphaInactive?: number;
|
|
11
|
+
outlineOpacity?: number;
|
|
12
|
+
outlineOpacityInactive?: number;
|
|
11
13
|
};
|
|
12
14
|
export declare type LabelmapRenderingConfig = {
|
|
13
15
|
cfun?: vtkColorTransferFunction;
|
|
@@ -2,6 +2,9 @@ import * as Enums from '../enums';
|
|
|
2
2
|
import type { LabelmapConfig, LabelmapSegmentationData, LabelmapRenderingConfig } from './LabelmapTypes';
|
|
3
3
|
export declare type Color = [number, number, number, number];
|
|
4
4
|
export declare type ColorLUT = Array<Color>;
|
|
5
|
+
export declare type SegmentSpecificRepresentationConfig = {
|
|
6
|
+
[key: number]: RepresentationConfig;
|
|
7
|
+
};
|
|
5
8
|
export declare type RepresentationConfig = {
|
|
6
9
|
LABELMAP?: LabelmapConfig;
|
|
7
10
|
};
|
|
@@ -34,6 +37,8 @@ export declare type ToolGroupSpecificRepresentationState = {
|
|
|
34
37
|
};
|
|
35
38
|
export declare type ToolGroupSpecificLabelmapRepresentation = ToolGroupSpecificRepresentationState & {
|
|
36
39
|
config: LabelmapRenderingConfig;
|
|
40
|
+
segmentationRepresentationSpecificConfig?: RepresentationConfig;
|
|
41
|
+
segmentSpecificConfig?: SegmentSpecificRepresentationConfig;
|
|
37
42
|
};
|
|
38
43
|
export declare type ToolGroupSpecificRepresentation = ToolGroupSpecificLabelmapRepresentation;
|
|
39
44
|
export declare type ToolGroupSpecificRepresentations = Array<ToolGroupSpecificRepresentation>;
|
|
@@ -22,5 +22,6 @@ import * as boundingBox from './boundingBox';
|
|
|
22
22
|
import * as planarFreehandROITool from './planarFreehandROITool';
|
|
23
23
|
import * as rectangleROITool from './rectangleROITool';
|
|
24
24
|
import * as stackPrefetch from './stackPrefetch';
|
|
25
|
+
import * as viewport from './viewport';
|
|
25
26
|
import { triggerEvent } from '@cornerstonejs/core';
|
|
26
|
-
export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
27
|
+
export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.scroll = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.isObject = exports.orientation = exports.throttle = exports.deepMerge = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
29
|
+
exports.scroll = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.viewport = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.isObject = exports.orientation = exports.throttle = exports.deepMerge = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
30
30
|
const getAnnotationNearPoint_1 = require("./getAnnotationNearPoint");
|
|
31
31
|
Object.defineProperty(exports, "getAnnotationNearPoint", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPoint; } });
|
|
32
32
|
Object.defineProperty(exports, "getAnnotationNearPointOnEnabledElement", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPointOnEnabledElement; } });
|
|
@@ -76,6 +76,8 @@ const rectangleROITool = __importStar(require("./rectangleROITool"));
|
|
|
76
76
|
exports.rectangleROITool = rectangleROITool;
|
|
77
77
|
const stackPrefetch = __importStar(require("./stackPrefetch"));
|
|
78
78
|
exports.stackPrefetch = stackPrefetch;
|
|
79
|
+
const viewport = __importStar(require("./viewport"));
|
|
80
|
+
exports.viewport = viewport;
|
|
79
81
|
const core_1 = require("@cornerstonejs/core");
|
|
80
82
|
Object.defineProperty(exports, "triggerEvent", { enumerable: true, get: function () { return core_1.triggerEvent; } });
|
|
81
83
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AAmDhC,uGArDA,+CAAsB,OAqDA;AACtB,uHArDA,+DAAsC,OAqDA;AAjDxC,0DAAkC;AAoChC,mBApCK,kBAAQ,CAoCL;AAnCV,4DAAoC;AAoClC,oBApCK,mBAAS,CAoCL;AAnCX,0DAAkC;AAoChC,mBApCK,kBAAQ,CAoCL;AAnCV,0DAAkC;AAqChC,mBArCK,kBAAQ,CAqCL;AApCV,kDAA0B;AAiDxB,eAjDK,cAAI,CAiDL;AAhDN,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,oHAA4F;AAsC1F,gDAtCK,+CAAqC,CAsCL;AArCvC,wFAAgE;AAsC9D,kCAtCK,iCAAuB,CAsCL;AArCzB,yEAAiD;AA0C/C,sBA1CK,qBAAW,CA0CL;AAxCb,kFAA0D;AAoCxD,+BApCK,8BAAoB,CAoCL;AAnCtB,0GAAkF;AAoChF,2CApCK,0CAAgC,CAoCL;AAnClC,sDAA8B;AA8C5B,iBA9CK,gBAAM,CA8CL;AA3CR,6DAA+C;AA4B7C,oCAAY;AA3Bd,mDAAqC;AAmBnC,0BAAO;AAlBT,6CAA+B;AAe7B,oBAAI;AAdN,iDAAmC;AAejC,wBAAM;AAdR,mEAAqD;AAenD,0CAAe;AAdjB,2DAA6C;AAmB3C,kCAAW;AAlBb,6CAA+B;AA+B7B,oBAAI;AA9BN,2DAA6C;AAgC3C,kCAAW;AA/Bb,+EAAiE;AAiC/D,sDAAqB;AAhCvB,qEAAuD;AA+BrD,4CAAgB;AA9BlB,+DAAiD;AAgC/C,sCAAa;AA/Bf,qDAAuC;AAyBrC,4BAAQ;AAtBV,8CAAmD;AAYjD,6FAZO,mBAAY,OAYP"}
|
|
@@ -4,4 +4,5 @@ import createMergedLabelmapForIndex from './createMergedLabelmapForIndex';
|
|
|
4
4
|
import isValidRepresentationConfig from './isValidRepresentationConfig';
|
|
5
5
|
import getDefaultRepresentationConfig from './getDefaultRepresentationConfig';
|
|
6
6
|
import createLabelmapVolumeForViewport from './createLabelmapVolumeForViewport';
|
|
7
|
-
|
|
7
|
+
import { triggerSegmentationRender } from './triggerSegmentationRender';
|
|
8
|
+
export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, };
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.rectangleROIThresholdVolumeByRange = exports.createLabelmapVolumeForViewport = exports.getDefaultRepresentationConfig = exports.isValidRepresentationConfig = exports.createMergedLabelmapForIndex = exports.thresholdVolumeByRange = void 0;
|
|
6
|
+
exports.triggerSegmentationRender = exports.rectangleROIThresholdVolumeByRange = exports.createLabelmapVolumeForViewport = exports.getDefaultRepresentationConfig = exports.isValidRepresentationConfig = exports.createMergedLabelmapForIndex = exports.thresholdVolumeByRange = void 0;
|
|
7
7
|
const thresholdVolumeByRange_1 = __importDefault(require("./thresholdVolumeByRange"));
|
|
8
8
|
exports.thresholdVolumeByRange = thresholdVolumeByRange_1.default;
|
|
9
9
|
const rectangleROIThresholdVolumeByRange_1 = __importDefault(require("./rectangleROIThresholdVolumeByRange"));
|
|
@@ -16,4 +16,6 @@ const getDefaultRepresentationConfig_1 = __importDefault(require("./getDefaultRe
|
|
|
16
16
|
exports.getDefaultRepresentationConfig = getDefaultRepresentationConfig_1.default;
|
|
17
17
|
const createLabelmapVolumeForViewport_1 = __importDefault(require("./createLabelmapVolumeForViewport"));
|
|
18
18
|
exports.createLabelmapVolumeForViewport = createLabelmapVolumeForViewport_1.default;
|
|
19
|
+
const triggerSegmentationRender_1 = require("./triggerSegmentationRender");
|
|
20
|
+
Object.defineProperty(exports, "triggerSegmentationRender", { enumerable: true, get: function () { return triggerSegmentationRender_1.triggerSegmentationRender; } });
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/index.ts"],"names":[],"mappings":";;;;;;AAAA,sFAA8D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/index.ts"],"names":[],"mappings":";;;;;;AAAA,sFAA8D;AAS5D,iCATK,gCAAsB,CASL;AARxB,8GAAsF;AAapF,6CAbK,4CAAkC,CAaL;AAZpC,kGAA0E;AAQxE,uCARK,sCAA4B,CAQL;AAP9B,gGAAwE;AAQtE,sCARK,qCAA2B,CAQL;AAP7B,sGAA8E;AAQ5E,yCARK,wCAA8B,CAQL;AAPhC,wGAAgF;AAQ9E,0CARK,yCAA+B,CAQL;AAPjC,2EAAwE;AAStE,0GATO,qDAAyB,OASP"}
|
|
@@ -3,6 +3,7 @@ declare class SegmentationRenderingEngine {
|
|
|
3
3
|
private _animationFrameSet;
|
|
4
4
|
private _animationFrameHandle;
|
|
5
5
|
hasBeenDestroyed: boolean;
|
|
6
|
+
removeToolGroup(toolGroupId: any): void;
|
|
6
7
|
renderToolGroupSegmentations(toolGroupId: any): void;
|
|
7
8
|
private _throwIfDestroyed;
|
|
8
9
|
private _setToolGroupSegmentationToBeRenderedNextFrame;
|
|
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.triggerSegmentationRender = exports.segmentationRenderingEngine = void 0;
|
|
7
7
|
const core_1 = require("@cornerstonejs/core");
|
|
8
|
-
const enums_1 = require("
|
|
9
|
-
const ToolGroupManager_1 = require("
|
|
10
|
-
const SegmentationDisplayTool_1 = __importDefault(require("
|
|
8
|
+
const enums_1 = require("../../enums");
|
|
9
|
+
const ToolGroupManager_1 = require("../../store/ToolGroupManager");
|
|
10
|
+
const SegmentationDisplayTool_1 = __importDefault(require("../../tools/displayTools/SegmentationDisplayTool"));
|
|
11
11
|
class SegmentationRenderingEngine {
|
|
12
12
|
constructor() {
|
|
13
13
|
this._needsRender = new Set();
|
|
@@ -27,6 +27,12 @@ class SegmentationRenderingEngine {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
removeToolGroup(toolGroupId) {
|
|
31
|
+
this._needsRender.delete(toolGroupId);
|
|
32
|
+
if (this._needsRender.size === 0) {
|
|
33
|
+
this._reset();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
30
36
|
renderToolGroupSegmentations(toolGroupId) {
|
|
31
37
|
this._setToolGroupSegmentationToBeRenderedNextFrame([toolGroupId]);
|
|
32
38
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerSegmentationRender.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/triggerSegmentationRender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.jumpToWorld = exports.jumpToSlice = exports.isViewportPreScaled = void 0;
|
|
7
|
+
const isViewportPreScaled_1 = require("./isViewportPreScaled");
|
|
8
|
+
Object.defineProperty(exports, "isViewportPreScaled", { enumerable: true, get: function () { return isViewportPreScaled_1.isViewportPreScaled; } });
|
|
9
|
+
const jumpToSlice_1 = __importDefault(require("./jumpToSlice"));
|
|
10
|
+
exports.jumpToSlice = jumpToSlice_1.default;
|
|
11
|
+
const jumpToWorld_1 = __importDefault(require("./jumpToWorld"));
|
|
12
|
+
exports.jumpToWorld = jumpToWorld_1.default;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/viewport/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAA4D;AAInD,oGAJA,yCAAmB,OAIA;AAH5B,gEAAwC;AAGV,sBAHvB,qBAAW,CAGuB;AAFzC,gEAAwC;AAEG,sBAFpC,qBAAW,CAEoC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cache } from '@cornerstonejs/core';
|
|
2
|
-
import triggerSegmentationRender from '../../utilities/triggerSegmentationRender';
|
|
2
|
+
import triggerSegmentationRender from '../../utilities/segmentation/triggerSegmentationRender';
|
|
3
3
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
4
4
|
import * as SegmentationState from '../../stateManagement/segmentation/segmentationState';
|
|
5
5
|
const onSegmentationDataModified = function (evt) {
|
|
@@ -26,7 +26,7 @@ const onSegmentationDataModified = function (evt) {
|
|
|
26
26
|
});
|
|
27
27
|
imageData.modified();
|
|
28
28
|
toolGroupIds =
|
|
29
|
-
SegmentationState.
|
|
29
|
+
SegmentationState.getToolGroupIdsWithSegmentation(segmentationId);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
32
|
throw new Error(`onSegmentationDataModified: representationType ${type} not supported yet`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentationDataModifiedEventListener.js","sourceRoot":"","sources":["../../../../src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,yBAAyB,MAAM,
|
|
1
|
+
{"version":3,"file":"segmentationDataModifiedEventListener.js","sourceRoot":"","sources":["../../../../src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,yBAAyB,MAAM,wDAAwD,CAAC;AAC/F,OAAO,2BAA2B,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,iBAAiB,MAAM,sDAAsD,CAAC;AAM1F,MAAM,0BAA0B,GAAG,UACjC,GAAsC;IAEtC,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAE3D,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAChC,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAI,YAAY,CAAC;IACjB,IAAI,IAAI,KAAK,2BAA2B,CAAC,QAAQ,EAAE;QAEjD,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CACxC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAClC,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,OAAO;SACR;QAED,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC;QAG3D,IAAI,cAAc,CAAC;QACnB,IAAI,mBAAmB,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAC7D,cAAc,GAAG,mBAAmB,CAAC;SACtC;aAAM;YACL,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/C;QAED,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAGH,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrB,YAAY;YACV,iBAAiB,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;KACrE;SAAM;QACL,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,oBAAoB,CAC3E,CAAC;KACH;IAED,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACnC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getToolGroupIdsWithSegmentation, getSegmentationRepresentations, } from '../../stateManagement/segmentation/segmentationState';
|
|
2
2
|
import { triggerSegmentationRepresentationModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
|
|
3
3
|
const segmentationModifiedListener = function (evt) {
|
|
4
4
|
const { segmentationId } = evt.detail;
|
|
5
|
-
const toolGroupIds =
|
|
5
|
+
const toolGroupIds = getToolGroupIdsWithSegmentation(segmentationId);
|
|
6
6
|
toolGroupIds.forEach((toolGroupId) => {
|
|
7
7
|
const segRepresentations = getSegmentationRepresentations(toolGroupId);
|
|
8
8
|
segRepresentations.forEach((representation) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentationModifiedEventListener.js","sourceRoot":"","sources":["../../../../src/eventListeners/segmentation/segmentationModifiedEventListener.ts"],"names":[],"mappings":"AACA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"segmentationModifiedEventListener.js","sourceRoot":"","sources":["../../../../src/eventListeners/segmentation/segmentationModifiedEventListener.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,yCAAyC,EAAE,MAAM,8DAA8D,CAAC;AAMzH,MAAM,4BAA4B,GAAG,UACnC,GAAkC;IAElC,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAEtC,MAAM,YAAY,GAAG,+BAA+B,CAAC,cAAc,CAAC,CAAC;IAErE,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACnC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAC;QACvE,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YAC5C,IAAI,cAAc,CAAC,cAAc,KAAK,cAAc,EAAE;gBACpD,yCAAyC,CACvC,WAAW,EACX,cAAc,CAAC,6BAA6B,CAC7C,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|