19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# Boston, MA 02111-1307, USA.
#
#----------------------------------------------------------------------
# $Revision$
#----------------------------------------------------------------------
proc createMap {top} {
set w $top.c_map
canvas $w -width 6 -bd 0 -selectborderwidth 0 -highlightthickness 0
set map [image create photo map$top]
$w create image 0 0 -anchor nw -image $map
bind $w <Destroy> [list image delete $map]
bind $w <Configure> [list drawMap $top %h]
return $w
}
proc clearMap {top} {
set ::diff($top,changes) {}
set ::diff($top,mapMax) 0
|
>
>
>
>
>
>
>
|
>
|
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
|
# Boston, MA 02111-1307, USA.
#
#----------------------------------------------------------------------
# $Revision$
#----------------------------------------------------------------------
proc createMap {top} {
global Pref
set w $top.c_map
if {$Pref(wideMap)} {
set width 20
} else {
set width 6
}
canvas $w -width $width -bd 0 -selectborderwidth 0 -highlightthickness 0
set map [image create photo map$top]
$w create image 0 0 -anchor nw -image $map
bind $w <Destroy> [list image delete $map]
bind $w <Configure> [list drawMap $top %h]
bind $w <Button-2> [list ThumbMap $top %y]
return $w
}
proc clearMap {top} {
set ::diff($top,changes) {}
set ::diff($top,mapMax) 0
|
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
|
global Pref
set oldh [map$top cget -height]
if {$oldh == $newh} return
map$top blank
if {![info exists ::diff($top,changes)] || \
[llength $::diff($top,changes)] == 0} return
set w [winfo width $top.c_map]
set h [winfo height $top.c_map]
set x2 [expr {$w - 1}]
map$top configure -width $w -height $h
incr h -1
foreach change $::diff($top,changes) {
foreach {start length type dum1 dum2 dum3 dum4} $change break
set y1 [expr {$start * $h / $::diff($top,mapMax) + 1}]
if {$y1 < 1} {set y1 1}
if {$y1 > $h} {set y1 $h}
set y2 [expr {($start + $length) * $h / $::diff($top,mapMax) + 1}]
if {$y2 < 1} {set y2 1}
if {$y2 <= $y1} {set y2 [expr {$y1 + 1}]}
if {$y2 > $h} {set y2 $h}
incr y2
map$top put $Pref(color$type) -to 1 $y1 $x2 $y2
}
}
|
|
|
>
>
|
|
>
|
|
|
|
|
|
|
|
>
>
|
>
>
>
>
>
>
>
|
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
|
global Pref
set oldh [map$top cget -height]
if {$oldh == $newh} return
map$top blank
if {![info exists ::diff($top,changes)] || \
[llength $::diff($top,changes)] == 0} return
set w [winfo width $top.c_map]
set h [winfo height $top.c_map]
set x2 [expr {$w - ($Pref(wideMap) ? 5 : 1)}]
if {$x2 < 0} { set x2 0 }
map$top configure -width $w -height $h
incr h -1
set y0 0
foreach change $::diff($top,changes) {
foreach {start length type dum1 dum2 dum3 dum4} $change break
set y1 [expr {$start * $h / $::diff($top,mapMax) + 1}]
if {!$y0} { set y0 $y1 } ;# Record first occurance
if {$y1 < 1} {set y1 1}
if {$y1 > $h} {set y1 $h}
set y2 [expr {($start + $length) * $h / $::diff($top,mapMax) + 1}]
if {$y2 < 1} {set y2 1}
if {$y2 <= $y1} {set y2 [expr {$y1 + 1}]}
if {$y2 > $h} {set y2 $h}
incr y2
map$top put $Pref(color$type) -to 1 $y1 $x2 $y2
}
if {$Pref(wideMap)} {
map$top put black -to $x2 $y0 $w $y2
}
}
# Allow button 2 on map to jump to a position
proc ThumbMap {top y} {
incr y 15
::tk::ScrollButton2Down $top.sby 0 $y
}
|