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.
101 lines
2.5 KiB
101 lines
2.5 KiB
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
|
|
}
|
|
|
|
|