feat(window-level-region): add window level region tool (#4127)

This commit is contained in:
Ibrahim 2024-06-05 09:50:22 -04:00 committed by GitHub
parent 4761bbf0c8
commit ab1a18af5a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 75 additions and 3 deletions

View File

@ -37,6 +37,7 @@ import {
SplineROITool,
LivewireContourTool,
OrientationMarkerTool,
WindowLevelRegionTool,
} from '@cornerstonejs/tools';
import CalibrationLineTool from './tools/CalibrationLineTool';
@ -84,6 +85,7 @@ export default function initCornerstoneTools(configuration = {}) {
addTool(SplineROITool);
addTool(LivewireContourTool);
addTool(OrientationMarkerTool);
addTool(WindowLevelRegionTool);
addTool(PlanarFreehandContourSegmentationTool);
// Modify annotation tools to use dashed lines on SR
@ -138,6 +140,7 @@ const toolNames = {
LivewireContour: LivewireContourTool.toolName,
PlanarFreehandROI: PlanarFreehandROITool.toolName,
OrientationMarker: OrientationMarkerTool.toolName,
WindowLevelRegion: WindowLevelRegionTool.toolName,
PlanarFreehandContourSegmentation: PlanarFreehandContourSegmentationTool.toolName,
};

View File

@ -83,6 +83,7 @@ function modeFactory() {
'MeasurementTools',
'Zoom',
'WindowLevel',
'WindowLevelRegion',
'Pan',
'Capture',
'Layout',

View File

@ -62,7 +62,7 @@ function initDefaultToolGroup(extensionManager, toolGroupService, commandsManage
{ toolName: toolNames.Angle },
{ toolName: toolNames.Magnify },
{ toolName: toolNames.SegmentationDisplay },
{ toolName: toolNames.WindowLevelRegion },
{ toolName: toolNames.UltrasoundDirectional },
{ toolName: toolNames.PlanarFreehandROI },
{ toolName: toolNames.SplineROI },
@ -125,6 +125,7 @@ function initSRToolGroup(extensionManager, toolGroupService, commandsManager) {
{ toolName: SRToolNames.SRBidirectional },
{ toolName: SRToolNames.SREllipticalROI },
{ toolName: SRToolNames.SRCircleROI },
{ toolName: toolNames.WindowLevelRegion },
],
enabled: [
{
@ -193,6 +194,7 @@ function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {
{ toolName: toolNames.StackScroll },
{ toolName: toolNames.Angle },
{ toolName: toolNames.SegmentationDisplay },
{ toolName: toolNames.WindowLevelRegion },
],
disabled: [
{

View File

@ -137,7 +137,7 @@ const moreTools = [
}),
createButton({
id: 'CobbAngle',
icon: 'tool-angle',
icon: 'icon-tool-cobb-angle',
label: 'Cobb Angle',
tooltip: 'Cobb Angle',
commands: setToolActiveToolbar,

View File

@ -167,6 +167,16 @@ const toolbarButtons: Button[] = [
],
},
},
{
id: 'WindowLevelRegion',
uiType: 'ohif.radioGroup',
props: {
icon: 'icon-tool-window-region',
label: 'Window Level Region',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
},
},
// Pan...
{
id: 'Pan',

View File

@ -100,6 +100,7 @@ function modeFactory({ modeConfiguration }) {
'Pan',
'TrackballRotate',
'WindowLevel',
'WindowLevelRegion',
'Capture',
'Layout',
'Crosshairs',

View File

@ -87,6 +87,7 @@ function initDefaultToolGroup(
{ toolName: toolNames.PlanarFreehandROI },
{ toolName: toolNames.SplineROI },
{ toolName: toolNames.LivewireContour },
{ toolName: toolNames.WindowLevelRegion },
],
enabled: [{ toolName: toolNames.ImageOverlayViewer }, { toolName: toolNames.ReferenceLines }],
disabled: [
@ -153,6 +154,7 @@ function initSRToolGroup(extensionManager, toolGroupService) {
{ toolName: SRToolNames.SRCircleROI },
{ toolName: SRToolNames.SRPlanarFreehandROI },
{ toolName: SRToolNames.SRRectangleROI },
{ toolName: toolNames.WindowLevelRegion },
{
toolName: SRToolNames.SRPlanarFreehandContourSegmentation,
configuration: {
@ -236,6 +238,7 @@ function initMPRToolGroup(extensionManager, toolGroupService, commandsManager, m
{ toolName: toolNames.CobbAngle },
{ toolName: toolNames.PlanarFreehandROI },
{ toolName: toolNames.SegmentationDisplay },
{ toolName: toolNames.WindowLevelRegion },
{
toolName: toolNames.PlanarFreehandContourSegmentation,
configuration: {

View File

@ -137,7 +137,7 @@ const moreTools = [
}),
createButton({
id: 'CobbAngle',
icon: 'tool-angle',
icon: 'icon-tool-cobb-angle',
label: 'Cobb Angle',
tooltip: 'Cobb Angle',
commands: setToolActiveToolbar,

View File

@ -129,6 +129,16 @@ const toolbarButtons: Button[] = [
evaluate: 'evaluate.cornerstoneTool',
},
},
{
id: 'WindowLevelRegion',
uiType: 'ohif.radioGroup',
props: {
icon: 'icon-tool-window-region',
label: 'Window Level Region',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
},
},
// Pan...
{
id: 'Pan',

View File

@ -66,6 +66,7 @@ function modeFactory({ modeConfiguration }) {
toolbarService.createButtonSection('primary', [
'WindowLevel',
'WindowLevelRegion',
'Pan',
'Zoom',
'TrackballRotate',

View File

@ -87,6 +87,7 @@ function createTools(utilityModule) {
{ toolName: toolNames.StackScroll },
{ toolName: toolNames.Magnify },
{ toolName: toolNames.SegmentationDisplay },
{ toolName: toolNames.WindowLevelRegion },
{ toolName: toolNames.UltrasoundDirectional },
],

View File

@ -38,6 +38,16 @@ const toolbarButtons: Button[] = [
evaluate: 'evaluate.cornerstoneTool',
},
},
{
id: 'WindowLevelRegion',
uiType: 'ohif.radioGroup',
props: {
icon: 'icon-tool-window-region',
label: 'Window Level Region',
commands: setToolActiveToolbar,
evaluate: 'evaluate.cornerstoneTool',
},
},
{
id: 'Pan',
uiType: 'ohif.radioGroup',

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>tool-cobb-angle</title>
<g id="tool-cobb-angle" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" x="0" y="0" width="28" height="28"></rect>
<g id="Group" transform="translate(6.5, 0.68)" fill="currentColor">
<path d="M8.5,10.1817844 C9.88071187,10.1817844 11,11.3010725 11,12.6817844 L11,13.6817844 C11,15.0624963 9.88071187,16.1817844 8.5,16.1817844 L2.5,16.1817844 C1.11928813,16.1817844 0,15.0624963 0,13.6817844 L0,12.6817844 C0,11.3010725 1.11928813,10.1817844 2.5,10.1817844 L8.5,10.1817844 Z M8.5,11.6817844 L2.5,11.6817844 C1.94771525,11.6817844 1.5,12.1294997 1.5,12.6817844 L1.5,13.6817844 C1.5,14.2340692 1.94771525,14.6817844 2.5,14.6817844 L8.5,14.6817844 C9.05228475,14.6817844 9.5,14.2340692 9.5,13.6817844 L9.5,12.6817844 C9.5,12.1294997 9.05228475,11.6817844 8.5,11.6817844 Z" id="Rectangle" fill-rule="nonzero"></path>
<circle id="Oval" cx="6.5" cy="8.6976195" r="1"></circle>
<circle id="Oval" cx="6.5" cy="17.6976195" r="1"></circle>
<path d="M11.5,1.70018865 C12.8807119,1.70018865 14,2.81947678 14,4.20018865 L14,5.20018865 C14,6.58090053 12.8807119,7.70018865 11.5,7.70018865 L5.5,7.70018865 C4.11928813,7.70018865 3,6.58090053 3,5.20018865 L3,4.20018865 C3,2.81947678 4.11928813,1.70018865 5.5,1.70018865 L11.5,1.70018865 Z M11.5,3.20018865 L5.5,3.20018865 C4.94771525,3.20018865 4.5,3.6479039 4.5,4.20018865 L4.5,5.20018865 C4.5,5.7524734 4.94771525,6.20018865 5.5,6.20018865 L11.5,6.20018865 C12.0522847,6.20018865 12.5,5.7524734 12.5,5.20018865 L12.5,4.20018865 C12.5,3.6479039 12.0522847,3.20018865 11.5,3.20018865 Z" id="Rectangle" fill-rule="nonzero" transform="translate(8.5, 4.7002) rotate(20) translate(-8.5, -4.7002)"></path>
<path d="M11.5,18.7001887 C12.8807119,18.7001887 14,19.8194768 14,21.2001887 L14,22.2001887 C14,23.5809005 12.8807119,24.7001887 11.5,24.7001887 L5.5,24.7001887 C4.11928813,24.7001887 3,23.5809005 3,22.2001887 L3,21.2001887 C3,19.8194768 4.11928813,18.7001887 5.5,18.7001887 L11.5,18.7001887 Z M11.5,20.2001887 L5.5,20.2001887 C4.94771525,20.2001887 4.5,20.6479039 4.5,21.2001887 L4.5,22.2001887 C4.5,22.7524734 4.94771525,23.2001887 5.5,23.2001887 L11.5,23.2001887 C12.0522847,23.2001887 12.5,22.7524734 12.5,22.2001887 L12.5,21.2001887 C12.5,20.6479039 12.0522847,20.2001887 11.5,20.2001887 Z" id="Rectangle" fill-rule="nonzero" transform="translate(8.5, 21.7002) rotate(-20) translate(-8.5, -21.7002)"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>tool-window-region</title>
<g id="tool-window-region" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" x="0" y="0" width="28" height="28"></rect>
<path d="M10.3460449,22 L4,22 C3.44771525,22 3,21.5522847 3,21 L3,4 C3,3.44771525 3.44771525,3 4,3 L21,3 C21.5522847,3 22,3.44771525 22,4 L22,11.3197021" id="Path" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<g id="Group" transform="translate(14, 15)" fill="currentColor">
<path d="M5.5,-0.75 C8.95177969,-0.75 11.75,2.04822031 11.75,5.5 C11.75,8.95177969 8.95177969,11.75 5.5,11.75 C2.04822031,11.75 -0.75,8.95177969 -0.75,5.5 C-0.75,2.04822031 2.04822031,-0.75 5.5,-0.75 Z M5.5,0.75 C2.87664744,0.75 0.75,2.87664744 0.75,5.5 C0.75,8.12335256 2.87664744,10.25 5.5,10.25 C8.12335256,10.25 10.25,8.12335256 10.25,5.5 C10.25,2.87664744 8.12335256,0.75 5.5,0.75 Z" id="Oval" fill-rule="nonzero"></path>
<path d="M9.61552427,1.85128344 C10.4769151,2.82216322 11,4.09999509 11,5.5 C11,8.53756612 8.53756612,11 5.5,11 C4.09999509,11 2.82216322,10.4769151 1.85128344,9.61552427 Z" id="Combined-Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -173,6 +173,8 @@ import { ReactComponent as iconToolRotate } from './../../assets/icons/tool-3d-r
import { ReactComponent as tab4D } from './../../assets/icons/tab-4d.svg';
import { ReactComponent as investigationalUse } from './../../assets/icons/illustration-investigational-use.svg';
import { ReactComponent as actionNewDialog } from './../../assets/icons/action-new-dialog.svg';
import { ReactComponent as iconToolCobbAngle } from './../../assets/icons/tool-cobb-angle.svg';
import { ReactComponent as iconToolWindowRegion } from './../../assets/icons/tool-window-region.svg';
import CTAAA from './../../assets/icons/CT-AAA.png';
import CTAAA2 from './../../assets/icons/CT-AAA2.png';
@ -358,6 +360,8 @@ const ICONS = {
'icon-tool-spline-roi': iconToolSplineRoi,
'icon-tool-ultrasound-bidirectional': iconToolUltrasoundBidirectional,
'icon-tool-loupe': iconToolLoupe,
'icon-tool-cobb-angle': iconToolCobbAngle,
'icon-tool-window-region': iconToolWindowRegion,
/** Old OHIF */
'old-trash': oldTrash,
'old-play': oldPlay,