fix(SegmentationTools): [Bug] Changes of brush/eraser radius with hotkey do not reflect on segmentation tool (#5535)
This commit is contained in:
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;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in new issue
Block a user