/*
- * $Id: rb_evas.c 149 2004-11-27 18:47:46Z tilman $
+ * $Id: rb_evas.c 354 2006-02-10 18:14:08Z tilman $
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
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;
}
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);
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);
}