Toggle visibility for multiple labelmaps (overlapping)

This commit is contained in:
igoroctaviano 2021-01-19 14:10:40 -03:00
parent 00fddc1550
commit 437c01511e

View File

@ -393,20 +393,30 @@ const SegmentationPanel = ({
}; };
const onSegmentVisibilityChangeHandler = (isVisible, segmentNumber) => { const onSegmentVisibilityChangeHandler = (isVisible, segmentNumber) => {
const labelmap3D = getActiveLabelMaps3D(); /** Get all labelmaps with this segmentNumber (overlapping segments) */
const { labelmaps3D } = getBrushStackState();
const possibleLabelMaps3D = labelmaps3D.filter(({ labelmaps2D }) => {
return labelmaps2D.some(({ segmentsOnLabelmap }) =>
segmentsOnLabelmap.includes(segmentNumber)
);
});
if (isCornerstone()) { let segmentsHidden = [];
labelmap3D.segmentsHidden[segmentNumber] = !isVisible; possibleLabelMaps3D.forEach(labelmap3D => {
} if (isCornerstone()) {
labelmap3D.segmentsHidden[segmentNumber] = !isVisible;
}
if (isVTK()) { if (isVTK()) {
onSegmentVisibilityChange(segmentNumber, isVisible); onSegmentVisibilityChange(segmentNumber, isVisible);
} }
setState(state => ({ segmentsHidden = [
...state, ...new Set([...segmentsHidden, ...labelmap3D.segmentsHidden]),
segmentsHidden: labelmap3D.segmentsHidden, ];
})); });
setState(state => ({ ...state, segmentsHidden }));
refreshSegmentations(); refreshSegmentations();
refreshViewports(); refreshViewports();
@ -553,22 +563,32 @@ const SegmentationPanel = ({
}; };
const onVisibilityChangeHandler = isVisible => { const onVisibilityChangeHandler = isVisible => {
const labelmap3D = getActiveLabelMaps3D(); let segmentsHidden = [];
state.segmentNumbers.forEach(segmentNumber => { state.segmentNumbers.forEach(segmentNumber => {
if (isCornerstone()) { /** Get all labelmaps with this segmentNumber (overlapping segments) */
labelmap3D.segmentsHidden[segmentNumber] = !isVisible; const { labelmaps3D } = getBrushStackState();
} const possibleLabelMaps3D = labelmaps3D.filter(({ labelmaps2D }) => {
return labelmaps2D.some(({ segmentsOnLabelmap }) =>
segmentsOnLabelmap.includes(segmentNumber)
);
});
if (isVTK()) { possibleLabelMaps3D.forEach(labelmap3D => {
onSegmentVisibilityChange(segmentNumber, isVisible); if (isCornerstone()) {
} labelmap3D.segmentsHidden[segmentNumber] = !isVisible;
}
if (isVTK()) {
onSegmentVisibilityChange(segmentNumber, isVisible);
}
segmentsHidden = [
...new Set([...segmentsHidden, ...labelmap3D.segmentsHidden]),
];
});
}); });
setState(state => ({ setState(state => ({ ...state, segmentsHidden }));
...state,
segmentsHidden: labelmap3D.segmentsHidden,
}));
refreshSegmentations(); refreshSegmentations();
refreshViewports(); refreshViewports();