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/Changelog +13 -2
- data/lib/efl.rb +1 -1
- data/lib/efl/edje.rb +11 -0
- data/lib/efl/eina_list.rb +1 -1
- data/lib/efl/eina_rectangle.rb +20 -0
- data/lib/efl/evas.rb +140 -21
- data/spec/ecore_evas_spec.rb +1 -1
- data/spec/edje_spec.rb +341 -2
- data/spec/eet_spec.rb +1 -1
- data/spec/evas_spec.rb +428 -18
- data/tasks/gem.rake +0 -1
- data/tasks/helpers.rb +1 -1
- data/test/test_edje.rb +40 -42
- data/test/test_evas.rb +53 -42
- metadata +4 -5
data/tasks/gem.rake
CHANGED
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.
|
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
|
-
|
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
|
-
|
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
|
-
|
66
|
+
data {
|
67
|
+
item: "key1" "val1";
|
68
|
+
}
|
59
69
|
collections {
|
60
70
|
group {
|
61
|
-
name: "my_group";
|
71
|
+
name: "my_group";
|
72
|
+
data {
|
73
|
+
item: "key2" "val2";
|
74
|
+
}
|
62
75
|
parts {
|
63
76
|
part {
|
64
77
|
name: "background";
|
65
|
-
type: RECT;
|
66
|
-
mouse_events: 0;
|
67
|
-
// just one state "default"
|
78
|
+
type: RECT;
|
79
|
+
mouse_events: 0;
|
68
80
|
description {
|
69
|
-
state: "default" 0.0;
|
70
|
-
color: 255 255 255 255;
|
71
|
-
|
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 {
|
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;
|
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;
|
91
|
-
|
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 {
|
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";
|
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;
|
110
|
-
color: 0 255 0 255;
|
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
|
23
|
-
einfo[:info][:func][:free_update_region] = nil
|
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
|
-
|
36
|
-
|
37
|
-
#
|
38
|
-
|
39
|
-
|
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 =
|
77
|
-
|
78
|
-
|
79
|
-
|
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 =
|
85
|
-
|
86
|
-
|
87
|
-
|
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 =
|
91
|
-
|
92
|
-
|
93
|
-
|
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 =
|
97
|
-
|
98
|
-
|
99
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
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)
|