ffi-efl 0.0.4 → 0.0.5

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/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)