ffi-efl 0.0.2 → 0.0.3
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/Changelog +13 -1
- data/README.rdoc +24 -14
- data/lib/efl/ecore.rb +7 -7
- data/lib/efl/ecore_evas.rb +78 -0
- data/lib/efl/ecore_getopt.rb +28 -29
- data/lib/efl/ecore_input.rb +14 -0
- data/lib/efl/edje.rb +47 -1
- data/lib/efl/eet.rb +18 -25
- data/lib/efl/eina.rb +14 -0
- data/lib/efl/eina_hash.rb +84 -0
- data/lib/efl/eina_list.rb +77 -0
- data/lib/efl/elementary.rb +22 -9
- data/lib/efl/evas.rb +67 -25
- data/lib/efl/{ecore/ecore-ffi.rb → ffi/ecore.rb} +8 -5
- data/lib/efl/{ecore/ecore_evas-ffi.rb → ffi/ecore_evas.rb} +10 -7
- data/lib/efl/{ecore/ecore_getopt-ffi.rb → ffi/ecore_getopt.rb} +8 -5
- data/lib/efl/{ecore/ecore_input-ffi.rb → ffi/ecore_input.rb} +9 -6
- data/lib/efl/{edje/edje-ffi.rb → ffi/edje.rb} +10 -7
- data/lib/efl/{eet/eet-ffi.rb → ffi/eet.rb} +8 -5
- data/lib/efl/ffi/eina.rb +48 -0
- data/lib/efl/ffi/eina_hash.rb +111 -0
- data/lib/efl/ffi/eina_list.rb +108 -0
- data/lib/efl/{eina/eina_types-ffi.rb → ffi/eina_types.rb} +8 -5
- data/lib/efl/{elementary/elementary-ffi.rb → ffi/elementary.rb} +16 -9
- data/lib/efl/{evas/evas-ffi.rb → ffi/evas.rb} +153 -150
- data/lib/efl/ffi.rb +81 -38
- data/lib/efl.rb +9 -4
- data/spec/ecore_evas_spec.rb +24 -0
- data/spec/ecore_getopt_spec.rb +1 -2
- data/spec/ecore_input_spec.rb +24 -0
- data/spec/ecore_spec.rb +2 -3
- data/spec/edje_spec.rb +1 -1
- data/spec/eet_spec.rb +68 -69
- data/spec/eina_hash_spec.rb +180 -0
- data/spec/eina_list_spec.rb +101 -0
- data/spec/eina_spec.rb +20 -0
- data/spec/evas_spec.rb +288 -40
- data/tasks/ffi.rake +1 -1
- data/test/test_edje.rb +141 -0
- data/test/test_elm_win.rb +25 -28
- data/test/test_elm_win_class.rb +7 -7
- data/test/test_evas.rb +106 -0
- metadata +30 -17
data/test/test_elm_win.rb
CHANGED
@@ -3,36 +3,33 @@
|
|
3
3
|
#
|
4
4
|
require 'efl/elementary'
|
5
5
|
#
|
6
|
-
|
6
|
+
Efl::Elm.init
|
7
7
|
#
|
8
|
-
puts Elm.init
|
9
|
-
|
10
8
|
win_del = Proc.new { |data,evas_object,event_info|
|
11
|
-
Efl::
|
9
|
+
Efl::Elm.elm_exit();
|
12
10
|
}
|
13
|
-
|
14
|
-
win = Efl::
|
15
|
-
Efl::
|
16
|
-
Efl::
|
17
|
-
|
18
|
-
bg = Efl::
|
19
|
-
Efl::
|
20
|
-
Efl::
|
21
|
-
Efl::
|
22
|
-
|
23
|
-
lb = Efl::
|
24
|
-
Efl::
|
25
|
-
Efl::
|
26
|
-
Efl::
|
27
|
-
Efl::
|
28
|
-
|
29
|
-
Efl::
|
30
|
-
Efl::
|
31
|
-
|
32
|
-
Efl::
|
33
|
-
|
34
|
-
Elm.run
|
35
|
-
|
11
|
+
#
|
12
|
+
win = Efl::Elm.elm_win_add FFI::MemoryPointer::NULL, "App name", :elm_win_basic
|
13
|
+
Efl::Elm.elm_win_title_set win, "Window title"
|
14
|
+
Efl::Evas.evas_object_smart_callback_add win, "delete,request", win_del, FFI::MemoryPointer::NULL
|
15
|
+
#
|
16
|
+
bg = Efl::Elm.elm_bg_add win
|
17
|
+
Efl::Evas.evas_object_size_hint_weight_set bg, 1.0, 1.0
|
18
|
+
Efl::Elm.elm_win_resize_object_add win, bg
|
19
|
+
Efl::Evas.evas_object_show bg
|
20
|
+
#
|
21
|
+
lb = Efl::Elm.elm_label_add win
|
22
|
+
Efl::Elm.elm_label_label_set lb, "Hello World!"
|
23
|
+
Efl::Evas.evas_object_size_hint_weight_set lb, 1.0, 1.0
|
24
|
+
Efl::Elm.elm_win_resize_object_add win, lb
|
25
|
+
Efl::Evas.evas_object_show lb
|
26
|
+
#
|
27
|
+
Efl::Evas.evas_object_move win, 300, 300
|
28
|
+
Efl::Evas.evas_object_resize win, 200, 100
|
29
|
+
#
|
30
|
+
Efl::Evas.evas_object_show win
|
31
|
+
#
|
32
|
+
Efl::Elm.run
|
33
|
+
Efl::Elm.shutdown
|
36
34
|
#
|
37
35
|
# EOF
|
38
|
-
|
data/test/test_elm_win_class.rb
CHANGED
@@ -5,28 +5,27 @@ require 'efl/elementary'
|
|
5
5
|
#
|
6
6
|
include Efl
|
7
7
|
#
|
8
|
-
DATA = FFI::MemoryPointer.from_string("my data")
|
9
|
-
#
|
10
8
|
class MyWin < Elm::ElmWin
|
11
9
|
def initialize name, title
|
12
10
|
super FFI::MemoryPointer::NULL, name
|
13
11
|
title_set title
|
14
12
|
feed
|
15
|
-
smart_callback_add "delete,request", method(:exit),
|
13
|
+
smart_callback_add "delete,request", method(:exit), FFI::MemoryPointer.from_string("my data")
|
16
14
|
end
|
17
15
|
def feed
|
18
16
|
# using block
|
19
17
|
@bg = add 'bg' do |bg|
|
20
18
|
bg.size_hint_weight_set 1.0, 1.0
|
19
|
+
bg.color = 200,255,100,200 # same as bg.color_set 200,255,100,200
|
21
20
|
bg.show
|
22
21
|
end
|
23
|
-
resize_object_add @bg.
|
22
|
+
resize_object_add @bg.to_ptr
|
24
23
|
@lb = add 'label'do |lb|
|
25
|
-
lb.
|
26
|
-
lb.size_hint_weight_set 1.0, 1.0
|
24
|
+
lb.label_label_set "Hello World!" # complete function name
|
25
|
+
lb.size_hint_weight_set 1.0, 1.0 # implicit evas_object function name prefix
|
27
26
|
end
|
28
27
|
@lb.show
|
29
|
-
resize_object_add @lb.
|
28
|
+
resize_object_add @lb.to_ptr
|
30
29
|
end
|
31
30
|
def exit data, evas_object, event_info
|
32
31
|
puts "EXIT #{data.read_string}"
|
@@ -37,6 +36,7 @@ end
|
|
37
36
|
Elm.init
|
38
37
|
#
|
39
38
|
win = MyWin.new "App name", "Window Title" do |w,eo|
|
39
|
+
w.alpha_set true
|
40
40
|
eo.move 300, 300
|
41
41
|
eo.resize 200, 100
|
42
42
|
eo.show
|
data/test/test_evas.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# -*- coding: UTF-8 -*-
|
3
|
+
#
|
4
|
+
require 'efl/evas'
|
5
|
+
#
|
6
|
+
include Efl
|
7
|
+
#
|
8
|
+
Evas::init
|
9
|
+
#
|
10
|
+
def create_canvas w, h
|
11
|
+
pixels = FFI::MemoryPointer.new :int, w*h
|
12
|
+
e = Evas::REvas.new
|
13
|
+
e.output_method_set Evas::render_method_lookup("buffer")
|
14
|
+
e.output_viewport_set 0, 0, w, h
|
15
|
+
e.output_size_set w, h
|
16
|
+
einfo = Efl::Evas::EngineInfoBufferStruct.new e.engine_info_get
|
17
|
+
einfo[:info][:depth_type] = Efl::Evas::EVAS_ENGINE_BUFFER_DEPTH_ARGB32
|
18
|
+
einfo[:info][:dest_buffer] = pixels
|
19
|
+
einfo[:info][:dest_buffer_row_bytes] = w * FFI::type_size(:int);
|
20
|
+
einfo[:info][:use_color_key] = 0;
|
21
|
+
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
|
+
e.engine_info_set einfo
|
25
|
+
[e,pixels]
|
26
|
+
end
|
27
|
+
#
|
28
|
+
def destroy_canvas c, pixels
|
29
|
+
pixels.free
|
30
|
+
c.free
|
31
|
+
end
|
32
|
+
#
|
33
|
+
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
|
44
|
+
end
|
45
|
+
#
|
46
|
+
def save_scene canvas, dest
|
47
|
+
einfo = Efl::Evas::EngineInfoBufferStruct.new canvas.engine_info_get
|
48
|
+
w, h = canvas.output_size_get
|
49
|
+
# PPM P6 format is dead simple to write:
|
50
|
+
p = FFI::Pointer.new :int, einfo[:info][:dest_buffer]
|
51
|
+
pixels_end = p + (w*h*::FFI.type_size(:int))
|
52
|
+
open(dest,'w') do |f|
|
53
|
+
f << "P6\n#{w} #{h}\n255\n"
|
54
|
+
while p != pixels_end
|
55
|
+
i = p.read_int
|
56
|
+
a = [ (i & 0xff0000)>>16, (i & 0x00ff00)>>8, (i & 0x0000ff) ]
|
57
|
+
f << a.pack("ccc")
|
58
|
+
p = p+::FFI.type_size(:int)
|
59
|
+
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
|
+
end
|
69
|
+
puts "saved scene as '#{dest}'"
|
70
|
+
end
|
71
|
+
#
|
72
|
+
w = 320
|
73
|
+
h = 240
|
74
|
+
canvas, pixels = create_canvas w, h
|
75
|
+
#
|
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
|
80
|
+
bg.show
|
81
|
+
#
|
82
|
+
draw_scene canvas
|
83
|
+
#
|
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
|
88
|
+
r1.show
|
89
|
+
#
|
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
|
94
|
+
r2.show
|
95
|
+
#
|
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
|
100
|
+
r3.show
|
101
|
+
#
|
102
|
+
draw_scene canvas
|
103
|
+
save_scene canvas, '/tmp/ffi-efl-evas-buffer-simple-render.ppm'
|
104
|
+
destroy_canvas canvas, pixels
|
105
|
+
#
|
106
|
+
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.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "J\xC3\xA9r\xC3\xA9my Zurcher"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-01 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -35,11 +35,7 @@ dependencies:
|
|
35
35
|
version: 3.6.5
|
36
36
|
type: :development
|
37
37
|
version_requirements: *id002
|
38
|
-
description:
|
39
|
-
ffi-efl is a FFI[https://github.com/ffi/ffi/wiki] binding to Enlightenment Foundation Libraries (eina,eet,evas,ecore,edje...)
|
40
|
-
base components of the Enlightenment project. (EFL API[http://www.enlightenment.org/p.php?p=docs&l=en])
|
41
|
-
|
42
|
-
ffi-efl project is developed on asynk[http://cgit.asynk.ch/cgi-bin/cgit/ffi-efl], github[https://github.com/jeremyz] and gitorious[https://gitorious.org/~jeyzu]
|
38
|
+
description: A ruby-ffi binding to efl libraries (Enlightenment Foundation Libraries).
|
43
39
|
email: jeremy@asynk.ch
|
44
40
|
executables: []
|
45
41
|
|
@@ -54,25 +50,38 @@ files:
|
|
54
50
|
- Rakefile
|
55
51
|
- lib/efl.rb
|
56
52
|
- lib/efl/ecore.rb
|
57
|
-
- lib/efl/
|
58
|
-
- lib/efl/ecore/ecore_evas-ffi.rb
|
59
|
-
- lib/efl/ecore/ecore_getopt-ffi.rb
|
60
|
-
- lib/efl/ecore/ecore_input-ffi.rb
|
53
|
+
- lib/efl/ecore_evas.rb
|
61
54
|
- lib/efl/ecore_getopt.rb
|
55
|
+
- lib/efl/ecore_input.rb
|
62
56
|
- lib/efl/edje.rb
|
63
|
-
- lib/efl/edje/edje-ffi.rb
|
64
57
|
- lib/efl/eet.rb
|
65
|
-
- lib/efl/
|
66
|
-
- lib/efl/
|
58
|
+
- lib/efl/eina.rb
|
59
|
+
- lib/efl/eina_hash.rb
|
60
|
+
- lib/efl/eina_list.rb
|
67
61
|
- lib/efl/elementary.rb
|
68
|
-
- lib/efl/elementary/elementary-ffi.rb
|
69
62
|
- lib/efl/evas.rb
|
70
|
-
- lib/efl/evas/evas-ffi.rb
|
71
63
|
- lib/efl/ffi.rb
|
64
|
+
- lib/efl/ffi/ecore.rb
|
65
|
+
- lib/efl/ffi/ecore_evas.rb
|
66
|
+
- lib/efl/ffi/ecore_getopt.rb
|
67
|
+
- lib/efl/ffi/ecore_input.rb
|
68
|
+
- lib/efl/ffi/edje.rb
|
69
|
+
- lib/efl/ffi/eet.rb
|
70
|
+
- lib/efl/ffi/eina.rb
|
71
|
+
- lib/efl/ffi/eina_hash.rb
|
72
|
+
- lib/efl/ffi/eina_list.rb
|
73
|
+
- lib/efl/ffi/eina_types.rb
|
74
|
+
- lib/efl/ffi/elementary.rb
|
75
|
+
- lib/efl/ffi/evas.rb
|
76
|
+
- spec/ecore_evas_spec.rb
|
72
77
|
- spec/ecore_getopt_spec.rb
|
78
|
+
- spec/ecore_input_spec.rb
|
73
79
|
- spec/ecore_spec.rb
|
74
80
|
- spec/edje_spec.rb
|
75
81
|
- spec/eet_spec.rb
|
82
|
+
- spec/eina_hash_spec.rb
|
83
|
+
- spec/eina_list_spec.rb
|
84
|
+
- spec/eina_spec.rb
|
76
85
|
- spec/evas_spec.rb
|
77
86
|
- tasks/ann.rake
|
78
87
|
- tasks/constants.rb
|
@@ -88,8 +97,10 @@ files:
|
|
88
97
|
- tasks/spec.rake
|
89
98
|
- tasks/svn.rake
|
90
99
|
- tasks/test.rake
|
100
|
+
- test/test_edje.rb
|
91
101
|
- test/test_elm_win.rb
|
92
102
|
- test/test_elm_win_class.rb
|
103
|
+
- test/test_evas.rb
|
93
104
|
has_rdoc: true
|
94
105
|
homepage: https://github.com/jeremyz/ffi-efl
|
95
106
|
licenses: []
|
@@ -120,7 +131,9 @@ rubyforge_project: ffi-efl
|
|
120
131
|
rubygems_version: 1.5.2
|
121
132
|
signing_key:
|
122
133
|
specification_version: 3
|
123
|
-
summary: ffi
|
134
|
+
summary: A ruby-ffi binding to efl libraries (Enlightenment Foundation Libraries)
|
124
135
|
test_files:
|
136
|
+
- test/test_evas.rb
|
137
|
+
- test/test_edje.rb
|
125
138
|
- test/test_elm_win_class.rb
|
126
139
|
- test/test_elm_win.rb
|