2024-03-27 21:01:32 +01:00
import type { Button } from '@ohif/core/types' ;
2025-04-01 20:19:03 +02:00
import { ViewportGridService } from '@ohif/core' ;
2025-09-25 16:22:02 +02:00
import i18n from 'i18next' ;
2023-09-22 16:23:44 +02:00
2025-11-05 16:34:41 +01:00
import { MIN_SEGMENTATION_DRAWING_RADIUS , MAX_SEGMENTATION_DRAWING_RADIUS } from './constants' ;
2025-03-07 04:19:47 +01:00
const setToolActiveToolbar = {
2024-03-28 15:40:32 +01:00
commandName : 'setToolActiveToolbar' ,
commandOptions : {
2024-04-16 17:04:48 +02:00
toolGroupIds : [ 'default' , 'mpr' , 'SRToolGroup' , 'volume3d' ] ,
2024-04-10 05:57:34 +02:00
} ,
} ;
2025-04-01 20:19:03 +02:00
const callbacks = ( toolName : string ) = > [
{
commandName : 'setViewportForToolConfiguration' ,
commandOptions : {
toolName ,
} ,
} ,
] ;
2025-11-21 19:07:26 +01:00
export const toolbarButtons : Button [ ] = [
2025-05-15 18:08:12 +02:00
{
id : 'AdvancedRenderingControls' ,
uiType : 'ohif.advancedRenderingControls' ,
props : {
2025-05-16 19:42:35 +02:00
buttonSection : true ,
2025-05-15 18:08:12 +02:00
} ,
} ,
{
id : 'modalityLoadBadge' ,
uiType : 'ohif.modalityLoadBadge' ,
props : {
icon : 'Status' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Status' ) ,
tooltip : i18n.t ( 'Buttons:Status' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.modalityLoadBadge' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'navigationComponent' ,
uiType : 'ohif.navigationComponent' ,
props : {
icon : 'Navigation' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Navigation' ) ,
tooltip : i18n.t ( 'Buttons:Navigate between segments/measurements and manage their visibility' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.navigationComponent' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'trackingStatus' ,
uiType : 'ohif.trackingStatus' ,
props : {
icon : 'TrackingStatus' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Tracking Status' ) ,
tooltip : i18n.t ( 'Buttons:View and manage tracking status of measurements and annotations' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.trackingStatus' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'dataOverlayMenu' ,
uiType : 'ohif.dataOverlayMenu' ,
props : {
icon : 'ViewportViews' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Data Overlay' ) ,
tooltip : i18n.t (
'Buttons:Configure data overlay options and manage foreground/background display sets'
) ,
2025-05-15 18:08:12 +02:00
evaluate : 'evaluate.dataOverlayMenu' ,
} ,
} ,
{
id : 'orientationMenu' ,
uiType : 'ohif.orientationMenu' ,
props : {
icon : 'OrientationSwitch' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Orientation' ) ,
tooltip : i18n.t (
'Buttons:Change viewport orientation between axial, sagittal, coronal and reformat planes'
) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.orientationMenu' ,
// hideWhenDisabled: true,
} ,
} ,
} ,
{
id : 'windowLevelMenuEmbedded' ,
uiType : 'ohif.windowLevelMenuEmbedded' ,
props : {
icon : 'WindowLevel' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Window Level' ) ,
tooltip : i18n.t ( 'Buttons:Adjust window/level presets and customize image contrast settings' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.windowLevelMenuEmbedded' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'windowLevelMenu' ,
uiType : 'ohif.windowLevelMenu' ,
props : {
icon : 'WindowLevel' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Window Level' ) ,
tooltip : i18n.t ( 'Buttons:Adjust window/level presets and customize image contrast settings' ) ,
2025-05-15 18:08:12 +02:00
evaluate : 'evaluate.windowLevelMenu' ,
} ,
} ,
{
id : 'voiManualControlMenu' ,
uiType : 'ohif.voiManualControlMenu' ,
props : {
icon : 'WindowLevelAdvanced' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Advanced Window Level' ) ,
tooltip : i18n.t ( 'Buttons:Advanced window/level settings with manual controls and presets' ) ,
2025-05-15 18:08:12 +02:00
evaluate : 'evaluate.voiManualControlMenu' ,
} ,
} ,
{
id : 'thresholdMenu' ,
uiType : 'ohif.thresholdMenu' ,
props : {
icon : 'Threshold' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Threshold' ) ,
tooltip : i18n.t ( 'Buttons:Image threshold settings' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.thresholdMenu' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'opacityMenu' ,
uiType : 'ohif.opacityMenu' ,
props : {
icon : 'Opacity' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Opacity' ) ,
tooltip : i18n.t ( 'Buttons:Image opacity settings' ) ,
2025-05-15 18:08:12 +02:00
evaluate : {
name : 'evaluate.opacityMenu' ,
hideWhenDisabled : true ,
} ,
} ,
} ,
{
id : 'Colorbar' ,
uiType : 'ohif.colorbar' ,
props : {
type : 'tool' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Colorbar' ) ,
2025-05-15 18:08:12 +02:00
} ,
} ,
2025-03-07 04:19:47 +01:00
// sections
{
id : 'MoreTools' ,
uiType : 'ohif.toolButtonList' ,
props : {
2025-05-16 19:42:35 +02:00
buttonSection : true ,
2025-03-07 04:19:47 +01:00
} ,
} ,
{
id : 'BrushTools' ,
uiType : 'ohif.toolBoxButtonGroup' ,
props : {
2025-05-16 19:42:35 +02:00
buttonSection : true ,
2025-03-07 04:19:47 +01:00
} ,
} ,
2025-10-29 19:15:52 +01:00
// Section containers for the nested toolboxes and toolbars.
2025-03-07 04:19:47 +01:00
{
2025-10-29 19:15:52 +01:00
id : 'LabelMapUtilities' ,
uiType : 'ohif.Toolbar' ,
2025-03-07 04:19:47 +01:00
props : {
2025-05-16 19:42:35 +02:00
buttonSection : true ,
2025-03-07 04:19:47 +01:00
} ,
} ,
{
2025-10-29 19:15:52 +01:00
id : 'ContourUtilities' ,
uiType : 'ohif.Toolbar' ,
props : {
buttonSection : true ,
} ,
} ,
{
id : 'LabelMapTools' ,
uiType : 'ohif.toolBoxButtonGroup' ,
props : {
buttonSection : true ,
} ,
} ,
{
id : 'ContourTools' ,
uiType : 'ohif.toolBoxButtonGroup' ,
2025-03-07 04:19:47 +01:00
props : {
2025-05-16 19:42:35 +02:00
buttonSection : true ,
2025-03-07 04:19:47 +01:00
} ,
} ,
// tool defs
2023-09-22 16:23:44 +02:00
{
id : 'Zoom' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
icon : 'tool-zoom' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Zoom' ) ,
2024-03-28 15:40:32 +01:00
commands : setToolActiveToolbar ,
2024-03-27 21:01:32 +01:00
evaluate : 'evaluate.cornerstoneTool' ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
id : 'WindowLevel' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
2024-04-02 15:35:30 +02:00
icon : 'tool-window-level' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Window Level' ) ,
2024-04-02 15:35:30 +02:00
commands : setToolActiveToolbar ,
evaluate : 'evaluate.cornerstoneTool' ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
id : 'Pan' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
icon : 'tool-move' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Pan' ) ,
2024-03-28 15:40:32 +01:00
commands : setToolActiveToolbar ,
evaluate : 'evaluate.cornerstoneTool' ,
} ,
} ,
{
id : 'TrackballRotate' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2024-03-28 15:40:32 +01:00
props : {
type : 'tool' ,
icon : 'tool-3d-rotate' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:3D Rotate' ) ,
2024-03-28 15:40:32 +01:00
commands : setToolActiveToolbar ,
2024-04-03 05:33:04 +02:00
evaluate : {
name : 'evaluate.cornerstoneTool' ,
2025-09-25 16:22:02 +02:00
disabledText : i18n.t ( 'Buttons:Select a 3D viewport to enable this tool' ) ,
2024-04-03 05:33:04 +02:00
} ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
id : 'Capture' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
icon : 'tool-capture' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Capture' ) ,
2024-03-28 15:40:32 +01:00
commands : 'showDownloadViewportModal' ,
2024-11-11 20:28:34 +01:00
evaluate : [
'evaluate.action' ,
{
name : 'evaluate.viewport.supported' ,
unsupportedViewportTypes : [ 'video' , 'wholeSlide' ] ,
} ,
] ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
id : 'Layout' ,
2024-03-27 21:01:32 +01:00
uiType : 'ohif.layoutSelector' ,
2023-09-22 16:23:44 +02:00
props : {
rows : 3 ,
2024-03-28 15:40:32 +01:00
columns : 4 ,
2024-03-27 21:01:32 +01:00
evaluate : 'evaluate.action' ,
2024-03-28 15:40:32 +01:00
commands : 'setViewportGridLayout' ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
id : 'Crosshairs' ,
2025-01-29 19:36:52 +01:00
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
icon : 'tool-crosshair' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Crosshairs' ) ,
2024-03-28 15:40:32 +01:00
commands : {
commandName : 'setToolActiveToolbar' ,
commandOptions : {
toolGroupIds : [ 'mpr' ] ,
} ,
} ,
2024-04-03 05:33:04 +02:00
evaluate : {
name : 'evaluate.cornerstoneTool' ,
2025-09-25 16:22:02 +02:00
disabledText : i18n.t ( 'Buttons:Select an MPR viewport to enable this tool' ) ,
2024-04-03 05:33:04 +02:00
} ,
2023-09-22 16:23:44 +02:00
} ,
} ,
{
2025-03-07 04:19:47 +01:00
id : 'Reset' ,
uiType : 'ohif.toolButton' ,
2023-09-22 16:23:44 +02:00
props : {
2025-03-07 04:19:47 +01:00
icon : 'tool-reset' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Reset View' ) ,
tooltip : i18n.t ( 'Buttons:Reset View' ) ,
2025-03-07 04:19:47 +01:00
commands : 'resetViewport' ,
evaluate : 'evaluate.action' ,
} ,
} ,
{
id : 'rotate-right' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-rotate-right' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Rotate Right' ) ,
tooltip : i18n.t ( 'Buttons:Rotate +90' ) ,
2025-03-07 04:19:47 +01:00
commands : 'rotateViewportCW' ,
evaluate : 'evaluate.action' ,
} ,
} ,
{
id : 'flipHorizontal' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-flip-horizontal' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Flip Horizontal' ) ,
tooltip : i18n.t ( 'Buttons:Flip Horizontally' ) ,
2025-03-07 04:19:47 +01:00
commands : 'flipViewportHorizontal' ,
evaluate : [
'evaluate.viewportProperties.toggle' ,
{
name : 'evaluate.viewport.supported' ,
unsupportedViewportTypes : [ 'volume3d' ] ,
} ,
] ,
} ,
} ,
{
id : 'ReferenceLines' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-referenceLines' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Reference Lines' ) ,
tooltip : i18n.t ( 'Buttons:Show Reference Lines' ) ,
2025-03-07 04:19:47 +01:00
commands : 'toggleEnabledDisabledToolbar' ,
evaluate : 'evaluate.cornerstoneTool.toggle' ,
} ,
} ,
{
id : 'ImageOverlayViewer' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'toggle-dicom-overlay' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Image Overlay' ) ,
tooltip : i18n.t ( 'Buttons:Toggle Image Overlay' ) ,
2025-03-07 04:19:47 +01:00
commands : 'toggleEnabledDisabledToolbar' ,
evaluate : 'evaluate.cornerstoneTool.toggle' ,
} ,
} ,
{
id : 'StackScroll' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-stack-scroll' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Stack Scroll' ) ,
tooltip : i18n.t ( 'Buttons:Stack Scroll' ) ,
2025-03-07 04:19:47 +01:00
commands : setToolActiveToolbar ,
evaluate : 'evaluate.cornerstoneTool' ,
} ,
} ,
{
id : 'invert' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-invert' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Invert' ) ,
tooltip : i18n.t ( 'Buttons:Invert Colors' ) ,
2025-03-07 04:19:47 +01:00
commands : 'invertViewport' ,
evaluate : 'evaluate.viewportProperties.toggle' ,
} ,
} ,
{
id : 'Cine' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-cine' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Cine' ) ,
tooltip : i18n.t ( 'Buttons:Cine' ) ,
2025-03-07 04:19:47 +01:00
commands : 'toggleCine' ,
evaluate : [
'evaluate.cine' ,
{
name : 'evaluate.viewport.supported' ,
unsupportedViewportTypes : [ 'volume3d' ] ,
} ,
] ,
} ,
} ,
{
id : 'Magnify' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'tool-magnify' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Zoom-in' ) ,
tooltip : i18n.t ( 'Buttons:Zoom-in' ) ,
2025-03-07 04:19:47 +01:00
commands : setToolActiveToolbar ,
evaluate : 'evaluate.cornerstoneTool' ,
} ,
} ,
{
id : 'TagBrowser' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'dicom-tag-browser' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Dicom Tag Browser' ) ,
tooltip : i18n.t ( 'Buttons:Dicom Tag Browser' ) ,
2025-03-07 04:19:47 +01:00
commands : 'openDICOMTagViewer' ,
} ,
} ,
2025-10-29 19:15:52 +01:00
{
id : 'PlanarFreehandContourSegmentationTool' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-freehand-roi' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Freehand Segmentation' ) ,
tooltip : i18n.t ( 'Buttons:Freehand Segmentation' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'PlanarFreehandContourSegmentationTool' ] ,
2025-12-12 16:46:56 +01:00
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
2025-10-29 19:15:52 +01:00
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Contour' ,
} ,
] ,
commands : [
{
commandName : 'setToolActiveToolbar' ,
commandOptions : {
bindings : [
{
mouseButton : 1 , // Left Click
} ,
{
mouseButton : 1 , // Left Click+Shift to create a hole
modifierKey : 16 , // Shift
} ,
] ,
} ,
} ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Contour' ,
} ,
} ,
] ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Interpolate Contours' ) ,
2025-10-29 19:15:52 +01:00
type : 'switch' ,
id : 'planarFreehandInterpolateContours' ,
value : false ,
commands : {
commandName : 'setInterpolationToolConfiguration' ,
} ,
} ,
] ,
} ,
} ,
{
id : 'LivewireContourSegmentationTool' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-livewire' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Livewire Contour' ) ,
tooltip : i18n.t ( 'Buttons:Livewire Contour' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'LivewireContourSegmentationTool' ] ,
2025-12-12 16:46:56 +01:00
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
2025-10-29 19:15:52 +01:00
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Contour' ,
} ,
] ,
commands : [
{
commandName : 'setToolActiveToolbar' ,
commandOptions : {
bindings : [
{
mouseButton : 1 , // Left Click
} ,
{
mouseButton : 1 , // Left Click+Shift to create a hole
modifierKey : 16 , // Shift
} ,
] ,
} ,
} ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Contour' ,
} ,
} ,
] ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Interpolate Contours' ) ,
2025-10-29 19:15:52 +01:00
type : 'switch' ,
id : 'livewireInterpolateContours' ,
value : false ,
commands : {
commandName : 'setInterpolationToolConfiguration' ,
} ,
} ,
] ,
} ,
} ,
{
id : 'SplineContourSegmentationTool' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-spline-roi' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Spline Contour Segmentation Tool' ) ,
tooltip : i18n.t ( 'Buttons:Spline Contour Segmentation Tool' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'CatmullRomSplineROI' , 'LinearSplineROI' , 'BSplineROI' ] ,
2025-12-12 16:46:56 +01:00
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
2025-10-29 19:15:52 +01:00
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Contour' ,
} ,
] ,
commands : [
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Contour' ,
} ,
} ,
] ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Spline Type' ) ,
2025-10-29 19:15:52 +01:00
type : 'select' ,
id : 'splineTypeSelect' ,
value : 'CatmullRomSplineROI' ,
values : [
{
id : 'CatmullRomSplineROI' ,
value : 'CatmullRomSplineROI' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Catmull Rom Spline' ) ,
2025-10-29 19:15:52 +01:00
} ,
2025-12-12 16:46:56 +01:00
{ id : 'LinearSplineROI' , value : 'LinearSplineROI' , label : i18n.t ( 'Buttons:Linear Spline' ) } ,
{ id : 'BSplineROI' , value : 'BSplineROI' , label : i18n.t ( 'Buttons:B-Spline' ) } ,
2025-10-29 19:15:52 +01:00
] ,
commands : {
commandName : 'setToolActiveToolbar' ,
commandOptions : {
bindings : [
{
mouseButton : 1 , // Left Click
} ,
{
mouseButton : 1 , // Left Click+Shift to create a hole
modifierKey : 16 , // Shift
} ,
] ,
} ,
} ,
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Simplified Spline' ) ,
2025-10-29 19:15:52 +01:00
type : 'switch' ,
id : 'simplifiedSpline' ,
value : true ,
commands : {
commandName : 'setSimplifiedSplineForSplineContourSegmentationTool' ,
} ,
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Interpolate Contours' ) ,
2025-10-29 19:15:52 +01:00
type : 'switch' ,
id : 'splineInterpolateContours' ,
value : false ,
commands : {
commandName : 'setInterpolationToolConfiguration' ,
commandOptions : {
toolNames : [ 'CatmullRomSplineROI' , 'LinearSplineROI' , 'BSplineROI' ] ,
} ,
} ,
} ,
] ,
} ,
} ,
{
id : 'SculptorTool' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-sculptor' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Sculptor Tool' ) ,
tooltip : i18n.t ( 'Buttons:Sculptor Tool' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'SculptorTool' ] ,
2025-12-12 16:46:56 +01:00
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
2025-10-29 19:15:52 +01:00
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Contour' ,
} ,
] ,
commands : [
'setToolActiveToolbar' ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Contour' ,
} ,
} ,
] ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Dynamic Cursor Size' ) ,
2025-10-29 19:15:52 +01:00
type : 'switch' ,
id : 'dynamicCursorSize' ,
value : true ,
commands : {
commandName : 'setDynamicCursorSizeForSculptorTool' ,
} ,
} ,
] ,
} ,
} ,
2025-03-07 04:19:47 +01:00
{
id : 'Brush' ,
2025-03-18 03:34:34 +01:00
uiType : 'ohif.toolBoxButton' ,
2025-03-07 04:19:47 +01:00
props : {
icon : 'icon-tool-brush' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Brush' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'CircularBrush' , 'SphereBrush' ] ,
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
} ,
2025-11-05 16:34:41 +01:00
{
name : 'evaluate.cornerstone.segmentation.synchronizeDrawingRadius' ,
radiusOptionId : 'brush-radius' ,
} ,
2025-10-29 19:15:52 +01:00
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : {
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
2023-09-22 16:23:44 +02:00
} ,
2025-03-07 04:19:47 +01:00
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Radius (mm)' ) ,
2025-03-07 04:19:47 +01:00
id : 'brush-radius' ,
type : 'range' ,
2025-11-05 16:34:41 +01:00
explicitRunOnly : true ,
min : MIN_SEGMENTATION_DRAWING_RADIUS ,
max : MAX_SEGMENTATION_DRAWING_RADIUS ,
2025-03-07 04:19:47 +01:00
step : 0.5 ,
value : 25 ,
2025-10-29 19:15:52 +01:00
commands : [
{
commandName : 'setBrushSize' ,
commandOptions : { toolNames : [ 'CircularBrush' , 'SphereBrush' ] } ,
} ,
] ,
2025-03-07 04:19:47 +01:00
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Shape' ) ,
2025-03-07 04:19:47 +01:00
type : 'radio' ,
id : 'brush-mode' ,
value : 'CircularBrush' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'CircularBrush' , label : i18n.t ( 'Buttons:Circle' ) } ,
{ value : 'SphereBrush' , label : i18n.t ( 'Buttons:Sphere' ) } ,
2024-11-06 13:15:27 +01:00
] ,
2025-10-29 19:15:52 +01:00
commands : [ 'setToolActiveToolbar' ] ,
2025-03-07 04:19:47 +01:00
} ,
] ,
} ,
} ,
2025-03-18 03:34:34 +01:00
{
id : 'InterpolateLabelmap' ,
2025-10-29 19:15:52 +01:00
uiType : 'ohif.toolButton' ,
2025-03-18 03:34:34 +01:00
props : {
2025-10-29 19:15:52 +01:00
icon : 'actions-interpolate' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Interpolate Labelmap' ) ,
tooltip : i18n.t (
'Buttons:Automatically fill in missing slices between drawn segments. Use brush or threshold tools on at least two slices, then click to interpolate across slices. Works in any direction. Volume must be reconstructable.'
) ,
2025-03-18 03:34:34 +01:00
evaluate : [
2025-10-29 19:15:52 +01:00
{
name : 'evaluate.cornerstone.segmentation' ,
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
2025-03-18 03:34:34 +01:00
{
name : 'evaluate.displaySetIsReconstructable' ,
2025-09-25 16:22:02 +02:00
disabledText : i18n.t ( 'Buttons:The current viewport cannot handle interpolation.' ) ,
2025-03-18 03:34:34 +01:00
} ,
] ,
2025-10-29 19:15:52 +01:00
commands : [
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
'interpolateLabelmap' ,
] ,
2025-03-18 03:34:34 +01:00
} ,
} ,
{
id : 'SegmentBidirectional' ,
2025-10-29 19:15:52 +01:00
uiType : 'ohif.toolButton' ,
2025-03-18 03:34:34 +01:00
props : {
2025-10-29 19:15:52 +01:00
icon : 'actions-bidirectional' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Segment Bidirectional' ) ,
tooltip : i18n.t (
'Buttons:Automatically detects the largest length and width across slices for the selected segment and displays a bidirectional measurement.'
) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : [
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
'runSegmentBidirectional' ,
] ,
2025-03-18 03:34:34 +01:00
} ,
} ,
2025-04-01 20:19:03 +02:00
{
id : 'RegionSegmentPlus' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-click-segment' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:One Click Segment' ) ,
tooltip : i18n.t (
'Buttons:Detects segmentable regions with one click. Hover for visual feedback—click when a plus sign appears to auto-segment the lesion.'
) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'RegionSegmentPlus' ] ,
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable this tool.' ) ,
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : [
'setToolActiveToolbar' ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
] ,
2025-04-01 20:19:03 +02:00
} ,
} ,
{
id : 'LabelmapSlicePropagation' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-labelmap-slice-propagation' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Labelmap Assist' ) ,
tooltip : i18n.t (
'Buttons:Toggle AI assistance for segmenting nearby slices. After drawing on a slice, scroll to preview predictions. Press Enter to accept or Esc to skip.'
) ,
2025-04-01 20:19:03 +02:00
evaluate : [
'evaluate.cornerstoneTool.toggle' ,
{
2025-10-29 19:15:52 +01:00
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
2025-04-01 20:19:03 +02:00
} ,
] ,
listeners : {
[ ViewportGridService . EVENTS . ACTIVE_VIEWPORT_ID_CHANGED ] : callbacks (
'LabelmapSlicePropagation'
) ,
[ ViewportGridService . EVENTS . VIEWPORTS_READY ] : callbacks ( 'LabelmapSlicePropagation' ) ,
} ,
2025-10-29 19:15:52 +01:00
commands : [
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
'toggleEnabledDisabledToolbar' ,
] ,
2025-04-01 20:19:03 +02:00
} ,
} ,
{
id : 'MarkerLabelmap' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-marker-labelmap' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Marker Guided Labelmap' ) ,
tooltip : i18n.t (
'Buttons:Use include/exclude markers to guide AI (SAM) segmentation. Click to place markers, Enter to accept results, Esc to reject, and N to go to the next slice while keeping markers.'
) ,
2025-04-01 20:19:03 +02:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'MarkerLabelmap' , 'MarkerInclude' , 'MarkerExclude' ] ,
} ,
2025-10-29 19:15:52 +01:00
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : [
'setToolActiveToolbar' ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
2025-04-01 20:19:03 +02:00
] ,
listeners : {
[ ViewportGridService . EVENTS . ACTIVE_VIEWPORT_ID_CHANGED ] : callbacks ( 'MarkerLabelmap' ) ,
[ ViewportGridService . EVENTS . VIEWPORTS_READY ] : callbacks ( 'MarkerLabelmap' ) ,
} ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Marker Mode' ) ,
2025-04-01 20:19:03 +02:00
type : 'radio' ,
id : 'marker-mode' ,
value : 'markerInclude' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'markerInclude' , label : i18n.t ( 'Buttons:Include' ) } ,
{ value : 'markerExclude' , label : i18n.t ( 'Buttons:Exclude' ) } ,
2025-04-01 20:19:03 +02:00
] ,
commands : ( { commandsManager , options } ) = > {
const markerModeOption = options . find ( option = > option . id === 'marker-mode' ) ;
if ( markerModeOption . value === 'markerInclude' ) {
commandsManager . run ( 'setToolActive' , {
toolName : 'MarkerInclude' ,
} ) ;
} else {
commandsManager . run ( 'setToolActive' , {
toolName : 'MarkerExclude' ,
} ) ;
}
} ,
} ,
2025-04-09 15:55:51 +02:00
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Clear Markers' ) ,
2025-04-09 15:55:51 +02:00
type : 'button' ,
id : 'clear-markers' ,
commands : 'clearMarkersForMarkerLabelmap' ,
} ,
2025-04-01 20:19:03 +02:00
] ,
} ,
} ,
2025-03-07 04:19:47 +01:00
{
id : 'Eraser' ,
2025-03-18 03:34:34 +01:00
uiType : 'ohif.toolBoxButton' ,
2025-03-07 04:19:47 +01:00
props : {
icon : 'icon-tool-eraser' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Eraser' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'CircularEraser' , 'SphereEraser' ] ,
} ,
2025-11-05 16:34:41 +01:00
{
name : 'evaluate.cornerstone.segmentation.synchronizeDrawingRadius' ,
radiusOptionId : 'eraser-radius' ,
} ,
2025-10-29 19:15:52 +01:00
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
2025-03-07 04:19:47 +01:00
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Radius (mm)' ) ,
2025-03-07 04:19:47 +01:00
id : 'eraser-radius' ,
type : 'range' ,
2025-11-05 16:34:41 +01:00
explicitRunOnly : true ,
min : MIN_SEGMENTATION_DRAWING_RADIUS ,
max : MAX_SEGMENTATION_DRAWING_RADIUS ,
2025-03-07 04:19:47 +01:00
step : 0.5 ,
value : 25 ,
commands : {
commandName : 'setBrushSize' ,
commandOptions : { toolNames : [ 'CircularEraser' , 'SphereEraser' ] } ,
2024-03-28 15:40:32 +01:00
} ,
2025-03-07 04:19:47 +01:00
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Shape' ) ,
2025-03-07 04:19:47 +01:00
type : 'radio' ,
id : 'eraser-mode' ,
value : 'CircularEraser' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'CircularEraser' , label : i18n.t ( 'Buttons:Circle' ) } ,
{ value : 'SphereEraser' , label : i18n.t ( 'Buttons:Sphere' ) } ,
2025-03-07 04:19:47 +01:00
] ,
commands : 'setToolActiveToolbar' ,
} ,
] ,
2025-10-29 19:15:52 +01:00
commands : {
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
} ,
2025-03-07 04:19:47 +01:00
} ,
} ,
{
id : 'Threshold' ,
2025-03-18 03:34:34 +01:00
uiType : 'ohif.toolBoxButton' ,
2025-03-07 04:19:47 +01:00
props : {
icon : 'icon-tool-threshold' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Threshold Tool' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [
'ThresholdCircularBrush' ,
'ThresholdSphereBrush' ,
'ThresholdCircularBrushDynamic' ,
'ThresholdSphereBrushDynamic' ,
] ,
} ,
2025-11-05 16:34:41 +01:00
{
name : 'evaluate.cornerstone.segmentation.synchronizeDrawingRadius' ,
radiusOptionId : 'threshold-radius' ,
} ,
2025-10-29 19:15:52 +01:00
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : {
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
2025-03-07 04:19:47 +01:00
} ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Radius (mm)' ) ,
2025-03-07 04:19:47 +01:00
id : 'threshold-radius' ,
type : 'range' ,
2025-11-05 16:34:41 +01:00
explicitRunOnly : true ,
min : MIN_SEGMENTATION_DRAWING_RADIUS ,
max : MAX_SEGMENTATION_DRAWING_RADIUS ,
2025-03-07 04:19:47 +01:00
step : 0.5 ,
value : 25 ,
commands : {
commandName : 'setBrushSize' ,
commandOptions : {
toolNames : [
'ThresholdCircularBrush' ,
'ThresholdSphereBrush' ,
'ThresholdCircularBrushDynamic' ,
'ThresholdSphereBrushDynamic' ,
] ,
2024-11-06 13:15:27 +01:00
} ,
2025-03-07 04:19:47 +01:00
} ,
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Shape' ) ,
2025-03-07 04:19:47 +01:00
type : 'radio' ,
id : 'threshold-shape' ,
value : 'ThresholdCircularBrush' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'ThresholdCircularBrush' , label : i18n.t ( 'Buttons:Circle' ) } ,
{ value : 'ThresholdSphereBrush' , label : i18n.t ( 'Buttons:Sphere' ) } ,
2024-11-06 13:15:27 +01:00
] ,
2025-03-07 04:19:47 +01:00
commands : ( { value , commandsManager , options } ) = > {
const optionsDynamic = options . find ( option = > option . id === 'dynamic-mode' ) ;
if ( optionsDynamic . value === 'ThresholdDynamic' ) {
commandsManager . run ( 'setToolActive' , {
toolName :
value === 'ThresholdCircularBrush'
? 'ThresholdCircularBrushDynamic'
: 'ThresholdSphereBrushDynamic' ,
} ) ;
} else {
commandsManager . run ( 'setToolActive' , {
toolName : value ,
} ) ;
}
} ,
} ,
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Threshold' ) ,
2025-03-07 04:19:47 +01:00
type : 'radio' ,
id : 'dynamic-mode' ,
value : 'ThresholdDynamic' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'ThresholdDynamic' , label : i18n.t ( 'Buttons:Dynamic' ) } ,
{ value : 'ThresholdRange' , label : i18n.t ( 'Buttons:Range' ) } ,
2025-03-07 04:19:47 +01:00
] ,
commands : ( { value , commandsManager , options } ) = > {
const thresholdRangeOption = options . find ( option = > option . id === 'threshold-shape' ) ;
if ( value === 'ThresholdDynamic' ) {
commandsManager . run ( 'setToolActiveToolbar' , {
toolName :
thresholdRangeOption . value === 'ThresholdCircularBrush'
? 'ThresholdCircularBrushDynamic'
: 'ThresholdSphereBrushDynamic' ,
} ) ;
} else {
commandsManager . run ( 'setToolActiveToolbar' , {
toolName : thresholdRangeOption.value ,
} ) ;
const thresholdRangeValue = options . find (
option = > option . id === 'threshold-range'
) . value ;
commandsManager . run ( 'setThresholdRange' , {
toolNames : [ 'ThresholdCircularBrush' , 'ThresholdSphereBrush' ] ,
value : thresholdRangeValue ,
} ) ;
}
} ,
} ,
{
name : 'ThresholdRange' ,
type : 'double-range' ,
id : 'threshold-range' ,
min : - 1000 ,
max : 1000 ,
step : 1 ,
value : [ 50 , 600 ] ,
condition : ( { options } ) = >
options . find ( option = > option . id === 'dynamic-mode' ) . value === 'ThresholdRange' ,
commands : {
commandName : 'setThresholdRange' ,
commandOptions : {
toolNames : [ 'ThresholdCircularBrush' , 'ThresholdSphereBrush' ] ,
2024-11-06 13:15:27 +01:00
} ,
2025-03-07 04:19:47 +01:00
} ,
} ,
] ,
} ,
} ,
{
id : 'Shapes' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'icon-tool-shape' ,
2025-09-25 16:22:02 +02:00
label : i18n.t ( 'Buttons:Shapes' ) ,
2025-10-29 19:15:52 +01:00
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'CircleScissor' , 'SphereScissor' , 'RectangleScissor' ] ,
disabledText : i18n.t ( 'Buttons:Create new segmentation to enable shapes tool.' ) ,
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
commands : {
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : {
segmentationRepresentationType : 'Labelmap' ,
} ,
2025-03-07 04:19:47 +01:00
} ,
options : [
{
2025-12-12 16:46:56 +01:00
name : i18n.t ( 'Buttons:Shape' ) ,
2025-03-07 04:19:47 +01:00
type : 'radio' ,
value : 'CircleScissor' ,
id : 'shape-mode' ,
values : [
2025-12-12 16:46:56 +01:00
{ value : 'CircleScissor' , label : i18n.t ( 'Buttons:Circle' ) } ,
{ value : 'SphereScissor' , label : i18n.t ( 'Buttons:Sphere' ) } ,
{ value : 'RectangleScissor' , label : i18n.t ( 'Buttons:Rectangle' ) } ,
2024-11-06 13:15:27 +01:00
] ,
2025-03-07 04:19:47 +01:00
commands : 'setToolActiveToolbar' ,
} ,
2023-09-22 16:23:44 +02:00
] ,
} ,
} ,
2025-10-29 19:15:52 +01:00
{
id : 'SimplifyContours' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'actions-simplify' ,
label : 'Simplify Contours' ,
tooltip : 'Simplify Contours' ,
commands : [ 'toggleActiveSegmentationUtility' ] ,
evaluate : [
{
name : 'cornerstone.isActiveSegmentationUtility' ,
} ,
] ,
options : 'cornerstone.SimplifyContourOptions' ,
} ,
} ,
{
id : 'SmoothContours' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'actions-smooth' ,
label : 'Smooth Contours' ,
tooltip : 'Smooth Contours' ,
commands : [ 'toggleActiveSegmentationUtility' ] ,
evaluate : [
{
name : 'cornerstone.isActiveSegmentationUtility' ,
} ,
] ,
options : 'cornerstone.SmoothContoursOptions' ,
} ,
} ,
{
id : 'LogicalContourOperations' ,
uiType : 'ohif.toolButton' ,
props : {
icon : 'actions-combine' ,
label : 'Combine Contours' ,
tooltip : 'Combine Contours' ,
commands : [ 'toggleActiveSegmentationUtility' ] ,
evaluate : [
{
name : 'cornerstone.isActiveSegmentationUtility' ,
} ,
] ,
options : 'cornerstone.LogicalContourOperationsOptions' ,
} ,
} ,
{
id : 'LabelMapEditWithContour' ,
uiType : 'ohif.toolBoxButton' ,
props : {
icon : 'tool-labelmap-edit-with-contour' ,
2025-12-12 16:46:56 +01:00
label : i18n.t ( 'Buttons:Labelmap Edit with Contour Tool' ) ,
tooltip : i18n.t ( 'Buttons:Labelmap Edit with Contour Tool' ) ,
2025-10-29 19:15:52 +01:00
commands : [
'setToolActiveToolbar' ,
{
commandName : 'activateSelectedSegmentationOfType' ,
commandOptions : { segmentationRepresentationType : 'Labelmap' } ,
} ,
] ,
evaluate : [
{
name : 'evaluate.cornerstone.segmentation' ,
toolNames : [ 'LabelMapEditWithContour' ] ,
disabledText : 'Create new segmentation to enable this tool.' ,
} ,
{
name : 'evaluate.cornerstone.hasSegmentationOfType' ,
segmentationRepresentationType : 'Labelmap' ,
} ,
] ,
} ,
} ,
2023-09-22 16:23:44 +02:00
] ;
export default toolbarButtons ;