Eolian: Integration of MapBuf

This commit is contained in:
Daniel Zaoui 2014-03-25 08:15:53 +02:00
parent de67ce137d
commit e080a8b856
5 changed files with 283 additions and 294 deletions

View File

@ -612,7 +612,9 @@ BUILT_SOURCES = \
elm_menu.eo.c \
elm_menu.eo.h \
elm_panel.eo.c \
elm_panel.eo.h
elm_panel.eo.h \
elm_mapbuf.eo.c \
elm_mapbuf.eo.h
EXTRA_DIST += \
elm_widget.eo \
@ -658,7 +660,8 @@ EXTRA_DIST += \
elm_map_pan.eo \
elm_map.eo \
elm_menu.eo \
elm_panel.eo
elm_panel.eo \
elm_mapbuf.eo
nodist_includesunstable_HEADERS = \
elm_widget.eo.h \
@ -704,5 +707,6 @@ nodist_includesunstable_HEADERS = \
elm_map_pan.eo.h \
elm_map.eo.h \
elm_menu.eo.h \
elm_panel.eo.h
elm_panel.eo.h \
elm_mapbuf.eo.h

View File

@ -8,8 +8,6 @@
#include "elm_widget_mapbuf.h"
#include "elm_widget_container.h"
EAPI Eo_Op ELM_OBJ_MAPBUF_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_MAPBUF_CLASS
#define MY_CLASS_NAME "Elm_Mapbuf"
@ -31,19 +29,16 @@ _sizing_eval(Evas_Object *obj)
evas_object_size_hint_max_set(obj, maxw, maxh);
}
static void
_elm_mapbuf_smart_theme(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_mapbuf_elm_widget_theme_apply(Eo *obj, Elm_Mapbuf_Data *sd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
_sizing_eval(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
@ -56,7 +51,7 @@ _changed_size_hints_cb(void *data,
}
static void
_elm_mapbuf_content_unset(Elm_Mapbuf_Smart_Data *sd, Evas_Object *obj,
_elm_mapbuf_content_unset(Elm_Mapbuf_Data *sd, Evas_Object *obj,
Evas_Object *content)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -73,21 +68,16 @@ _elm_mapbuf_content_unset(Elm_Mapbuf_Smart_Data *sd, Evas_Object *obj,
ELM_SAFE_FREE(sd->idler, ecore_idler_del);
}
static void
_elm_mapbuf_smart_sub_object_del(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_mapbuf_elm_widget_sub_object_del(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Object *sobj)
{
Elm_Mapbuf_Smart_Data *sd = _pd;
Evas_Object *sobj = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_del(sobj, &int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
if (sobj == sd->content)
_elm_mapbuf_content_unset(sd, (Evas_Object *)obj, sobj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
@ -124,7 +114,7 @@ _configure(Evas_Object *obj)
}
static void
_mapbuf_auto_eval(Evas_Object *obj, Elm_Mapbuf_Smart_Data *sd)
_mapbuf_auto_eval(Evas_Object *obj, Elm_Mapbuf_Data *sd)
{
Eina_Bool vis;
Evas_Coord x, y, w, h;
@ -143,7 +133,7 @@ _mapbuf_auto_eval(Evas_Object *obj, Elm_Mapbuf_Smart_Data *sd)
static Eina_Bool
_mapbuf_move_end(void *data)
{
Elm_Mapbuf_Smart_Data *sd = data;
Elm_Mapbuf_Data *sd = data;
elm_mapbuf_smooth_set(sd->self, sd->smooth_saved);
sd->idler = NULL;
@ -152,72 +142,58 @@ _mapbuf_move_end(void *data)
}
static void
_mapbuf_auto_smooth(Evas_Object *obj EINA_UNUSED, Elm_Mapbuf_Smart_Data *sd)
_mapbuf_auto_smooth(Evas_Object *obj EINA_UNUSED, Elm_Mapbuf_Data *sd)
{
if (!sd->automode) return ;
if (!sd->idler) sd->idler = ecore_idler_add(_mapbuf_move_end, sd);
sd->smooth = EINA_FALSE;
}
static void
_elm_mapbuf_smart_move(Eo *obj, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_evas_smart_move(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord x, Evas_Coord y)
{
Evas_Coord x = va_arg(*list, Evas_Coord);
Evas_Coord y = va_arg(*list, Evas_Coord);
eo_do_super(obj, MY_CLASS, evas_obj_smart_move(x, y));
_mapbuf_auto_eval(obj, _pd);
_mapbuf_auto_smooth(obj, _pd);
_mapbuf_auto_eval(obj, sd);
_mapbuf_auto_smooth(obj, sd);
_configure(obj);
}
static void
_elm_mapbuf_smart_resize(Eo *obj, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_evas_smart_resize(Eo *obj, Elm_Mapbuf_Data *sd, Evas_Coord w, Evas_Coord h)
{
Evas_Coord w = va_arg(*list, Evas_Coord);
Evas_Coord h = va_arg(*list, Evas_Coord);
eo_do_super(obj, MY_CLASS, evas_obj_smart_resize(w, h));
ELM_MAPBUF_DATA_GET(obj, sd);
if (sd->content) evas_object_resize(sd->content, w, h);
_mapbuf_auto_eval(obj, _pd);
_mapbuf_auto_eval(obj, sd);
_configure(obj);
}
static void
_elm_mapbuf_smart_show(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_mapbuf_evas_smart_show(Eo *obj, Elm_Mapbuf_Data *sd)
{
eo_do_super(obj, MY_CLASS, evas_obj_smart_show());
_mapbuf_auto_eval(obj, _pd);
_mapbuf_auto_eval(obj, sd);
_configure(obj);
}
static void
_elm_mapbuf_smart_hide(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_mapbuf_evas_smart_hide(Eo *obj, Elm_Mapbuf_Data *sd)
{
eo_do_super(obj, MY_CLASS, evas_obj_smart_hide());
_mapbuf_auto_eval(obj, _pd);
_mapbuf_auto_eval(obj, sd);
_configure(obj);
}
static void
_elm_mapbuf_smart_content_set(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_mapbuf_elm_container_content_set(Eo *obj, Elm_Mapbuf_Data *sd, const char *part, Evas_Object *content)
{
Elm_Mapbuf_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
const char *part = va_arg(*list, const char *);
Evas_Object *content = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
if (part && strcmp(part, "default")) return;
if (sd->content == content)
{
if (ret) *ret = EINA_TRUE;
return;
}
if (part && strcmp(part, "default")) return EINA_FALSE;
if (sd->content == content) return EINA_TRUE;
evas_object_del(sd->content);
sd->content = content;
@ -240,55 +216,41 @@ _elm_mapbuf_smart_content_set(Eo *obj, void *_pd, va_list *list)
_sizing_eval(obj);
_configure(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_mapbuf_smart_content_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static Evas_Object*
_elm_mapbuf_elm_container_content_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd, const char *part)
{
Elm_Mapbuf_Smart_Data *sd = _pd;
const char *part = va_arg(*list, const char *);
Evas_Object **ret = va_arg(*list, Evas_Object **);
*ret = NULL;
if (part && strcmp(part, "default")) return;
*ret = sd->content;
if (part && strcmp(part, "default")) return NULL;
return sd->content;
}
static void
_elm_mapbuf_smart_content_unset(Eo *obj, void *_pd, va_list *list)
EOLIAN static Evas_Object*
_elm_mapbuf_elm_container_content_unset(Eo *obj, Elm_Mapbuf_Data *sd, const char *part)
{
Evas_Object *content;
const char *part = va_arg(*list, const char *);
Evas_Object **ret = va_arg(*list, Evas_Object **);
if (ret) *ret = NULL;
Elm_Mapbuf_Smart_Data *sd = _pd;
if (part && strcmp(part, "default")) return;
if (!sd->content) return;
if (part && strcmp(part, "default")) return NULL;
if (!sd->content) return NULL;
content = sd->content;
elm_widget_sub_object_del(obj, content);
_elm_mapbuf_content_unset(sd, obj, content);
if (ret) *ret = content;
return content;
}
static void
_elm_mapbuf_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_mapbuf_evas_smart_del(Eo *obj, Elm_Mapbuf_Data *priv)
{
Elm_Mapbuf_Smart_Data *priv = _pd;
ELM_SAFE_FREE(priv->idler, ecore_idler_del);
ELM_SAFE_FREE(priv->map, evas_map_free);
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
}
static void
_elm_mapbuf_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_mapbuf_evas_smart_add(Eo *obj, Elm_Mapbuf_Data *priv)
{
Elm_Mapbuf_Smart_Data *priv = _pd;
Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(obj));
int i;
@ -327,24 +289,16 @@ elm_mapbuf_add(Evas_Object *parent)
return obj;
}
static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_mapbuf_eo_base_constructor(Eo *obj, Elm_Mapbuf_Data *sd EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
evas_obj_type_set(MY_CLASS_NAME_LEGACY));
}
EAPI void
elm_mapbuf_enabled_set(Evas_Object *obj,
Eina_Bool enabled)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_enabled_set(enabled));
}
static void
_internal_enable_set(Eo *obj, Elm_Mapbuf_Smart_Data *sd, Eina_Bool enabled)
_internal_enable_set(Eo *obj, Elm_Mapbuf_Data *sd, Eina_Bool enabled)
{
if (sd->enabled == enabled) return;
sd->enabled = enabled;
@ -359,119 +313,50 @@ _internal_enable_set(Eo *obj, Elm_Mapbuf_Smart_Data *sd, Eina_Bool enabled)
_configure(obj);
}
static void
_enabled_set(Eo *obj, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_enabled_set(Eo *obj, Elm_Mapbuf_Data *sd, Eina_Bool enabled)
{
Eina_Bool enabled = va_arg(*list, int);
Elm_Mapbuf_Smart_Data *sd = _pd;
_internal_enable_set(obj, sd, enabled);
}
EAPI Eina_Bool
elm_mapbuf_enabled_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_mapbuf_enabled_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd)
{
ELM_MAPBUF_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_mapbuf_enabled_get(&ret));
return ret;
return sd->enabled;
}
static void
_enabled_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_smooth_set(Eo *obj, Elm_Mapbuf_Data *sd, Eina_Bool smooth)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Mapbuf_Smart_Data *sd = _pd;
*ret = sd->enabled;
}
EAPI void
elm_mapbuf_smooth_set(Evas_Object *obj,
Eina_Bool smooth)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_smooth_set(smooth));
}
static void
_smooth_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool smooth = va_arg(*list, int);
Elm_Mapbuf_Smart_Data *sd = _pd;
if (sd->smooth == smooth) return;
sd->smooth = smooth;
sd->smooth_saved = smooth;
_configure(obj);
}
EAPI Eina_Bool
elm_mapbuf_smooth_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_mapbuf_smooth_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd)
{
ELM_MAPBUF_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_mapbuf_smooth_get(&ret));
return ret;
return sd->smooth;
}
static void
_smooth_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_alpha_set(Eo *obj, Elm_Mapbuf_Data *sd, Eina_Bool alpha)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Mapbuf_Smart_Data *sd = _pd;
*ret = sd->smooth;
}
EAPI void
elm_mapbuf_alpha_set(Evas_Object *obj,
Eina_Bool alpha)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_alpha_set(alpha));
}
static void
_alpha_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool alpha = va_arg(*list, int);
Elm_Mapbuf_Smart_Data *sd = _pd;
if (sd->alpha == alpha) return;
sd->alpha = alpha;
_configure(obj);
}
EAPI Eina_Bool
elm_mapbuf_alpha_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_mapbuf_alpha_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd)
{
ELM_MAPBUF_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_mapbuf_alpha_get(&ret));
return ret;
return sd->alpha;
}
static void
_alpha_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_auto_set(Eo *obj, Elm_Mapbuf_Data *sd, Eina_Bool on)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Mapbuf_Smart_Data *sd = _pd;
*ret = sd->alpha;
}
EAPI void
elm_mapbuf_auto_set(Evas_Object *obj,
Eina_Bool on)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_auto_set(on));
}
static void
_auto_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool on = va_arg(*list, int);
Elm_Mapbuf_Smart_Data *sd = _pd;
if (sd->automode == on) return;
sd->automode = on;
if (on)
@ -482,39 +367,20 @@ _auto_set(Eo *obj, void *_pd, va_list *list)
{
ELM_SAFE_FREE(sd->idler, ecore_idler_del);
_internal_enable_set(obj, _pd, EINA_FALSE);
_internal_enable_set(obj, sd, EINA_FALSE);
}
_configure(obj);
}
EAPI Eina_Bool
elm_mapbuf_auto_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_mapbuf_auto_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd)
{
ELM_MAPBUF_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_mapbuf_auto_get(&ret));
return ret;
return sd->automode;
}
static void
_auto_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_mapbuf_point_color_get(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd, int idx, int *r, int *g, int *b, int *a)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Mapbuf_Smart_Data *sd = _pd;
*ret = sd->automode;
}
static void
_point_color_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int idx = va_arg(*list, int);
int *r = va_arg(*list, int *);
int *g = va_arg(*list, int *);
int *b = va_arg(*list, int *);
int *a = va_arg(*list, int *);
Elm_Mapbuf_Smart_Data *sd = _pd;
if ((idx < 0) || (idx >= 4))
{
ERR("idx value should be 0 ~ 4");
@ -526,26 +392,9 @@ _point_color_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
*a =sd->colors[idx].a;
}
EAPI void
elm_mapbuf_point_color_get(Evas_Object *obj, int idx,
int *r, int *g, int *b, int *a)
EOLIAN static void
_elm_mapbuf_point_color_set(Eo *obj EINA_UNUSED, Elm_Mapbuf_Data *sd, int idx, int r, int g, int b, int a)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_point_color_get(idx, r, g, b, a));
}
static void
_point_color_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int idx = va_arg(*list, int);
int r = va_arg(*list, int);
int g = va_arg(*list, int);
int b = va_arg(*list, int);
int a = va_arg(*list, int);
Elm_Mapbuf_Smart_Data *sd = _pd;
if ((idx < 0) || (idx >= 4))
{
ERR("idx value should be 0 ~ 4");
@ -559,72 +408,10 @@ _point_color_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
_configure(obj);
}
EAPI void
elm_mapbuf_point_color_set(Evas_Object *obj, int idx,
int r, int g, int b, int a)
{
ELM_MAPBUF_CHECK(obj);
eo_do(obj, elm_obj_mapbuf_point_color_set(idx, r, g, b, a));
}
static void
_class_constructor(Eo_Class *klass)
_elm_mapbuf_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_mapbuf_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_mapbuf_smart_del),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _elm_mapbuf_smart_resize),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), _elm_mapbuf_smart_move),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), _elm_mapbuf_smart_show),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_HIDE), _elm_mapbuf_smart_hide),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_mapbuf_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_DEL), _elm_mapbuf_smart_sub_object_del),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_mapbuf_smart_content_set),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_GET), _elm_mapbuf_smart_content_get),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_UNSET), _elm_mapbuf_smart_content_unset),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_ENABLED_SET), _enabled_set),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_ENABLED_GET), _enabled_get),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_SMOOTH_SET), _smooth_set),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_SMOOTH_GET), _smooth_get),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_ALPHA_SET), _alpha_set),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_ALPHA_GET), _alpha_get),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_AUTO_SET), _auto_set),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_AUTO_GET), _auto_get),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_POINT_COLOR_SET), _point_color_set),
EO_OP_FUNC(ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_POINT_COLOR_GET), _point_color_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_ENABLED_SET, "Enable or disable the map."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_ENABLED_GET, "Get a value whether map is enabled or not."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_SMOOTH_SET, "Enable or disable smooth map rendering."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_SMOOTH_GET, "Get a value whether smooth map rendering is enabled or not."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_ALPHA_SET, "Set or unset alpha flag for map rendering."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_ALPHA_GET, "Get a value whether alpha blending is enabled or not."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_AUTO_SET, "Turn map on or off automatically based on object visibility."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_AUTO_GET, "Get automatic mode state."),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_POINT_COLOR_SET, "Set a vertex color of the mapbuf"),
EO_OP_DESCRIPTION(ELM_OBJ_MAPBUF_SUB_ID_POINT_COLOR_GET, "Get a vertex color of the mapbuf"),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_MAPBUF_BASE_ID, op_desc, ELM_OBJ_MAPBUF_SUB_ID_LAST),
NULL,
sizeof(Elm_Mapbuf_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_mapbuf_class_get, &class_desc, ELM_OBJ_CONTAINER_CLASS, NULL);
#include "elm_mapbuf.eo.c"

View File

@ -0,0 +1,194 @@
class Elm_Mapbuf (Elm_Container)
{
eo_prefix: elm_obj_mapbuf;
properties {
auto {
set {
/*@
Set or unset auto flag for map rendering.
When a ampbuf object has "auto mode" enabled, then it will enable and
disable map mode based on current visibility. Mapbuf will track if you show
or hide it AND if the object is inside the canvas viewport or not when it
is moved or resized. Note that if you turn automode off, then map mode
will be in a disabled state at this point. When you turn it on for the
first time, the current state will be evaluated base on current properties
of the mapbuf object.
Auto mode is disabled by default.
@ingroup Mapbuf */
}
get {
/*@
Get a value whether auto mode is enabled or not.
@return @c EINA_TRUE means autso mode is enabled. @c EINA_FALSE
indicates it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
@see elm_mapbuf_auto_set() for details.
@ingroup Mapbuf */
}
values {
Eina_Bool on; /*@ @c EINA_TRUE to enable auto mode or @c EINA_FALSE
to disable it. */
}
}
smooth {
set {
/*@
Enable or disable smooth map rendering.
This sets smoothing for map rendering. If the object is a type that has
its own smoothing settings, then both the smooth settings for this object
and the map must be turned off.
By default smooth maps are enabled.
@ingroup Mapbuf */
}
get {
/*@
Get a value whether smooth map rendering is enabled or not.
@return @c EINA_TRUE means smooth map rendering is enabled. @c EINA_FALSE
indicates it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
@see elm_mapbuf_smooth_set() for details.
@ingroup Mapbuf */
}
values {
Eina_Bool smooth; /*@ @c EINA_TRUE to enable smooth map rendering or @c EINA_FALSE
to disable it. */
}
}
alpha {
set {
/*@
Set or unset alpha flag for map rendering.
This sets alpha flag for map rendering. If the object is a type that has
its own alpha settings, then this will take precedence. Only image objects
have this currently. It stops alpha blending of the map area, and is
useful if you know the object and/or all sub-objects is 100% solid.
Alpha is enabled by default.
@ingroup Mapbuf */
}
get {
/*@
Get a value whether alpha blending is enabled or not.
@return @c EINA_TRUE means alpha blending is enabled. @c EINA_FALSE
indicates it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
@see elm_mapbuf_alpha_set() for details.
@ingroup Mapbuf */
}
values {
Eina_Bool alpha; /*@ @c EINA_TRUE to enable alpha blending or @c EINA_FALSE
to disable it. */
}
}
enabled {
set {
/*@
Enable or disable the map.
This enables the map that is set or disables it. On enable, the object
geometry will be saved, and the new geometry will change (position and
size) to reflect the map geometry set.
Also, when enabled, alpha and smooth states will be used, so if the
content isn't solid, alpha should be enabled, for example, otherwise
a black rectangle will fill the content.
When disabled, the stored map will be freed and geometry prior to
enabling the map will be restored.
It's disabled by default.
@see elm_mapbuf_alpha_set()
@see elm_mapbuf_smooth_set()
@ingroup Mapbuf */
}
get {
/*@
Get a value whether map is enabled or not.
@return @c EINA_TRUE means map is enabled. @c EINA_FALSE indicates
it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
@see elm_mapbuf_enabled_set() for details.
@ingroup Mapbuf */
}
values {
Eina_Bool enabled; /*@ @c EINA_TRUE to enable map or @c EINA_FALSE to disable it. */
}
}
}
methods {
point_color_set {
/*@
Set the color of a vertex in the mapbuf
This sets the color of the vertex in the mapbuf. Colors will be linearly
interpolated between vertex points through the mapbuf. Color will multiply
the "texture" pixels (like GL_MODULATE in OpenGL). The default color of
a vertex in a mapbuf is white solid (255, 255, 255, 255) which means it will
have no affect on modifying the texture pixels.
@see evas_object_map_set()
@since 1.9 */
params {
@in int idx; /*@ index of point to change. Must be smaller than mapbuf size. */
@in int r; /*@ red (0 - 255) */
@in int g; /*@ green (0 - 255) */
@in int b; /*@ blue (0 - 255) */
@in int a; /*@ alpha (0 - 255) */
}
}
point_color_get {
/*@
Get the color set on a vertex in the mapbuf
This gets the color set by elm_mapbuf_point_color_set() on the given vertex
of the mapbuf.
@see elm_mapbuf_point_color_set()
@since 1.9 */
params {
@in int idx; /*@ index of point get. Must be smaller than map size. */
@out int r; /*@ pointer to red return */
@out int g; /*@ pointer to green return */
@out int b; /*@ pointer to blue return */
@out int a; /*@ pointer to alpha return */
}
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::hide;
Evas_Smart::show;
Evas_Smart::move;
Evas_Smart::add;
Evas_Smart::del;
Evas_Smart::resize;
Elm_Widget::theme_apply;
Elm_Widget::sub_object_del;
Elm_Container::content_get;
Elm_Container::content_set;
Elm_Container::content_unset;
}
}

View File

@ -3,6 +3,9 @@
*
* @{
*/
#include "elm_mapbuf.eo.h"
#if 0
#define ELM_OBJ_MAPBUF_CLASS elm_obj_mapbuf_class_get()
const Eo_Class *elm_obj_mapbuf_class_get(void) EINA_CONST;
@ -154,6 +157,7 @@ enum
* @see elm_mapbuf_point_color_get
*/
#define elm_obj_mapbuf_point_color_get(idx, r, g, b, a) ELM_OBJ_MAPBUF_ID(ELM_OBJ_MAPBUF_SUB_ID_POINT_COLOR_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
#endif
/**
* @}

View File

@ -17,8 +17,8 @@
/**
* Base widget smart data extended with mapbuf instance data.
*/
typedef struct _Elm_Mapbuf_Smart_Data Elm_Mapbuf_Smart_Data;
struct _Elm_Mapbuf_Smart_Data
typedef struct _Elm_Mapbuf_Data Elm_Mapbuf_Data;
struct _Elm_Mapbuf_Data
{
Evas_Object *self;
Evas_Object *content;
@ -41,7 +41,7 @@ struct _Elm_Mapbuf_Smart_Data
*/
#define ELM_MAPBUF_DATA_GET(o, sd) \
Elm_Mapbuf_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAPBUF_CLASS)
Elm_Mapbuf_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAPBUF_CLASS)
#define ELM_MAPBUF_DATA_GET_OR_RETURN(o, ptr) \
ELM_MAPBUF_DATA_GET(o, ptr); \