diff --git a/dicom-viewer/src/App.tsx b/dicom-viewer/src/App.tsx index dc7f8ea..74c1a82 100644 --- a/dicom-viewer/src/App.tsx +++ b/dicom-viewer/src/App.tsx @@ -24,6 +24,7 @@ const { IMAGE_RENDERED } = Enums.Events; const STACK_TOOL_GROUP_ID = 'STACK_TOOL_GROUP_ID'; const VOLUME_TOOL_GROUP_ID = 'VOLUME_TOOL_GROUP_ID'; +const REFERENCE_TOOL_GROUP_ID = 'REFERENCE_TOOL_GROUP_ID'; // Common CT presets (add more as needed) const WINDOW_LEVEL_PRESETS = [ @@ -487,8 +488,8 @@ function App() { } // --- In your setup function, use the correct tool group per viewport --- - const { stackToolGroup, volumeToolGroup } = ToolGroupManager.getToolGroup(STACK_TOOL_GROUP_ID) - ? { stackToolGroup: ToolGroupManager.getToolGroup(STACK_TOOL_GROUP_ID), volumeToolGroup: ToolGroupManager.getToolGroup(VOLUME_TOOL_GROUP_ID) } + const { stackToolGroup, volumeToolGroup, referenceToolGroup } = ToolGroupManager.getToolGroup(STACK_TOOL_GROUP_ID) + ? { stackToolGroup: ToolGroupManager.getToolGroup(STACK_TOOL_GROUP_ID), volumeToolGroup: ToolGroupManager.getToolGroup(VOLUME_TOOL_GROUP_ID), referenceToolGroup: ToolGroupManager.getToolGroup(REFERENCE_TOOL_GROUP_ID) } : setupTools(); @@ -498,29 +499,14 @@ function App() { // --- In your setup function, after tool group creation, enable/disable ReferenceLinesTool for each tool group --- if (referenceLinesEnabled) { - if (!stackToolGroup.hasTool(ReferenceLinesTool.toolName)) { - stackToolGroup.addTool(ReferenceLinesTool.toolName); - } - if (!volumeToolGroup.hasTool(ReferenceLinesTool.toolName)) { - volumeToolGroup.addTool(ReferenceLinesTool.toolName); - } - // Set the active viewport as the source for reference lines const sourceViewportId = `CT_${activeViewport}`; - stackToolGroup.setToolConfiguration(ReferenceLinesTool.toolName, { + referenceToolGroup.setToolEnabled(ReferenceLinesTool.toolName); + referenceToolGroup.setToolConfiguration(ReferenceLinesTool.toolName, { sourceViewportId, }); - volumeToolGroup.setToolConfiguration(ReferenceLinesTool.toolName, { - sourceViewportId, - }); - stackToolGroup.setToolEnabled(ReferenceLinesTool.toolName); - volumeToolGroup.setToolEnabled(ReferenceLinesTool.toolName); } else { - if (stackToolGroup.hasTool(ReferenceLinesTool.toolName)) { - stackToolGroup.setToolDisabled(ReferenceLinesTool.toolName); - } - if (volumeToolGroup.hasTool(ReferenceLinesTool.toolName)) { - volumeToolGroup.setToolDisabled(ReferenceLinesTool.toolName); - } + referenceToolGroup.setToolDisabled(ReferenceLinesTool.toolName); + } // 6. Enable and configure each viewport @@ -560,6 +546,7 @@ function App() { // Add tool group only once toolGroup.addViewport(viewportId, renderingEngineId); + referenceToolGroup.addViewport(viewportId, renderingEngineId); const viewport = renderingEngine.getViewport(viewportId); @@ -1787,7 +1774,7 @@ function setupTools() { stackToolGroup.addTool(PlanarFreehandROITool.toolName, { calculateStats: false }); stackToolGroup.addTool(PlanarFreehandContourSegmentationTool.toolName, {}); stackToolGroup.addTool(SculptorTool.toolName, {}); - stackToolGroup.addTool(ReferenceLinesTool.toolName); + //stackToolGroup.addTool(ReferenceLinesTool.toolName); // StackScrollTool mouse wheel binding stackToolGroup.setToolActive(StackScrollTool.toolName, { bindings: [{ mouseButton: MouseBindings.Wheel }], @@ -1811,9 +1798,15 @@ function setupTools() { volumeToolGroup.addTool(PlanarFreehandROITool.toolName, { calculateStats: false }); volumeToolGroup.addTool(PlanarFreehandContourSegmentationTool.toolName, {}); volumeToolGroup.addTool(SculptorTool.toolName, {}); - volumeToolGroup.addTool(ReferenceLinesTool.toolName); + //volumeToolGroup.addTool(ReferenceLinesTool.toolName); //volumeToolGroup.addTool(CrosshairsTool.toolName, {}); } - return { stackToolGroup, volumeToolGroup }; + let referenceToolGroup = ToolGroupManager.getToolGroup(REFERENCE_TOOL_GROUP_ID); + if (!referenceToolGroup) { + referenceToolGroup = ToolGroupManager.createToolGroup(REFERENCE_TOOL_GROUP_ID); + referenceToolGroup.addTool(ReferenceLinesTool.toolName); + } + + return { stackToolGroup, volumeToolGroup, referenceToolGroup }; }