projects
/
ruby-evas.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduced TO_EVAS_OBJECT.
[ruby-evas.git]
/
src
/
rb_evas_object.c
diff --git
a/src/rb_evas_object.c
b/src/rb_evas_object.c
index 7fe3298837ff962c589679dbdf4036ee9ca974ee..f29114fe995fe6e3421ad467cd43bdb083b8935e 100644
(file)
--- 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:50
Z tilman $
+ * $Id: rb_evas_object.c
68 2004-08-16 15:42:19
Z tilman $
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
@@
-19,6
+19,7
@@
*/
#include <ruby.h>
*/
#include <ruby.h>
+#include <stdbool.h>
#include <Evas.h>
#include <Evas.h>
@@
-28,300
+29,438
@@
#include "rb_evas_object.h"
VALUE cEvasObject;
#include "rb_evas_object.h"
VALUE cEvasObject;
-static VALUE parents;
-/* called by the child classes */
-void c_evas_object_free (Evas_Object **e)
+VALUE TO_EVAS_OBJECT (Evas_Object *o)
{
{
- if (*e)
- evas_object_del (*e);
+ void *obj;
+
+ if (!o)
+ return Qnil;
+
+ if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) {
+ rb_raise (rb_eException, "EvasObject Ruby object key missing");
+ return Qnil;
+ }
- rb_hash_aset (parents, INT2NUM ((long) e), Qnil);
+ return (VALUE) obj;
+}
- free (e);
+/* called by the child classes */
+void c_evas_object_mark (RbEvasObject *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);
}
}
+/* :nodoc: */
static VALUE c_init (VALUE self, VALUE parent)
{
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;
}
return self;
}
+/* :nodoc: */
static VALUE c_inspect (VALUE self)
{
static VALUE c_inspect (VALUE self)
{
- INSPECT (self,
Evas_Object *
);
+ INSPECT (self,
RbEvasObject
);
}
}
+/*
+ * call-seq:
+ * e.delete => nil
+ *
+ * Deletes <i>e</i>.
+ */
static VALUE c_delete (VALUE self)
{
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.resize(width, height) => nil
+ *
+ * Resizes <i>e</i> to width x height.
+ *
+ * e.resize(100, 200) #=> nil
+ */
static VALUE c_resize (VALUE self, VALUE w, VALUE h)
{
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);
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.move(x, y) => nil
+ *
+ * Moves <i>e</i> to the coordinates specified in
+ * <i>x</i> and <i>y</i>.
+ *
+ * e.move(100, 200) #=> nil
+ */
static VALUE c_move (VALUE self, VALUE x, VALUE y)
{
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);
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.geometry => array
+ *
+ * Returns an array containing the geometry of <i>e</i>.
+ *
+ * e.move(150, 300) #=> nil
+ * e.resize(200, 200) #=> nil
+ * e.geometry #=> [150, 300, 200, 200]
+ */
static VALUE c_geometry_get (VALUE self)
{
int x = 0, y = 0, w = 0, h = 0;
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));
}
return rb_ary_new3 (4, INT2FIX (x), INT2FIX (y), INT2FIX (w),
INT2FIX (h));
}
+/*
+ * call-seq:
+ * e.show => nil
+ *
+ * Shows <i>e</i>.
+ */
static VALUE c_show (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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.hide => nil
+ *
+ * Hides <i>e</i>.
+ */
static VALUE c_hide (VALUE self)
{
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.visible? => true or false
+ *
+ * Returns true if <i>e</i> is visible, else returns false.
+ */
static VALUE c_visible_get (VALUE self)
{
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;
}
}
+/*
+ * call-seq:
+ * e.evas => evas
+ *
+ * Returns the <code>Evas::Evas</code> for <i>e</i>.
+ */
static VALUE c_evas_get (VALUE self)
{
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
;
}
}
+/*
+ * call-seq:
+ * e.name => string
+ *
+ * Returns the name of <i>e</i>.
+ */
static VALUE c_name_get (VALUE self)
{
const char *name;
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);
}
return Qnil;
else
return rb_str_new2 (name);
}
+/*
+ * call-seq:
+ * e.name(string)
+ *
+ * Sets the name of <i>e</i>.
+ */
static VALUE c_name_set (VALUE self, VALUE val)
{
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);
Check_Type (val, T_STRING);
- evas_object_name_set (
*e
, StringValuePtr (val));
+ evas_object_name_set (
e->real
, StringValuePtr (val));
return Qnil;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.layer => fixnum
+ *
+ * Returns the layer <i>e</i> is in.
+ */
static VALUE c_layer_get (VALUE self)
{
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
));
}
}
+/*
+ * call-seq:
+ * e.layer(fixnum)
+ *
+ * Sets the layer <i>e</i> is in.
+ */
static VALUE c_layer_set (VALUE self, VALUE val)
{
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);
Check_Type (val, T_FIXNUM);
- evas_object_layer_set (
*e
, NUM2INT (val));
+ evas_object_layer_set (
e->real
, NUM2INT (val));
return Qnil;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.get_color => array
+ *
+ * Returns the color of <i>e</i>.
+ *
+ * e.set_color(128, 128, 128, 0) #=> nil
+ * e.get_color #=> [128, 128, 128, 0]
+ */
static VALUE c_get_color (VALUE self)
{
int r = 0, g = 0, b = 0, a = 0;
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));
}
return rb_ary_new3 (4, INT2FIX (r), INT2FIX (g), INT2FIX (b),
INT2FIX (a));
}
+/*
+ * call-seq:
+ * e.set_color(r, g, b, a) => nil
+ *
+ * Sets the color of <i>e</i>.
+ *
+ * e.set_color(128, 128, 128, 0) #=> nil
+ */
static VALUE c_set_color (VALUE self, VALUE r, VALUE g, VALUE b,
VALUE a)
{
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);
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.pass_events? => true or false
+ *
+ * Returns true if <i>e</i> passes events on to EvasObjects that are
+ * below itself, else returns false.
+ */
static VALUE c_pass_events_get (VALUE self)
{
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;
}
}
+/*
+ * call-seq:
+ * e.pass_events(true or false)
+ *
+ * Sets whether <i>e</i> passes events on to EvasObjects that are
+ * below itself.
+ */
static VALUE c_pass_events_set (VALUE self, VALUE val)
{
static VALUE c_pass_events_set (VALUE self, VALUE val)
{
- GET_OBJ (self,
Evas_Object *
, e);
+ GET_OBJ (self,
RbEvasObject
, e);
CHECK_BOOL (val);
CHECK_BOOL (val);
- evas_object_pass_events_set (
*e, val == Qtrue ? 1 : 0
);
+ evas_object_pass_events_set (
e->real, val == Qtrue
);
return Qnil;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.raise => nil
+ *
+ * Raises <i>e</i>.
+ */
static VALUE c_raise (VALUE self)
{
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.lower => nil
+ *
+ * Lowers <i>e</i>.
+ */
static VALUE c_lower (VALUE self)
{
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;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.stack_above(evasobject) => nil
+ *
+ * Positions <i>e</i> above <i>evasobject</i>.
+ */
static VALUE c_stack_above (VALUE self, VALUE target)
{
static VALUE c_stack_above (VALUE self, VALUE target)
{
- GET_OBJ (self, Evas_Object *, e);
-
- if (!rb_obj_is_kind_of (target, cEvasObject)) {
- rb_raise (rb_eTypeError,
- "wrong argument type %s (expected EvasObject)",
- rb_obj_classname (target));
- return Qnil;
- }
+ GET_OBJ (self, RbEvasObject, e);
- GET_OBJ (target, Evas_Object *, target2);
+ CHECK_CLASS (target, cEvasObject);
+ GET_OBJ (target, RbEvasObject, t);
- evas_object_stack_above (
*e, *target2
);
+ evas_object_stack_above (
e->real, t->real
);
return Qnil;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.stack_below(evasobject) => nil
+ *
+ * Positions <i>e</i> below <i>evasobject</i>.
+ */
static VALUE c_stack_below (VALUE self, VALUE target)
{
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,
- "wrong argument type %s (expected EvasObject)",
- rb_obj_classname (target));
- return Qnil;
- }
+ CHECK_CLASS (target, cEvasObject);
+ GET_OBJ (target, RbEvasObject, t);
- GET_OBJ (target, Evas_Object *, target2);
-
- evas_object_stack_below (*e, *target2);
+ evas_object_stack_below (e->real, t->real);
return Qnil;
}
return Qnil;
}
+/*
+ * call-seq:
+ * e.above => evasobject
+ *
+ * Returns the <code>Evas::EvasObject</code> that's positioned above
+ * <i>e</i>.
+ */
static VALUE c_above_get (VALUE self)
{
Evas_Object *o;
static VALUE c_above_get (VALUE self)
{
Evas_Object *o;
- void *obj;
-
- GET_OBJ (self, Evas_Object *, e);
- if (!(evas_object_above_get (*e)))
- return Qnil;
+ GET_OBJ (self, RbEvasObject, e);
- if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) {
- rb_raise (rb_eException, "EvasObject Ruby object key missing");
+ if (!(o = evas_object_above_get (e->real)))
return Qnil;
return Qnil;
- }
- return
(VALUE) obj
;
+ return
TO_EVAS_OBJECT (o)
;
}
}
+/*
+ * call-seq:
+ * e.below => evasobject
+ *
+ * Returns the <code>Evas::EvasObject</code> that's positioned below
+ * <i>e</i>.
+ */
static VALUE c_below_get (VALUE self)
{
Evas_Object *o;
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;
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);
}
void Init_EvasObject (void)
}
void Init_EvasObject (void)
@@
-355,7
+494,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);
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);
}
}