X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Frb_evas.c;h=ff76dba1f7b3c8bf02b179972f6914d7ba51b0c9;hb=9ee77c744d2cb8d6d215aab112ff2d77eb8464fd;hp=5ed1ceecc83887b6c3b8b0f7ed94c04856c1e336;hpb=afe425bcbc30d5caa38bfed5c4e629f96fd62bcf;p=ruby-evas.git diff --git a/src/rb_evas.c b/src/rb_evas.c index 5ed1cee..ff76dba 100644 --- a/src/rb_evas.c +++ b/src/rb_evas.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas.c 149 2004-11-27 18:47:46Z tilman $ + * $Id: rb_evas.c 382 2006-05-25 09:20:31Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -34,21 +34,27 @@ static void c_mark (RbEvas *e) rb_gc_mark (e->parent); } +static VALUE c_alloc (VALUE klass) +{ + RbEvas *evas = NULL; + + return Data_Make_Struct (cEvas, RbEvas, c_mark, free, evas); +} + VALUE TO_EVAS (VALUE parent, Evas *e) { VALUE self; - RbEvas *evas = NULL; if (NIL_P (parent) || !e) return Qnil; - self = Data_Make_Struct (cEvas, RbEvas, - c_mark, free, evas); + self = rb_class_new_instance (0, NULL, cEvas); + + GET_OBJ (self, RbEvas, evas); + evas->real = e; evas->parent = parent; - rb_obj_call_init (self, 0, NULL); - return self; } @@ -92,8 +98,6 @@ static VALUE c_font_path_append (VALUE self, VALUE path) { GET_OBJ (self, RbEvas, e); - Check_Type (path, T_STRING); - evas_font_path_append (e->real, StringValuePtr (path)); return Qnil; @@ -109,8 +113,6 @@ static VALUE c_font_path_prepend (VALUE self, VALUE path) { GET_OBJ (self, RbEvas, e); - Check_Type (path, T_STRING); - evas_font_path_append (e->real, StringValuePtr (path)); return Qnil; @@ -292,8 +294,6 @@ static VALUE c_find_object (VALUE self, VALUE name) GET_OBJ (self, RbEvas, e); - Check_Type (name, T_STRING); - if (!(o = evas_object_name_find (e->real, StringValuePtr (name)))) return Qnil; @@ -311,10 +311,26 @@ static VALUE c_output_size_get (VALUE self) return rb_ary_new3 (2, INT2FIX (w), INT2FIX (h)); } +static VALUE c_output_viewport_get (VALUE self) +{ + int x = 0, y = 0, w = 0, h = 0; + + GET_OBJ (self, RbEvas, e); + + evas_output_viewport_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)); +} + void Init_Evas (void) { cEvas = rb_define_class_under (mEvas, "Evas", rb_cObject); + rb_define_alloc_func (cEvas, c_alloc); + /* not publically instantiable yet */ rb_define_private_method (rb_singleton_class (cEvas), "new", NULL, 0); @@ -338,4 +354,5 @@ void Init_Evas (void) rb_define_method (cEvas, "bottom", c_bottom_get, 0); rb_define_method (cEvas, "find_object", c_find_object, 1); rb_define_method (cEvas, "output_size", c_output_size_get, 0); + rb_define_method (cEvas, "output_viewport", c_output_viewport_get, 0); }