const colours = { 'viewport-0': 'rgb(200, 0, 0)', 'viewport-1': 'rgb(200, 200, 0)', 'viewport-2': 'rgb(0, 200, 0)', }; const colorsByOrientation = { axial: 'rgb(200, 0, 0)', sagittal: 'rgb(200, 200, 0)', coronal: 'rgb(0, 200, 0)', }; function initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) { const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); const { toolNames, Enums } = utilityModule.exports; const tools = { active: [ { toolName: toolNames.WindowLevel, bindings: [{ mouseButton: Enums.MouseBindings.Primary }], }, { toolName: toolNames.Pan, bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }], }, { toolName: toolNames.Zoom, bindings: [{ mouseButton: Enums.MouseBindings.Secondary }], }, { toolName: toolNames.StackScroll, bindings: [{ mouseButton: Enums.MouseBindings.Wheel }], }, ], passive: [ { toolName: toolNames.Length }, { toolName: toolNames.ArrowAnnotate, configuration: { getTextCallback: (callback, eventDetails) => commandsManager.runCommand('arrowTextCallback', { callback, eventDetails, }), changeTextCallback: (data, eventDetails, callback) => commandsManager.runCommand('arrowTextCallback', { callback, data, eventDetails, }), }, }, { toolName: toolNames.Bidirectional }, { toolName: toolNames.DragProbe }, { toolName: toolNames.Probe }, { toolName: toolNames.EllipticalROI }, { toolName: toolNames.CircleROI }, { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, { toolName: toolNames.CobbAngle }, { toolName: toolNames.Magnify }, { toolName: toolNames.WindowLevelRegion }, { toolName: toolNames.UltrasoundDirectional }, { toolName: toolNames.PlanarFreehandROI }, { toolName: toolNames.SplineROI }, { toolName: toolNames.LivewireContour }, ], // enabled enabled: [{ toolName: toolNames.ImageOverlayViewer }], // disabled disabled: [{ toolName: toolNames.ReferenceLines }, { toolName: toolNames.AdvancedMagnify }], }; toolGroupService.createToolGroupAndAddTools(toolGroupId, tools); } function initSRToolGroup(extensionManager, toolGroupService, commandsManager) { const SRUtilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools' ); const CS3DUtilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); const { toolNames: SRToolNames } = SRUtilityModule.exports; const { toolNames, Enums } = CS3DUtilityModule.exports; const tools = { active: [ { toolName: toolNames.WindowLevel, bindings: [ { mouseButton: Enums.MouseBindings.Primary, }, ], }, { toolName: toolNames.Pan, bindings: [ { mouseButton: Enums.MouseBindings.Auxiliary, }, ], }, { toolName: toolNames.Zoom, bindings: [ { mouseButton: Enums.MouseBindings.Secondary, }, ], }, { toolName: toolNames.StackScroll, bindings: [{ mouseButton: Enums.MouseBindings.Wheel }], }, ], passive: [ { toolName: SRToolNames.SRLength }, { toolName: SRToolNames.SRArrowAnnotate }, { toolName: SRToolNames.SRBidirectional }, { toolName: SRToolNames.SREllipticalROI }, { toolName: SRToolNames.SRCircleROI }, { toolName: toolNames.WindowLevelRegion }, ], enabled: [ { toolName: SRToolNames.DICOMSRDisplay, bindings: [], }, ], // disabled }; const toolGroupId = 'SRToolGroup'; toolGroupService.createToolGroupAndAddTools(toolGroupId, tools); } function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) { const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); const serviceManager = extensionManager._servicesManager; const { cornerstoneViewportService } = serviceManager.services; const { toolNames, Enums } = utilityModule.exports; const tools = { active: [ { toolName: toolNames.WindowLevel, bindings: [{ mouseButton: Enums.MouseBindings.Primary }], }, { toolName: toolNames.Pan, bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }], }, { toolName: toolNames.Zoom, bindings: [{ mouseButton: Enums.MouseBindings.Secondary }], }, { toolName: toolNames.StackScroll, bindings: [{ mouseButton: Enums.MouseBindings.Wheel }], }, ], passive: [ { toolName: toolNames.Length }, { toolName: toolNames.ArrowAnnotate, configuration: { getTextCallback: (callback, eventDetails) => commandsManager.runCommand('arrowTextCallback', { callback, eventDetails, }), changeTextCallback: (data, eventDetails, callback) => commandsManager.runCommand('arrowTextCallback', { callback, data, eventDetails, }), }, }, { toolName: toolNames.Bidirectional }, { toolName: toolNames.DragProbe }, { toolName: toolNames.Probe }, { toolName: toolNames.EllipticalROI }, { toolName: toolNames.CircleROI }, { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, { toolName: toolNames.WindowLevelRegion }, { toolName: toolNames.PlanarFreehandROI }, { toolName: toolNames.SplineROI }, { toolName: toolNames.LivewireContour }, ], disabled: [ { toolName: toolNames.Crosshairs, configuration: { viewportIndicators: false, autoPan: { enabled: false, panSize: 10, }, getReferenceLineColor: viewportId => { const viewportInfo = cornerstoneViewportService.getViewportInfo(viewportId); const viewportOptions = viewportInfo?.viewportOptions; if (viewportOptions) { return ( colours[viewportOptions.id] || colorsByOrientation[viewportOptions.orientation] || '#0c0' ); } else { console.warn('missing viewport?', viewportId); return '#0c0'; } }, }, }, { toolName: toolNames.ReferenceLines }, ], // enabled // disabled }; toolGroupService.createToolGroupAndAddTools('mpr', tools); } function initVolume3DToolGroup(extensionManager, toolGroupService) { const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); const { toolNames, Enums } = utilityModule.exports; const tools = { active: [ { toolName: toolNames.TrackballRotateTool, bindings: [{ mouseButton: Enums.MouseBindings.Primary }], }, { toolName: toolNames.Zoom, bindings: [{ mouseButton: Enums.MouseBindings.Secondary }], }, { toolName: toolNames.Pan, bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }], }, ], }; toolGroupService.createToolGroupAndAddTools('volume3d', tools); } function initToolGroups(extensionManager, toolGroupService, commandsManager) { initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, 'default'); initSRToolGroup(extensionManager, toolGroupService, commandsManager); initMPRToolGroup(extensionManager, toolGroupService, commandsManager); initVolume3DToolGroup(extensionManager, toolGroupService); } export default initToolGroups;