ffi-efl 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/tasks/gem.rake CHANGED
@@ -128,7 +128,6 @@ namespace :gem do
128
128
  end
129
129
  s.rdoc_options = PROJ.rdoc.opts + ['--main', PROJ.rdoc.main]
130
130
  s.extra_rdoc_files = rdoc_files
131
- s.has_rdoc = true
132
131
 
133
132
  if test ?f, PROJ.test.file
134
133
  s.test_file = PROJ.test.file
data/tasks/helpers.rb CHANGED
@@ -39,7 +39,7 @@ end
39
39
  # will be used.
40
40
  #
41
41
  def depend_on( name, version = nil )
42
- spec = Gem.source_index.find_name(name).last
42
+ spec = Gem::Specification.find_by_name(name)
43
43
  version = spec.version.to_s if version.nil? and !spec.nil?
44
44
 
45
45
  PROJ.gem.dependencies << case version
data/test/test_edje.rb CHANGED
@@ -1,35 +1,38 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
- require 'efl/eina'
5
- require 'efl/evas'
6
4
  require 'efl/ecore'
7
5
  require 'efl/ecore_evas'
8
6
  require 'efl/edje'
9
7
  #
10
- Efl::Eina::init
11
- Efl::Evas::init
12
- Efl::Ecore::init
13
8
  Efl::EcoreEvas::init
14
9
  Efl::Edje::init
15
10
  #
16
11
  WIDTH=320
17
12
  HEIGHT=240
13
+ #
18
14
  EDC_FILE=File.join '/tmp','edje_test.edc'
19
15
  EDJE_FILE=File.join '/tmp','edje_test.edj'
20
16
  #
21
- if not File.exists? EDJE_FILE
22
- File.open(EDC_FILE,'w') do |f| f << DATA.read end
23
- system "edje_cc #{EDC_FILE}"
24
- end
17
+ txt = ( ARGV.length>0 ? ARGV[0] : nil )
25
18
  #
19
+ # compile edje_file
20
+ puts "write #{EDC_FILE}"
21
+ content = DATA.read
22
+ File.open(EDC_FILE,'w') do |f| f << content end
23
+ puts "compile #{EDJE_FILE}"
24
+ system "edje_cc #{EDC_FILE}"
25
+ #
26
+ # load edje
26
27
  def create_my_group canvas, txt
27
- #edje = edje_object_add(canvas);
28
28
  edje = canvas.edje_object_add
29
29
  if not edje.file_set EDJE_FILE, "my_group"
30
30
  puts "unable to open #{EDJE_FILE}"
31
31
  exit 1
32
32
  end
33
+ puts "file and group : #{edje.file_get.join ' ; ' }"
34
+ puts "key1 : #{Efl::Native.edje_file_data_get EDJE_FILE, "key1"}"
35
+ puts "key2 : #{Efl::Native.edje_object_data_get edje, "key2"}"
33
36
  edje.part_text_set "text", txt unless txt.nil?
34
37
  edje.move 0, 0
35
38
  edje.resize WIDTH, HEIGHT
@@ -37,12 +40,15 @@ def create_my_group canvas, txt
37
40
  edje
38
41
  end
39
42
  #
40
- txt = ( ARGV.length>0 ? ARGV[0] : nil )
43
+ def del_cb ecore_evas
44
+ Efl::Ecore.main_loop_quit
45
+ end
41
46
  #
42
47
  window = Efl::EcoreEvas::REcoreEvas.new { |w|
43
48
  w.resize WIDTH, HEIGHT
49
+ w.move 100, 100
44
50
  }
45
- #
51
+ window.ecore_evas_callback_delete_request_set method(:del_cb)
46
52
  canvas = window.get
47
53
  edje = create_my_group canvas, txt
48
54
  window.show
@@ -52,28 +58,33 @@ Efl::Ecore.main_loop_begin
52
58
  edje.free
53
59
  window.free
54
60
  #
61
+ Efl::Edje::shutdown
62
+ Efl::EcoreEvas::shutdown
55
63
 
56
64
  __END__
57
65
 
58
- // compile: edje_cc edje_example.edc
66
+ data {
67
+ item: "key1" "val1";
68
+ }
59
69
  collections {
60
70
  group {
61
- name: "my_group"; // must be the same as in edje_example.c
71
+ name: "my_group";
72
+ data {
73
+ item: "key2" "val2";
74
+ }
62
75
  parts {
63
76
  part {
64
77
  name: "background";
65
- type: RECT; // plain boring rectangle
66
- mouse_events: 0; // we don't need any mouse event on the background
67
- // just one state "default"
78
+ type: RECT;
79
+ mouse_events: 0;
68
80
  description {
69
- state: "default" 0.0; // must always exist
70
- color: 255 255 255 255; // white
71
- // define part coordinates:
72
- rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0]
81
+ state: "default" 0.0;
82
+ color: 255 255 255 255;
83
+ rel1 {
73
84
  relative: 0.0 0.0;
74
85
  offset: 0 0;
75
86
  }
76
- rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1)
87
+ rel2 {
77
88
  relative: 1.0 1.0;
78
89
  offset: -1 -1;
79
90
  }
@@ -82,56 +93,43 @@ collections {
82
93
  part {
83
94
  name: "text";
84
95
  type: TEXT;
85
- mouse_events: 1; // we want to change the color on mouse-over
86
- // 2 states, one "default" and another "over" to be used
87
- // on mouse over effect
96
+ mouse_events: 1;
88
97
  description {
89
98
  state: "default" 0.0;
90
- color: 255 0 0 255; // red
91
- // define part coordinates:
92
- rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10)
99
+ color: 255 0 0 255;
100
+ rel1 {
93
101
  relative: 0.1 0.2;
94
102
  offset: 5 10;
95
103
  }
96
- rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11)
104
+ rel2 {
97
105
  relative: 0.9 0.8;
98
106
  offset: -6 -11;
99
107
  }
100
- // define text specific state details
101
108
  text {
102
- font: "Sans"; /* using fontconfig name! */
109
+ font: "Sans";
103
110
  size: 10;
104
111
  text: "hello world";
105
112
  }
106
113
  }
107
114
  description {
108
115
  state: "over" 0.0;
109
- inherit: "default" 0.0; // copy everything from "default" at this point
110
- color: 0 255 0 255; // override color, now it is green
116
+ inherit: "default" 0.0;
117
+ color: 0 255 0 255;
111
118
  }
112
119
  }
113
- // do programs to change color on text mouse in/out (over)
114
120
  programs {
115
121
  program {
116
- // what triggers this program:
117
122
  signal: "mouse,in";
118
123
  source: "text";
119
- // what this program does:
120
124
  action: STATE_SET "over" 0.0;
121
125
  target: "text";
122
- // do the state-set in a nice interpolation animation
123
- // using linear time in 0.1 second
124
126
  transition: LINEAR 0.1;
125
127
  }
126
128
  program {
127
- // what triggers this program:
128
129
  signal: "mouse,out";
129
130
  source: "text";
130
- // what this program does:
131
131
  action: STATE_SET "default" 0.0;
132
132
  target: "text";
133
- // do the state-set in a nice interpolation animation
134
- // using linear time in 0.1 second
135
133
  transition: LINEAR 0.1;
136
134
  }
137
135
  }
data/test/test_evas.rb CHANGED
@@ -2,6 +2,8 @@
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
4
  require 'efl/evas'
5
+ require 'efl/eina_list'
6
+ require 'efl/eina_rectangle'
5
7
  #
6
8
  include Efl
7
9
  #
@@ -19,28 +21,19 @@ def create_canvas w, h
19
21
  einfo[:info][:dest_buffer_row_bytes] = w * FFI::type_size(:int);
20
22
  einfo[:info][:use_color_key] = 0;
21
23
  einfo[:info][:alpha_threshold] = 0;
22
- einfo[:info][:func][:new_update_region] = nil #FFI::Pointer::NULL;
23
- einfo[:info][:func][:free_update_region] = nil #FFI::Pointer::NULL;
24
+ einfo[:info][:func][:new_update_region] = nil
25
+ einfo[:info][:func][:free_update_region] = nil
24
26
  e.engine_info_set einfo
25
27
  [e,pixels]
26
28
  end
27
29
  #
28
- def destroy_canvas c, pixels
29
- pixels.free
30
- c.free
31
- end
32
- #
33
30
  def draw_scene c
34
- updates = c.render_updates
35
- Evas.render_updates_free updates
36
- # FIXME needs EinaRectangle
37
- # require 'efl/eina/eina_list'
38
- # updates = Eina::EinaList.new c.render_updates
39
- # updates.each do |u|
40
- # r = Eina::EinaRectangle.new u
41
- # puts "UPDATED REGION: pos: #{r[:x]}, #{r[:y]} size: #{r[:w]}x#{r[:h]}"
42
- # end
43
- # Evas::render_updates_free updates.ptr
31
+ updates = Efl::EinaList::REinaList.new c.render_updates
32
+ updates.each do |u|
33
+ r = Native::EinaRectangleStruct.new u
34
+ puts "UPDATED REGION: pos: #{r[:x]}, #{r[:y]} size: #{r[:w]}x#{r[:h]}"
35
+ end
36
+ Evas::render_updates_free updates
44
37
  end
45
38
  #
46
39
  def save_scene canvas, dest
@@ -57,50 +50,68 @@ def save_scene canvas, dest
57
50
  f << a.pack("ccc")
58
51
  p = p+::FFI.type_size(:int)
59
52
  end
60
-
61
- # for (; pixels < pixels_end; pixels++) {
62
- # int r, g, b;
63
- # r = ((*pixels) & 0xff0000) >> 16;
64
- # g = ((*pixels) & 0x00ff00) >> 8;
65
- # b = (*pixels) & 0x0000ff;
66
- # fprintf(f, "%c%c%c", r, g, b);
67
- # }
68
53
  end
69
54
  puts "saved scene as '#{dest}'"
70
55
  end
71
56
  #
72
57
  w = 320
73
58
  h = 240
59
+ #
74
60
  canvas, pixels = create_canvas w, h
75
61
  #
76
- bg = Evas::REvasObject.new canvas.object_rectangle_add
77
- bg.color = 255, 255, 255, 255
78
- bg.move 0, 0
79
- bg.resize w, h
62
+ bg = canvas.object_rectangle_add do |b|
63
+ b.color = 255, 255, 255, 255
64
+ b.move 0, 0
65
+ b.resize w, h
66
+ end
80
67
  bg.show
81
68
  #
82
69
  draw_scene canvas
83
70
  #
84
- r1 = Evas::REvasObject.new canvas.object_rectangle_add
85
- r1.color = 255, 0, 0, 255
86
- r1.move 10, 10
87
- r1.resize 100, 100
71
+ r1 = canvas.object_rectangle_add do |r|
72
+ r.color = 255, 0, 0, 255
73
+ r.move 10, 10
74
+ r.resize 100, 100
75
+ end
88
76
  r1.show
89
77
  #
90
- r2 = Evas::REvasObject.new canvas.object_rectangle_add
91
- r2.color = 0, 128, 0, 128
92
- r2.move 10, 10
93
- r2.resize 50, 50
78
+ r2 = canvas.object_rectangle_add do |r|
79
+ r.color = 0, 128, 0, 128
80
+ r.move 10, 10
81
+ r.resize 50, 50
82
+ end
94
83
  r2.show
95
84
  #
96
- r3 = Evas::REvasObject.new canvas.object_rectangle_add
97
- r3.color = 0, 128, 0, 255
98
- r3.move 60, 60
99
- r3.resize 50, 50
85
+ r3 = canvas.object_rectangle_add do |r|
86
+ r.color = 0, 128, 0, 255
87
+ r.move 60, 60
88
+ r.resize 50, 50
89
+ end
100
90
  r3.show
101
91
  #
92
+ l1 = canvas.object_line_add
93
+ l1.xy = *(r2.center+r3.center)
94
+ l1.show
95
+ #
96
+ p1 = canvas.object_polygon_add do |p|
97
+ p.color = 100, 128, 0, 100
98
+ p.<< w/2.0,10
99
+ p.<< w-10,h/2.0
100
+ p.<< w/2.0, h-10
101
+ p.<< 10, h/2.0
102
+ end
103
+ p1.show
104
+ #
102
105
  draw_scene canvas
103
106
  save_scene canvas, '/tmp/ffi-efl-evas-buffer-simple-render.ppm'
104
- destroy_canvas canvas, pixels
107
+ #
108
+ r1.free
109
+ r2.free
110
+ r3.free
111
+ l1.free
112
+ p1.free
113
+ bg.free
114
+ canvas.free
115
+ pixels.free
105
116
  #
106
117
  Evas::shutdown
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ffi-efl
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - "J\xC3\xA9r\xC3\xA9my Zurcher"
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-05 00:00:00 +02:00
14
- default_executable:
13
+ date: 2011-05-06 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: ffi
@@ -69,6 +68,7 @@ files:
69
68
  - lib/efl/eina.rb
70
69
  - lib/efl/eina_hash.rb
71
70
  - lib/efl/eina_list.rb
71
+ - lib/efl/eina_rectangle.rb
72
72
  - lib/efl/elementary.rb
73
73
  - lib/efl/evas.rb
74
74
  - lib/efl/ffi.rb
@@ -113,7 +113,6 @@ files:
113
113
  - test/test_elm_win-native.rb
114
114
  - test/test_elm_win_class.rb
115
115
  - test/test_evas.rb
116
- has_rdoc: true
117
116
  homepage: https://github.com/jeremyz/ffi-efl
118
117
  licenses: []
119
118
 
@@ -140,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
139
  requirements: []
141
140
 
142
141
  rubyforge_project: ffi-efl
143
- rubygems_version: 1.5.2
142
+ rubygems_version: 1.8.1
144
143
  signing_key:
145
144
  specification_version: 3
146
145
  summary: A ruby-ffi binding to efl libraries (Enlightenment Foundation Libraries)