feat(window-level-region): add window level region tool (#4127)
This commit is contained in:
parent
4761bbf0c8
commit
ab1a18af5a
@ -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,
|
||||
};
|
||||
|
||||
|
||||
@ -83,6 +83,7 @@ function modeFactory() {
|
||||
'MeasurementTools',
|
||||
'Zoom',
|
||||
'WindowLevel',
|
||||
'WindowLevelRegion',
|
||||
'Pan',
|
||||
'Capture',
|
||||
'Layout',
|
||||
|
||||
@ -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: [
|
||||
{
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -100,6 +100,7 @@ function modeFactory({ modeConfiguration }) {
|
||||
'Pan',
|
||||
'TrackballRotate',
|
||||
'WindowLevel',
|
||||
'WindowLevelRegion',
|
||||
'Capture',
|
||||
'Layout',
|
||||
'Crosshairs',
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -66,6 +66,7 @@ function modeFactory({ modeConfiguration }) {
|
||||
|
||||
toolbarService.createButtonSection('primary', [
|
||||
'WindowLevel',
|
||||
'WindowLevelRegion',
|
||||
'Pan',
|
||||
'Zoom',
|
||||
'TrackballRotate',
|
||||
|
||||
@ -87,6 +87,7 @@ function createTools(utilityModule) {
|
||||
{ toolName: toolNames.StackScroll },
|
||||
{ toolName: toolNames.Magnify },
|
||||
{ toolName: toolNames.SegmentationDisplay },
|
||||
{ toolName: toolNames.WindowLevelRegion },
|
||||
|
||||
{ toolName: toolNames.UltrasoundDirectional },
|
||||
],
|
||||
|
||||
@ -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',
|
||||
|
||||
14
platform/ui/src/assets/icons/tool-cobb-angle.svg
Normal file
14
platform/ui/src/assets/icons/tool-cobb-angle.svg
Normal 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 |
12
platform/ui/src/assets/icons/tool-window-region.svg
Normal file
12
platform/ui/src/assets/icons/tool-window-region.svg
Normal 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 |
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user