[Keith Vetter] 20050105 : After writing [Spotlight], I realized that it would be trivial to modify it to become a magnifying glass instead. Unlike [Spotlight], this affect is much less dependent on your computer power since it can leverage built in [image scaling]. Again, I've included an image for demo purposes but you can easily insert your own image by editing the script and changing what '''::img::img''' is. See also [A little magnifying glass]. [JH] The [treectrl] package has a loupe command hidden in it that works as a C-based x-platform magnifying glass. You can see this used in tklib's widget::(screen)ruler widgets. ---- ====== ##+########################################################################## # # Magnify.tcl -- Aims a magnifying glass at an image # by Keith Vetter, January 2006 # package require Tk package require Img set S(sz) 120 ;# Size of magnifying square set S(sz2) [expr {$S(sz)/2}] set S(zoom) 2 set S(zsize) [expr {$S(sz)/2/$S(zoom)}] proc DoDisplay {} { global S wm title . "Magnifying Glass" 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 .zoom -label "Zoom" -from 2 -to 8 -showvalue 0 \ -variable S(zoom) -orient h -command FMove -relief raised .zoom configure -font "[font actual [.zoom cget -font]] -weight bold" option add *font [.zoom cget -font] button .about -text "About" -command About pack .c .buttons -side top -fill both -expand 1 pack .zoom .about -side left -expand 1 -in .buttons .c create rect -100 -100 -100 -100 -tag box -fill {} -outline black -width 2 bind .c [list MMove %x %y] bind .c [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. set xy [list [expr {$x-$S(zsize)}] [expr {$y-$S(zsize)}] \ [expr {$x+$S(zsize)}] [expr {$y+$S(zsize)}]] catch { eval ::img::small copy ::img::img -from $xy -zoom $S(zoom) $S(zoom) } } proc FMove {args} { set ::S(zsize) [expr {$::S(sz)/2/$::S(zoom)}] .zoom config -label "Zoom: $::S(zoom)" foreach var {x y} val [.c coords small] { set $var [expr {int($val)}] } MMove $x $y } proc About {} { set msg "Magnifying Glass\nby Keith Vetter, January 2006" tk_messageBox -message $msg } ################################################################ set idata { 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} ################################################################ image create photo ::img::img -data $idata 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 ====== <> Image Processing