X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Frb_evas.c;h=96d26de1713dbd0196f9e3f73f4e97ab8252f075;hb=2f0ae317e2b3304fcc62c534ae3e1e69d3268f41;hp=3e333a59dd9c2c1847c29b157380419f8436522f;hpb=1f6059ba8be27832fc4b6f88c99548e39f4264cb;p=ruby-evas.git diff --git a/src/rb_evas.c b/src/rb_evas.c index 3e333a5..96d26de 100644 --- a/src/rb_evas.c +++ b/src/rb_evas.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas.c 58 2004-08-10 14:10:02Z tilman $ + * $Id: rb_evas.c 283 2005-03-15 17:59:03Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -253,19 +253,13 @@ static VALUE c_image_cache_flush (VALUE self) static VALUE c_top_get (VALUE self) { Evas_Object *o; - void *obj; GET_OBJ (self, RbEvas, e); if (!(o = evas_object_top_get (e->real))) return Qnil; - if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { - rb_raise (rb_eException, "EvasObject Ruby object key missing"); - return Qnil; - } - - return (VALUE) obj; + return TO_EVAS_OBJECT (o); } /* @@ -277,19 +271,13 @@ static VALUE c_top_get (VALUE self) static VALUE c_bottom_get (VALUE self) { Evas_Object *o; - void *obj; GET_OBJ (self, RbEvas, e); if (!(o = evas_object_bottom_get (e->real))) return Qnil; - if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { - rb_raise (rb_eException, "EvasObject Ruby object key missing"); - return Qnil; - } - - return (VALUE) obj; + return TO_EVAS_OBJECT (o); } /* @@ -301,7 +289,6 @@ static VALUE c_bottom_get (VALUE self) static VALUE c_find_object (VALUE self, VALUE name) { Evas_Object *o; - void *obj; GET_OBJ (self, RbEvas, e); @@ -310,12 +297,32 @@ static VALUE c_find_object (VALUE self, VALUE name) if (!(o = evas_object_name_find (e->real, StringValuePtr (name)))) return Qnil; - if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) { - rb_raise (rb_eException, "EvasObject Ruby object key missing"); - return Qnil; - } + return TO_EVAS_OBJECT (o); +} + +static VALUE c_output_size_get (VALUE self) +{ + int w = 0, h = 0; + + GET_OBJ (self, RbEvas, e); + + evas_output_size_get (e->real, &w, &h); + + 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 (VALUE) obj; + return rb_ary_new3 (4, INT2FIX (x), INT2FIX (y), INT2FIX (w), + INT2FIX (h)); } void Init_Evas (void) @@ -344,4 +351,6 @@ 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); + rb_define_method (cEvas, "output_size", c_output_size_get, 0); + rb_define_method (cEvas, "output_viewport", c_output_viewport_get, 0); }