For options -selected, -unselected see dots
obj method canvaseditor nearestDot args {
lappend options
lappend dotOptions
while {[string index $args 0] eq "-"} {
set args [lassign $args option]
if {$option in { -x -y -far }} then {
lappend options $option
} else {
lappend dotOptions $option
}
}
set dots [$self dots {*}$dotOptions]
lassign [pointerXY] px py
set li [lmap dot $dots {
lassign [$dot xy pointer] dotx doty
set dx [abs [- $dotx $px]]
set dy [abs [- $doty $py]]
set hyp [hypot $dx $dy]
list $dot $dx $dy $hyp
}]
if {"-x" in $options} then {
set li1 [lsort -real -index 1 $li]
} elseif {"-y" in $options} then {
set li1 [lsort -real -index 2 $li]
} else {
set li1 [lsort -real -index 3 $li]
}
if {"-far" in $options} then {
[lindex $li1 end 0] {*}$args
} else {
[lindex $li1 0 0] {*}$args
}
}
© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z