movpos-button-setdisplay $mid
}
-proc movpos-bindkey-1 {cpage key adjx adjy seg feat} {
+proc movpos-bindkey-1 {cpage key seg feat adj0x adj0y adj1x adj1y} {
global posdeviation picturepadx picturepady
manyset [subseg-end-get-centroid $cpage $seg $feat {}] mx my
set mid $seg/$feat
- addexpr mx $adjx
- addexpr my $adjy
foreach posn {0 1} {
manyset [subseg-end-get-centroid $cpage $seg $feat $posn] x y
set dx [expr {$x-$mx}]; set dy [expr {$y-$my}]
set d [expr {sqrt($dx*$dx + $dy*$dy)}]
set mul [expr {$posdeviation / ($d + 1e-6)}]
- set x [expr {$mx + $mul*$dx + $picturepadx}]
- set y [expr {$my + $mul*$dy + $picturepady}]
+ set x [expr {$mx + $mul*$dx + $picturepadx + [set adj${posn}x]}]
+ set y [expr {$my + $mul*$dy + $picturepady + [set adj${posn}y]}]
lappend poslocs [list $x $y]
}
- lappend poslocs [list [expr {$mx + $picturepadx}] \
- [expr {$my + $picturepady}]]
+ lappend poslocs [list [expr {$mx + $picturepadx + ($adj0x+$adj1x)*0.5}] \
+ [expr {$my + $picturepady + ($adj0y+$adj1y)*0.5}]]
upvar #0 mp_details($mid) details
set details [list $cpage $key $seg $feat $poslocs]
return
}
foreach binding $bindings {
- if {[regexp {^([A-Z])([-+]\d*)?([-+]\d+)?\=(\w+)/([A-Z]+)$} \
- $binding dummy key adjx adjy seg feat]} {
- movpos-bindkey-1 $cpage $key $adjx.0 $adjy.0 $seg $feat
+ if {[regexp \
+ {^([A-Z])([-+]\d*)?([-+]\d*)?([-+]\d*)?([-+]\d*)?\=(\w+)/([A-Z]+)$} \
+ $binding dummy key adj0x adj0y adj1x adj1y seg feat]} {
+ if {![string length $adj1x]} { set adj1x $adj0x; set adj1y $adj0y }
+ movpos-bindkey-1 $cpage $key $seg $feat \
+ $adj0x.0 $adj0y.0 $adj1x.0 $adj1y.0
} elseif {[regexp {^[A-Z]$} $binding] || [regexp {~} $binding]} {
} else {
error "incomprehensible binding $binding on page $cpage"