From 8efd0235a6bb26710fd89dd07a5fdb55cafde247 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Sun, 1 Aug 2004 10:17:39 +0000 Subject: [PATCH] We now use real structs to wrap objects. This way we can get rid of rb_global_variable()'s. Also put headers in their own subdirectory. --- src/Makefile.am | 4 +- src/rb_evas.c | 97 ++++++++++++------------------ src/rb_evas.h | 13 ++-- src/rb_evas_main.h | 13 +--- src/rb_evas_object.c | 137 ++++++++++++++++++++----------------------- src/rb_evas_object.h | 19 ++++-- src/rb_gradient.c | 33 ++++++----- src/rb_image.c | 17 ++++-- src/rb_line.c | 25 ++++---- src/rb_polygon.c | 25 ++++---- src/rb_rectangle.c | 17 ++++-- src/rb_text.c | 41 +++++++------ 12 files changed, 225 insertions(+), 216 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 3ef9ce7..8ef25c4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am 23 2004-06-26 22:55:31Z tilman $ +## $Id: Makefile.am 49 2004-08-01 10:17:39Z tilman $ AM_CFLAGS = $(EVAS_CFLAGS) INCLUDES = -I$(RUBYDIR) @@ -19,5 +19,5 @@ evas_la_SOURCES = rb_evas_main.c rb_evas_main.h \ evas_la_LIBADD = -lruby $(EVAS_LIBS) evas_la_LDFLAGS = -module -avoid-version -pkgincludedir = $(RUBYSITEDIR) +pkgincludedir = $(RUBYSITEDIR)/evas pkginclude_HEADERS = rb_evas_object.h rb_evas.h diff --git a/src/rb_evas.c b/src/rb_evas.c index 1f72188..fb02482 100644 --- a/src/rb_evas.c +++ b/src/rb_evas.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas.c 43 2004-07-26 10:49:51Z tilman $ + * $Id: rb_evas.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -28,40 +28,24 @@ #include "rb_evas_object.h" VALUE cEvas; -static VALUE parents; -static void c_mark (Evas **e) +static void c_mark (RbEvas *e) { - VALUE parent; - - parent = rb_hash_aref (parents, INT2NUM ((long) (e))); - if (parent != Qnil) - rb_gc_mark (parent); -} - -static void c_free (Evas **e) -{ - /* do NOT call evas_free() here, since the Evas is freed - * by ecore_evas_free() eventually - */ - rb_hash_aset (parents, INT2NUM ((long) e), Qnil); - - free (e); + rb_gc_mark (e->parent); } VALUE TO_EVAS (VALUE parent, Evas *e) { VALUE self; - Evas **my_e = NULL; + RbEvas *evas = NULL; if (NIL_P (parent) || !e) return Qnil; - self = Data_Make_Struct (cEvas, Evas *, - c_mark, c_free, my_e); - *my_e = e; - - rb_hash_aset (parents, INT2NUM ((long) my_e), parent); + self = Data_Make_Struct (cEvas, RbEvas, + c_mark, free, evas); + evas->real = e; + evas->parent = parent; rb_obj_call_init (self, 0, NULL); @@ -70,45 +54,45 @@ VALUE TO_EVAS (VALUE parent, Evas *e) static VALUE c_inspect (VALUE self) { - INSPECT (self, Evas *); + INSPECT (self, RbEvas); } static VALUE c_render (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - evas_render (*e); + evas_render (e->real); return Qnil; } static VALUE c_font_path_clear (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - evas_font_path_clear (*e); + evas_font_path_clear (e->real); return Qnil; } static VALUE c_font_path_append (VALUE self, VALUE path) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); Check_Type (path, T_STRING); - evas_font_path_append (*e, StringValuePtr (path)); + evas_font_path_append (e->real, StringValuePtr (path)); return Qnil; } static VALUE c_font_path_prepend (VALUE self, VALUE path) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); Check_Type (path, T_STRING); - evas_font_path_append (*e, StringValuePtr (path)); + evas_font_path_append (e->real, StringValuePtr (path)); return Qnil; } @@ -118,9 +102,9 @@ static VALUE c_font_path_get (VALUE self) VALUE ary; const Evas_List *list, *l; - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - if (!(list = evas_font_path_list (*e))) + if (!(list = evas_font_path_list (e->real))) return rb_ary_new (); ary = rb_ary_new2 (evas_list_count ((Evas_List *) list)); @@ -133,63 +117,63 @@ static VALUE c_font_path_get (VALUE self) static VALUE c_font_cache_get (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - return INT2FIX (evas_font_cache_get (*e)); + return INT2FIX (evas_font_cache_get (e->real)); } static VALUE c_font_cache_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); Check_Type (val, T_FIXNUM); - evas_font_cache_set (*e, FIX2INT (val)); + evas_font_cache_set (e->real, FIX2INT (val)); return Qnil; } static VALUE c_font_cache_flush (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - evas_font_cache_flush (*e); + evas_font_cache_flush (e->real); return Qnil; } static VALUE c_image_cache_get (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - return INT2FIX (evas_image_cache_get (*e)); + return INT2FIX (evas_image_cache_get (e->real)); } static VALUE c_image_cache_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); Check_Type (val, T_FIXNUM); - evas_image_cache_set (*e, FIX2INT (val)); + evas_image_cache_set (e->real, FIX2INT (val)); return Qnil; } static VALUE c_image_cache_reload (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - evas_image_cache_reload (*e); + evas_image_cache_reload (e->real); return Qnil; } static VALUE c_image_cache_flush (VALUE self) { - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - evas_image_cache_flush (*e); + evas_image_cache_flush (e->real); return Qnil; } @@ -199,9 +183,9 @@ static VALUE c_top_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - if (!(o = evas_object_top_get (*e))) + if (!(o = evas_object_top_get (e->real))) return Qnil; if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { @@ -217,9 +201,9 @@ static VALUE c_bottom_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); - if (!(o = evas_object_bottom_get (*e))) + if (!(o = evas_object_bottom_get (e->real))) return Qnil; if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { @@ -235,11 +219,11 @@ static VALUE c_find_object (VALUE self, VALUE name) Evas_Object *o; void *obj; - GET_OBJ (self, Evas *, e); + GET_OBJ (self, RbEvas, e); Check_Type (name, T_STRING); - if (!(o = evas_object_name_find (*e, StringValuePtr (name)))) + if (!(o = evas_object_name_find (e->real, StringValuePtr (name)))) return Qnil; if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { @@ -276,7 +260,4 @@ void Init_Evas (void) rb_define_method (cEvas, "top", c_top_get, 0); rb_define_method (cEvas, "bottom", c_bottom_get, 0); rb_define_method (cEvas, "find_object", c_find_object, 1); - - parents = rb_hash_new (); - rb_global_variable (&parents); } diff --git a/src/rb_evas.h b/src/rb_evas.h index 6f5359a..9bb8e39 100644 --- a/src/rb_evas.h +++ b/src/rb_evas.h @@ -1,5 +1,5 @@ /* - * $Id: rb_evas.h 43 2004-07-26 10:49:51Z tilman $ + * $Id: rb_evas.h 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -21,11 +21,16 @@ #ifndef __RB_EVAS_H #define __RB_EVAS_H -#ifndef __RB_EVAS_C -extern VALUE cEvas; -#endif +typedef struct { + Evas *real; + VALUE parent; +} RbEvas; void Init_Evas (void); VALUE TO_EVAS (VALUE parent, Evas *e); +#ifndef __RB_EVAS_C +extern VALUE cEvas; +#endif + #endif diff --git a/src/rb_evas_main.h b/src/rb_evas_main.h index be8700a..474a6f5 100644 --- a/src/rb_evas_main.h +++ b/src/rb_evas_main.h @@ -1,5 +1,5 @@ /* - * $Id: rb_evas_main.h 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_evas_main.h 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -24,14 +24,7 @@ #define GET_OBJ(obj, type, o) \ type *(o) = NULL; \ \ - Data_Get_Struct ((obj), type, (o)); \ -\ - if (!*(o)) { \ - rb_raise (rb_eException, \ - "%s destroyed already", \ - rb_obj_classname ((obj))); \ - return Qnil; \ - } + Data_Get_Struct ((obj), type, (o)); #define CHECK_BOOL(val) \ if (TYPE ((val)) != T_TRUE && TYPE ((val)) != T_FALSE) { \ @@ -57,7 +50,7 @@ \ snprintf (buf, sizeof (buf), \ "#<%s:%p ptr=%p>", rb_obj_classname ((obj)), \ - (void *) obj, *o); \ + (void *) obj, o->real); \ \ return rb_str_new2 (buf); diff --git a/src/rb_evas_object.c b/src/rb_evas_object.c index 7fe3298..98a05fb 100644 --- a/src/rb_evas_object.c +++ b/src/rb_evas_object.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas_object.c 46 2004-07-26 11:14:50Z tilman $ + * $Id: rb_evas_object.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -19,6 +19,7 @@ */ #include +#include #include @@ -28,76 +29,70 @@ #include "rb_evas_object.h" VALUE cEvasObject; -static VALUE parents; /* called by the child classes */ -void c_evas_object_free (Evas_Object **e) +void c_evas_object_mark (RbEvasObject *e) { - if (*e) - evas_object_del (*e); - - rb_hash_aset (parents, INT2NUM ((long) e), Qnil); - - free (e); + rb_gc_mark (e->parent); } -void c_evas_object_mark (Evas_Object **e) +void c_evas_object_free (RbEvasObject *e, bool free_mem) { - VALUE parent; + if (e->real) + evas_object_del (e->real); - parent = rb_hash_aref (parents, INT2NUM ((long) (e))); - if (!NIL_P (parent)) - rb_gc_mark (parent); + if (free_mem) + free (e); } static VALUE c_init (VALUE self, VALUE parent) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_data_set (*e, RUBY_EVAS_OBJECT_KEY, (void *) self); + evas_object_data_set (e->real, RUBY_EVAS_OBJECT_KEY, (void *) self); - rb_hash_aset (parents, INT2NUM ((long) e), parent); + e->parent = parent; return self; } static VALUE c_inspect (VALUE self) { - INSPECT (self, Evas_Object *); + INSPECT (self, RbEvasObject); } static VALUE c_delete (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_del (*e); - *e = NULL; + evas_object_del (e->real); + e->real = NULL; return Qnil; } static VALUE c_resize (VALUE self, VALUE w, VALUE h) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (w, T_FIXNUM); Check_Type (h, T_FIXNUM); - evas_object_resize (*e, (Evas_Coord) FIX2INT (w), - (Evas_Coord) FIX2INT (h)); + evas_object_resize (e->real, (Evas_Coord) FIX2INT (w), + (Evas_Coord) FIX2INT (h)); return Qnil; } static VALUE c_move (VALUE self, VALUE x, VALUE y) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (x, T_FIXNUM); Check_Type (y, T_FIXNUM); - evas_object_move (*e, (Evas_Coord) FIX2INT (x), - (Evas_Coord) FIX2INT (y)); + evas_object_move (e->real, (Evas_Coord) FIX2INT (x), + (Evas_Coord) FIX2INT (y)); return Qnil; } @@ -106,10 +101,11 @@ static VALUE c_geometry_get (VALUE self) { int x = 0, y = 0, w = 0, h = 0; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_geometry_get (*e, (Evas_Coord *) &x, (Evas_Coord *) &y, - (Evas_Coord *) & w, (Evas_Coord *) &h); + evas_object_geometry_get (e->real, + (Evas_Coord *) &x, (Evas_Coord *) &y, + (Evas_Coord *) &w, (Evas_Coord *) &h); return rb_ary_new3 (4, INT2FIX (x), INT2FIX (y), INT2FIX (w), INT2FIX (h)); @@ -117,43 +113,43 @@ static VALUE c_geometry_get (VALUE self) static VALUE c_show (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_show (*e); + evas_object_show (e->real); return Qnil; } static VALUE c_hide (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_hide (*e); + evas_object_hide (e->real); return Qnil; } static VALUE c_visible_get (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - return evas_object_visible_get (*e) ? Qtrue : Qfalse; + return evas_object_visible_get (e->real) ? Qtrue : Qfalse; } static VALUE c_evas_get (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - return rb_hash_aref (parents, INT2NUM ((long) (e))); + return e->parent; } static VALUE c_name_get (VALUE self) { const char *name; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - if (!(name = evas_object_name_get (*e))) + if (!(name = evas_object_name_get (e->real))) return Qnil; else return rb_str_new2 (name); @@ -161,29 +157,29 @@ static VALUE c_name_get (VALUE self) static VALUE c_name_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (val, T_STRING); - evas_object_name_set (*e, StringValuePtr (val)); + evas_object_name_set (e->real, StringValuePtr (val)); return Qnil; } static VALUE c_layer_get (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - return INT2FIX (evas_object_layer_get (*e)); + return INT2FIX (evas_object_layer_get (e->real)); } static VALUE c_layer_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (val, T_FIXNUM); - evas_object_layer_set (*e, NUM2INT (val)); + evas_object_layer_set (e->real, NUM2INT (val)); return Qnil; } @@ -192,9 +188,9 @@ static VALUE c_get_color (VALUE self) { int r = 0, g = 0, b = 0, a = 0; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_color_get (*e, &r, &g, &b, &a); + evas_object_color_get (e->real, &r, &g, &b, &a); return rb_ary_new3 (4, INT2FIX (r), INT2FIX (g), INT2FIX (b), INT2FIX (a)); @@ -203,58 +199,58 @@ 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); + GET_OBJ (self, RbEvasObject, e); Check_Type (r, T_FIXNUM); Check_Type (g, T_FIXNUM); Check_Type (b, T_FIXNUM); Check_Type (a, T_FIXNUM); - evas_object_color_set (*e, FIX2INT (r), FIX2INT (g), FIX2INT (b), - FIX2INT (a)); + evas_object_color_set (e->real, FIX2INT (r), FIX2INT (g), + FIX2INT (b), FIX2INT (a)); return Qnil; } static VALUE c_pass_events_get (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - return evas_object_pass_events_get (*e) ? Qtrue : Qfalse; + return evas_object_pass_events_get (e->real) ? Qtrue : Qfalse; } static VALUE c_pass_events_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); CHECK_BOOL (val); - evas_object_pass_events_set (*e, val == Qtrue ? 1 : 0); + evas_object_pass_events_set (e->real, val == Qtrue); return Qnil; } static VALUE c_raise (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_raise (*e); + evas_object_raise (e->real); return Qnil; } static VALUE c_lower (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_lower (*e); + evas_object_lower (e->real); return Qnil; } static VALUE c_stack_above (VALUE self, VALUE target) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); if (!rb_obj_is_kind_of (target, cEvasObject)) { rb_raise (rb_eTypeError, @@ -263,16 +259,16 @@ static VALUE c_stack_above (VALUE self, VALUE target) return Qnil; } - GET_OBJ (target, Evas_Object *, target2); + GET_OBJ (target, RbEvasObject, t); - evas_object_stack_above (*e, *target2); + evas_object_stack_above (e->real, t->real); return Qnil; } static VALUE c_stack_below (VALUE self, VALUE target) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); if (!rb_obj_is_kind_of (target, cEvasObject)) { rb_raise (rb_eTypeError, @@ -281,9 +277,9 @@ static VALUE c_stack_below (VALUE self, VALUE target) return Qnil; } - GET_OBJ (target, Evas_Object *, target2); + GET_OBJ (target, RbEvasObject, t); - evas_object_stack_below (*e, *target2); + evas_object_stack_below (e->real, t->real); return Qnil; } @@ -293,9 +289,9 @@ static VALUE c_above_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - if (!(evas_object_above_get (*e))) + if (!(o = evas_object_above_get (e->real))) return Qnil; if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { @@ -311,9 +307,9 @@ static VALUE c_below_get (VALUE self) Evas_Object *o; void *obj; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - if (!(evas_object_below_get (*e))) + if (!(o = evas_object_below_get (e->real))) return Qnil; if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { @@ -355,7 +351,4 @@ void Init_EvasObject (void) rb_define_method (cEvasObject, "stack_below", c_stack_below, 1); rb_define_method (cEvasObject, "above", c_above_get, 0); rb_define_method (cEvasObject, "below", c_below_get, 0); - - parents = rb_hash_new (); - rb_global_variable (&parents); } diff --git a/src/rb_evas_object.h b/src/rb_evas_object.h index 99190ea..8760498 100644 --- a/src/rb_evas_object.h +++ b/src/rb_evas_object.h @@ -1,5 +1,5 @@ /* - * $Id: rb_evas_object.h 46 2004-07-26 11:14:50Z tilman $ + * $Id: rb_evas_object.h 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -21,15 +21,22 @@ #ifndef __RB_EVAS_OBJECT_H #define __RB_EVAS_OBJECT_H +#include + #define RUBY_EVAS_OBJECT_KEY "__RB_EVAS_OBJECT_OBJECT" -#ifndef __RB_EVAS_OBJECT_C -extern VALUE cEvasObject; -#endif +typedef struct { + Evas_Object *real; + VALUE parent; +} RbEvasObject; void Init_EvasObject (void); -void c_evas_object_free (Evas_Object **e); -void c_evas_object_mark (Evas_Object **e); +void c_evas_object_free (RbEvasObject *e, bool free_mem); +void c_evas_object_mark (RbEvasObject *e); + +#ifndef __RB_EVAS_OBJECT_C +extern VALUE cEvasObject; +#endif #endif diff --git a/src/rb_gradient.c b/src/rb_gradient.c index 8030340..e597685 100644 --- a/src/rb_gradient.c +++ b/src/rb_gradient.c @@ -1,5 +1,5 @@ /* - * $Id: rb_gradient.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_gradient.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *rect; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_gradient_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, rect); + rect->real = evas_object_gradient_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); @@ -47,7 +52,7 @@ static VALUE c_new (VALUE klass, VALUE evas) static VALUE c_color_add (VALUE self, VALUE r, VALUE g, VALUE b, VALUE a, VALUE distance) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (r, T_FIXNUM); Check_Type (g, T_FIXNUM); @@ -55,7 +60,7 @@ static VALUE c_color_add (VALUE self, VALUE r, VALUE g, VALUE b, Check_Type (a, T_FIXNUM); Check_Type (distance, T_FIXNUM); - evas_object_gradient_color_add (*e, FIX2INT (r), FIX2INT (g), + evas_object_gradient_color_add (e->real, FIX2INT (r), FIX2INT (g), FIX2INT (b), FIX2INT (a), FIX2INT (distance)); @@ -64,27 +69,27 @@ static VALUE c_color_add (VALUE self, VALUE r, VALUE g, VALUE b, static VALUE c_colors_clear (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_gradient_colors_clear (*e); + evas_object_gradient_colors_clear (e->real); return Qnil; } static VALUE c_angle_get (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - return INT2FIX (evas_object_gradient_angle_get (*e)); + return INT2FIX (evas_object_gradient_angle_get (e->real)); } static VALUE c_angle_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (val, T_FIXNUM); - evas_object_gradient_angle_set (*e, FIX2INT (val)); + evas_object_gradient_angle_set (e->real, FIX2INT (val)); return Qnil; } diff --git a/src/rb_image.c b/src/rb_image.c index cff6905..c5d58ec 100644 --- a/src/rb_image.c +++ b/src/rb_image.c @@ -1,5 +1,5 @@ /* - * $Id: rb_image.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_image.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *img; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_image_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, img); + img->real = evas_object_image_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); diff --git a/src/rb_line.c b/src/rb_line.c index 36179e3..59986df 100644 --- a/src/rb_line.c +++ b/src/rb_line.c @@ -1,5 +1,5 @@ /* - * $Id: rb_line.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_line.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *line; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_line_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, line); + line->real = evas_object_line_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); @@ -48,9 +53,9 @@ static VALUE c_get_xy (VALUE self) { int coord[4] = {0, 0, 0, 0}; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_line_xy_get (*e, &coord[0], &coord[1], + evas_object_line_xy_get (e->real, &coord[0], &coord[1], &coord[2], &coord[3]); return rb_ary_new3 (4, INT2FIX (coord[0]), INT2FIX (coord[1]), @@ -60,14 +65,14 @@ static VALUE c_get_xy (VALUE self) static VALUE c_set_xy (VALUE self, VALUE x1, VALUE y1, VALUE x2, VALUE y2) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (x1, T_FIXNUM); Check_Type (y1, T_FIXNUM); Check_Type (x2, T_FIXNUM); Check_Type (y2, T_FIXNUM); - evas_object_line_xy_set (*e, FIX2INT (x1), FIX2INT (y1), + evas_object_line_xy_set (e->real, FIX2INT (x1), FIX2INT (y1), FIX2INT (x2), FIX2INT (y2)); return Qnil; diff --git a/src/rb_polygon.c b/src/rb_polygon.c index 7d2b40a..0a04170 100644 --- a/src/rb_polygon.c +++ b/src/rb_polygon.c @@ -1,5 +1,5 @@ /* - * $Id: rb_polygon.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_polygon.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *poly; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_polygon_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, poly); + poly->real = evas_object_polygon_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); @@ -46,21 +51,21 @@ static VALUE c_new (VALUE klass, VALUE evas) static VALUE c_point_add (VALUE self, VALUE x, VALUE y) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (x, T_FIXNUM); Check_Type (y, T_FIXNUM); - evas_object_polygon_point_add (*e, FIX2INT (x), FIX2INT (y)); + evas_object_polygon_point_add (e->real, FIX2INT (x), FIX2INT (y)); return Qnil; } static VALUE c_points_clear (VALUE self) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_polygon_points_clear (*e); + evas_object_polygon_points_clear (e->real); return Qnil; } diff --git a/src/rb_rectangle.c b/src/rb_rectangle.c index b881687..a058fa6 100644 --- a/src/rb_rectangle.c +++ b/src/rb_rectangle.c @@ -1,5 +1,5 @@ /* - * $Id: rb_rectangle.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_rectangle.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *rect; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_rectangle_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, rect); + rect->real = evas_object_rectangle_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); diff --git a/src/rb_text.c b/src/rb_text.c index 4224e98..7788465 100644 --- a/src/rb_text.c +++ b/src/rb_text.c @@ -1,5 +1,5 @@ /* - * $Id: rb_text.c 38 2004-07-25 11:27:25Z tilman $ + * $Id: rb_text.c 49 2004-08-01 10:17:39Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -26,17 +26,22 @@ #include "rb_evas.h" #include "rb_evas_object.h" +static void c_free (RbEvasObject *e) +{ + c_evas_object_free (e, true); +} + static VALUE c_new (VALUE klass, VALUE evas) { VALUE self, argv[1]; - Evas_Object **rect; + RbEvasObject *text; CHECK_CLASS (evas, cEvas); - GET_OBJ (evas, Evas *, e); + GET_OBJ (evas, RbEvas, e); - self = Data_Make_Struct (klass, Evas_Object *, c_evas_object_mark, - c_evas_object_free, rect); - *rect = evas_object_text_add (*e); + self = Data_Make_Struct (klass, RbEvasObject, c_evas_object_mark, + c_free, text); + text->real = evas_object_text_add (e->real); argv[0] = evas; rb_obj_call_init (self, 1, argv); @@ -48,9 +53,9 @@ static VALUE c_font_source_get (VALUE self) { const char *tmp; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - if (!(tmp = evas_object_text_font_source_get (*e))) + if (!(tmp = evas_object_text_font_source_get (e->real))) return Qnil; else return rb_str_new2 (tmp); @@ -58,11 +63,11 @@ static VALUE c_font_source_get (VALUE self) static VALUE c_font_source_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (val, T_STRING); - evas_object_text_font_source_set (*e, StringValuePtr (val)); + evas_object_text_font_source_set (e->real, StringValuePtr (val)); return Qnil; } @@ -72,9 +77,9 @@ static VALUE c_get_font (VALUE self) char *font = NULL; Evas_Font_Size size = 0; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - evas_object_text_font_get (*e, &font, &size); + evas_object_text_font_get (e->real, &font, &size); return rb_ary_new3 (2, font ? rb_str_new2 (font) : Qnil, INT2FIX (size)); @@ -82,12 +87,12 @@ static VALUE c_get_font (VALUE self) static VALUE c_set_font (VALUE self, VALUE font, VALUE size) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (font, T_STRING); Check_Type (font, T_FIXNUM); - evas_object_text_font_set (*e, StringValuePtr (font), + evas_object_text_font_set (e->real, StringValuePtr (font), FIX2INT (size)); return Qnil; @@ -97,9 +102,9 @@ static VALUE c_text_get (VALUE self) { const char *tmp; - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); - if (!(tmp = evas_object_text_text_get (*e))) + if (!(tmp = evas_object_text_text_get (e->real))) return Qnil; else return rb_str_new2 (tmp); @@ -107,11 +112,11 @@ static VALUE c_text_get (VALUE self) static VALUE c_text_set (VALUE self, VALUE val) { - GET_OBJ (self, Evas_Object *, e); + GET_OBJ (self, RbEvasObject, e); Check_Type (val, T_STRING); - evas_object_text_text_set (*e, StringValuePtr (val)); + evas_object_text_text_set (e->real, StringValuePtr (val)); return Qnil; } -- 2.30.2