X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Frb_evas_object.c;h=52a31f5f1790df934956072fd2c520b6cfa1bac0;hb=1b56a6791ef0e24b38fb32678115fb83b174ef30;hp=6492a4e9de48fd2d3a10cd95bae056c63dc21d00;hpb=2118372cfbb06b10e6254539b30887e0342650fd;p=ruby-evas.git diff --git a/src/rb_evas_object.c b/src/rb_evas_object.c index 6492a4e..52a31f5 100644 --- a/src/rb_evas_object.c +++ b/src/rb_evas_object.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas_object.c 20 2004-06-22 20:46:56Z tilman $ + * $Id: rb_evas_object.c 38 2004-07-25 11:27:25Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,24 +26,6 @@ #include "rb_evas.h" #include "rb_evas_object.h" -#define GET_OBJ(obj, type, o, desc) \ - type **(o) = NULL; \ -\ - Data_Get_Struct ((obj), type *, (o)); \ -\ - if (!*(o)) { \ - rb_raise (rb_eException, desc " destroyed already"); \ - return Qnil; \ - } - -#define CHECK_BOOL(val) \ - if (TYPE ((val)) != T_TRUE && TYPE ((val)) != T_FALSE) { \ - rb_raise (rb_eTypeError, \ - "wrong argument type %s (expected true or false)", \ - rb_obj_classname ((val))); \ - return Qnil; \ - } - static VALUE parents; /* called by the child classes */ @@ -52,6 +34,8 @@ void c_evas_object_free (Evas_Object **e) if (*e) evas_object_del (*e); + rb_hash_aset (parents, INT2NUM ((long) e), Qnil); + free (e); } @@ -66,7 +50,7 @@ void c_evas_object_mark (Evas_Object **e) static VALUE c_init (VALUE self, VALUE parent) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_data_set (*e, RUBY_EVAS_OBJECT_KEY, (void *) self); @@ -77,31 +61,22 @@ static VALUE c_init (VALUE self, VALUE parent) static VALUE c_inspect (VALUE self) { - char buf[128]; - - GET_OBJ (self, Evas_Object, e, "EvasObject"); - - snprintf (buf, sizeof (buf), "#", - (void *) self, *e); - - return rb_str_new2 (buf); + INSPECT (self, Evas_Object *); } static VALUE c_delete (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); - if (*e) { - evas_object_del (*e); - *e = NULL; - } + evas_object_del (*e); + *e = NULL; return Qnil; } static VALUE c_resize (VALUE self, VALUE w, VALUE h) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); Check_Type (w, T_FIXNUM); Check_Type (h, T_FIXNUM); @@ -114,7 +89,7 @@ static VALUE c_resize (VALUE self, VALUE w, VALUE h) static VALUE c_move (VALUE self, VALUE x, VALUE y) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); Check_Type (x, T_FIXNUM); Check_Type (y, T_FIXNUM); @@ -129,7 +104,7 @@ static VALUE c_geometry_get (VALUE self) { int x = 0, y = 0, w = 0, h = 0; - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_geometry_get (*e, (Evas_Coord *) &x, (Evas_Coord *) &y, (Evas_Coord *) & w, (Evas_Coord *) &h); @@ -140,7 +115,7 @@ static VALUE c_geometry_get (VALUE self) static VALUE c_show (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_show (*e); @@ -149,7 +124,7 @@ static VALUE c_show (VALUE self) static VALUE c_hide (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_hide (*e); @@ -158,14 +133,14 @@ static VALUE c_hide (VALUE self) static VALUE c_visible_get (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); return evas_object_visible_get (*e) ? Qtrue : Qfalse; } static VALUE c_evas_get (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); return rb_hash_aref (parents, INT2NUM ((long) (e))); } @@ -174,7 +149,7 @@ static VALUE c_name_get (VALUE self) { const char *name; - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); if (!(name = evas_object_name_get (*e))) return Qnil; @@ -184,7 +159,7 @@ static VALUE c_name_get (VALUE self) static VALUE c_name_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); Check_Type (val, T_STRING); @@ -195,14 +170,14 @@ static VALUE c_name_set (VALUE self, VALUE val) static VALUE c_layer_get (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); return INT2FIX (evas_object_layer_get (*e)); } static VALUE c_layer_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); Check_Type (val, T_FIXNUM); @@ -215,7 +190,7 @@ static VALUE c_get_color (VALUE self) { int r = 0, g = 0, b = 0, a = 0; - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_color_get (*e, &r, &g, &b, &a); @@ -226,7 +201,7 @@ static VALUE c_get_color (VALUE self) static VALUE c_set_color (VALUE self, VALUE r, VALUE g, VALUE b, VALUE a) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); Check_Type (r, T_FIXNUM); Check_Type (g, T_FIXNUM); @@ -241,14 +216,14 @@ static VALUE c_set_color (VALUE self, VALUE r, VALUE g, VALUE b, static VALUE c_pass_events_get (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); return evas_object_pass_events_get (*e) ? Qtrue : Qfalse; } static VALUE c_pass_events_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); CHECK_BOOL (val); @@ -259,7 +234,7 @@ static VALUE c_pass_events_set (VALUE self, VALUE val) static VALUE c_raise (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_raise (*e); @@ -268,7 +243,7 @@ static VALUE c_raise (VALUE self) static VALUE c_lower (VALUE self) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); evas_object_lower (*e); @@ -277,7 +252,7 @@ static VALUE c_lower (VALUE self) static VALUE c_stack_above (VALUE self, VALUE target) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); if (!rb_obj_is_kind_of (target, cEvasObject)) { rb_raise (rb_eTypeError, @@ -286,7 +261,7 @@ static VALUE c_stack_above (VALUE self, VALUE target) return Qnil; } - GET_OBJ (target, Evas_Object, target2, "EvasObject"); + GET_OBJ (target, Evas_Object *, target2); evas_object_stack_above (*e, *target2); @@ -295,7 +270,7 @@ static VALUE c_stack_above (VALUE self, VALUE target) static VALUE c_stack_below (VALUE self, VALUE target) { - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); if (!rb_obj_is_kind_of (target, cEvasObject)) { rb_raise (rb_eTypeError, @@ -304,7 +279,7 @@ static VALUE c_stack_below (VALUE self, VALUE target) return Qnil; } - GET_OBJ (target, Evas_Object, target2, "EvasObject"); + GET_OBJ (target, Evas_Object *, target2); evas_object_stack_below (*e, *target2); @@ -316,7 +291,7 @@ static VALUE c_above_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); if (!(evas_object_above_get (*e))) return Qnil; @@ -334,7 +309,7 @@ static VALUE c_below_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas_Object, e, "EvasObject"); + GET_OBJ (self, Evas_Object *, e); if (!(evas_object_below_get (*e))) return Qnil;