reapmotion 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/reapmotion.rb +10 -0
- data/lib/reapmotion/core_ext/circle_gesture.rb +9 -0
- data/lib/reapmotion/core_ext/controller.rb +28 -0
- data/lib/reapmotion/core_ext/device_list.rb +5 -0
- data/lib/reapmotion/core_ext/finger_list.rb +5 -0
- data/lib/reapmotion/core_ext/frame.rb +30 -0
- data/lib/reapmotion/core_ext/gesture_list.rb +5 -0
- data/lib/reapmotion/core_ext/hand_list.rb +5 -0
- data/lib/reapmotion/core_ext/pointable_list.rb +5 -0
- data/lib/reapmotion/core_ext/tool_list.rb +5 -0
- data/lib/reapmotion/util/list_helper.rb +20 -0
- data/lib/reapmotion/version.rb +3 -0
- metadata +57 -0
data/lib/reapmotion.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'reapmotion/core_ext/circle_gesture'
|
2
|
+
require 'reapmotion/core_ext/controller'
|
3
|
+
require 'reapmotion/core_ext/device_list'
|
4
|
+
require 'reapmotion/core_ext/finger_list'
|
5
|
+
require 'reapmotion/core_ext/frame'
|
6
|
+
require 'reapmotion/core_ext/hand_list'
|
7
|
+
require 'reapmotion/core_ext/pointable_list'
|
8
|
+
require 'reapmotion/core_ext/tool_list'
|
9
|
+
|
10
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class com::leapmotion::leap::Controller
|
2
|
+
java_import com.leapmotion.leap.Gesture
|
3
|
+
|
4
|
+
GESTURE_MAP = {
|
5
|
+
"swipe" => Gesture::Type::TYPE_SWIPE,
|
6
|
+
"circle" => Gesture::Type::TYPE_CIRCLE,
|
7
|
+
"screen_tap" => Gesture::Type::TYPE_SCREEN_TAP,
|
8
|
+
"key_tap" => Gesture::Type::TYPE_KEY_TAP
|
9
|
+
}
|
10
|
+
|
11
|
+
def enable_gestures(*list)
|
12
|
+
list.each do |sym|
|
13
|
+
type = GESTURE_MAP[sym.to_s]
|
14
|
+
|
15
|
+
raise TypeError.new("#{sym} is not a valid gesture type") unless type
|
16
|
+
|
17
|
+
enable_gesture(type)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.run(*listeners)
|
22
|
+
controller = Controller.new
|
23
|
+
listeners.each { |listener| controller.add_listener listener }
|
24
|
+
yield
|
25
|
+
ensure
|
26
|
+
listeners.each { |listener| controller.remove_listener listener }
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class com::leapmotion::leap::Frame
|
2
|
+
java_import com.leapmotion.leap.Gesture
|
3
|
+
java_import com.leapmotion.leap.CircleGesture
|
4
|
+
java_import com.leapmotion.leap.SwipeGesture
|
5
|
+
java_import com.leapmotion.leap.ScreenTapGesture
|
6
|
+
java_import com.leapmotion.leap.KeyTapGesture
|
7
|
+
|
8
|
+
GESTURE_TYPE_MAP = {
|
9
|
+
Gesture::Type::TYPE_CIRCLE => CircleGesture,
|
10
|
+
Gesture::Type::TYPE_SWIPE => SwipeGesture,
|
11
|
+
Gesture::Type::TYPE_SCREEN_TAP => ScreenTapGesture,
|
12
|
+
Gesture::Type::TYPE_KEY_TAP => KeyTapGesture,
|
13
|
+
}
|
14
|
+
|
15
|
+
alias gestures_original gestures
|
16
|
+
|
17
|
+
def gestures
|
18
|
+
# Original Java path
|
19
|
+
return gestures_original unless block_given?
|
20
|
+
|
21
|
+
gestures_original.each do |gesture|
|
22
|
+
type = GESTURE_TYPE_MAP[gesture.type]
|
23
|
+
|
24
|
+
raise ArgumentError.new("unknown type #{gesture.type}") unless type
|
25
|
+
|
26
|
+
yield type.new(gesture)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ReapMotion
|
2
|
+
module ListHelper
|
3
|
+
include Enumerable
|
4
|
+
|
5
|
+
def <<(other)
|
6
|
+
append(other)
|
7
|
+
end
|
8
|
+
|
9
|
+
def [](index)
|
10
|
+
get(index)
|
11
|
+
end
|
12
|
+
|
13
|
+
def each
|
14
|
+
iter = iterator
|
15
|
+
while iter.has_next
|
16
|
+
yield iter.next
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: reapmotion
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thomas E. Enebo
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-23 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A thin Ruby wrapper around Java LeapMotion API
|
15
|
+
email: tom.enebo@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/reapmotion.rb
|
21
|
+
- lib/reapmotion/core_ext/circle_gesture.rb
|
22
|
+
- lib/reapmotion/core_ext/controller.rb
|
23
|
+
- lib/reapmotion/core_ext/device_list.rb
|
24
|
+
- lib/reapmotion/core_ext/finger_list.rb
|
25
|
+
- lib/reapmotion/core_ext/frame.rb
|
26
|
+
- lib/reapmotion/core_ext/gesture_list.rb
|
27
|
+
- lib/reapmotion/core_ext/hand_list.rb
|
28
|
+
- lib/reapmotion/core_ext/pointable_list.rb
|
29
|
+
- lib/reapmotion/core_ext/tool_list.rb
|
30
|
+
- lib/reapmotion/util/list_helper.rb
|
31
|
+
- lib/reapmotion/version.rb
|
32
|
+
homepage: http://github.com/enebo/reapmotion
|
33
|
+
licenses: []
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
requirements: []
|
51
|
+
rubyforge_project: reapmotion
|
52
|
+
rubygems_version: 1.8.23
|
53
|
+
signing_key:
|
54
|
+
specification_version: 3
|
55
|
+
summary: A thin Ruby wrapper around Java LeapMotion API
|
56
|
+
test_files: []
|
57
|
+
has_rdoc: true
|