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 }