diff options
-rw-r--r-- | lib/efl/ecore_evas.rb | 68 | ||||
-rw-r--r-- | spec/ecore_evas_spec.rb | 255 |
2 files changed, 306 insertions, 17 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 diff --git a/spec/ecore_evas_spec.rb b/spec/ecore_evas_spec.rb index c4d2275..afb1b48 100644 --- a/spec/ecore_evas_spec.rb +++ b/spec/ecore_evas_spec.rb @@ -1,24 +1,267 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # +require 'efl/evas' +require 'efl/ecore' require 'efl/ecore_evas' # +def ecore_loop n + n.downto(0) do + sleep 0.1 + Efl::Ecore.main_loop_iterate + end +end +# describe Efl::EcoreEvas do # before(:all) do EcoreEvas = Efl::EcoreEvas + EcoreEvas.init + end + after(:all) do + EcoreEvas.shutdown end # it "should init" do - EcoreEvas.init.should eql 1 - EcoreEvas.init.should eql 2 - EcoreEvas.init.should eql 3 + EcoreEvas.init.should == 2 + EcoreEvas.init.should == 3 end # it "should shutdown" do - EcoreEvas.shutdown.should eql 2 - EcoreEvas.shutdown.should eql 1 - EcoreEvas.shutdown.should eql 0 + EcoreEvas.shutdown.should == 2 + EcoreEvas.shutdown.should == 1 end # + it "should work" do + EcoreEvas.engines_free EcoreEvas.engines_get +# require 'efl/eina_list' +# l = Efl::EinaList::REinaList.new EcoreEvas.engines_get +# l.each do |e| puts e.read_string end +# EcoreEvas.engines_free l + end + # + describe Efl::EcoreEvas::REcoreEvas do + before(:all) { + EcoreEvas.init + } + before(:each) do + @e = EcoreEvas::REcoreEvas.new :engine_name=>"software_x11", :x=>10, :y=>10, :w=>100, :h=>120 + @e.move 10, 10 + @canvas = @e.evas + @bg = @canvas.object_add(:rectangle) { |o| + o.color = 100, 100, 255, 255 + o.size = @e.size + } + @bg.show + @e.show + end + after(:each) do + @e.free + end + after(:all) do + EcoreEvas.shutdown + end + # + it "engine_name_get should work" do + @e.engine_name_get.should == "software_x11" + end + # + it "data get/set should work" do + @e.data_set 'key', '666' + @e.data_get('key').read_string.should == '666' + end + # + it "move, resize move_resize and geometry_get should work" do + @e.geometry_get.should == [10,10,100,120] + @e.move 20, 17 # w+23 window bar height + ecore_loop 3 + @e.geometry_get.should == [20,40,100,120] + @e.resize 200,150 + ecore_loop 3 + @e.geometry_get.should == [20,40,200,150] + @e.move_resize 10, 0, 130, 100 + ecore_loop 3 + @e.geometry_get.should == [10,23,130,100] + g = @e.geometry_get + end + # + it "rotation should work" do + @e.rotation_set 25 + @e.rotation_get.should == 25 + @e.rotation_set 50 + @e.rotation_get.should == 50 + end + # + it "shaped get/set should work" do + @e.shaped?.should be_false + @e.shaped_set true + @e.shaped_get.should be_true + @e.shaped = false + @e.shaped?.should be_false + end + # + it "alpha get/set should work" do + @e.alpha?.should be_false + @e.alpha_set true + @e.alpha_get.should be_true + @e.alpha = false + @e.alpha?.should be_false + end + # + it "transparent get/set should work" do + @e.transparent?.should be_false + @e.transparent_set true + @e.transparent_get.should be_true + @e.transparent = false + @e.transparent?.should be_false + end + # + it "show hide visibility should work" do + ecore_loop 3 + @e.visibility?.should == 1 + @e.hide + ecore_loop 3 + @e.visibility_get.should == 0 + @e.show + ecore_loop 3 + @e.visibility?.should == 1 + end + # + it "raise lower activate should work" do + @e.raise + @e.lower + @e.activate + end + # + it "title set/get should work" do + @e.title_set "title" + @e.title_get.should == "title" + @e.title = "other" + @e.title_get.should == "other" + end + # + # + it "name_class set/get should work" do + @e.name_class_set "name", "class" + @e.name_class_get.should == ['name','class'] + @e.name_class = "name1", "class1" + @e.name_class_get.should == ['name1','class1'] + end + # + it "size_min set/get should work" do + @e.size_min_set 20, 30 + @e.size_min_get.should == [20, 30] + end + # + it "size_max set/get should work" do + @e.size_max_set 20, 30 + @e.size_max_get.should == [20, 30] + end + # + it "size_base set/get should work" do + @e.size_base_set 20, 30 + @e.size_base_get.should == [20, 30] + end + # + it "size_step set/get should work" do + @e.size_step_set 20, 30 + @e.size_step_get.should == [20, 30] + end + # + # TODO : 3 * cursor + # + it "layer set/get should work" do + @e.layer_set 2 + @e.layer_get.should == 2 + @e.layer = 1 + @e.layer?.should == 1 + end + # + it "focus set/get should work" do + @e.focus?.should be_false + @e.focus_set true + ecore_loop 3 + @e.focus_get.should be_true + @e.focus?.should be_true + end + # + it "iconified set/get should work" do + @e.iconified_set true + @e.iconified_get.should be_true + @e.iconified = false + @e.iconified?.should be_false + end + # + it "borderless set/get should work" do + @e.borderless_set true + @e.borderless_get.should be_true + @e.borderless = false + @e.borderless?.should be_false + end + # + it "override set/get should work" do + @e.override_set true + @e.override_get.should be_true + @e.override = false + @e.override?.should be_false + end + # + # FIXME + # ecore/src/lib/ecore_evas/ecore_evas.c => ecore_evas_maximized_set => IFC => return +# it "maximized set/get should work" do +# @e.maximized?.should be_false +# @e.maximized_set true +# ecore_loop 10 +# @e.maximized_get.should be_true +# @e.maximized = false +# ecore_loop 3 +# @e.maximized?.should be_false +# end + # + it "fullscreen set/get should work" do + @e.fullscreen_set true + ecore_loop 3 + @e.fullscreen_get.should be_true + @e.fullscreen = false + ecore_loop 3 + @e.fullscreen?.should be_false + end + # + it "avoid_damage set/get should work" do + @e.avoid_damage_set :ecore_evas_avoid_damage_expose + ecore_loop 3 + @e.avoid_damage_get.should == :ecore_evas_avoid_damage_expose + @e.avoid_damage = :ecore_evas_avoid_damage_built_in + ecore_loop 3 + @e.avoid_damage?.should == :ecore_evas_avoid_damage_built_in + end + # + it "withdrawn set/get should work" do + @e.withdrawn_set true + @e.withdrawn_get.should be_true + @e.withdrawn = false + @e.withdrawn?.should be_false + end + # + it "sticky set/get should work" do + @e.sticky_set true + ecore_loop 3 + @e.sticky_get.should be_true + @e.sticky = false + ecore_loop 3 + @e.sticky?.should be_false + end + # + it "ignore_events set/get should work" do + @e.ignore_events_set true + @e.ignore_events_get.should be_true + @e.ignore_events = false + @e.ignore_events?.should be_false + end + # +# it "object_associate dissociate should work" do +# @e.object_associate_set true +# @e.object_associate_set true +# end + end end |