summaryrefslogtreecommitdiffstats
path: root/lib/efl/ecore_evas.rb
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-05-03 17:45:11 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-05-03 17:45:11 +0200
commit4e9e379242fcfc865f45f861480eefcd3d672f39 (patch)
tree8a00806e4258e10c579a17d3fb44e8d1896b13b1 /lib/efl/ecore_evas.rb
parent7a2c4d3e5ee6ad884845b9563b0f07c218382778 (diff)
downloadffi-efl-4e9e379242fcfc865f45f861480eefcd3d672f39.zip
ffi-efl-4e9e379242fcfc865f45f861480eefcd3d672f39.tar.gz
increase REcoreEvas class and specs
Diffstat (limited to 'lib/efl/ecore_evas.rb')
-rw-r--r--lib/efl/ecore_evas.rb68
1 files changed, 57 insertions, 11 deletions
diff --git a/lib/efl/ecore_evas.rb b/lib/efl/ecore_evas.rb
index cb08d30..c1372f6 100644
--- a/lib/efl/ecore_evas.rb
+++ b/lib/efl/ecore_evas.rb
@@ -10,33 +10,79 @@ module Efl
class REcoreEvas
include Efl::ClassHelper
proxy_list [Efl::EcoreEvas,'ecore_evas_'].freeze
- def initialize o=nil, &block
+ def initialize o=nil
@ptr = (
case o
when NilClass
- FFI::AutoPointer.new Efl::EcoreEvas.ecore_evas_new(nil, 0, 0, 0, 0, nil), method(:free)
- when self.class
- o.to_ptr
- when FFI::AutoPointer
- o
+ FFI::AutoPointer.new Efl::EcoreEvas.ecore_evas_new(nil, 0, 0, 0, 0, nil), REcoreEvas.method(:release)
+ when Hash
+ FFI::AutoPointer.new Efl::EcoreEvas.ecore_evas_new(o[:engine_name], o[:x], o[:y], o[:w], o[:h], o[:extra_options]), REcoreEvas.method(:release)
when FFI::Pointer
- FFI::AutoPointer.new o, method(:free)
+ o
else
raise ArgumentError.new "wrong argument #{o.class.name}"
end
)
yield self if block_given?
end
+ def self.release p
+ Efl::EcoreEvas.ecore_evas_free p unless p.nil?
+ end
def free p=nil
- return Efl::EcoreEvas.ecore_evas_free p unless p.nil?
- Efl::EcoreEvas.ecore_evas_free @ptr
- @ptr.free
+ @ptr.autorelease=false
+ REcoreEvas.release @ptr
@ptr=nil
end
- def get
+ def geometry_get
+ x = FFI::MemoryPointer.new :int
+ y = FFI::MemoryPointer.new :int
+ w = FFI::MemoryPointer.new :int
+ h = FFI::MemoryPointer.new :int
+ Efl::EcoreEvas.ecore_evas_geometry_get @ptr, x, y, w, h
+ [ x.read_int, y.read_int, w.read_int, h.read_int ]
+ end
+ alias :geometry :geometry_get
+ def size
+ geometry_get[2..-1]
+ end
+ def size= wh
+ Efl::Evas.evas_object_resize @ptr, *wh
+ end
+ def name_class_get
+ n = FFI::MemoryPointer.new :pointer
+ c = FFI::MemoryPointer.new :pointer
+ Efl::EcoreEvas.ecore_evas_name_class_get @ptr, n, c
+ [ n.read_pointer.read_string, c.read_pointer.read_string ]
+ end
+ def size_min_get
+ w = FFI::MemoryPointer.new :int
+ h = FFI::MemoryPointer.new :int
+ Efl::EcoreEvas.ecore_evas_size_min_get @ptr, w, h
+ [ w.read_int, h.read_int ]
+ end
+ def size_max_get
+ w = FFI::MemoryPointer.new :int
+ h = FFI::MemoryPointer.new :int
+ Efl::EcoreEvas.ecore_evas_size_max_get @ptr, w, h
+ [ w.read_int, h.read_int ]
+ end
+ def size_base_get
+ w = FFI::MemoryPointer.new :int
+ h = FFI::MemoryPointer.new :int
+ Efl::EcoreEvas.ecore_evas_size_base_get @ptr, w, h
+ [ w.read_int, h.read_int ]
+ end
+ def size_step_get
+ w = FFI::MemoryPointer.new :int
+ h = FFI::MemoryPointer.new :int
+ Efl::EcoreEvas.ecore_evas_size_step_get @ptr, w, h
+ [ w.read_int, h.read_int ]
+ end
+ def evas
# EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
Efl::Evas::REvas.new Efl::EcoreEvas.ecore_evas_get @ptr
end
+ alias :get :evas
def object_image_new
# EAPI Evas_Object *ecore_evas_object_image_new(Ecore_Evas *ee_target);
Efl::Evas::REvasObject.new Efl::EcoreEvas.ecore_evas_object_image_new @prt