motion-capture 1.0 → 1.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.
- checksums.yaml +4 -4
- data/README.md +20 -14
- data/lib/project/motion-capture.rb +41 -4
- metadata +2 -3
- data/lib/project/views/overlay_view.rb +0 -112
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2ea866d57338e676627eaa74c23c490d6e8fd06
|
4
|
+
data.tar.gz: 0f31ebdf4127769dbfac818379cb5372e45f870e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5e8c4a930c9b6cc47e7479b0ddd84cc186ae717a8dc27f850c4e544fff6c48d43d4ba15d0c5d5a3d8a3a212bd65da00166c17fc010e6adc92d3b5e66167502c
|
7
|
+
data.tar.gz: d719496998b5a1f5d80ba12da71d9a8dff5265d7ece8c37feb262d719cb19ef592e60d66bfa412e3684a606cb84036dcc95cece83dd51b06e4df3082426710a5
|
data/README.md
CHANGED
@@ -4,25 +4,31 @@ Camera support for custom camera controllers
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
``` ruby
|
8
|
+
motion_capture = Motion::Capture.new
|
9
|
+
motion_capture = Motion::Capture.new(device: :front) # specify camera
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
preview = motion_capture.capture_preview_view(frame: view.bounds)
|
12
|
+
view.addSubview(preview) # UIView containing AVCaptureVideoPreviewLayer
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
motion_capture.toggle_camera # Switch between front/rear cameras
|
15
|
+
motion_capture.toggle_flash # Switch bettwen flash on/off
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
motion_capture.turn_flash_on
|
18
|
+
motion_capture.turn_flash_off
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
motion_capture.use_camera(:default)
|
21
|
+
motion_capture.use_camera(:front)
|
22
|
+
motion_capture.use_camera(:rear)
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
motion_capture.capture do |image_data|
|
25
|
+
# Use NSData
|
26
|
+
end
|
27
|
+
|
28
|
+
motion_capture.capture_and_save do |asset_url|
|
29
|
+
# Use NSURL
|
30
|
+
end
|
31
|
+
```
|
26
32
|
|
27
33
|
## Setup
|
28
34
|
|
@@ -14,22 +14,59 @@ class Motion
|
|
14
14
|
add_ouput(still_image_output)
|
15
15
|
end
|
16
16
|
|
17
|
+
def stop!
|
18
|
+
session.stopRunning
|
19
|
+
|
20
|
+
remove_outputs
|
21
|
+
remove_inputs
|
22
|
+
|
23
|
+
@_still_image_output = nil
|
24
|
+
@_session = nil
|
25
|
+
@_capture_preview_view = nil
|
26
|
+
end
|
27
|
+
|
17
28
|
def capture(&block)
|
18
|
-
still_image_connection = still_image_output.
|
29
|
+
still_image_connection = still_image_output.connectionWithMediaType(AVMediaTypeVideo)
|
30
|
+
|
31
|
+
if still_image_connection.isVideoOrientationSupported
|
32
|
+
still_image_connection.setVideoOrientation(UIDevice.currentDevice.orientation)
|
33
|
+
end
|
19
34
|
|
20
35
|
still_image_output.captureStillImageAsynchronouslyFromConnection(still_image_connection, completionHandler: lambda { |image_data_sample_buffer, error|
|
21
36
|
if image_data_sample_buffer
|
22
37
|
image_data = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(image_data_sample_buffer)
|
23
38
|
|
24
|
-
|
39
|
+
block.call(image_data)
|
40
|
+
else
|
41
|
+
p "Error capturing image: #{error.localizedDescription}"
|
42
|
+
end
|
43
|
+
})
|
44
|
+
end
|
45
|
+
|
46
|
+
def capture_and_save(&block)
|
47
|
+
still_image_connection = still_image_output.connectionWithMediaType(AVMediaTypeVideo)
|
48
|
+
|
49
|
+
if still_image_connection.isVideoOrientationSupported
|
50
|
+
still_image_connection.setVideoOrientation(UIDevice.currentDevice.orientation)
|
51
|
+
end
|
52
|
+
|
53
|
+
still_image_output.captureStillImageAsynchronouslyFromConnection(still_image_connection, completionHandler: lambda { |image_data_sample_buffer, error|
|
54
|
+
if image_data_sample_buffer
|
55
|
+
image_data = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(image_data_sample_buffer)
|
25
56
|
|
26
|
-
|
57
|
+
assets_library.writeImageDataToSavedPhotosAlbum(image_data, metadata: nil, completionBlock: lambda { |asset_url, error|
|
58
|
+
block.call(asset_url)
|
59
|
+
})
|
27
60
|
else
|
28
|
-
p "Error capturing image: #{error
|
61
|
+
p "Error capturing image: #{error.localizedDescription}"
|
29
62
|
end
|
30
63
|
})
|
31
64
|
end
|
32
65
|
|
66
|
+
def assets_library
|
67
|
+
@_assets_library ||= ALAssetsLibrary.alloc.init
|
68
|
+
end
|
69
|
+
|
33
70
|
def capture_preview_view(options)
|
34
71
|
@_capture_preview_view ||= begin
|
35
72
|
start!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-capture
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Devon Blandin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -34,7 +34,6 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- lib/motion-capture.rb
|
36
36
|
- lib/project/motion-capture.rb
|
37
|
-
- lib/project/views/overlay_view.rb
|
38
37
|
homepage: https://github.com/dblandin/motion-capture
|
39
38
|
licenses:
|
40
39
|
- MIT
|
@@ -1,112 +0,0 @@
|
|
1
|
-
class GridOverlayView < UIView
|
2
|
-
DEFAULTS = { stroke_color: UIColor.grayColor,
|
3
|
-
stroke_width: 1.0,
|
4
|
-
x_lines: 3,
|
5
|
-
y_lines: 3 }
|
6
|
-
|
7
|
-
attr_accessor :x_interval, :y_interval
|
8
|
-
attr_reader :stroke_color, :stroke_width
|
9
|
-
|
10
|
-
def initWithFrame(frame)
|
11
|
-
super.tap do |view|
|
12
|
-
view.backgroundColor = UIColor.clearColor
|
13
|
-
|
14
|
-
self.x_lines = DEFAULTS[:x_lines]
|
15
|
-
self.y_lines = DEFAULTS[:y_lines]
|
16
|
-
self.stroke_color = DEFAULTS[:stroke_color]
|
17
|
-
self.stroke_width = DEFAULTS[:stroke_width]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def hidden?
|
22
|
-
stroke_color == UIColor.clearColor
|
23
|
-
end
|
24
|
-
|
25
|
-
def toggle
|
26
|
-
if hidden?
|
27
|
-
show
|
28
|
-
else
|
29
|
-
hide
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def show
|
34
|
-
self.stroke_color = @original_color
|
35
|
-
|
36
|
-
setNeedsDisplay
|
37
|
-
end
|
38
|
-
|
39
|
-
def hide
|
40
|
-
unless hidden?
|
41
|
-
@original_color = stroke_color
|
42
|
-
|
43
|
-
self.stroke_color = UIColor.clearColor
|
44
|
-
|
45
|
-
setNeedsDisplay
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def x_lines=(lines)
|
50
|
-
self.x_interval = frame.size.width / lines
|
51
|
-
|
52
|
-
setNeedsDisplay
|
53
|
-
end
|
54
|
-
|
55
|
-
def y_lines=(lines)
|
56
|
-
self.y_interval = frame.size.height / lines
|
57
|
-
|
58
|
-
setNeedsDisplay
|
59
|
-
end
|
60
|
-
|
61
|
-
def stroke_width=(width)
|
62
|
-
@stroke_width = width
|
63
|
-
|
64
|
-
setNeedsDisplay
|
65
|
-
end
|
66
|
-
|
67
|
-
def stroke_color=(color)
|
68
|
-
@stroke_color = color
|
69
|
-
|
70
|
-
setNeedsDisplay
|
71
|
-
end
|
72
|
-
|
73
|
-
def setup_drawing
|
74
|
-
CGContextSetStrokeColorWithColor(context, stroke_color.CGColor)
|
75
|
-
|
76
|
-
CGContextSetLineWidth(context, stroke_width)
|
77
|
-
end
|
78
|
-
|
79
|
-
def drawRect(rect)
|
80
|
-
super
|
81
|
-
|
82
|
-
setup_drawing
|
83
|
-
draw_vertical_lines
|
84
|
-
draw_horizontal_lines
|
85
|
-
|
86
|
-
fill_path
|
87
|
-
end
|
88
|
-
|
89
|
-
def fill_path
|
90
|
-
CGContextStrokePath(context)
|
91
|
-
end
|
92
|
-
|
93
|
-
def draw_horizontal_lines
|
94
|
-
draw_line([0, y_interval], [size.width, y_interval])
|
95
|
-
draw_line([0, y_interval * 2], [size.width, y_interval * 2])
|
96
|
-
end
|
97
|
-
|
98
|
-
def draw_vertical_lines
|
99
|
-
draw_line([x_interval, 0], [x_interval, size.height])
|
100
|
-
draw_line([x_interval * 2, 0], [x_interval * 2.0, size.height])
|
101
|
-
end
|
102
|
-
|
103
|
-
def draw_line(start_point, end_point)
|
104
|
-
CGContextMoveToPoint(context, start_point[0], start_point[1])
|
105
|
-
|
106
|
-
CGContextAddLineToPoint(context, end_point[0], end_point[1])
|
107
|
-
end
|
108
|
-
|
109
|
-
def context
|
110
|
-
@_context ||= UIGraphicsGetCurrentContext()
|
111
|
-
end
|
112
|
-
end
|