handleMoveEvent method

void handleMoveEvent(
  1. PointerMoveEvent event
)

Implementation

void handleMoveEvent(PointerMoveEvent event) {
  if (_old1?.device == event.device) {
    _new1 = Pointer(
        device: event.device, dx: event.position.dx, dy: event.position.dy);
  } else if (_old2?.device == event.device) {
    _new2 = Pointer(
        device: event.device, dx: event.position.dx, dy: event.position.dy);
  }

  if (null != _old1 && null != _old2 && null != _new1 && null != _new2) {
    var newLine = math.sqrt(
        math.pow(_new1!.dx! - _new2!.dx!, 2) + math.pow(_new1!.dy! - _new2!.dy!, 2));
    var oldLine = math.sqrt(
        math.pow(_old1!.dx! - _old2!.dx!, 2) + math.pow(_old1!.dy! - _old2!.dy!, 2));
    this.scale *= (newLine / oldLine);

    this.drawX += ((_new1!.dx! - _old1!.dx!) + (_new2!.dx! - _old2!.dx!)) / 2;
    this.drawY += ((_new1!.dy! - _old1!.dy!) + (_new2!.dy! - _old2!.dy!)) / 2;

    if (!limitations) {
      var k1 = (_old1!.dx! - _old2!.dx!) / (_old1!.dy! - _old2!.dy!);
      var k2 = (_new1!.dx! - _new2!.dx!) / (_new1!.dy! - _new2!.dy!);

      var temp = ((k2 - k1) / (1 + k1 * k2) * math.pi / 2);
      if (!temp.isNaN) {
        this.rotate1 -= temp;
      }
    }
    markNeedsPaint();
  } else if ((null != _old1 && null != _new1) ||
      (null != _old2 && null != _new2)) {
    this.drawX += ((_new1 ?? _new2)!.dx! - (_old1 ?? _old2)!.dx!);
    this.drawY += ((_new1 ?? _new2)!.dy! - (_old1 ?? _old2)!.dy!);
    markNeedsPaint();
  }
  if (_old1?.device == event.device) {
    _old1 = _new1;
  } else if (_old2?.device == event.device) {
    _old2 = _new2;
  }
}