Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.5 KiB

2 years ago
package require vtkinteraction
# a simple user interface that manipulates window level.
# places in the tcl top window. Looks for object named viewer
#only use this interface when not doing regression tests
if {[info commands rtExMath] != "rtExMath"} {
# Take window level parameters from viewer
proc InitializeWindowLevelInterface {} {
global viewer sliceNumber
# Get parameters from viewer
set w [viewer GetColorWindow]
set l [viewer GetColorLevel]
set sliceNumber [viewer GetZSlice]
set zMin [viewer GetWholeZMin]
set zMax [viewer GetWholeZMax]
# set zMin 0
# set zMax 128
frame .slice
label .slice.label -text "Slice"
scale .slice.scale -from $zMin -to $zMax -orient horizontal \
-command SetSlice -variable sliceNumber
# button .slice.up -text "Up" -command SliceUp
# button .slice.down -text "Down" -command SliceDown
frame .wl
frame .wl.f1
label .wl.f1.windowLabel -text "Window"
scale .wl.f1.window -from 1 -to [expr $w * 2] -orient horizontal \
-command SetWindow -variable window
frame .wl.f2
label .wl.f2.levelLabel -text "Level"
scale .wl.f2.level -from [expr $l - $w] -to [expr $l + $w] \
-orient horizontal -command SetLevel
checkbutton .wl.video -text "Inverse Video" -command SetInverseVideo
# resolutions less than 1.0
if {$w < 10} {
set res [expr 0.05 * $w]
.wl.f1.window configure -resolution $res -from $res -to [expr 2.0 * $w]
.wl.f2.level configure -resolution $res \
-from [expr 0.0 + $l - $w] -to [expr 0.0 + $l + $w]
}
.wl.f1.window set $w
.wl.f2.level set $l
frame .ex
button .ex.exit -text "Exit" -command "exit"
pack .slice .wl .ex -side top
pack .slice.label .slice.scale -side left
pack .wl.f1 .wl.f2 .wl.video -side top
pack .wl.f1.windowLabel .wl.f1.window -side left
pack .wl.f2.levelLabel .wl.f2.level -side left
pack .ex.exit -side left
}
proc SetSlice { slice } {
global sliceNumber viewer
viewer SetZSlice $slice
viewer Render
}
proc SetWindow window {
global viewer video
if {$video} {
viewer SetColorWindow [expr -$window]
} else {
viewer SetColorWindow $window
}
viewer Render
}
proc SetLevel level {
global viewer
viewer SetColorLevel $level
viewer Render
}
proc SetInverseVideo {} {
global viewer video window
if {$video} {
viewer SetColorWindow [expr -$window]
} else {
viewer SetColorWindow $window
}
viewer Render
}
InitializeWindowLevelInterface
} else {
viewer Render
}