|
|
@ -22,27 +22,75 @@ var b=right.criteria;if(a!==b){if(a>b||a===void 0)return 1;if(a<b||b===void 0)re |
|
|
|
|
|
|
|
(function () { |
|
|
|
var controller = new Leap.Controller({enableGestures: true}), |
|
|
|
config = Reveal.getConfig().leap || |
|
|
|
{ |
|
|
|
naturalSwipe: true |
|
|
|
}; |
|
|
|
leapConfig = Reveal.getConfig().leap, |
|
|
|
leapDOM = document.createElement('div'), |
|
|
|
body = document.body, |
|
|
|
config = { |
|
|
|
naturalSwipe : true, |
|
|
|
pointerDefault : 15, |
|
|
|
pointerColor : '#00aaff', |
|
|
|
pointerOpacity : 0.75 |
|
|
|
}; |
|
|
|
|
|
|
|
// Merge user defined settings with defaults
|
|
|
|
if ( leapConfig ) { |
|
|
|
for (key in leapConfig) { |
|
|
|
config[key] = leapConfig[key]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
leapDOM.id = 'leap'; |
|
|
|
|
|
|
|
leapDOM.style.filter = 'alpha(opacity="'+ config.pointerOpacity +'")'; |
|
|
|
leapDOM.style.opacity = config.pointerOpacity; |
|
|
|
leapDOM.style.backgroundColor = config.pointerColor; |
|
|
|
|
|
|
|
body.appendChild(leapDOM); |
|
|
|
|
|
|
|
controller.on('frame', function (frame) { |
|
|
|
|
|
|
|
// Pointer code
|
|
|
|
if ( frame.hands.length === 1 && frame.fingers.length === 1 ) { |
|
|
|
var size = -2 * frame.hands[0].palmPosition[2]; |
|
|
|
|
|
|
|
if ( size < config.pointerDefault ) { |
|
|
|
size = config.pointerDefault |
|
|
|
} |
|
|
|
|
|
|
|
leapDOM.style.bottom = |
|
|
|
frame.hands[0].palmPosition[1] * (body.offsetHeight / 100) - body.offsetHeight + 'px'; |
|
|
|
|
|
|
|
leapDOM.style.left = |
|
|
|
frame.hands[0].palmPosition[0] * (body.offsetWidth / 100) + (body.offsetWidth / 2) + 'px'; |
|
|
|
|
|
|
|
leapDOM.style.visibility = 'visible'; |
|
|
|
leapDOM.style.width = size + 'px'; |
|
|
|
leapDOM.style.height = size + 'px'; |
|
|
|
leapDOM.style.borderRadius = size - 5 + 'px'; |
|
|
|
} else { |
|
|
|
// Hide pointer on exit
|
|
|
|
leapDOM.style.visibility = 'hidden'; |
|
|
|
} |
|
|
|
|
|
|
|
// Gestures
|
|
|
|
if ( frame.gestures.length > 0 ) { |
|
|
|
var gesture = frame.gestures[0], |
|
|
|
x = gesture.direction[0], |
|
|
|
y = gesture.direction[1]; |
|
|
|
var gesture = frame.gestures[0]; |
|
|
|
|
|
|
|
|
|
|
|
if ( gesture.speed > 1000 && gesture.state === 'start' && gesture.type === 'swipe' ) { |
|
|
|
if( frame.hands.length === 1 && frame.fingers.length > 1 ) { |
|
|
|
// One hand gestures
|
|
|
|
if( frame.hands.length === 1 ) { |
|
|
|
// Swipe gestures. 2+ fingers.
|
|
|
|
if ( frame.fingers.length > 1 && gesture.speed > 1000 && gesture.state === 'start' && gesture.type === 'swipe' ) { |
|
|
|
var x = gesture.direction[0], |
|
|
|
y = gesture.direction[1]; |
|
|
|
|
|
|
|
// Left/right swipe gestures
|
|
|
|
if ( Math.abs(x) > Math.abs(y) ) { |
|
|
|
if ( x > 0 ) { |
|
|
|
config.naturalSwipe ? Reveal.left() : Reveal.right(); |
|
|
|
} else { |
|
|
|
config.naturalSwipe ? Reveal.right() : Reveal.left(); |
|
|
|
} |
|
|
|
// Up/down swipe gestures
|
|
|
|
} else { |
|
|
|
if ( y > 0 ) { |
|
|
|
config.naturalSwipe ? Reveal.down() : Reveal.up(); |
|
|
@ -50,10 +98,12 @@ var b=right.criteria;if(a!==b){if(a>b||a===void 0)return 1;if(a<b||b===void 0)re |
|
|
|
config.naturalSwipe ? Reveal.up() : Reveal.down(); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if( frame.hands.length == 2 ) { |
|
|
|
if ( y > 0 ) { |
|
|
|
Reveal.toggleOverview(); |
|
|
|
} |
|
|
|
} |
|
|
|
// Two hand gestures
|
|
|
|
} else if( frame.hands.length == 2 ) { |
|
|
|
// All upwards 2 hand gestures = toggle overview
|
|
|
|
if ( gesture.direction[1] > 0 ) { |
|
|
|
Reveal.toggleOverview(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|