fix(SegmentationTools): [Bug] Changes of brush/eraser radius with hotkey do not reflect on segmentation tool (#5535)

This commit is contained in:
Vinícius Alves de Faria Resende authored and GitHub committed 2025-11-05 10:34:41 -05:00
1 parent 0c8ab01d34
commit 29bd87c8c0
27 files changed
+472 -267

No files matched your search

@@ -46,8 +46,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.5.20",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/adapters": "4.9.0",
"@cornerstonejs/core": "4.9.0",
"@kitware/vtk.js": "32.12.0",
"react-color": "2.19.3"
}
@@ -46,8 +46,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.5.20",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/adapters": "4.9.0",
"@cornerstonejs/core": "4.9.0",
"@kitware/vtk.js": "32.12.0",
"react-color": "2.19.3"
}
@@ -1,4 +1,6 @@
import { utilities as cstUtils } from '@cornerstonejs/tools';
import { useUIStateStore } from '@ohif/extension-default';
import LogicalContourOperationsOptions from './components/LogicalContourOperationsOptions';
import SimplifyContourOptions from './components/SimplifyContourOptions';
import SmoothContoursOptions from './components/SmoothContoursOptions';
@@ -118,5 +120,23 @@ export function getToolbarModule({ servicesManager }: withAppTypes) {
};
},
},
{
name: 'evaluate.cornerstone.segmentation.synchronizeDrawingRadius',
evaluate: ({ button, radiusOptionId }) => {
const toolGroupIds = toolGroupService.getToolGroupIds();
if (!toolGroupIds?.length) {
return;
}
for (const toolGroupId of toolGroupIds) {
const brushSize = cstUtils.segmentation.getBrushSizeForToolGroup(toolGroupId);
if (brushSize) {
const option = toolbarService.getOptionById(button, radiusOptionId);
option.value = brushSize;
}
}
},
},
];
}
+3 -3
View File
@@ -46,9 +46,9 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.5.20",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/tools": "4.5.20",
"@cornerstonejs/adapters": "4.9.0",
"@cornerstonejs/core": "4.9.0",
"@cornerstonejs/tools": "4.9.0",
"classnames": "2.5.1"
}
}
@@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/tools": "4.5.20",
"@cornerstonejs/core": "4.9.0",
"@cornerstonejs/tools": "4.9.0",
"classnames": "2.5.1"
}
}
+7 -7
View File
@@ -40,7 +40,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/dicom-image-loader": "4.5.20",
"@cornerstonejs/dicom-image-loader": "4.9.0",
"@ohif/core": "3.12.0-beta.80",
"@ohif/ui": "3.12.0-beta.80",
"dcmjs": "0.43.1",
@@ -53,12 +53,12 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.5.20",
"@cornerstonejs/ai": "4.5.20",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/labelmap-interpolation": "4.5.20",
"@cornerstonejs/polymorphic-segmentation": "4.5.20",
"@cornerstonejs/tools": "4.5.20",
"@cornerstonejs/adapters": "4.9.0",
"@cornerstonejs/ai": "4.9.0",
"@cornerstonejs/core": "4.9.0",
"@cornerstonejs/labelmap-interpolation": "4.9.0",
"@cornerstonejs/polymorphic-segmentation": "4.9.0",
"@cornerstonejs/tools": "4.9.0",
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
"@kitware/vtk.js": "32.12.0",
"html2canvas": "1.4.1",
+24 -26
View File
@@ -120,6 +120,7 @@ function commandsModule({
}: OhifTypes.Extensions.ExtensionParams): OhifTypes.Extensions.CommandsModule {
const {
viewportGridService,
toolbarService,
toolGroupService,
cineService,
uiDialogService,
@@ -159,6 +160,25 @@ function commandsModule({
};
}
function _handleBrushSizeAction(action: 'increase' | 'decrease') {
const toolGroupIds = toolGroupService.getToolGroupIds();
if (!toolGroupIds?.length) {
return;
}
for (const toolGroupId of toolGroupIds) {
const brushSize = segmentationUtils.getBrushSizeForToolGroup(toolGroupId);
const newBrushSize = action === 'increase' ? brushSize + 3 : brushSize - 3;
if (brushSize) {
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, newBrushSize);
toolbarService.refreshToolbarState({ toolGroupId });
}
}
}
const actions = {
jumpToMeasurementViewport: ({ annotationUID, measurement }) => {
cornerstoneTools.annotation.selection.setAnnotationSelected(annotationUID, true);
@@ -2025,17 +2045,11 @@ function commandsModule({
segmentAI.initViewport(viewport);
}
},
setBrushSize: ({ value, toolNames }) => {
setBrushSize: ({ value }) => {
const brushSize = Number(value);
toolGroupService.getToolGroupIds()?.forEach(toolGroupId => {
if (toolNames?.length === 0) {
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize);
} else {
toolNames?.forEach(toolName => {
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize, toolName);
});
}
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize);
});
},
setThresholdRange: ({
@@ -2064,26 +2078,10 @@ function commandsModule({
}
},
increaseBrushSize: () => {
const toolGroupIds = toolGroupService.getToolGroupIds();
if (!toolGroupIds?.length) {
return;
}
for (const toolGroupId of toolGroupIds) {
const brushSize = segmentationUtils.getBrushSizeForToolGroup(toolGroupId);
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize + 3);
}
_handleBrushSizeAction('increase');
},
decreaseBrushSize: () => {
const toolGroupIds = toolGroupService.getToolGroupIds();
if (!toolGroupIds?.length) {
return;
}
for (const toolGroupId of toolGroupIds) {
const brushSize = segmentationUtils.getBrushSizeForToolGroup(toolGroupId);
segmentationUtils.setBrushSizeForToolGroup(toolGroupId, brushSize - 3);
}
_handleBrushSizeAction('decrease');
},
addNewSegment: () => {
const { segmentationService } = servicesManager.services;
+2 -2
View File
@@ -32,8 +32,8 @@
"start": "yarn run dev"
},
"peerDependencies": {
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/tools": "4.5.20",
"@cornerstonejs/core": "4.9.0",
"@cornerstonejs/tools": "4.9.0",
"@ohif/core": "3.12.0-beta.80",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.80",
"@ohif/extension-default": "3.12.0-beta.80",
+2 -2
View File
@@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.5.20",
"@cornerstonejs/tools": "4.5.20",
"@cornerstonejs/core": "4.9.0",
"@cornerstonejs/tools": "4.9.0",
"@ohif/core": "3.12.0-beta.80",
"@ohif/extension-cornerstone": "3.12.0-beta.80",
"@ohif/extension-default": "3.12.0-beta.80",