forked from enlightenment/efl
102 lines
3.3 KiB
C
102 lines
3.3 KiB
C
#include "evas_common_private.h"
|
|
#include "evas_private.h"
|
|
|
|
#define MY_CLASS EVAS_CANVAS3D_OBJECT_CLASS
|
|
|
|
EOLIAN static Eo *
|
|
_evas_canvas3d_object_efl_object_constructor(Eo *obj, Evas_Canvas3D_Object_Data *pd)
|
|
{
|
|
Eo *e = NULL;
|
|
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
|
e = efl_parent_get(obj);
|
|
pd->evas = e;
|
|
pd->type = EVAS_CANVAS3D_OBJECT_TYPE_INVALID;
|
|
memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX);
|
|
|
|
return obj;
|
|
}
|
|
|
|
EOLIAN static Evas *
|
|
_evas_canvas3d_object_efl_object_provider_find(const Eo *obj, Evas_Canvas3D_Object_Data *pd, const Efl_Class *klass)
|
|
{
|
|
if (klass == EVAS_CANVAS_CLASS)
|
|
return pd->evas;
|
|
return efl_provider_find(efl_super(obj, MY_CLASS), klass);
|
|
}
|
|
|
|
EOLIAN static void
|
|
_evas_canvas3d_object_type_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_Object_Type type)
|
|
{
|
|
pd->type = type;
|
|
}
|
|
|
|
EOLIAN static Evas_Canvas3D_Object_Type
|
|
_evas_canvas3d_object_type_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd)
|
|
{
|
|
return pd->type;
|
|
}
|
|
|
|
EOLIAN static Eina_Bool
|
|
_evas_canvas3d_object_dirty_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_State state)
|
|
{
|
|
return pd->dirty[state];
|
|
}
|
|
|
|
EOLIAN static void
|
|
_evas_canvas3d_object_change(Eo *obj, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_State state, Evas_Canvas3D_Object *ref)
|
|
{
|
|
/* Skip already dirty properties. */
|
|
if (pd->dirty[state])
|
|
return;
|
|
|
|
pd->dirty[state] = EINA_TRUE;
|
|
pd->dirty[EVAS_CANVAS3D_STATE_ANY] = EINA_TRUE;
|
|
|
|
evas_canvas3d_object_change_notify(obj, state, ref);
|
|
}
|
|
|
|
EOLIAN static void
|
|
_evas_canvas3d_object_update(Eo *obj, Evas_Canvas3D_Object_Data *pd)
|
|
{
|
|
if (!pd->dirty[EVAS_CANVAS3D_STATE_ANY])
|
|
return;
|
|
|
|
evas_canvas3d_object_update_notify(obj);
|
|
|
|
memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX);
|
|
}
|
|
|
|
EOLIAN static Eina_Bool
|
|
_evas_canvas3d_object_efl_object_event_callback_priority_add(Eo *obj,
|
|
Evas_Canvas3D_Object_Data *pd EINA_UNUSED,
|
|
const Efl_Event_Description *desc,
|
|
Efl_Callback_Priority priority,
|
|
Efl_Event_Cb func,
|
|
const void *user_data)
|
|
{
|
|
Eina_Bool r = EINA_FALSE;
|
|
|
|
r = efl_event_callback_priority_add(efl_super(obj, MY_CLASS), desc, priority, func, user_data);
|
|
evas_canvas3d_object_callback_register(obj, desc->name, user_data);
|
|
|
|
return r;
|
|
}
|
|
|
|
EOLIAN static Eina_Bool
|
|
_evas_canvas3d_object_efl_object_event_callback_del(Eo *obj, Evas_Canvas3D_Object_Data *pd EINA_UNUSED,
|
|
const Efl_Event_Description *desc,
|
|
Efl_Event_Cb func,
|
|
const void *user_data)
|
|
{
|
|
Eina_Bool r = EINA_FALSE;
|
|
r = efl_event_callback_del(efl_super(obj, MY_CLASS), desc, func, user_data);
|
|
if (r) evas_canvas3d_object_callback_unregister(obj, desc->name);
|
|
return r;
|
|
}
|
|
|
|
#define EVAS_CANVAS3D_OBJECT_EXTRA_OPS \
|
|
EFL_OBJECT_OP_FUNC(efl_event_callback_priority_add, _evas_canvas3d_object_efl_object_event_callback_priority_add), \
|
|
EFL_OBJECT_OP_FUNC(efl_event_callback_del, _evas_canvas3d_object_efl_object_event_callback_del)
|
|
|
|
#include "canvas/evas_canvas3d_object.eo.c"
|