2016-11-03 08:45:42 -07:00
|
|
|
#include "edje_private.h"
|
|
|
|
#include "edje_part_helper.h"
|
2017-05-25 19:33:58 -07:00
|
|
|
#define MY_CLASS EFL_CANVAS_LAYOUT_INTERNAL_CLASS
|
2016-11-03 08:45:42 -07:00
|
|
|
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_IMPLEMENTATION(other, MY_CLASS, EINA_FALSE)
|
2017-05-29 21:52:22 -07:00
|
|
|
#undef PROXY_IMPLEMENTATION
|
|
|
|
|
2017-06-21 17:05:41 -07:00
|
|
|
void
|
|
|
|
_part_reuse_error(Efl_Canvas_Layout_Internal_Data *pd)
|
|
|
|
{
|
|
|
|
const char *typestr = "UNKNOWN";
|
|
|
|
Edje *ed;
|
|
|
|
|
|
|
|
// TODO: Enable full debug only for eo_debug?
|
|
|
|
// Don't trust pd->ed as it may be invalid now.
|
|
|
|
ed = efl_data_scope_safe_get(pd->obj, EDJE_OBJECT_CLASS);
|
|
|
|
if (!ed)
|
|
|
|
{
|
|
|
|
ERR("A previous misuse of efl_part has been detected. Handles returned "
|
|
|
|
"by efl_part() are valid for a single function call. Did you call "
|
|
|
|
"a non implemented function? obj: %p has been deleted!", pd->obj);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (pd->rp->part->type)
|
|
|
|
{
|
|
|
|
case EDJE_PART_TYPE_RECTANGLE: typestr = "RECTANGLE"; break;
|
|
|
|
case EDJE_PART_TYPE_TEXT: typestr = "TEXT"; break;
|
|
|
|
case EDJE_PART_TYPE_IMAGE: typestr = "IMAGE"; break;
|
|
|
|
case EDJE_PART_TYPE_SWALLOW: typestr = "SWALLOW"; break;
|
|
|
|
case EDJE_PART_TYPE_TEXTBLOCK: typestr = "TEXTBLOCK"; break;
|
|
|
|
case EDJE_PART_TYPE_GRADIENT: typestr = "GRADIENT"; break;
|
|
|
|
case EDJE_PART_TYPE_GROUP: typestr = "GROUP"; break;
|
|
|
|
case EDJE_PART_TYPE_BOX: typestr = "BOX"; break;
|
|
|
|
case EDJE_PART_TYPE_TABLE: typestr = "TABLE"; break;
|
|
|
|
case EDJE_PART_TYPE_EXTERNAL: typestr = "EXTERNAL"; break;
|
|
|
|
case EDJE_PART_TYPE_PROXY: typestr = "PROXY"; break;
|
|
|
|
case EDJE_PART_TYPE_SPACER: typestr = "SPACER"; break;
|
|
|
|
case EDJE_PART_TYPE_MESH_NODE: typestr = "MESH_NODE"; break;
|
|
|
|
case EDJE_PART_TYPE_LIGHT: typestr = "LIGHT"; break;
|
|
|
|
case EDJE_PART_TYPE_CAMERA: typestr = "CAMERA"; break;
|
|
|
|
case EDJE_PART_TYPE_SNAPSHOT: typestr = "SNAPSHOT"; break;
|
|
|
|
case EDJE_PART_TYPE_VECTOR: typestr = "VECTOR"; break;
|
|
|
|
default: break;
|
|
|
|
}
|
|
|
|
|
|
|
|
ERR("A previous misuse of efl_part has been detected. Handles returned "
|
|
|
|
"by efl_part() are valid for a single function call. Did you call "
|
|
|
|
"a non implemented function? obj: %p group: '%s' part: '%s' type: %s%s",
|
|
|
|
pd->obj, ed->group, pd->part, typestr,
|
|
|
|
ed->delete_me ? ". This object is already deleted." : "");
|
|
|
|
}
|
|
|
|
|
2016-11-03 08:45:42 -07:00
|
|
|
PROXY_INIT(box)
|
|
|
|
PROXY_INIT(table)
|
|
|
|
PROXY_INIT(swallow)
|
2017-05-29 04:28:08 -07:00
|
|
|
PROXY_INIT(external)
|
2017-05-30 00:31:19 -07:00
|
|
|
PROXY_INIT(text)
|
2017-05-29 21:52:22 -07:00
|
|
|
PROXY_INIT(other)
|
2016-11-03 08:45:42 -07:00
|
|
|
|
|
|
|
void
|
|
|
|
_edje_internal_proxy_shutdown(void)
|
|
|
|
{
|
|
|
|
_box_shutdown();
|
|
|
|
_table_shutdown();
|
|
|
|
_swallow_shutdown();
|
2017-05-29 04:28:08 -07:00
|
|
|
_external_shutdown();
|
2017-05-30 00:31:19 -07:00
|
|
|
_text_shutdown();
|
2017-05-29 21:52:22 -07:00
|
|
|
_other_shutdown();
|
2016-11-03 08:45:42 -07:00
|
|
|
}
|
|
|
|
|
2017-05-25 19:33:58 -07:00
|
|
|
void
|
2017-06-21 17:05:41 -07:00
|
|
|
_edje_real_part_set(Eo *obj, Edje *ed, Edje_Real_Part *rp, const char *part)
|
2017-05-25 19:33:58 -07:00
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
Efl_Canvas_Layout_Internal_Data *pd;
|
|
|
|
|
|
|
|
pd = efl_data_scope_get(obj, EFL_CANVAS_LAYOUT_INTERNAL_CLASS);
|
|
|
|
pd->obj = ed->obj;
|
2017-05-25 19:33:58 -07:00
|
|
|
pd->ed = ed;
|
|
|
|
pd->rp = rp;
|
|
|
|
pd->part = part;
|
|
|
|
pd->temp = 1;
|
2017-06-28 01:17:18 -07:00
|
|
|
pd->in_use = 1;
|
2017-06-21 17:05:41 -07:00
|
|
|
pd->in_call = 0;
|
|
|
|
efl_parent_set(obj, ed->obj);
|
2017-05-25 19:33:58 -07:00
|
|
|
}
|
2017-05-25 18:52:57 -07:00
|
|
|
|
2017-05-25 19:33:58 -07:00
|
|
|
EOLIAN static Efl_Object *
|
|
|
|
_efl_canvas_layout_internal_efl_object_finalize(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL);
|
2017-06-21 17:05:41 -07:00
|
|
|
// Do not use RETURN_VAL() here!
|
2017-05-25 19:33:58 -07:00
|
|
|
return efl_finalize(efl_super(obj, MY_CLASS));
|
|
|
|
}
|
2017-05-25 18:52:57 -07:00
|
|
|
|
2017-05-25 19:33:58 -07:00
|
|
|
EOLIAN void
|
2017-05-30 07:13:02 -07:00
|
|
|
_efl_canvas_layout_internal_efl_gfx_geometry_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, int *x, int *y, int *w, int *h)
|
2017-05-25 19:33:58 -07:00
|
|
|
{
|
|
|
|
Edje_Real_Part *rp = pd->rp;
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-25 19:33:58 -07:00
|
|
|
|
|
|
|
_edje_recalc_do(pd->ed);
|
|
|
|
if (!rp)
|
|
|
|
{
|
|
|
|
if (x) *x = 0;
|
|
|
|
if (y) *y = 0;
|
|
|
|
if (w) *w = 0;
|
|
|
|
if (h) *h = 0;
|
2017-06-21 17:05:41 -07:00
|
|
|
RETURN_VOID;
|
2017-05-25 19:33:58 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
if (x) *x = rp->x;
|
|
|
|
if (y) *y = rp->y;
|
|
|
|
if (w) *w = rp->w;
|
|
|
|
if (h) *h = rp->h;
|
|
|
|
RETURN_VOID;
|
|
|
|
}
|
2017-05-25 18:52:57 -07:00
|
|
|
|
2017-05-25 19:53:27 -07:00
|
|
|
EOLIAN static void
|
2017-05-30 07:13:02 -07:00
|
|
|
_efl_canvas_layout_internal_state_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, const char **name, double *val)
|
2017-05-25 19:53:27 -07:00
|
|
|
{
|
|
|
|
const char *str;
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-25 19:53:27 -07:00
|
|
|
|
2017-06-21 17:05:41 -07:00
|
|
|
if (!name && !val)
|
|
|
|
RETURN_VOID;
|
2017-05-25 19:53:27 -07:00
|
|
|
str = _edje_object_part_state_get(pd->ed, pd->part, val);
|
|
|
|
if (name) *name = str;
|
|
|
|
RETURN_VOID;
|
|
|
|
}
|
|
|
|
|
2017-05-30 07:13:02 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_value_set(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dx, double dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_value_set(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_value_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double *dx, double *dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_value_get(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_size_set(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dw, double dh)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_size_set(pd->ed, pd->part, dw, dh));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_size_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double *dw, double *dh)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_size_get(pd->ed, pd->part, dw, dh));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Efl_Ui_Drag_Dir
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_dir_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_dir_get(pd->ed, pd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_step_set(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dx, double dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_step_set(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_step_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double *dx, double *dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_step_get(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_step_move(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dx, double dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_step(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_page_set(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dx, double dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_page_set(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_page_get(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double *dx, double *dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_page_get(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_canvas_layout_internal_efl_ui_drag_drag_page_move(Eo *obj, Efl_Canvas_Layout_Internal_Data *pd, double dx, double dy)
|
|
|
|
{
|
2017-06-21 17:05:41 -07:00
|
|
|
PROXY_CALL_BEGIN(pd);
|
2017-05-30 07:13:02 -07:00
|
|
|
RETURN_VAL(_edje_object_part_drag_page(pd->ed, pd->part, dx, dy));
|
|
|
|
}
|
|
|
|
|
2016-11-03 08:45:42 -07:00
|
|
|
#include "efl_canvas_layout_internal.eo.c"
|