perform method

Future<void> perform(
  1. CockpitGestureAction action
)

Implementation

Future<void> perform(CockpitGestureAction action) async {
  final geometry = _resolveGeometry(action);
  final origin = _resolvePrimaryOrigin(action, geometry);
  switch (action.type) {
    case CockpitGestureActionType.tap:
      await _performTap(
        geometry,
        origin: origin,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.longPress:
      await _performLongPress(
        geometry,
        action.duration,
        origin: origin,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.doubleTap:
      await _performDoubleTap(
        geometry,
        action.interval,
        origin: origin,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.drag:
      await _performDrag(
        geometry: geometry,
        origin: origin,
        delta: action.delta,
        duration: action.duration,
        holdDuration: action.holdDuration,
        touchSlopX: action.touchSlopX,
        touchSlopY: action.touchSlopY,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.fling:
      await _performFling(
        geometry: geometry,
        origin: origin,
        delta: action.delta,
        duration: action.duration,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.swipe:
      await _performSwipe(
        geometry: geometry,
        origin: origin,
        useExplicitOrigin:
            action.origin != null ||
            action.anchor != CockpitGestureAnchor.center,
        direction: action.direction,
        distanceFactor: action.distanceFactor,
        duration: action.duration,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
        pointerDeviceKind: action.pointerDeviceKind,
        buttons: action.buttons,
      );
    case CockpitGestureActionType.pinchZoom:
      await _performPinchZoom(
        geometry: geometry,
        origin: origin,
        scale: action.scale,
        startSpan: action.startSpan,
        duration: action.duration,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
      );
    case CockpitGestureActionType.rotate:
      await _performRotate(
        geometry: geometry,
        origin: origin,
        rotation: action.rotation,
        startSpan: action.startSpan,
        duration: action.duration,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
      );
    case CockpitGestureActionType.panZoom:
      await _performPanZoom(
        geometry: geometry,
        origin: origin,
        delta: action.delta,
        scale: action.scale,
        rotation: action.rotation,
        duration: action.duration,
        moveEventCount: action.moveEventCount,
        profile: action.profile,
        sampleHz: action.sampleHz,
        frameInterval: action.frameInterval,
        initialHoldDuration: action.initialHoldDuration,
      );
    case CockpitGestureActionType.multiTouch:
      final sequence = action.sequence;
      if (sequence == null) {
        throw ArgumentError.value(
          action.sequence,
          'action.sequence',
          'Multi-touch actions require a sequence.',
        );
      }
      await _performMultiTouch(
        geometry: geometry,
        origin: origin,
        sequence: sequence,
      );
  }
}