From e3f769b967c96d858028ee0178e3a5814dcda9c1 Mon Sep 17 00:00:00 2001 From: Ivica Ico Bukvic <ico@vt.edu> Date: Thu, 6 Dec 2012 20:04:51 -0500 Subject: [PATCH] improved getscroll logic to also take images into account --- pd/src/pd.tk | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/pd/src/pd.tk b/pd/src/pd.tk index eefabb320..ffd1a3370 100644 --- a/pd/src/pd.tk +++ b/pd/src/pd.tk @@ -3453,19 +3453,6 @@ proc pdtk_canvas_getscroll {name} { foreach item [$name find withtag {(!noscroll)}] { switch -exact [$name type $item] { - "arc" - - "line" - - "oval" - - "polygon" - - "rectangle" { - set coords [$name coords $item] - foreach {x y} $coords { - if { $x < $x1 } {set x1 $x} - if { $x > $x2 } {set x2 $x} - if { $y < $y1 } {set y1 $y} - if { $y > $y2 } {set y2 $y} - } - } "text" { set size [$name bbox $item] if { [$name itemcget $item -text] != ""} { @@ -3479,6 +3466,37 @@ proc pdtk_canvas_getscroll {name} { } } } + "image" { + set imgtags [$name gettags $item] + set imgtag [lindex $imgtags 0] + set anchor [$name itemcget $imgtag -anchor] + set img [$name itemcget $imgtag -image] + set imgh [image height $img] + set imgw [image width $img] + set center [$name coords $item] + set coords [list \ + [expr [lindex $center 0] - [expr $imgw/2]] \ + [expr [lindex $center 1] - [expr $imgh/2]] \ + [expr [lindex $center 0] + [expr $imgw/2]] \ + [expr [lindex $center 1] + [expr $imgh/2]] \ + ] + foreach {x y} $coords { + if { $x < $x1 } {set x1 $x} + if { $x > $x2 } {set x2 $x} + if { $y < $y1 } {set y1 $y} + if { $y > $y2 } {set y2 $y} + } + } + default { + set coords [$name coords $item] + foreach {x y} $coords { + if { $x < $x1 } {set x1 $x} + if { $x > $x2 } {set x2 $x} + if { $y < $y1 } {set y1 $y} + if { $y > $y2 } {set y2 $y} + } + } + } } -- GitLab