File: dentalscan.tcl

package info (click to toggle)
blt 3.0~1%2B08570046%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 45,556 kB
  • sloc: ansic: 278,852; tcl: 96,434; sh: 3,410; makefile: 2,026; cpp: 374
file content (133 lines) | stat: -rw-r--r-- 3,725 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package require BLT
source ./data/dentalscan.tcl 

#option add *Axis.tickDirection in

blt::vector create dentalscan
dentalscan set $data

set mesh [blt::mesh create regular regular -x "0 512 512" -y "0 512 512"]

blt::contour .g -highlightthickness 0

set palette spectral.rgb
.g element create myContour -values dentalscan -mesh $mesh 
.g isoline steps 6 -element myContour
.g legend configure -hide yes
.g axis configure z \
	-palette $palette \
	-margin left \
	-colorbarthickness 20 
proc UpdateColors {} {
     global usePaletteColors
     if { $usePaletteColors } {
        .g element configure myContour -color palette -fill palette
    } else {
        .g element configure myContour -color black -fill red
    }
}
proc FixPalette {} {
    global usePalette
    .g axis configure z -palette $usePalette
    .g2 axis configure x -palette $usePalette
}

proc Fix { what } {
    global show
    set bool $show($what)
    .g element configure myContour -show$what $bool
}

array set show {
    boundary 0
    values 0
    symbols 0
    isolines 0
    colormap 0
    symbols 0
    wireframe 0
}

blt::tk::checkbutton .boundary -text "Boundary" -variable show(boundary) \
    -command "Fix boundary"
blt::tk::checkbutton .wireframe -text "Wireframe" -variable show(wireframe) \
    -command "Fix wireframe"
blt::tk::checkbutton .colormap -text "Colormap"  \
    -variable show(colormap) -command "Fix colormap"
blt::tk::checkbutton .isolines -text "Isolines" \
    -variable show(isolines) -command "Fix isolines"
blt::tk::checkbutton .values -text "Values" \
    -variable show(values) -command "Fix values"
blt::tk::checkbutton .symbols -text "Symbols" \
    -variable show(symbols) -command "Fix symbols"
blt::tk::checkbutton .interp -text "Use palette colors" \
    -variable usePaletteColors -command "UpdateColors"

blt::combobutton .palettes \
    -textvariable usePalette \
    -relief sunken \
    -background white \
    -arrowon yes \
    -menu .palettes.menu 

blt::tk::label .palettesl -text "Palettes" 

blt::combomenu .palettes.menu \
    -background white \
    -textvariable usePalette  \
    -height 200 \
    -yscrollbar .palettes.menu.ybar \
    -xscrollbar .palettes.menu.xbar

blt::tk::scrollbar .palettes.menu.xbar 
blt::tk::scrollbar .palettes.menu.ybar

foreach pal [blt::palette names] {
    set pal [string trim $pal ::]
    lappend palettes $pal
}
.palettes.menu listadd [lsort -dictionary $palettes] -command FixPalette
set usePalette $palette

blt::table . \
    1,0 .g -fill both -rowspan 10 \
    1,1 .boundary -anchor w \
    2,1 .colormap -anchor w \
    3,1 .isolines -anchor w \
    4,1 .wireframe -anchor w  \
    5,1 .symbols -anchor w \
    6,1 .values -anchor w  \
    7,1 .interp -anchor w \
    8,1 .palettesl -anchor w  \
    9,1 .palettes -fill x 

foreach key [array names show] {
    set show($key) [.g element cget myContour -show$key]
}

Blt_ZoomStack .g

set numBins 256
set min [dentalscan min]
set max [dentalscan max]
set freq [blt::vector create]
# Get a histogram of the dental scan values
$freq frequency dentalscan $numBins
set w [expr ($max - $min) / double($numBins)]
# Compute the location for the bins within the range of values
set x [blt::vector create]
$x linspace [expr $min + ($w * 0.5)] [expr $max - ($w - 0.5)] $numBins

blt::graph .g2 \
    -height 1i -highlightthickness 0 
.g2 axis configure x -stepsize 0  -palette $palette -loose no
.g2 axis configure y -logscale yes -grid no -subdivisions 0
.g2 element create hist -x $x -y $freq -colormap x  -symbol scross -pixels 1
.g2 legend configure -hide yes
Blt_ZoomStack .g2

blt::table . \
    11,0 .g2 -fill both 

blt::table configure . r* c* -resize none
blt::table configure . c0 r10 r11 -resize both