private _sendMultiTouchEvents()

in src/common/GestureView.tsx [430:498]


    private _sendMultiTouchEvents(e: TouchEventBasic, gestureState: GestureStatePointVelocity,
            initializeFromEvent: boolean, isComplete: boolean) {
        const p = this._pendingGestureState as Types.MultiTouchGestureState;
        let multiTouchEvent: Types.MultiTouchGestureState;

        // If the user lifted up one or both fingers, the multitouch gesture
        // is halted. Just return the existing gesture state.
        if (!e.touches || e.touches.length !== 2) {
            multiTouchEvent = p;
            p.isComplete = isComplete;
        } else {
            const centerPageX = (e.touches[0].pageX + e.touches[1].pageX) / 2;
            const centerPageY = (e.touches[0].pageY + e.touches[1].pageY) / 2;
            const centerClientX = (e.touches[0].locationX + e.touches[1].locationX) / 2;
            const centerClientY = (e.touches[0].locationY + e.touches[1].locationY) / 2;
            const width = Math.abs(e.touches[0].pageX - e.touches[1].pageX);
            const height = Math.abs(e.touches[0].pageY - e.touches[1].pageY);
            const distance = this._calcDistance(width, height);
            const angle = this._calcAngle(e.touches);

            const initialCenterPageX = initializeFromEvent ? centerPageX : p.initialCenterPageX;
            const initialCenterPageY = initializeFromEvent ? centerPageY : p.initialCenterPageY;
            const initialCenterClientX = initializeFromEvent ? centerClientX : p.initialCenterClientX;
            const initialCenterClientY = initializeFromEvent ? centerClientY : p.initialCenterClientY;
            const initialWidth = initializeFromEvent ? width : p.initialWidth;
            const initialHeight = initializeFromEvent ? height : p.initialHeight;
            const initialDistance = initializeFromEvent ? distance : p.initialDistance;
            const initialAngle = initializeFromEvent ? angle : p.initialAngle;

            const velocityX = initializeFromEvent ? 0 : gestureState.vx;
            const velocityY = initializeFromEvent ? 0 : gestureState.vy;

            multiTouchEvent = {
                initialCenterPageX: initialCenterPageX,
                initialCenterPageY: initialCenterPageY,
                initialCenterClientX: initialCenterClientX,
                initialCenterClientY: initialCenterClientY,
                initialWidth: initialWidth,
                initialHeight: initialHeight,
                initialDistance: initialDistance,
                initialAngle: initialAngle,

                centerPageX: centerPageX,
                centerPageY: centerPageY,
                centerClientX: centerClientX,
                centerClientY: centerClientY,
                velocityX: velocityX,
                velocityY: velocityY,
                width: width,
                height: height,
                distance: distance,
                angle: angle,

                isComplete: isComplete,
                timeStamp: e.timeStamp,
                isTouch: !GestureView._isActuallyMouseEvent(e),
            };
        }

        if (this.props.onPinchZoom) {
            this.props.onPinchZoom(multiTouchEvent);
        }

        if (this.props.onRotate) {
            this.props.onRotate(multiTouchEvent);
        }

        return multiTouchEvent;
    }