uniquename 2013aug18:For readers who do not have the time/facilities/whatever to setup the following code and execute it, here is an image to show what the code does.
##+##########################################################################
#
# Spotlight.tcl -- Shines a spotlight on a image
# by Keith Vetter, January 2006
#
package require Tk
package require Img
set S(sz) 60 ;# Size of spotlight square
set S(sz2) [expr {$S(sz)/2}]
set S(sz22) [expr {$S(sz2)*$S(sz2)}] ;# Square of radius
set S(brightness) 200 ;# How bright the spotlight
set S(dark) 0 ;# Dark image flag
set S(darker) 50 ;# How much to darken image by
proc DoDisplay {} {
global S
wm title . "Spotlight"
canvas .c -width $S(w) -height $S(h) -highlightthickness 0
.c create image 0 0 -image ::img::img -anchor nw
.c create image 0 0 -image ::img::small -anchor c -tag small
frame .buttons -bd 2 -relief ridge
scale .bright -label "Brighness %" -from 0 -to 800 \
-variable S(brightness) -orient h -command FMove -relief raised
.bright configure -font "[font actual [.bright cget -font]] -weight bold"
option add *font [.bright cget -font]
checkbutton .dark -text "Darkened Image" -variable S(dark) \
-relief raised -command DarkenOriginal
button .about -text "About" -command About
pack .c .buttons -side top -fill both -expand 1
pack .bright .dark .about -side left -expand 1 -in .buttons
.c create oval -100 -100 -100 -100 -tag box -fill {} -outline black -width 2
bind .c <Motion> [list MMove %x %y]
bind .c <Leave> [list MLeave]
update
MLeave
}
proc MLeave {} {
.c coords box -100 -100 -100 -100
.c coords small -1000 -1000
}
proc MMove {x y} {
global S
.c coords small $x $y
set xy [list [expr {$x-$S(sz2)}] [expr {$y-$S(sz2)}] [expr {$x+$S(sz2)}] [expr {$y+$S(sz2)}]]
.c coords box $xy
# Bug here when xy extends past edge of image. Too lazy to fix it.
catch {
eval ::img::small copy ::img::img -from $xy
Recolor ::img::small $S(brightness)
}
}
proc FMove {args} {
foreach var {x y} val [.c coords small] {
set $var [expr {int($val)}]
}
MMove $x $y
}
proc Recolor {img perc {circle 1}} {
set w [image width $img]
set h [image height $img]
set cx [expr {$w/2}]
set cy [expr {$h/2}]
set d 0
for {set x0 0; set x1 1} {$x0 < $w-2} {incr x0; incr x1} {
set data [$img data -from $x0 0 $x1 $h]
set y0 -1
foreach rgb $data {
incr y0
if {$circle} {
set d [expr {(($x0-$cx)*($x0-$cx)) + (($y0-$cy)*($y0-$cy))}]
}
if {$d <= $::S(sz22)} {
lset data $y0 [::tk::Darken $rgb $perc]
}
}
$img put $data -to $x0 0
}
}
proc DarkenOriginal {} {
if {[lsearch [image names] ::img::dark] == -1} {
image create photo ::img::dark
::img::dark copy ::img::org
destroy .warn
toplevel .warn
wm transient .warn .
wm title .warn "Spotlight"
wm protocol .warn WM_DELETE_WINDOW list
label .warn.l1 -text "Please Wait" -fg red -font {Helvetica 36 bold}
label .warn.l2 -text "This may take a while" -font {Helvetica 18 bold} \
-anchor w
grid rowconfigure .warn 0 -minsize 15
grid .warn.l1 -row 2 -padx 20
grid .warn.l2 -row 3
grid rowconfigure .warn 999 -minsize 20
wm withdraw .warn
update
set x [expr {[winfo rootx .] + [winfo width .]/2 - [winfo width .warn]/2}]
set y [expr {[winfo rooty .] + 40}]
wm geom .warn +$x+$y
wm deiconify .warn
update
Recolor ::img::dark $::S(darker) 0
destroy .warn
}
if {$::S(dark)} {
::img::img copy ::img::dark
set ::S(brightness) [expr {$::S(brightness) / $::S(darker) * 100}]
} else {
::img::img copy ::img::org
set ::S(brightness) [expr {$::S(brightness) * $::S(darker) / 100}]
}
}
proc About {} {
set msg "Spotlight\nby Keith Vetter, January 2006"
tk_messageBox -message $msg
}
################################################################
set idata {
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}
################################################################
image create photo ::img::org -data $idata
image create photo ::img::img
::img::img copy ::img::org
image create photo ::img::small -width $S(sz) -height $S(sz)
set S(w) [image width ::img::img]
set S(h) [image height ::img::img]
DoDisplay
return
