forked from enlightenment/efl
Eolian: Integration of Evas Smart
This commit is contained in:
parent
9e364d6f4b
commit
44f9da675c
|
@ -13,7 +13,11 @@ BUILT_SOURCES += \
|
|||
lib/evas/canvas/evas_textblock.eo.c \
|
||||
lib/evas/canvas/evas_textblock.eo.h \
|
||||
lib/evas/canvas/evas_textgrid.eo.c \
|
||||
lib/evas/canvas/evas_textgrid.eo.h
|
||||
lib/evas/canvas/evas_textgrid.eo.h \
|
||||
lib/evas/canvas/evas_signal_interface.eo.c \
|
||||
lib/evas/canvas/evas_signal_interface.eo.h \
|
||||
lib/evas/canvas/evas_smart.eo.c \
|
||||
lib/evas/canvas/evas_smart.eo.h
|
||||
|
||||
EXTRA_DIST += \
|
||||
lib/evas/canvas/evas_object.eo \
|
||||
|
@ -22,7 +26,9 @@ EXTRA_DIST += \
|
|||
lib/evas/canvas/evas_rectangle.eo \
|
||||
lib/evas/canvas/evas_text.eo \
|
||||
lib/evas/canvas/evas_textblock.eo \
|
||||
lib/evas/canvas/evas_textgrid.eo
|
||||
lib/evas/canvas/evas_textgrid.eo \
|
||||
lib/evas/canvas/evas_signal_interface.eo \
|
||||
lib/evas/canvas/evas_smart.eo
|
||||
|
||||
lib_LTLIBRARIES += lib/evas/libevas.la
|
||||
noinst_LTLIBRARIES =
|
||||
|
@ -43,7 +49,9 @@ nodist_installed_evascanvasheaders_DATA = \
|
|||
lib/evas/canvas/evas_rectangle.eo.h \
|
||||
lib/evas/canvas/evas_text.eo.h \
|
||||
lib/evas/canvas/evas_textblock.eo.h \
|
||||
lib/evas/canvas/evas_textgrid.eo.h
|
||||
lib/evas/canvas/evas_textgrid.eo.h \
|
||||
lib/evas/canvas/evas_signal_interface.eo.h \
|
||||
lib/evas/canvas/evas_smart.eo.h
|
||||
|
||||
noinst_HEADERS = \
|
||||
lib/evas/include/evas_inline.x \
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
# error You shall not include this header directly
|
||||
#endif
|
||||
|
||||
#include "canvas/evas_signal_interface.eo.h"
|
||||
|
||||
EAPI extern const Eo_Event_Description _EVAS_OBJECT_EVENT_MOUSE_IN;
|
||||
EAPI extern const Eo_Event_Description _EVAS_OBJECT_EVENT_MOUSE_OUT;
|
||||
EAPI extern const Eo_Event_Description _EVAS_OBJECT_EVENT_MOUSE_DOWN;
|
||||
|
@ -3044,6 +3046,9 @@ enum
|
|||
*
|
||||
* @{
|
||||
*/
|
||||
#include "canvas/evas_smart.eo.h"
|
||||
|
||||
#if 0
|
||||
#define EVAS_OBJ_SMART_CLASS evas_object_smart_class_get()
|
||||
|
||||
const Eo_Class *evas_object_smart_class_get(void) EINA_CONST;
|
||||
|
@ -3400,6 +3405,7 @@ enum
|
|||
*/
|
||||
#define evas_obj_smart_clip_unset() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CLIP_UNSET)
|
||||
|
||||
#endif
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -173,7 +173,7 @@ _signal_interface_del(void *data)
|
|||
}
|
||||
|
||||
static void
|
||||
_signal_interface_constructor(Eo_Class *klass EINA_UNUSED)
|
||||
_evas_signal_interface_class_constructor(Eo_Class *klass EINA_UNUSED)
|
||||
{
|
||||
signals_hash_table = eina_hash_string_superfast_new(_signal_interface_del);
|
||||
ADD_INTERFACE_SIGNALS(_clickable_events_desc);
|
||||
|
@ -186,24 +186,11 @@ _signal_interface_constructor(Eo_Class *klass EINA_UNUSED)
|
|||
#undef ADD_SIGNAL
|
||||
|
||||
static void
|
||||
_signal_interface_destructor(Eo_Class *klass EINA_UNUSED)
|
||||
_evas_signal_interface_class_destructor(Eo_Class *klass EINA_UNUSED)
|
||||
{
|
||||
eina_hash_free(signals_hash_table);
|
||||
}
|
||||
|
||||
static const Eo_Class_Description signal_interface_desc = {
|
||||
EO_VERSION,
|
||||
"Evas_Signal_Interface",
|
||||
EO_CLASS_TYPE_INTERFACE,
|
||||
EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
|
||||
NULL,
|
||||
0,
|
||||
_signal_interface_constructor,
|
||||
_signal_interface_destructor
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_signal_interface_get, &signal_interface_desc, NULL, NULL);
|
||||
|
||||
static const Eo_Class_Description clickable_interface_desc = {
|
||||
EO_VERSION,
|
||||
"Evas_Clickable_Interface",
|
||||
|
@ -215,7 +202,7 @@ static const Eo_Class_Description clickable_interface_desc = {
|
|||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_clickable_interface_get, &clickable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
EO_DEFINE_CLASS(evas_smart_clickable_interface_get, &clickable_interface_desc, EVAS_SIGNAL_INTERFACE_CLASS, NULL);
|
||||
|
||||
static const Eo_Class_Description scrollable_interface_desc = {
|
||||
EO_VERSION,
|
||||
|
@ -228,7 +215,7 @@ static const Eo_Class_Description scrollable_interface_desc = {
|
|||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_scrollable_interface_get, &scrollable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
EO_DEFINE_CLASS(evas_smart_scrollable_interface_get, &scrollable_interface_desc, EVAS_SIGNAL_INTERFACE_CLASS, NULL);
|
||||
|
||||
static const Eo_Class_Description zoomable_interface_desc = {
|
||||
EO_VERSION,
|
||||
|
@ -241,7 +228,7 @@ static const Eo_Class_Description zoomable_interface_desc = {
|
|||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_zoomable_interface_get, &zoomable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
EO_DEFINE_CLASS(evas_smart_zoomable_interface_get, &zoomable_interface_desc, EVAS_SIGNAL_INTERFACE_CLASS, NULL);
|
||||
|
||||
static const Eo_Class_Description selectable_interface_desc = {
|
||||
EO_VERSION,
|
||||
|
@ -254,7 +241,7 @@ static const Eo_Class_Description selectable_interface_desc = {
|
|||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_selectable_interface_get, &selectable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
EO_DEFINE_CLASS(evas_smart_selectable_interface_get, &selectable_interface_desc, EVAS_SIGNAL_INTERFACE_CLASS, NULL);
|
||||
|
||||
static const Eo_Class_Description draggable_interface_desc = {
|
||||
EO_VERSION,
|
||||
|
@ -267,5 +254,6 @@ static const Eo_Class_Description draggable_interface_desc = {
|
|||
NULL
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_smart_draggable_interface_get, &draggable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
EO_DEFINE_CLASS(evas_smart_draggable_interface_get, &draggable_interface_desc, EVAS_SIGNAL_INTERFACE_CLASS, NULL);
|
||||
|
||||
#include "canvas/evas_signal_interface.eo.c"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
#include "Eo.h"
|
||||
|
||||
EAPI Eo_Op EVAS_OBJ_SMART_BASE_ID = EO_NOOP;
|
||||
|
||||
#define MY_CLASS EVAS_OBJ_SMART_CLASS
|
||||
|
||||
#define MY_CLASS_NAME "Evas_Smart"
|
||||
|
@ -14,9 +12,9 @@ extern Eina_Hash* signals_hash_table;
|
|||
|
||||
static Eina_Hash *_evas_smart_class_names_hash_table = NULL;
|
||||
|
||||
typedef struct _Evas_Object_Smart Evas_Object_Smart;
|
||||
typedef struct _Evas_Smart_Data Evas_Smart_Data;
|
||||
|
||||
struct _Evas_Object_Smart
|
||||
struct _Evas_Smart_Data
|
||||
{
|
||||
struct {
|
||||
Evas_Coord_Rectangle bounding_box;
|
||||
|
@ -116,20 +114,9 @@ static const Evas_Object_Func object_func =
|
|||
|
||||
|
||||
/* public funcs */
|
||||
EAPI void
|
||||
evas_object_smart_data_set(Evas_Object *eo_obj, void *data)
|
||||
EOLIAN static void
|
||||
_evas_smart_data_set(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o, void *data)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do(eo_obj, evas_obj_smart_data_set(data));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_data_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
{
|
||||
void *data = va_arg(*list, void *);
|
||||
Evas_Object_Smart *o = _pd;
|
||||
if (o->data) eo_data_unref(eo_obj, o->data);
|
||||
o->data = data;
|
||||
eo_data_ref(eo_obj, NULL);
|
||||
|
@ -146,12 +133,10 @@ evas_object_smart_data_get(const Evas_Object *eo_obj)
|
|||
return data;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_data_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
EOLIAN static void*
|
||||
_evas_smart_evas_object_smart_data_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
|
||||
{
|
||||
const Evas_Object_Smart *o = _pd;
|
||||
void **data = va_arg(*list, void **);
|
||||
*data = o->data;
|
||||
return o->data;
|
||||
}
|
||||
|
||||
EAPI const void *
|
||||
|
@ -191,7 +176,7 @@ evas_object_smart_interface_data_get(const Evas_Object *eo_obj,
|
|||
const Evas_Smart_Interface *iface)
|
||||
{
|
||||
unsigned int i;
|
||||
Evas_Object_Smart *obj;
|
||||
Evas_Smart_Data *obj;
|
||||
Evas_Smart *s;
|
||||
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
|
@ -214,23 +199,11 @@ evas_object_smart_interface_data_get(const Evas_Object *eo_obj,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
EAPI Evas_Smart *
|
||||
evas_object_smart_smart_get(const Evas_Object *eo_obj)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
Evas_Smart *smart = NULL;
|
||||
eo_do((Eo *)eo_obj, evas_obj_smart_smart_get(&smart));
|
||||
return smart;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_smart_get(Eo *eo_obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static Evas_Smart*
|
||||
_evas_smart_smart_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Smart **smart = va_arg(*list, Evas_Smart **);
|
||||
if (smart) *smart = obj->smart.smart;
|
||||
return obj->smart.smart;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -242,14 +215,12 @@ evas_object_smart_member_add(Evas_Object *eo_obj, Evas_Object *smart_obj)
|
|||
eo_do(smart_obj, evas_obj_smart_member_add(eo_obj));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_member_add(Eo *smart_obj, void *_pd, va_list *list)
|
||||
EOLIAN static void
|
||||
_evas_smart_member_add(Eo *smart_obj, Evas_Smart_Data *o, Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object *eo_obj = va_arg(*list, Evas_Object *);
|
||||
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Protected_Data *smart = eo_data_scope_get(smart_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Smart *o = _pd;
|
||||
|
||||
if (obj->delete_me)
|
||||
{
|
||||
|
@ -318,10 +289,9 @@ evas_object_smart_member_del(Evas_Object *eo_obj)
|
|||
eo_do(smart_obj, evas_obj_smart_member_del(eo_obj));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_member_del(Eo *smart_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static void
|
||||
_evas_smart_member_del(Eo *smart_obj, Evas_Smart_Data *_pd EINA_UNUSED, Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object *eo_obj = va_arg(*list, Evas_Object *);
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
||||
if (!obj->smart.parent) return;
|
||||
|
@ -330,7 +300,7 @@ _smart_member_del(Eo *smart_obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
if (smart->smart.smart && smart->smart.smart->smart_class->member_del)
|
||||
smart->smart.smart->smart_class->member_del(smart_obj, eo_obj);
|
||||
|
||||
Evas_Object_Smart *o = eo_data_scope_get(smart_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(smart_obj, MY_CLASS);
|
||||
o->contained = eina_inlist_remove(o->contained, EINA_INLIST_GET(obj));
|
||||
eo_data_unref(eo_obj, obj);
|
||||
o->member_count--;
|
||||
|
@ -372,39 +342,34 @@ evas_object_smart_type_check(const Evas_Object *eo_obj, const char *type)
|
|||
return type_check;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_type_check(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_smart_evas_object_smart_type_check(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, const char *type)
|
||||
{
|
||||
const char *type = va_arg(*list, const char *);
|
||||
Eina_Bool *type_check = va_arg(*list, Eina_Bool *);
|
||||
*type_check = EINA_FALSE;
|
||||
|
||||
const Evas_Smart_Class *sc;
|
||||
Eo_Class *klass;
|
||||
Eina_Bool type_check = EINA_FALSE;
|
||||
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
if (!obj) return;
|
||||
if (!obj) return EINA_FALSE;
|
||||
|
||||
klass = eina_hash_find(_evas_smart_class_names_hash_table, type);
|
||||
if (klass) *type_check = eo_isa(eo_obj, klass);
|
||||
if (klass) type_check = eo_isa(eo_obj, klass);
|
||||
|
||||
/* Backward compatibility - walk over smart classes and compare type */
|
||||
if (EINA_FALSE == *type_check)
|
||||
if (EINA_FALSE == type_check)
|
||||
{
|
||||
if (obj->smart.smart)
|
||||
{
|
||||
sc = obj->smart.smart->smart_class;
|
||||
while (sc)
|
||||
{
|
||||
if (!strcmp(sc->name, type))
|
||||
{
|
||||
*type_check = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
if (!strcmp(sc->name, type)) return EINA_TRUE;
|
||||
sc = sc->parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return type_check;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
@ -418,38 +383,34 @@ evas_object_smart_type_check_ptr(const Evas_Object *eo_obj, const char *type)
|
|||
return type_check_ptr;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_type_check_ptr(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_smart_evas_object_smart_type_check_ptr(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, const char* type)
|
||||
{
|
||||
Eo_Class *klass;
|
||||
const Evas_Smart_Class *sc;
|
||||
const char* type = va_arg(*list, const char *);
|
||||
Eina_Bool *type_check = va_arg(*list, Eina_Bool *);
|
||||
*type_check = EINA_FALSE;
|
||||
Eina_Bool type_check = EINA_FALSE;
|
||||
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
if (!obj) return;
|
||||
if (!obj) return EINA_FALSE;
|
||||
|
||||
klass = eina_hash_find(_evas_smart_class_names_hash_table, type);
|
||||
if (klass) *type_check = eo_isa(eo_obj, klass);
|
||||
if (klass) type_check = eo_isa(eo_obj, klass);
|
||||
|
||||
/* Backward compatibility - walk over smart classes and compare type */
|
||||
if (EINA_FALSE == *type_check)
|
||||
if (EINA_FALSE == type_check)
|
||||
{
|
||||
if (obj->smart.smart)
|
||||
{
|
||||
sc = obj->smart.smart->smart_class;
|
||||
while (sc)
|
||||
{
|
||||
if (sc->name == type)
|
||||
{
|
||||
if (type_check) *type_check = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
if (sc->name == type) return EINA_TRUE;
|
||||
sc = sc->parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return type_check;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -487,35 +448,15 @@ _evas_object_smart_iterator_free(Evas_Object_Smart_Iterator *it)
|
|||
}
|
||||
|
||||
// Should we have an eo_children_iterator_new API and just inherit from it ?
|
||||
EAPI Eina_Iterator *
|
||||
evas_object_smart_iterator_new(const Evas_Object *o)
|
||||
EOLIAN static Eina_Iterator*
|
||||
_evas_smart_iterator_new(Eo *o, Evas_Smart_Data *priv)
|
||||
{
|
||||
Eina_Iterator *ret = NULL;
|
||||
eo_do((Eo *)o, evas_obj_smart_iterator_new(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
_iterator_new(Eo *o, void *_pd, va_list *list)
|
||||
{
|
||||
Eina_Iterator **ret = va_arg(*list, Eina_Iterator **);
|
||||
|
||||
Evas_Object_Smart_Iterator *it;
|
||||
|
||||
const Evas_Object_Smart *priv = _pd;
|
||||
|
||||
if (!priv->contained)
|
||||
{
|
||||
*ret = NULL;
|
||||
return ;
|
||||
}
|
||||
if (!priv->contained) return NULL;
|
||||
|
||||
it = calloc(1, sizeof(Evas_Object_Smart_Iterator));
|
||||
if (!it)
|
||||
{
|
||||
*ret = NULL;
|
||||
return ;
|
||||
}
|
||||
if (!it) return NULL;
|
||||
|
||||
EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
|
||||
it->parent = eo_ref(o);
|
||||
|
@ -525,26 +466,12 @@ _iterator_new(Eo *o, void *_pd, va_list *list)
|
|||
it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_evas_object_smart_iterator_get_container);
|
||||
it->iterator.free = FUNC_ITERATOR_FREE(_evas_object_smart_iterator_free);
|
||||
|
||||
*ret = &it->iterator;
|
||||
return &it->iterator;
|
||||
}
|
||||
|
||||
EAPI Eina_List *
|
||||
evas_object_smart_members_get(const Evas_Object *eo_obj)
|
||||
EOLIAN static Eina_List*
|
||||
_evas_smart_members_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
if (!eo_isa(eo_obj, MY_CLASS)) return NULL;
|
||||
Eina_List *list = NULL;
|
||||
eo_do((Eo *)eo_obj, evas_obj_smart_members_get(&list));
|
||||
return list;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_members_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
{
|
||||
Eina_List **members_list = va_arg(*list, Eina_List **);
|
||||
const Evas_Object_Smart *o = _pd;
|
||||
Eina_List *members;
|
||||
|
||||
Eina_Inlist *member;
|
||||
|
@ -553,7 +480,7 @@ _smart_members_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
|||
for (member = o->contained; member; member = member->next)
|
||||
members = eina_list_append(members, ((Evas_Object_Protected_Data *)member)->object);
|
||||
|
||||
*members_list = members;
|
||||
return members;
|
||||
}
|
||||
|
||||
const Eina_Inlist *
|
||||
|
@ -563,14 +490,14 @@ evas_object_smart_members_get_direct(const Evas_Object *eo_obj)
|
|||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
if (!eo_isa(eo_obj, MY_CLASS)) return NULL;
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
return o->contained;
|
||||
}
|
||||
|
||||
void
|
||||
_evas_object_smart_members_all_del(Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Object_Protected_Data *memobj;
|
||||
Eina_Inlist *itrn;
|
||||
EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj)
|
||||
|
@ -583,7 +510,7 @@ static void
|
|||
_evas_smart_class_ifaces_private_data_alloc(Evas_Object *eo_obj,
|
||||
Evas_Smart *s)
|
||||
{
|
||||
Evas_Object_Smart *obj;
|
||||
Evas_Smart_Data *obj;
|
||||
const Evas_Smart_Class *sc;
|
||||
unsigned char *ptr;
|
||||
unsigned int i, total_priv_sz = 0;
|
||||
|
@ -659,11 +586,11 @@ evas_object_smart_add(Evas *eo_e, Evas_Smart *s)
|
|||
return eo_obj;
|
||||
}
|
||||
|
||||
static void
|
||||
_constructor(Eo *eo_obj, void *class_data, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED)
|
||||
{
|
||||
Evas_Object_Protected_Data *obj;
|
||||
Evas_Object_Smart *smart;
|
||||
Evas_Smart_Data *smart;
|
||||
Eo *parent;
|
||||
|
||||
smart = class_data;
|
||||
|
@ -680,8 +607,8 @@ _constructor(Eo *eo_obj, void *class_data, va_list *list EINA_UNUSED)
|
|||
evas_obj_smart_add());
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_add(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_add(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
|
@ -690,16 +617,14 @@ _smart_add(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
if (s && s->smart_class->add) s->smart_class->add(eo_obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_del(Eo *eo_obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_resize(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static void
|
||||
_evas_smart_resize(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
Evas_Coord w = va_arg(*list, Evas_Coord);
|
||||
Evas_Coord h = va_arg(*list, Evas_Coord);
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
@ -707,11 +632,9 @@ _smart_resize(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
if (s && s->smart_class->resize) s->smart_class->resize(eo_obj, w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_move(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_move(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_Coord x, Evas_Coord y)
|
||||
{
|
||||
Evas_Coord x = va_arg(*list, Evas_Coord);
|
||||
Evas_Coord y = va_arg(*list, Evas_Coord);
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
@ -719,8 +642,8 @@ _smart_move(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
if (s && s->smart_class->move) s->smart_class->move(eo_obj, x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_show(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_show(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
|
@ -729,8 +652,8 @@ _smart_show(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
if (s && s->smart_class->show) s->smart_class->show(eo_obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_hide(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_hide(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
|
@ -739,13 +662,9 @@ _smart_hide(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
if (s && s->smart_class->hide) s->smart_class->hide(eo_obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_color_set(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static void
|
||||
_evas_smart_color_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, int r, int g, int b, int a)
|
||||
{
|
||||
int r = va_arg(*list, int);
|
||||
int g = va_arg(*list, int);
|
||||
int b = va_arg(*list, int);
|
||||
int a = va_arg(*list, int);
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
@ -753,10 +672,9 @@ _smart_color_set(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
if (s && s->smart_class->color_set) s->smart_class->color_set(eo_obj, r, g, b, a);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_clip_set(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
EOLIAN static void
|
||||
_evas_smart_clip_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Evas_Object *clip)
|
||||
{
|
||||
Evas_Object *clip = va_arg(*list, Evas_Object *);
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
@ -764,8 +682,8 @@ _smart_clip_set(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
if (s && s->smart_class->clip_set) s->smart_class->clip_set(eo_obj, clip);
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_clip_unset(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_clip_unset(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
// If this function is reached, so we do nothing except trying to call
|
||||
// the function of the legacy smart class.
|
||||
|
@ -775,9 +693,8 @@ _smart_clip_unset(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
|||
}
|
||||
|
||||
static void
|
||||
_smart_attach(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
|
||||
_evas_smart_attach(Eo *eo_obj, Evas_Smart_Data *_pd EINA_UNUSED, Evas_Smart *s)
|
||||
{
|
||||
Evas_Smart *s = va_arg(*list, Evas_Smart *);
|
||||
MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
@ -818,7 +735,7 @@ evas_object_smart_callback_add(Evas_Object *eo_obj, const char *event, Evas_Smar
|
|||
EAPI void
|
||||
evas_object_smart_callback_priority_add(Evas_Object *eo_obj, const char *event, Evas_Callback_Priority priority, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
|
@ -852,7 +769,7 @@ evas_object_smart_callback_priority_add(Evas_Object *eo_obj, const char *event,
|
|||
EAPI void *
|
||||
evas_object_smart_callback_del(Evas_Object *eo_obj, const char *event, Evas_Smart_Cb func)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
_eo_evas_smart_cb_info *info;
|
||||
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
|
@ -884,7 +801,7 @@ evas_object_smart_callback_del(Evas_Object *eo_obj, const char *event, Evas_Smar
|
|||
EAPI void *
|
||||
evas_object_smart_callback_del_full(Evas_Object *eo_obj, const char *event, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
_eo_evas_smart_cb_info *info;
|
||||
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
|
@ -927,67 +844,35 @@ evas_object_smart_callback_call(Evas_Object *eo_obj, const char *event, void *ev
|
|||
eo_do(eo_obj, eo_event_callback_call(event_desc->eo_desc, event_info, NULL));
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
evas_object_smart_callbacks_descriptions_set(Evas_Object *eo_obj, const Evas_Smart_Cb_Description *descriptions)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_smart_callbacks_descriptions_set(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o, const Evas_Smart_Cb_Description *descriptions)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return EINA_FALSE;
|
||||
MAGIC_CHECK_END();
|
||||
Eina_Bool result = EINA_FALSE;
|
||||
eo_do(eo_obj, evas_obj_smart_callbacks_descriptions_set(descriptions, &result));
|
||||
return result;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_callbacks_descriptions_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
{
|
||||
const Evas_Smart_Cb_Description *descriptions = va_arg(*list, Evas_Smart_Cb_Description *);
|
||||
Eina_Bool *result = va_arg(*list, Eina_Bool *);
|
||||
if (result) *result = EINA_TRUE;
|
||||
|
||||
const Evas_Smart_Cb_Description *d;
|
||||
Evas_Object_Smart *o = _pd;
|
||||
unsigned int i, count = 0;
|
||||
|
||||
if ((!descriptions) || (!descriptions->name))
|
||||
{
|
||||
evas_smart_cb_descriptions_resize(&o->callbacks_descriptions, 0);
|
||||
return;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
for (count = 0, d = descriptions; d->name; d++)
|
||||
count++;
|
||||
|
||||
evas_smart_cb_descriptions_resize(&o->callbacks_descriptions, count);
|
||||
if (count == 0) return;
|
||||
if (count == 0) return EINA_TRUE;
|
||||
|
||||
for (i = 0, d = descriptions; i < count; d++, i++)
|
||||
o->callbacks_descriptions.array[i] = d;
|
||||
|
||||
evas_smart_cb_descriptions_fix(&o->callbacks_descriptions);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_object_smart_callbacks_descriptions_get(const Evas_Object *eo_obj, const Evas_Smart_Cb_Description ***class_descriptions, unsigned int *class_count, const Evas_Smart_Cb_Description ***instance_descriptions, unsigned int *instance_count)
|
||||
EOLIAN static void
|
||||
_evas_smart_callbacks_descriptions_get(Eo *eo_obj, Evas_Smart_Data *o, const Evas_Smart_Cb_Description ***class_descriptions, unsigned int *class_count, const Evas_Smart_Cb_Description ***instance_descriptions, unsigned int *instance_count)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
if (class_descriptions) *class_descriptions = NULL;
|
||||
if (class_count) *class_count = 0;
|
||||
if (instance_descriptions) *instance_descriptions = NULL;
|
||||
if (instance_count) *instance_count = 0;
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do((Eo *)eo_obj, evas_obj_smart_callbacks_descriptions_get(class_descriptions, class_count, instance_descriptions, instance_count));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_callbacks_descriptions_get(Eo *eo_obj, void *_pd, va_list *list)
|
||||
{
|
||||
const Evas_Smart_Cb_Description ***class_descriptions = va_arg(*list, const Evas_Smart_Cb_Description ***);
|
||||
unsigned int *class_count = va_arg(*list, unsigned int *);
|
||||
const Evas_Smart_Cb_Description ***instance_descriptions = va_arg(*list, const Evas_Smart_Cb_Description ***);
|
||||
unsigned int *instance_count = va_arg(*list, unsigned int *);
|
||||
const Evas_Object_Smart *o = _pd;
|
||||
if (class_descriptions) *class_descriptions = NULL;
|
||||
if (class_count) *class_count = 0;
|
||||
|
||||
|
@ -1003,23 +888,9 @@ _smart_callbacks_descriptions_get(Eo *eo_obj, void *_pd, va_list *list)
|
|||
*instance_count = o->callbacks_descriptions.size;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_object_smart_callback_description_find(const Evas_Object *eo_obj, const char *name, const Evas_Smart_Cb_Description **class_description, const Evas_Smart_Cb_Description **instance_description)
|
||||
EOLIAN static void
|
||||
_evas_smart_callback_description_find(Eo *eo_obj, Evas_Smart_Data *o, const char *name, const Evas_Smart_Cb_Description **class_description, const Evas_Smart_Cb_Description **instance_description)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
if (class_description) *class_description = NULL;
|
||||
if (instance_description) *instance_description = NULL;
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do((Eo *)eo_obj, evas_obj_smart_callback_description_find(name, class_description, instance_description));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_callback_description_find(Eo *eo_obj, void *_pd, va_list *list)
|
||||
{
|
||||
const char *name = va_arg(*list, const char *);
|
||||
const Evas_Smart_Cb_Description **class_description = va_arg(*list, const Evas_Smart_Cb_Description **);
|
||||
const Evas_Smart_Cb_Description **instance_description = va_arg(*list, const Evas_Smart_Cb_Description **);
|
||||
|
||||
if (!name)
|
||||
{
|
||||
|
@ -1029,7 +900,6 @@ _smart_callback_description_find(Eo *eo_obj, void *_pd, va_list *list)
|
|||
}
|
||||
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
const Evas_Object_Smart *o = _pd;
|
||||
if (class_description)
|
||||
*class_description = evas_smart_cb_description_find
|
||||
(&obj->smart.smart->callbacks, name);
|
||||
|
@ -1039,20 +909,9 @@ _smart_callback_description_find(Eo *eo_obj, void *_pd, va_list *list)
|
|||
(&o->callbacks_descriptions, name);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_object_smart_need_recalculate_set(Evas_Object *eo_obj, Eina_Bool value)
|
||||
EOLIAN static void
|
||||
_evas_smart_need_recalculate_set(Eo *eo_obj, Evas_Smart_Data *o, Eina_Bool value)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do(eo_obj, evas_obj_smart_need_recalculate_set(value));
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_need_recalculate_set(Eo *eo_obj, void *_pd, va_list *list)
|
||||
{
|
||||
Eina_Bool value = va_arg(*list, int);
|
||||
Evas_Object_Smart *o = _pd;
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
||||
// XXX: do i need this?
|
||||
|
@ -1079,39 +938,16 @@ _smart_need_recalculate_set(Eo *eo_obj, void *_pd, va_list *list)
|
|||
o->need_recalculate = value;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
evas_object_smart_need_recalculate_get(const Evas_Object *eo_obj)
|
||||
EOLIAN static Eina_Bool
|
||||
_evas_smart_need_recalculate_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return EINA_FALSE;
|
||||
MAGIC_CHECK_END();
|
||||
Eina_Bool need_recalculate = EINA_FALSE;
|
||||
eo_do((Eo *)eo_obj, evas_obj_smart_need_recalculate_get(&need_recalculate));
|
||||
return need_recalculate;
|
||||
return o->need_recalculate;
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_need_recalculate_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
{
|
||||
Eina_Bool *need_recalculate = va_arg(*list, Eina_Bool *);
|
||||
const Evas_Object_Smart *o = _pd;
|
||||
if (need_recalculate) *need_recalculate = o->need_recalculate;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_object_smart_calculate(Evas_Object *eo_obj)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do(eo_obj, evas_obj_smart_calculate());
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_calculate(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_calculate(Eo *eo_obj, Evas_Smart_Data *o)
|
||||
{
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Smart *o = _pd;
|
||||
|
||||
if (!obj->smart.smart || !obj->smart.smart->smart_class->calculate)
|
||||
return;
|
||||
|
@ -1127,7 +963,7 @@ evas_smart_objects_calculate(Evas *eo_e)
|
|||
}
|
||||
|
||||
void
|
||||
_canvas_smart_objects_calculate(Eo *eo_e, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
_canvas_smart_objects_calculate(Eo *eo_e, void *o EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
{
|
||||
evas_call_smarts_calculate(eo_e);
|
||||
}
|
||||
|
@ -1159,7 +995,7 @@ _canvas_smart_objects_calculate_count_get(Eo *eo_e EINA_UNUSED, void *_pd, va_li
|
|||
void
|
||||
evas_call_smarts_calculate(Evas *eo_e)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
Eina_Clist *elem;
|
||||
Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CLASS);
|
||||
|
||||
|
@ -1171,7 +1007,7 @@ evas_call_smarts_calculate(Evas *eo_e)
|
|||
Evas_Object_Protected_Data *obj;
|
||||
|
||||
/* move the item to the processed list */
|
||||
o = EINA_CLIST_ENTRY(elem, Evas_Object_Smart, calc_entry);
|
||||
o = EINA_CLIST_ENTRY(elem, Evas_Smart_Data, calc_entry);
|
||||
eina_clist_remove(&o->calc_entry);
|
||||
obj = eo_data_scope_get(o->object, EVAS_OBJ_CLASS);
|
||||
|
||||
|
@ -1190,7 +1026,7 @@ evas_call_smarts_calculate(Evas *eo_e)
|
|||
|
||||
while (NULL != (elem = eina_clist_head(&e->calc_done)))
|
||||
{
|
||||
o = EINA_CLIST_ENTRY(elem, Evas_Object_Smart, calc_entry);
|
||||
o = EINA_CLIST_ENTRY(elem, Evas_Smart_Data, calc_entry);
|
||||
o->recalculate_cycle = 0;
|
||||
eina_clist_remove(&o->calc_entry);
|
||||
}
|
||||
|
@ -1201,17 +1037,8 @@ evas_call_smarts_calculate(Evas *eo_e)
|
|||
evas_event_thaw_eval(eo_e);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_object_smart_changed(Evas_Object *eo_obj)
|
||||
{
|
||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
eo_do(eo_obj, evas_obj_smart_changed());
|
||||
}
|
||||
|
||||
static void
|
||||
_smart_changed(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
|
||||
EOLIAN static void
|
||||
_evas_smart_changed(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||
{
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
evas_object_change(eo_obj, obj);
|
||||
|
@ -1248,7 +1075,7 @@ void
|
|||
evas_object_smart_del(Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Smart *sobj;
|
||||
Evas_Smart_Data *sobj;
|
||||
Evas_Smart *s;
|
||||
unsigned int i;
|
||||
|
||||
|
@ -1281,7 +1108,7 @@ evas_object_smart_del(Evas_Object *eo_obj)
|
|||
void
|
||||
evas_object_update_bounding_box(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||
{
|
||||
Evas_Object_Smart *s = NULL;
|
||||
Evas_Smart_Data *s = NULL;
|
||||
Eina_Bool propagate = EINA_FALSE;
|
||||
Eina_Bool computeminmax = EINA_FALSE;
|
||||
Evas_Coord x, y, w, h;
|
||||
|
@ -1324,7 +1151,7 @@ evas_object_update_bounding_box(Evas_Object *eo_obj, Evas_Object_Protected_Data
|
|||
* That's why we initialiaze min and max search to geometry of the parent object.
|
||||
*/
|
||||
Evas_Object_Protected_Data *smart_obj = eo_data_scope_get(obj->smart.parent, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Smart *smart_parent = eo_data_scope_get(obj->smart.parent, MY_CLASS);
|
||||
Evas_Smart_Data *smart_parent = eo_data_scope_get(obj->smart.parent, MY_CLASS);
|
||||
if (!smart_parent || !smart_obj) return;
|
||||
|
||||
if (smart_obj->cur->valid_bounding_box)
|
||||
|
@ -1418,7 +1245,7 @@ evas_object_smart_bounding_box_get(Evas_Object *eo_obj,
|
|||
Evas_Coord_Rectangle *cur_bounding_box,
|
||||
Evas_Coord_Rectangle *prev_bounding_box)
|
||||
{
|
||||
Evas_Object_Smart *s = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *s = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
|
||||
if (cur_bounding_box) memcpy(cur_bounding_box,
|
||||
&s->cur.bounding_box,
|
||||
|
@ -1438,7 +1265,7 @@ evas_object_smart_cleanup(Evas_Object *eo_obj)
|
|||
|
||||
if (obj->is_smart)
|
||||
{
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
if (o->calc_entry.next)
|
||||
eina_clist_remove(&o->calc_entry);
|
||||
|
||||
|
@ -1486,7 +1313,7 @@ evas_object_smart_member_cache_invalidate(Evas_Object *eo_obj,
|
|||
obj->parent_cache.src_invisible_valid = EINA_FALSE;
|
||||
|
||||
if (!obj->is_smart) return;
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
EINA_INLIST_FOREACH(o->contained, member)
|
||||
{
|
||||
Evas_Object *eo_member = member->object;
|
||||
|
@ -1499,7 +1326,7 @@ evas_object_smart_member_cache_invalidate(Evas_Object *eo_obj,
|
|||
void
|
||||
evas_object_smart_member_raise(Evas_Object *eo_member)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
Evas_Object_Protected_Data *member = eo_data_scope_get(eo_member, EVAS_OBJ_CLASS);
|
||||
o = eo_data_scope_get(member->smart.parent, MY_CLASS);
|
||||
o->contained = eina_inlist_demote(o->contained, EINA_INLIST_GET(member));
|
||||
|
@ -1508,7 +1335,7 @@ evas_object_smart_member_raise(Evas_Object *eo_member)
|
|||
void
|
||||
evas_object_smart_member_lower(Evas_Object *eo_member)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
Evas_Object_Protected_Data *member = eo_data_scope_get(eo_member, EVAS_OBJ_CLASS);
|
||||
o = eo_data_scope_get(member->smart.parent, MY_CLASS);
|
||||
o->contained = eina_inlist_promote(o->contained, EINA_INLIST_GET(member));
|
||||
|
@ -1517,7 +1344,7 @@ evas_object_smart_member_lower(Evas_Object *eo_member)
|
|||
void
|
||||
evas_object_smart_member_stack_above(Evas_Object *eo_member, Evas_Object *eo_other)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
Evas_Object_Protected_Data *member = eo_data_scope_get(eo_member, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Protected_Data *other = eo_data_scope_get(eo_other, EVAS_OBJ_CLASS);
|
||||
o = eo_data_scope_get(member->smart.parent, MY_CLASS);
|
||||
|
@ -1528,7 +1355,7 @@ evas_object_smart_member_stack_above(Evas_Object *eo_member, Evas_Object *eo_oth
|
|||
void
|
||||
evas_object_smart_member_stack_below(Evas_Object *eo_member, Evas_Object *eo_other)
|
||||
{
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
Evas_Object_Protected_Data *member = eo_data_scope_get(eo_member, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Protected_Data *other = eo_data_scope_get(eo_other, EVAS_OBJ_CLASS);
|
||||
o = eo_data_scope_get(member->smart.parent, MY_CLASS);
|
||||
|
@ -1543,7 +1370,7 @@ evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj)
|
|||
return;
|
||||
MAGIC_CHECK_END();
|
||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
|
||||
if (o->update_boundingbox_needed) return;
|
||||
o->update_boundingbox_needed = EINA_TRUE;
|
||||
|
@ -1554,7 +1381,7 @@ evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj)
|
|||
void
|
||||
evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||
{
|
||||
Evas_Object_Smart *os;
|
||||
Evas_Smart_Data *os;
|
||||
Eina_Inlist *list;
|
||||
Evas_Object_Protected_Data *o;
|
||||
Evas_Coord minx;
|
||||
|
@ -1587,7 +1414,7 @@ evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected
|
|||
|
||||
if (o->is_smart)
|
||||
{
|
||||
Evas_Object_Smart *s = eo_data_scope_get(o->object, MY_CLASS);
|
||||
Evas_Smart_Data *s = eo_data_scope_get(o->object, MY_CLASS);
|
||||
|
||||
evas_object_smart_bounding_box_update(o->object, o);
|
||||
|
||||
|
@ -1660,7 +1487,7 @@ evas_object_smart_render_pre(Evas_Object *eo_obj,
|
|||
{
|
||||
#if 0
|
||||
// REDO to handle smart move
|
||||
Evas_Object_Smart *o;
|
||||
Evas_Smart_Data *o;
|
||||
|
||||
fprintf(stderr, "");
|
||||
o = type_private_data;
|
||||
|
@ -1739,116 +1566,43 @@ evas_object_smart_render_pre(Evas_Object *eo_obj,
|
|||
static void
|
||||
evas_object_smart_render_post(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj EINA_UNUSED, void *type_private_data)
|
||||
{
|
||||
Evas_Object_Smart *o = type_private_data;
|
||||
Evas_Smart_Data *o = type_private_data;
|
||||
evas_object_cur_prev(eo_obj);
|
||||
o->prev = o->cur;
|
||||
}
|
||||
|
||||
static unsigned int evas_object_smart_id_get(Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
if (!o) return 0;
|
||||
return MAGIC_OBJ_SMART;
|
||||
}
|
||||
|
||||
static unsigned int evas_object_smart_visual_id_get(Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
if (!o) return 0;
|
||||
return MAGIC_OBJ_CONTAINER;
|
||||
}
|
||||
|
||||
static void *evas_object_smart_engine_data_get(Evas_Object *eo_obj)
|
||||
{
|
||||
Evas_Object_Smart *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
|
||||
if (!o) return NULL;
|
||||
return o->engine_data;
|
||||
}
|
||||
|
||||
static void
|
||||
_class_constructor(Eo_Class *klass)
|
||||
_evas_smart_class_constructor(Eo_Class *klass EINA_UNUSED)
|
||||
{
|
||||
const Eo_Op_Func_Description func_desc[] = {
|
||||
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
|
||||
EO_OP_FUNC(EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK), _smart_type_check),
|
||||
EO_OP_FUNC(EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK_PTR), _smart_type_check_ptr),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DATA_SET), _smart_data_set),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SMART_GET), _smart_smart_get),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBER_ADD), _smart_member_add),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBER_DEL), _smart_member_del),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBERS_GET), _smart_members_get),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ITERATOR_NEW), _iterator_new),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_SET), _smart_callbacks_descriptions_set),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_GET), _smart_callbacks_descriptions_get),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_DESCRIPTION_FIND), _smart_callback_description_find),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_SET), _smart_need_recalculate_set),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_GET), _smart_need_recalculate_get),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALCULATE), _smart_calculate),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CHANGED), _smart_changed),
|
||||
EO_OP_FUNC(EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_DATA_GET), _smart_data_get),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ATTACH), _smart_attach),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _smart_add),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _smart_del),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _smart_resize),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), _smart_move),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), _smart_show),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_HIDE), _smart_hide),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_COLOR_SET), _smart_color_set),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CLIP_SET), _smart_clip_set),
|
||||
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CLIP_UNSET), _smart_clip_unset),
|
||||
EO_OP_FUNC_SENTINEL
|
||||
};
|
||||
|
||||
eo_class_funcs_set(klass, func_desc);
|
||||
|
||||
_evas_smart_class_names_hash_table = eina_hash_string_small_new(NULL);
|
||||
|
||||
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
||||
}
|
||||
|
||||
static void
|
||||
_class_destructor(Eo_Class *klass EINA_UNUSED)
|
||||
_evas_smart_class_destructor(Eo_Class *klass EINA_UNUSED)
|
||||
{
|
||||
eina_hash_free(_evas_smart_class_names_hash_table);
|
||||
}
|
||||
|
||||
static const Eo_Op_Description op_desc[] = {
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_DATA_SET, "Store a pointer to user data for a given smart object."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_SMART_GET, "Get the #Evas_Smart from which obj smart object was created."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_MEMBER_ADD, "Set an Evas object as a member of a given smart object."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_MEMBER_DEL, "Removes a member object from a given smart object."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_MEMBERS_GET, "Retrieves the list of the member objects of a given Evas smart"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_ITERATOR_NEW, "Retrieves an iterator of the member object of a given Evas smart"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_SET, "Set an smart object instance's smart callbacks descriptions."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_GET, "Retrieve an smart object's know smart callback descriptions (both"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CALLBACK_DESCRIPTION_FIND, "Find callback description for callback called name."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_SET, "Set or unset the flag signalling that a given smart object needs to"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_GET, "Get the value of the flag signalling that a given smart object needs to"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CALCULATE, "Call the calculate() smart function immediately on a given smart"),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CHANGED, "Mark smart object as changed, dirty."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_ATTACH, "Attach an object to a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_ADD, "Add an object to a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_DEL, "Remove an object from a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_RESIZE, "Resize an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_MOVE, "Move an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_SHOW, "Show an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_HIDE, "Hide an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_COLOR_SET, "Set color of an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CLIP_SET, "Set a clipper of an object on a canvas."),
|
||||
EO_OP_DESCRIPTION(EVAS_OBJ_SMART_SUB_ID_CLIP_UNSET, "Unset a clipper of an object on a canvas."),
|
||||
EO_OP_DESCRIPTION_SENTINEL
|
||||
};
|
||||
|
||||
static const Eo_Class_Description class_desc = {
|
||||
EO_VERSION,
|
||||
MY_CLASS_NAME,
|
||||
EO_CLASS_TYPE_REGULAR,
|
||||
EO_CLASS_DESCRIPTION_OPS(&EVAS_OBJ_SMART_BASE_ID, op_desc, EVAS_OBJ_SMART_SUB_ID_LAST),
|
||||
NULL,
|
||||
sizeof(Evas_Object_Smart),
|
||||
_class_constructor,
|
||||
_class_destructor
|
||||
};
|
||||
|
||||
EO_DEFINE_CLASS(evas_object_smart_class_get, &class_desc, EVAS_OBJ_CLASS, EVAS_SMART_SIGNAL_INTERFACE, NULL);
|
||||
|
||||
#include "canvas/evas_smart.eo.c"
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
interface Evas_Signal_Interface ()
|
||||
{
|
||||
data: null;
|
||||
implements {
|
||||
class::constructor;
|
||||
class::destructor;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,354 @@
|
|||
class Evas_Smart (Evas_Object, Evas_Signal_Interface)
|
||||
{
|
||||
legacy_prefix: evas_object_smart;
|
||||
eo_prefix: evas_obj_smart;
|
||||
properties {
|
||||
need_recalculate {
|
||||
set {
|
||||
/*@
|
||||
Set or unset the flag signalling that a given smart object needs to
|
||||
get recalculated.
|
||||
|
||||
If this flag is set, then the @c calculate() smart function of @p
|
||||
obj will be called, if one is provided, during rendering phase of
|
||||
Evas (see evas_render()), after which this flag will be
|
||||
automatically unset.
|
||||
|
||||
If that smart function is not provided for the given object, this
|
||||
flag will be left unchanged.
|
||||
|
||||
@note just setting this flag will not make the canvas' whole scene
|
||||
dirty, by itself, and evas_render() will have no effect. To
|
||||
force that, use evas_object_smart_changed(), that will also
|
||||
call this function automatically, with @c EINA_TRUE as parameter.
|
||||
|
||||
@see evas_object_smart_need_recalculate_get()
|
||||
@see evas_object_smart_calculate()
|
||||
@see evas_smart_objects_calculate()
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get the value of the flag signalling that a given smart object needs to
|
||||
get recalculated.
|
||||
|
||||
@return if flag is set or not.
|
||||
|
||||
@note this flag will be unset during the rendering phase, when the
|
||||
@c calculate() smart function is called, if one is provided.
|
||||
If it's not provided, then the flag will be left unchanged
|
||||
after the rendering phase.
|
||||
|
||||
@see evas_object_smart_need_recalculate_set(), for more details
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
}
|
||||
values {
|
||||
Eina_Bool value; /*@ whether one wants to set (@c EINA_TRUE) or to unset
|
||||
(@c EINA_FALSE) the flag. */
|
||||
}
|
||||
}
|
||||
clip {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
Evas_Object *clip;
|
||||
}
|
||||
}
|
||||
color {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
int r;
|
||||
int g;
|
||||
int b;
|
||||
int a;
|
||||
}
|
||||
}
|
||||
data {
|
||||
set {
|
||||
/*@
|
||||
Store a pointer to user data for a given smart object.
|
||||
|
||||
This data is stored @b independently of the one set by
|
||||
evas_object_data_set(), naturally.
|
||||
|
||||
@see evas_object_smart_data_get()
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
}
|
||||
values {
|
||||
void *data; /*@ A pointer to user data */
|
||||
}
|
||||
}
|
||||
members {
|
||||
get {
|
||||
/*@
|
||||
Retrieves the list of the member objects of a given Evas smart
|
||||
object
|
||||
|
||||
@return Returns the list of the member objects of @p obj.
|
||||
|
||||
The returned list should be freed with @c eina_list_free() when you
|
||||
no longer need it.
|
||||
|
||||
@since 1.7 This function will return @c NULL when a non-smart object is passed.
|
||||
|
||||
@see evas_object_smart_member_add()
|
||||
@see evas_object_smart_member_del()
|
||||
@see evas_object_smart_iterator_new() */
|
||||
return Eina_List * @warn_unused;
|
||||
}
|
||||
}
|
||||
smart {
|
||||
get {
|
||||
/*@
|
||||
Get the #Evas_Smart from which @p obj smart object was created.
|
||||
|
||||
@return the #Evas_Smart handle or @c NULL, on errors
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
return Evas_Smart * @warn_unused;
|
||||
}
|
||||
}
|
||||
}
|
||||
methods {
|
||||
show {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
move {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
params {
|
||||
@in Evas_Coord x;
|
||||
@in Evas_Coord y;
|
||||
}
|
||||
}
|
||||
callbacks_descriptions_set {
|
||||
/*@
|
||||
Set an smart object @b instance's smart callbacks descriptions.
|
||||
|
||||
@return @c EINA_TRUE on success, @c EINA_FALSE on failure.
|
||||
|
||||
These descriptions are hints to be used by introspection and are
|
||||
not enforced in any way.
|
||||
|
||||
It will not be checked if instance callbacks descriptions have the
|
||||
same name as respective possibly registered in the smart object
|
||||
@b class. Both are kept in different arrays and users of
|
||||
evas_object_smart_callbacks_descriptions_get() should handle this
|
||||
case as they wish.
|
||||
|
||||
@note Becase @p descriptions must be @c NULL terminated, and
|
||||
because a @c NULL name makes little sense, too,
|
||||
Evas_Smart_Cb_Description::name must @b not be @c NULL.
|
||||
|
||||
@note While instance callbacks descriptions are possible, they are
|
||||
@b not recommended. Use @b class callbacks descriptions
|
||||
instead as they make you smart object user's life simpler and
|
||||
will use less memory, as descriptions and arrays will be
|
||||
shared among all instances.
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
|
||||
return Eina_Bool;
|
||||
params {
|
||||
@in const Evas_Smart_Cb_Description *descriptions; /*@ @c NULL terminated array with
|
||||
#Evas_Smart_Cb_Description descriptions. Array elements won't be
|
||||
modified at run time, but references to them and their contents
|
||||
will be made, so this array should be kept alive during the whole
|
||||
object's lifetime. */
|
||||
}
|
||||
}
|
||||
callbacks_descriptions_get {
|
||||
/*@
|
||||
Retrieve an smart object's know smart callback descriptions (both
|
||||
instance and class ones).
|
||||
|
||||
This call searches for registered callback descriptions for both
|
||||
instance and class of the given smart object. These arrays will be
|
||||
sorted by Evas_Smart_Cb_Description::name and also @c NULL
|
||||
terminated, so both @a class_count and @a instance_count can be
|
||||
ignored, if the caller wishes so. The terminator @c NULL is not
|
||||
counted in these values.
|
||||
|
||||
@note If just class descriptions are of interest, try
|
||||
evas_smart_callbacks_descriptions_get() instead.
|
||||
|
||||
@note Use @c NULL pointers on the descriptions/counters you're not
|
||||
interested in: they'll be ignored by the function.
|
||||
|
||||
@see evas_smart_callbacks_descriptions_get()
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
|
||||
const;
|
||||
params {
|
||||
@out const Evas_Smart_Cb_Description **class_descriptions; /*@ Where to store class callbacks
|
||||
descriptions array, if any is known. If no descriptions are
|
||||
known, @c NULL is returned */
|
||||
@out unsigned int class_count; /*@ Returns how many class callbacks descriptions
|
||||
are known. */
|
||||
@out const Evas_Smart_Cb_Description **instance_descriptions; /*@ Where to store instance callbacks
|
||||
descriptions array, if any is known. If no descriptions are
|
||||
known, @c NULL is returned. */
|
||||
@out unsigned int instance_count; /*@ Returns how many instance callbacks
|
||||
descriptions are known. */
|
||||
}
|
||||
}
|
||||
iterator_new {
|
||||
/*@
|
||||
Retrieves an iterator of the member objects of a given Evas smart
|
||||
object
|
||||
|
||||
@return Returns the iterator of the member objects of @p obj.
|
||||
|
||||
@since 1.8
|
||||
|
||||
@see evas_object_smart_member_add()
|
||||
@see evas_object_smart_member_del()
|
||||
@see evas_object_smart_members_get() */
|
||||
|
||||
const;
|
||||
return Eina_Iterator * @warn_unused;
|
||||
}
|
||||
callback_description_find {
|
||||
/*@
|
||||
Find callback description for callback called @a name.
|
||||
|
||||
or @c NULL if not found. If parameter is @c NULL, no search
|
||||
will be done on instance descriptions.
|
||||
@return reference to description if found, @c NULL if not found. */
|
||||
|
||||
const;
|
||||
params {
|
||||
@in const char *name @nonull; /*@ name of desired callback, must @b not be @c NULL. The
|
||||
search have a special case for @a name being the same
|
||||
pointer as registered with Evas_Smart_Cb_Description, one
|
||||
can use it to avoid excessive use of strcmp(). */
|
||||
@out const Evas_Smart_Cb_Description *class_description; /*@ pointer to return class description or
|
||||
@c NULL if not found. If parameter is @c NULL, no search will
|
||||
be done on class descriptions. */
|
||||
@out const Evas_Smart_Cb_Description *instance_description; /*@ pointer to return instance description */
|
||||
}
|
||||
}
|
||||
hide {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
calculate {
|
||||
/*@
|
||||
Call the @b calculate() smart function immediately on a given smart
|
||||
object.
|
||||
|
||||
This will force immediate calculations (see #Evas_Smart_Class)
|
||||
needed for renderization of this object and, besides, unset the
|
||||
flag on it telling it needs recalculation for the next rendering
|
||||
phase.
|
||||
|
||||
@see evas_object_smart_need_recalculate_set()
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
|
||||
}
|
||||
add {
|
||||
/*@
|
||||
Instantiates a new smart object described by @p s.
|
||||
|
||||
@return a new #Evas_Object handle
|
||||
|
||||
This is the function one should use when defining the public
|
||||
function @b adding an instance of the new smart object to a given
|
||||
canvas. It will take care of setting all of its internals to work
|
||||
as they should, if the user set things properly, as seem on the
|
||||
#EVAS_SMART_SUBCLASS_NEW, for example.
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
legacy null;
|
||||
}
|
||||
member_add {
|
||||
/*@
|
||||
Set an Evas object as a member of a given smart object.
|
||||
|
||||
Members will automatically be stacked and layered together with the
|
||||
smart object. The various stacking functions will operate on
|
||||
members relative to the other members instead of the entire canvas,
|
||||
since they now live on an exclusive layer (see
|
||||
evas_object_stack_above(), for more details).
|
||||
|
||||
Any @p smart_obj object's specific implementation of the @c
|
||||
member_add() smart function will take place too, naturally.
|
||||
|
||||
@see evas_object_smart_member_del()
|
||||
@see evas_object_smart_members_get()
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
|
||||
params {
|
||||
@in Evas_Object *sub_obj @nonull; /*@ The member object */
|
||||
}
|
||||
legacy null;
|
||||
}
|
||||
resize {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
params {
|
||||
@in Evas_Coord w;
|
||||
@in Evas_Coord h;
|
||||
}
|
||||
}
|
||||
clip_unset {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
changed {
|
||||
/*@
|
||||
Mark smart object as changed, dirty.
|
||||
|
||||
This will flag the given object as needing recalculation,
|
||||
forcefully. As an effect, on the next rendering cycle its @b
|
||||
calculate() (see #Evas_Smart_Class) smart function will be called.
|
||||
|
||||
@see evas_object_smart_need_recalculate_set().
|
||||
@see evas_object_smart_calculate().
|
||||
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
|
||||
}
|
||||
member_del {
|
||||
/*@
|
||||
Removes a member object from a given smart object.
|
||||
|
||||
This removes a member object from a smart object, if it was added
|
||||
to any. The object will still be on the canvas, but no longer
|
||||
associated with whichever smart object it was associated with.
|
||||
|
||||
@see evas_object_smart_member_add() for more details
|
||||
@see evas_object_smart_members_get() */
|
||||
|
||||
params {
|
||||
@in Evas_Object *sub_obj; /*@ the member object
|
||||
@ingroup Evas_Smart_Object_Group */
|
||||
}
|
||||
legacy null;
|
||||
}
|
||||
del {
|
||||
/*@ Deletes a smart object. */
|
||||
legacy null;
|
||||
}
|
||||
attach {
|
||||
/*@ Attach a given smart data to a given smart object. */
|
||||
params {
|
||||
@in Evas_Smart *s;
|
||||
}
|
||||
legacy null;
|
||||
}
|
||||
}
|
||||
implements {
|
||||
class::constructor;
|
||||
class::destructor;
|
||||
Eo_Base::constructor;
|
||||
Evas_Object::smart_type_check_ptr;
|
||||
Evas_Object::smart_type_check;
|
||||
Evas_Object::smart_data::get;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue