/*
- * $Id: rb_image.c 354 2006-02-10 18:14:08Z tilman $
+ * $Id: rb_image.c 376 2006-02-25 10:10:31Z tilman $
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
return Qnil;
}
+static VALUE c_data_get (int argc, VALUE *argv, VALUE self)
+{
+ VALUE read_write = Qfalse;
+ void *data;
+ int w = 0, h = 0;
+
+ GET_OBJ (self, RbEvasObject, e);
+
+ rb_scan_args (argc, argv, "01", &read_write);
+
+ if (NIL_P (read_write))
+ read_write = Qfalse;
+
+ data = evas_object_image_data_get (e->real, read_write == Qtrue);
+ evas_object_image_size_get (e->real, &w, &h);
+
+ return rb_str_new (data, h * w * 4);
+}
+
+static VALUE c_data_set (VALUE self, VALUE data)
+{
+ GET_OBJ (self, RbEvasObject, e);
+
+ evas_object_image_data_set (e->real, StringValuePtr (data));
+
+ return Qnil;
+}
+
+static VALUE c_data_update_add (VALUE self, VALUE x, VALUE y,
+ VALUE w, VALUE h)
+{
+ GET_OBJ (self, RbEvasObject, e);
+
+ evas_object_image_data_update_add (e->real,
+ FIX2INT (x), FIX2INT (y),
+ FIX2INT (w), FIX2INT (h));
+
+ return Qnil;
+}
+
void Init_Image (void)
{
VALUE c = rb_define_class_under (mEvas, "Image", cEvasObject);
rb_define_method (c, "get_border", c_get_border, 0);
rb_define_method (c, "set_border", c_set_border, 4);
rb_define_method (c, "reload", c_reload, 0);
+ rb_define_method (c, "data", c_data_get, -1);
+ rb_define_method (c, "data=", c_data_set, 1);
+ rb_define_method (c, "data_update_add", c_data_update_add, 4);
}