mac-robot 0.1.0 → 0.2.0

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/README.rdoc CHANGED
@@ -13,6 +13,13 @@ A Library to Automate User Interactions
13
13
  robot.mouse_press
14
14
  robot.mouse_move(250, 250)
15
15
  robot.mouse_release
16
+
17
+ === Automate Keyboard
18
+
19
+ [0x04, 0x0e, 0x25, 0x25, 0x1f].each do |keycode|
20
+ subject.key_press(keycode)
21
+ subject.key_release(keycode)
22
+ end
16
23
 
17
24
  == Contributing to mac-robot
18
25
 
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ Jeweler::RubygemsDotOrgTasks.new
28
28
  # rule to build the extension: this says
29
29
  # that the extension should be rebuilt
30
30
  # after any change to the files in ext
31
- ext_names = %w/event_dispatcher/
31
+ ext_names = %w/event_dispatcher util/
32
32
  ext_names.each do |ext_name|
33
33
  CLEAN.include Dir.glob("ext/#{ext_name}/*{.o,.log}")
34
34
  CLEAN.include "ext/#{ext_name}/Makefile"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,5 +1,5 @@
1
1
  if RUBY_VERSION < '1.9.0'
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
3
3
  end
4
4
 
5
5
  require "mkmf"
File without changes
@@ -0,0 +1,18 @@
1
+ if RUBY_VERSION < '1.9.0'
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
3
+ end
4
+
5
+ require "mkmf"
6
+
7
+ # Name your extension
8
+ extension_name = 'util'
9
+
10
+ # Set your target name
11
+ dir_config(extension_name)
12
+
13
+ $LDFLAGS += ' -framework ApplicationServices -framework AppKit'
14
+
15
+ have_header(extension_name)
16
+
17
+ # Do the work
18
+ create_makefile(extension_name)
data/ext/util/util.h ADDED
@@ -0,0 +1,2 @@
1
+ #include <ruby.h>
2
+ #import <AppKit/AppKit.h>
data/ext/util/util.m ADDED
@@ -0,0 +1,42 @@
1
+ #import "util.h"
2
+
3
+ static VALUE mUtil_get_pixel_color(int argc, VALUE *argv, VALUE self)
4
+ {
5
+ VALUE x, y;
6
+ NSAutoreleasePool *pool = [NSAutoreleasePool new];
7
+ int intX, intY;
8
+ VALUE result;
9
+ CGImageRef image;
10
+ NSBitmapImageRep *bitmap;
11
+ NSColor *color;
12
+
13
+ rb_scan_args(argc, argv, "2", &x, &y);
14
+
15
+ intX = NUM2INT(x);
16
+ intY = NUM2INT(y);
17
+
18
+ image = CGDisplayCreateImageForRect((CGDirectDisplayID)0, CGRectMake(intX, intY, 1, 1));
19
+ bitmap = [[NSBitmapImageRep alloc] initWithCGImage:image];
20
+ CGImageRelease(image);
21
+ color = [bitmap colorAtX:0 y:0];
22
+
23
+ result = rb_ary_new();
24
+ rb_ary_push(result, rb_float_new((float)[color redComponent]));
25
+ rb_ary_push(result, rb_float_new((float)[color greenComponent]));
26
+ rb_ary_push(result, rb_float_new((float)[color blueComponent]));
27
+ rb_ary_push(result, rb_float_new((float)[color alphaComponent]));
28
+
29
+ [bitmap release];
30
+ [pool release];
31
+
32
+ return result;
33
+ }
34
+
35
+ void Init_util(void){
36
+ VALUE rb_mMac, rb_cRobot, rb_mUtil;
37
+
38
+ rb_mMac = rb_define_module("Mac");
39
+ rb_cRobot = rb_define_class_under(rb_mMac, "Robot", rb_cObject);
40
+ rb_mUtil = rb_define_module_under(rb_cRobot, "Util");
41
+ rb_define_singleton_method(rb_mUtil, "get_pixel_color", mUtil_get_pixel_color, -1);
42
+ }
data/lib/mac-robot.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'event_dispatcher'
2
+ require 'util'
2
3
 
3
4
  module Mac
4
5
  class Robot
@@ -42,6 +43,11 @@ module Mac
42
43
  keyboard_event(keycode, 0)
43
44
  end
44
45
 
46
+ def get_pixel_color(x, y)
47
+ color = Util.get_pixel_color(x, y)
48
+ Struct.new(:red, :green, :blue, :alpha).new(*color)
49
+ end
50
+
45
51
  private
46
52
 
47
53
  def mouse_event(button, type)
@@ -23,4 +23,14 @@ describe Mac::Robot do
23
23
  end
24
24
  end
25
25
  end
26
+
27
+ describe 'color' do
28
+ it 'should get color from given coodinate' do
29
+ color = subject.get_pixel_color(0, 0)
30
+ color.red.should be_a_kind_of(Float)
31
+ color.green.should be_a_kind_of(Float)
32
+ color.blue.should be_a_kind_of(Float)
33
+ color.alpha.should be_a_kind_of(Float)
34
+ end
35
+ end
26
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mac-robot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-29 00:00:00.000000000 Z
12
+ date: 2012-03-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70197386120920 !ruby/object:Gem::Requirement
16
+ requirement: &70281658099080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70197386120920
24
+ version_requirements: *70281658099080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70197386119180 !ruby/object:Gem::Requirement
27
+ requirement: &70281658775440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70197386119180
35
+ version_requirements: *70281658775440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &70197386117420 !ruby/object:Gem::Requirement
38
+ requirement: &70281658774960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,12 +43,13 @@ dependencies:
43
43
  version: 1.8.3
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70197386117420
46
+ version_requirements: *70281658774960
47
47
  description: A Library to Automate User Interactions
48
48
  email: youpy@buycheapviagraonlinenow.com
49
49
  executables: []
50
50
  extensions:
51
51
  - ext/event_dispatcher/extconf.rb
52
+ - ext/util/extconf.rb
52
53
  extra_rdoc_files:
53
54
  - LICENSE.txt
54
55
  - README.rdoc
@@ -64,7 +65,10 @@ files:
64
65
  - ext/event_dispatcher/event_dispatcher.h
65
66
  - ext/event_dispatcher/event_dispatcher.m
66
67
  - ext/event_dispatcher/extconf.rb
67
- - ext/event_dispatcher/mkmf.rb
68
+ - ext/lib/mkmf.rb
69
+ - ext/util/extconf.rb
70
+ - ext/util/util.h
71
+ - ext/util/util.m
68
72
  - lib/mac-robot.rb
69
73
  - spec/mac-robot_spec.rb
70
74
  - spec/spec_helper.rb
@@ -83,7 +87,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
87
  version: '0'
84
88
  segments:
85
89
  - 0
86
- hash: 3428969405361014881
90
+ hash: -2418343180901678321
87
91
  required_rubygems_version: !ruby/object:Gem::Requirement
88
92
  none: false
89
93
  requirements: