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,8 +393,16 @@ 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)
);
});
let segmentsHidden = [];
possibleLabelMaps3D.forEach(labelmap3D => {
if (isCornerstone()) { if (isCornerstone()) {
labelmap3D.segmentsHidden[segmentNumber] = !isVisible; labelmap3D.segmentsHidden[segmentNumber] = !isVisible;
} }
@ -403,10 +411,12 @@ const SegmentationPanel = ({
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,9 +563,17 @@ const SegmentationPanel = ({
}; };
const onVisibilityChangeHandler = isVisible => { const onVisibilityChangeHandler = isVisible => {
const labelmap3D = getActiveLabelMaps3D(); let segmentsHidden = [];
state.segmentNumbers.forEach(segmentNumber => { state.segmentNumbers.forEach(segmentNumber => {
/** Get all labelmaps with this segmentNumber (overlapping segments) */
const { labelmaps3D } = getBrushStackState();
const possibleLabelMaps3D = labelmaps3D.filter(({ labelmaps2D }) => {
return labelmaps2D.some(({ segmentsOnLabelmap }) =>
segmentsOnLabelmap.includes(segmentNumber)
);
});
possibleLabelMaps3D.forEach(labelmap3D => {
if (isCornerstone()) { if (isCornerstone()) {
labelmap3D.segmentsHidden[segmentNumber] = !isVisible; labelmap3D.segmentsHidden[segmentNumber] = !isVisible;
} }
@ -563,12 +581,14 @@ const SegmentationPanel = ({
if (isVTK()) { if (isVTK()) {
onSegmentVisibilityChange(segmentNumber, isVisible); onSegmentVisibilityChange(segmentNumber, isVisible);
} }
segmentsHidden = [
...new Set([...segmentsHidden, ...labelmap3D.segmentsHidden]),
];
});
}); });
setState(state => ({ setState(state => ({ ...state, segmentsHidden }));
...state,
segmentsHidden: labelmap3D.segmentsHidden,
}));
refreshSegmentations(); refreshSegmentations();
refreshViewports(); refreshViewports();