mirror of
https://github.com/openseadragon/openseadragon.git
synced 2025-02-08 02:49:22 +03:00
Multi-Touch MouseTracker Update
This commit is contained in:
parent
c7ea247baa
commit
38cae86659
@ -201,7 +201,9 @@
|
|||||||
touchstart: function ( event ) { onTouchStart( _this, event ); },
|
touchstart: function ( event ) { onTouchStart( _this, event ); },
|
||||||
touchmove: function ( event ) { onTouchMove( _this, event ); },
|
touchmove: function ( event ) { onTouchMove( _this, event ); },
|
||||||
touchend: function ( event ) { onTouchEnd( _this, event ); },
|
touchend: function ( event ) { onTouchEnd( _this, event ); },
|
||||||
tracking: false,
|
gesturestart: function ( event ) { onGestureStart( _this, event ); },
|
||||||
|
gesturechange: function ( event ) { onGestureChange( _this, event ); },
|
||||||
|
tracking: false,
|
||||||
capturing: false,
|
capturing: false,
|
||||||
// Contact Points
|
// Contact Points
|
||||||
mousePoints: {},
|
mousePoints: {},
|
||||||
@ -614,7 +616,7 @@
|
|||||||
$.MouseTracker.subscribeEvents.push( "mouseover", "mouseout", "mousedown", "mouseup", "mousemove" );
|
$.MouseTracker.subscribeEvents.push( "mouseover", "mouseout", "mousedown", "mouseup", "mousemove" );
|
||||||
if ( 'ontouchstart' in window ) {
|
if ( 'ontouchstart' in window ) {
|
||||||
// iOS, Android, and other W3c Touch Event implementations (see http://www.w3.org/TR/2011/WD-touch-events-20110505)
|
// iOS, Android, and other W3c Touch Event implementations (see http://www.w3.org/TR/2011/WD-touch-events-20110505)
|
||||||
$.MouseTracker.subscribeEvents.push( "touchstart", "touchmove", "touchend" );
|
$.MouseTracker.subscribeEvents.push( "touchstart", "touchmove", "touchend", "gesturestart", "gesturechange" );
|
||||||
}
|
}
|
||||||
$.MouseTracker.mousePointerId = "legacy-mouse";
|
$.MouseTracker.mousePointerId = "legacy-mouse";
|
||||||
$.MouseTracker.maxTouchPoints = 10;
|
$.MouseTracker.maxTouchPoints = 10;
|
||||||
@ -1168,10 +1170,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $.MouseTracker.unprefixedPointerEvents ) {
|
if ( $.MouseTracker.unprefixedPointerEvents ) {
|
||||||
event.target.setPointerCapture(event.pointerId);
|
event.currentTarget.setPointerCapture(event.pointerId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
event.target.msSetPointerCapture(event.pointerId);
|
event.currentTarget.msSetPointerCapture(event.pointerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
time = $.now();
|
time = $.now();
|
||||||
@ -1193,9 +1195,12 @@
|
|||||||
|
|
||||||
addPointers( tracker, event, [pointer] );
|
addPointers( tracker, event, [pointer] );
|
||||||
|
|
||||||
if ( tracker.pressHandler || tracker.dragHandler || tracker.pinchHandler || tracker.swipeHandler ) {
|
//if ( tracker.pressHandler || tracker.dragHandler || tracker.pinchHandler || tracker.swipeHandler ) {
|
||||||
$.cancelEvent( event );
|
// $.cancelEvent(event);
|
||||||
}
|
event.stopPropagation();
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1266,10 +1271,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $.MouseTracker.unprefixedPointerEvents ) {
|
if ( $.MouseTracker.unprefixedPointerEvents ) {
|
||||||
event.target.releasePointerCapture(event.pointerId);
|
event.currentTarget.releasePointerCapture(event.pointerId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
event.target.msReleasePointerCapture(event.pointerId);
|
event.currentTarget.msReleasePointerCapture(event.pointerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
time = $.now();
|
time = $.now();
|
||||||
@ -1289,7 +1294,14 @@
|
|||||||
currentTime: time
|
currentTime: time
|
||||||
};
|
};
|
||||||
|
|
||||||
removePointers( tracker, event, [pointer] );
|
removePointers(tracker, event, [pointer]);
|
||||||
|
|
||||||
|
//if ( tracker.pressHandler || tracker.dragHandler || tracker.pinchHandler || tracker.swipeHandler ) {
|
||||||
|
// $.cancelEvent(event);
|
||||||
|
event.stopPropagation();
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1388,7 +1400,14 @@
|
|||||||
currentTime: time
|
currentTime: time
|
||||||
};
|
};
|
||||||
|
|
||||||
updatePointers( tracker, event, [pointer] );
|
updatePointers(tracker, event, [pointer]);
|
||||||
|
|
||||||
|
//if ( tracker.pressHandler || tracker.dragHandler || tracker.pinchHandler || tracker.swipeHandler ) {
|
||||||
|
// $.cancelEvent(event);
|
||||||
|
event.stopPropagation();
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1511,7 +1530,9 @@
|
|||||||
|
|
||||||
addPointers( tracker, event, pointers );
|
addPointers( tracker, event, pointers );
|
||||||
|
|
||||||
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
////****************************************************************
|
////****************************************************************
|
||||||
// var touchA,
|
// var touchA,
|
||||||
// touchB;
|
// touchB;
|
||||||
@ -1597,7 +1618,9 @@
|
|||||||
updatePointersOut( tracker, event, [pointer] );
|
updatePointersOut( tracker, event, [pointer] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
//****************************************************************************************
|
//****************************************************************************************
|
||||||
// if ( event.touches.length === 0 &&
|
// if ( event.touches.length === 0 &&
|
||||||
// event.targetTouches.length === 0 &&
|
// event.targetTouches.length === 0 &&
|
||||||
@ -1652,7 +1675,9 @@
|
|||||||
|
|
||||||
updatePointers( tracker, event, pointers );
|
updatePointers( tracker, event, pointers );
|
||||||
|
|
||||||
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
//*******************************************************************************
|
//*******************************************************************************
|
||||||
// var touchA,
|
// var touchA,
|
||||||
// touchB,
|
// touchB,
|
||||||
@ -1705,6 +1730,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @inner
|
||||||
|
*/
|
||||||
|
function onGestureStart( tracker, event ) {
|
||||||
|
event.stopPropagation();
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @inner
|
||||||
|
*/
|
||||||
|
function onGestureChange( tracker, event ) {
|
||||||
|
event.stopPropagation();
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************************************************************************
|
//*******************************************************************************************************************************************
|
||||||
//** Event Processing Functions
|
//** Event Processing Functions
|
||||||
|
|
||||||
@ -2157,18 +2204,17 @@
|
|||||||
gesturePoints.push( delegate.touchPoints[ p ] );
|
gesturePoints.push( delegate.touchPoints[ p ] );
|
||||||
}
|
}
|
||||||
delta = gesturePoints[0].currentPos.distanceTo( gesturePoints[1].currentPos );
|
delta = gesturePoints[0].currentPos.distanceTo( gesturePoints[1].currentPos );
|
||||||
//if ( delta != delegate.currentPinchDist ) {
|
if ( delta != delegate.currentPinchDist ) {
|
||||||
if (delta != delegate.currentPinchDist && Math.abs(delta - delegate.lastPinchDist) > 75) {
|
|
||||||
delegate.lastPinchDist = delegate.currentPinchDist;
|
delegate.lastPinchDist = delegate.currentPinchDist;
|
||||||
delegate.currentPinchDist = delta;
|
delegate.currentPinchDist = delta;
|
||||||
|
|
||||||
propagate = tracker.pinchHandler(
|
propagate = tracker.pinchHandler(
|
||||||
{
|
{
|
||||||
eventSource: tracker,
|
eventSource: tracker,
|
||||||
position: getPointRelative( updatePointer.currentPos, tracker.element ),
|
gesturePoints: gesturePoints,
|
||||||
delta: delegate.currentPinchDist - delegate.lastPinchDist,
|
center: getPointRelative( new $.Point( ( gesturePoints[0].currentPos.x + gesturePoints[1].currentPos.x ) / 2,
|
||||||
shift: event.shiftKey,
|
( gesturePoints[0].currentPos.y + gesturePoints[1].currentPos.y ) / 2 ) ),
|
||||||
isTouchEvent: curPointer.type === 'touch',
|
lastDistance: delegate.lastPinchDist,
|
||||||
|
currentDistance: delegate.currentPinchDist,
|
||||||
originalEvent: event,
|
originalEvent: event,
|
||||||
preventDefaultAction: false,
|
preventDefaultAction: false,
|
||||||
userData: tracker.userData
|
userData: tracker.userData
|
||||||
|
@ -1850,12 +1850,21 @@ function onCanvasScroll( event ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onCanvasPinch(event) {
|
function onCanvasPinch(event) {
|
||||||
|
//{
|
||||||
|
// eventSource: tracker,
|
||||||
|
// gesturePoints: gesturePoints,
|
||||||
|
// center: getPointRelative( new $.Point( ( gesturePoints[0].currentPos.x + gesturePoints[1].currentPos.x ) / 2,
|
||||||
|
// ( gesturePoints[0].currentPos.y + gesturePoints[1].currentPos.y ) / 2 ) ),
|
||||||
|
// lastDistance: delegate.lastPinchDist,
|
||||||
|
// currentDistance: delegate.currentPinchDist,
|
||||||
|
// originalEvent: event,
|
||||||
|
// preventDefaultAction: false,
|
||||||
|
// userData: tracker.userData
|
||||||
|
//}
|
||||||
if (!event.preventDefaultAction && this.viewport) {
|
if (!event.preventDefaultAction && this.viewport) {
|
||||||
//TODO This is temporary for testing. Zoom should track pinch gesture one-to-one, around center point!
|
//TODO This is temporary for testing. Zoom should track pinch gesture one-to-one!
|
||||||
this.viewport.zoomBy(
|
this.viewport.zoomBy( event.currentDistance / event.lastDistance,
|
||||||
( event.delta > 0 ) ? 1.2 : 0.8,
|
this.viewport.pointFromPixel( event.center, true ) );
|
||||||
this.viewport.pointFromPixel(event.position, true)
|
|
||||||
);
|
|
||||||
this.viewport.applyConstraints();
|
this.viewport.applyConstraints();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -1883,7 +1892,7 @@ function onCanvasPinch(event) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onContainerExit(event) {
|
function onContainerExit( event ) {
|
||||||
if ( !event.insideElementPressed ) {
|
if ( !event.insideElementPressed ) {
|
||||||
THIS[ this.hash ].mouseInside = false;
|
THIS[ this.hash ].mouseInside = false;
|
||||||
if ( !THIS[ this.hash ].animating ) {
|
if ( !THIS[ this.hash ].animating ) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user