shearVmode

$canvaseditor shearVmode mode
manages canvas bindings to interactive shear of selected objects

obj method canvaseditor shearVmode {{mode parallel}} {
  set canvas [my canvas]
  $self selected dots storeXY
  $self selected calcCenter
  $self selected blink off
  $self snapMode on
  #
  set nDot [$self nearestDot -selected]
  $self pointerToDot $nDot
  $self memory currentDot $nDot
  $self memory transformation "shear vertical $mode"
  #
  set left [[$self leftmostDot -gravity] cget -x]
  set right [[$self rightmostDot -gravity] cget -x]
  set center [expr {($left + $right) / 2}]
  if {[$nDot cget -x] < $center} then {
    set BaseX $right
  } else {
    set BaseX $left
  }
  #
  $self basicBindings off
  $self statusLine Shear objects vertical $mode
  #
  $self memory before [$self undoRedoCode]
  #
  set nDotX [$nDot cget -x]
  set nDotY [$nDot cget -y]
  after idle [list bind $canvas <Motion> [subst -nocommand {
    $self shearVselection\
        [$self canvasx %x] [$self canvasy %y]\
        $nDotX $nDotY $BaseX $mode
    }]]
  bind $canvas <<Click>> "
    $self finishTransform
    "
}

© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z