From 3788c314a5f85e98ab2d4434fef72fd662f7ef3f Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Sun, 23 Mar 2014 16:45:00 +0200 Subject: [PATCH] Eolian: Integration of Map and Map_Pan --- legacy/elementary/src/lib/Makefile.am | 14 +- legacy/elementary/src/lib/elm_map.c | 1159 ++++---------------- legacy/elementary/src/lib/elm_map.eo | 789 +++++++++++++ legacy/elementary/src/lib/elm_map_eo.h | 5 + legacy/elementary/src/lib/elm_map_legacy.h | 2 +- legacy/elementary/src/lib/elm_map_pan.eo | 46 + legacy/elementary/src/lib/elm_widget_map.h | 54 +- 7 files changed, 1099 insertions(+), 970 deletions(-) create mode 100644 legacy/elementary/src/lib/elm_map.eo create mode 100644 legacy/elementary/src/lib/elm_map_pan.eo diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index 923f1fcf65..310ca43523 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -604,7 +604,11 @@ BUILT_SOURCES = \ elm_inwin.eo.c \ elm_inwin.eo.h \ elm_label.eo.c \ - elm_label.eo.h + elm_label.eo.h \ + elm_map_pan.eo.c \ + elm_map_pan.eo.h \ + elm_map.eo.c \ + elm_map.eo.h EXTRA_DIST += \ elm_widget.eo \ @@ -646,7 +650,9 @@ EXTRA_DIST += \ elm_icon.eo \ elm_index.eo \ elm_inwin.eo \ - elm_label.eo + elm_label.eo \ + elm_map_pan.eo \ + elm_map.eo nodist_includesunstable_HEADERS = \ elm_widget.eo.h \ @@ -688,5 +694,7 @@ nodist_includesunstable_HEADERS = \ elm_icon.eo.h \ elm_index.eo.h \ elm_inwin.eo.h \ - elm_label.eo.h + elm_label.eo.h \ + elm_map_pan.eo.h \ + elm_map.eo.h diff --git a/legacy/elementary/src/lib/elm_map.c b/legacy/elementary/src/lib/elm_map.c index 65061312e7..dd8d908cad 100644 --- a/legacy/elementary/src/lib/elm_map.c +++ b/legacy/elementary/src/lib/elm_map.c @@ -8,15 +8,11 @@ #include "elm_widget_map.h" #include "elm_interface_scrollable.h" -EAPI Eo_Op ELM_OBJ_MAP_PAN_BASE_ID = EO_NOOP; - #define MY_PAN_CLASS ELM_OBJ_MAP_PAN_CLASS #define MY_PAN_CLASS_NAME "Elm_Map_Pan" #define MY_PAN_CLASS_NAME_LEGACY "elm_map_pan" -EAPI Eo_Op ELM_OBJ_MAP_BASE_ID = EO_NOOP; - #define MY_CLASS ELM_OBJ_MAP_CLASS #define MY_CLASS_NAME "Elm_Map" @@ -344,7 +340,7 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { }; static void -_edj_overlay_size_get(Elm_Map_Smart_Data *sd, +_edj_overlay_size_get(Elm_Map_Data *sd, Evas_Coord *w, Evas_Coord *h) { @@ -386,7 +382,7 @@ _rotate_do(Evas_Coord x, } static void -_obj_rotate(Elm_Map_Smart_Data *sd, +_obj_rotate(Elm_Map_Data *sd, Evas_Object *obj) { Evas_Coord w, h, ow, oh; @@ -423,7 +419,7 @@ _obj_place(Evas_Object *obj, } static void -_coord_to_region_convert(Elm_Map_Smart_Data *sd, +_coord_to_region_convert(Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord size, @@ -451,7 +447,7 @@ _coord_to_region_convert(Elm_Map_Smart_Data *sd, } static void -_region_to_coord_convert(Elm_Map_Smart_Data *sd, +_region_to_coord_convert(Elm_Map_Data *sd, double lon, double lat, Evas_Coord size, @@ -477,7 +473,7 @@ _region_to_coord_convert(Elm_Map_Smart_Data *sd, } static void -_viewport_coord_get(Elm_Map_Smart_Data *sd, +_viewport_coord_get(Elm_Map_Data *sd, Evas_Coord *vx, Evas_Coord *vy, Evas_Coord *vw, @@ -500,7 +496,7 @@ _viewport_coord_get(Elm_Map_Smart_Data *sd, // Map coordinates to canvas geometry without rotate static void -_coord_to_canvas_no_rotation(Elm_Map_Smart_Data *sd, +_coord_to_canvas_no_rotation(Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord *xx, @@ -516,7 +512,7 @@ _coord_to_canvas_no_rotation(Elm_Map_Smart_Data *sd, // Map coordinates to canvas geometry static void -_coord_to_canvas(Elm_Map_Smart_Data *sd, +_coord_to_canvas(Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord *xx, @@ -530,7 +526,7 @@ _coord_to_canvas(Elm_Map_Smart_Data *sd, // Canvas geometry to map coordinates static void -_canvas_to_coord(Elm_Map_Smart_Data *sd, +_canvas_to_coord(Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord *xx, @@ -888,7 +884,7 @@ _grid_load(Grid *g) } static void -_grid_place(Elm_Map_Smart_Data *sd) +_grid_place(Elm_Map_Data *sd) { Eina_List *l; Grid *g; @@ -905,7 +901,7 @@ _grid_place(Elm_Map_Smart_Data *sd) } static void -_grid_all_create(Elm_Map_Smart_Data *sd) +_grid_all_create(Elm_Map_Data *sd) { int zoom; @@ -928,7 +924,7 @@ _grid_all_create(Elm_Map_Smart_Data *sd) } static void -_grid_all_clear(Elm_Map_Smart_Data *sd) +_grid_all_clear(Elm_Map_Data *sd) { Grid *g; @@ -954,7 +950,7 @@ _grid_all_clear(Elm_Map_Smart_Data *sd) } static void -_track_place(Elm_Map_Smart_Data *sd) +_track_place(Elm_Map_Data *sd) { #ifdef ELM_EMAP Eina_List *l; @@ -1004,7 +1000,7 @@ _track_place(Elm_Map_Smart_Data *sd) } static void -_calc_job(Elm_Map_Smart_Data *sd) +_calc_job(Elm_Map_Data *sd) { if (sd->calc_job.region_show_bring_in) { @@ -1025,7 +1021,7 @@ _calc_job(Elm_Map_Smart_Data *sd) } static void -_smooth_update(Elm_Map_Smart_Data *sd) +_smooth_update(Elm_Map_Data *sd) { Eina_List *l; Grid *g; @@ -1059,7 +1055,7 @@ _zoom_timeout_cb(void *data) } static void -_zoom_do(Elm_Map_Smart_Data *sd, +_zoom_do(Elm_Map_Data *sd, double zoom) { Evas_Coord vx, vy, vw, vh; @@ -1144,7 +1140,7 @@ _zoom_anim_cb(void *data) } static void -_zoom_with_animation(Elm_Map_Smart_Data *sd, +_zoom_with_animation(Elm_Map_Data *sd, double zoom, int cnt) { @@ -1728,7 +1724,7 @@ _overlay_group_free(Overlay_Group *grp) } static Overlay_Group * -_overlay_group_new(Elm_Map_Smart_Data *sd) +_overlay_group_new(Elm_Map_Data *sd) { Overlay_Group *grp; Color c = {0x90, 0xee, 0x90, 0xff}; @@ -1854,7 +1850,7 @@ _overlay_class_free(Overlay_Class *clas) } static Overlay_Class * -_overlay_class_new(Elm_Map_Smart_Data *sd) +_overlay_class_new(Elm_Map_Data *sd) { Overlay_Class *ovl; @@ -2077,7 +2073,7 @@ _overlay_route_free(Overlay_Route *route) } static Overlay_Route * -_overlay_route_new(Elm_Map_Smart_Data *sd, +_overlay_route_new(Elm_Map_Data *sd, const Elm_Map_Route *route, Color c) { @@ -2134,7 +2130,7 @@ static void _overlay_line_show(Overlay_Line *ovl) { Evas_Coord fx, fy, tx, ty; - Elm_Map_Smart_Data *sd = ovl->wsd; + Elm_Map_Data *sd = ovl->wsd; _region_to_coord_convert(sd, ovl->flon, ovl->flat, sd->size.w, &fx, &fy); _region_to_coord_convert(sd, ovl->tlon, ovl->tlat, sd->size.w, &tx, &ty); @@ -2154,7 +2150,7 @@ _overlay_line_free(Overlay_Line *ovl) } static Overlay_Line * -_overlay_line_new(Elm_Map_Smart_Data *sd, +_overlay_line_new(Elm_Map_Data *sd, double flon, double flat, double tlon, @@ -2199,7 +2195,7 @@ _overlay_polygon_show(Overlay_Polygon *ovl) { Eina_List *l; Region *r; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(ovl); @@ -2233,7 +2229,7 @@ _overlay_polygon_free(Overlay_Polygon *ovl) } static Overlay_Polygon * -_overlay_polygon_new(Elm_Map_Smart_Data *sd, Color c) +_overlay_polygon_new(Elm_Map_Data *sd, Color c) { Overlay_Polygon *ovl; @@ -2272,7 +2268,7 @@ _overlay_circle_show(Overlay_Circle *ovl) { double r; Evas_Coord x, y; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(ovl); @@ -2294,7 +2290,7 @@ _overlay_circle_free(Overlay_Circle *ovl) } static Overlay_Circle * -_overlay_circle_new(Elm_Map_Smart_Data *sd, +_overlay_circle_new(Elm_Map_Data *sd, double lon, double lat, double radius, @@ -2346,7 +2342,7 @@ _overlay_scale_show(Overlay_Scale *ovl) char buf[32]; double meter; double lon, lat; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(ovl); @@ -2382,7 +2378,7 @@ _overlay_scale_free(Overlay_Scale *ovl) } static Overlay_Scale * -_overlay_scale_new(Elm_Map_Smart_Data *sd, +_overlay_scale_new(Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, Color c) @@ -2480,7 +2476,7 @@ _overlay_grouping(Eina_List *clas_membs, static void _overlay_show(Elm_Map_Overlay *overlay) { - Elm_Map_Smart_Data *sd = overlay->wsd; + Elm_Map_Data *sd = overlay->wsd; if (overlay->paused) return; if ((overlay->grp) && (overlay->grp->klass) && (overlay->grp->klass->paused)) @@ -2551,7 +2547,7 @@ _overlay_show(Elm_Map_Overlay *overlay) } static void -_overlay_place(Elm_Map_Smart_Data *sd) +_overlay_place(Elm_Map_Data *sd) { Eina_List *l, *ll; Elm_Map_Overlay *overlay; @@ -2957,7 +2953,7 @@ _route_cb(void *data, int status) { Elm_Map_Route *route; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(data); EINA_SAFETY_ON_NULL_RETURN(file); @@ -2994,7 +2990,7 @@ _name_cb(void *data, int status) { Elm_Map_Name *name; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(data); EINA_SAFETY_ON_NULL_RETURN(file); @@ -3030,7 +3026,7 @@ _name_list_cb(void *data, int status) { Elm_Map_Name_List *name_list; - Elm_Map_Smart_Data *sd; + Elm_Map_Data *sd; EINA_SAFETY_ON_NULL_RETURN(data); EINA_SAFETY_ON_NULL_RETURN(file); @@ -3262,7 +3258,7 @@ _pinch_rotate_end_cb(void *data, } static void -_source_tile_set(Elm_Map_Smart_Data *sd, +_source_tile_set(Elm_Map_Data *sd, const char *source_name) { Source_Tile *s; @@ -3303,7 +3299,7 @@ _source_tile_set(Elm_Map_Smart_Data *sd, } static void -_source_route_set(Elm_Map_Smart_Data *sd, +_source_route_set(Elm_Map_Data *sd, const char *source_name) { Source_Route *s; @@ -3330,7 +3326,7 @@ _source_route_set(Elm_Map_Smart_Data *sd, } static void -_source_name_set(Elm_Map_Smart_Data *sd, +_source_name_set(Elm_Map_Data *sd, const char *source_name) { Source_Name *s; @@ -3361,7 +3357,7 @@ _source_mod_cb(Eina_Module *m, void *data) { const char *file; - Elm_Map_Smart_Data *sd = data; + Elm_Map_Data *sd = data; Elm_Map_Module_Source_Name_Func name_cb; Elm_Map_Module_Tile_Url_Func tile_url_cb; @@ -3441,7 +3437,7 @@ _source_mod_cb(Eina_Module *m, } static void -_source_all_unload(Elm_Map_Smart_Data *sd) +_source_all_unload(Elm_Map_Data *sd) { int idx = 0; Source_Tile *s; @@ -3461,7 +3457,7 @@ _source_all_unload(Elm_Map_Smart_Data *sd) } static void -_source_all_load(Elm_Map_Smart_Data *sd) +_source_all_load(Elm_Map_Data *sd) { Source_Tile *src_tile; Source_Route *src_route; @@ -3539,7 +3535,7 @@ _source_all_load(Elm_Map_Smart_Data *sd) } static void -_zoom_mode_set(Elm_Map_Smart_Data *sd, double zoom) +_zoom_mode_set(Elm_Map_Data *sd, double zoom) { EINA_SAFETY_ON_NULL_RETURN(sd); @@ -3609,7 +3605,7 @@ _zoom_mode_set(Elm_Map_Smart_Data *sd, double zoom) } static void -_region_show_bring_in(Elm_Map_Smart_Data *wsd, double lon, double lat, Eina_Bool bring_in) +_region_show_bring_in(Elm_Map_Data *wsd, double lon, double lat, Eina_Bool bring_in) { int x, y, w, h; @@ -3626,7 +3622,7 @@ _region_show_bring_in(Elm_Map_Smart_Data *wsd, double lon, double lat, Eina_Bool } static void -_overlays_show(Elm_Map_Smart_Data *sd, Eina_List *overlays) +_overlays_show(Elm_Map_Data *sd, Eina_List *overlays) { double max_lon, min_lon, max_lat, min_lat, lon, lat; int zoom, zoom_max; @@ -3662,13 +3658,9 @@ _overlays_show(Elm_Map_Smart_Data *sd, Eina_List *overlays) _region_show_bring_in(sd, lon, lat, EINA_FALSE); } -static void -_elm_map_pan_smart_pos_set(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_pan_elm_pan_pos_set(Eo *obj, Elm_Map_Pan_Data *psd, Evas_Coord x, Evas_Coord y) { - Evas_Coord x = va_arg(*list, Evas_Coord); - Evas_Coord y = va_arg(*list, Evas_Coord); - Elm_Map_Pan_Smart_Data *psd = _pd; - if ((x == psd->wsd->pan_x) && (y == psd->wsd->pan_y)) return; psd->wsd->pan_x = x; @@ -3677,25 +3669,17 @@ _elm_map_pan_smart_pos_set(Eo *obj, void *_pd, va_list *list) evas_object_smart_changed(obj); } -static void -_elm_map_pan_smart_pos_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_pan_elm_pan_pos_get(Eo *obj EINA_UNUSED, Elm_Map_Pan_Data *psd, Evas_Coord *x, Evas_Coord *y) { - Evas_Coord *x = va_arg(*list, Evas_Coord *); - Evas_Coord *y = va_arg(*list, Evas_Coord *); - Elm_Map_Pan_Smart_Data *psd = _pd; - if (x) *x = psd->wsd->pan_x; if (y) *y = psd->wsd->pan_y; } -static void -_elm_map_pan_smart_pos_max_get(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_pan_elm_pan_pos_max_get(Eo *obj, Elm_Map_Pan_Data *psd, Evas_Coord *x, Evas_Coord *y) { Evas_Coord ow, oh; - Evas_Coord *x = va_arg(*list, Evas_Coord *); - Evas_Coord *y = va_arg(*list, Evas_Coord *); - - Elm_Map_Pan_Smart_Data *psd = _pd; evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); ow = psd->wsd->size.w - ow; @@ -3707,46 +3691,33 @@ _elm_map_pan_smart_pos_max_get(Eo *obj, void *_pd, va_list *list) if (y) *y = oh; } -static void -_elm_map_pan_smart_pos_min_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static void +_elm_map_pan_elm_pan_pos_min_get(Eo *obj EINA_UNUSED, Elm_Map_Pan_Data *_pd 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 (x) *x = 0; if (y) *y = 0; } -static void -_elm_map_pan_smart_content_size_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_pan_elm_pan_content_size_get(Eo *obj EINA_UNUSED, Elm_Map_Pan_Data *psd, Evas_Coord *w, Evas_Coord *h) { - Evas_Coord *w = va_arg(*list, Evas_Coord *); - Evas_Coord *h = va_arg(*list, Evas_Coord *); - Elm_Map_Pan_Smart_Data *psd = _pd; - if (w) *w = psd->wsd->size.w; if (h) *h = psd->wsd->size.h; } -static void -_elm_map_pan_smart_resize(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_pan_evas_smart_resize(Eo *obj, Elm_Map_Pan_Data *psd, Evas_Coord _gen_param2 EINA_UNUSED, Evas_Coord _gen_param3 EINA_UNUSED) { - va_arg(*list, Evas_Coord); - va_arg(*list, Evas_Coord); - - Elm_Map_Pan_Smart_Data *psd = _pd; - _sizing_eval(psd->wsd->obj); elm_map_zoom_mode_set(psd->wobj, psd->wsd->mode); evas_object_smart_changed(obj); } -static void -_elm_map_pan_smart_calculate(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_map_pan_evas_smart_calculate(Eo *obj, Elm_Map_Pan_Data *psd) { Evas_Coord w, h; - Elm_Map_Pan_Smart_Data *psd = _pd; - evas_object_geometry_get(obj, NULL, NULL, &w, &h); if (w <= 0 || h <= 0) return; @@ -3756,24 +3727,20 @@ _elm_map_pan_smart_calculate(Eo *obj, void *_pd, va_list *list EINA_UNUSED) _calc_job(psd->wsd); } -static void -_elm_map_pan_smart_move(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static void +_elm_map_pan_evas_smart_move(Eo *obj, Elm_Map_Pan_Data *_pd EINA_UNUSED, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED) { - va_arg(*list, Evas_Coord); - va_arg(*list, Evas_Coord); evas_object_smart_changed(obj); } -static void -_elm_map_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elm_map_elm_widget_on_focus(Eo *obj, Elm_Map_Data *_pd EINA_UNUSED) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - if (ret) *ret = EINA_FALSE; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); Eina_Bool int_ret = EINA_FALSE; eo_do_super(obj, MY_CLASS, elm_obj_widget_on_focus(&int_ret)); - if (!int_ret) return; + if (!int_ret) return EINA_FALSE; if (elm_widget_focus_get(obj)) { @@ -3788,13 +3755,12 @@ _elm_map_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list) evas_object_focus_set(wd->resize_obj, EINA_FALSE); } - if (ret) *ret = EINA_TRUE; + return EINA_TRUE; } -static void -_elm_map_pan_destructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_map_pan_eo_base_destructor(Eo *obj, Elm_Map_Pan_Data *psd) { - Elm_Map_Pan_Smart_Data *psd = _pd; eo_data_unref(psd->wobj, psd->wsd); eo_do_super(obj, MY_PAN_CLASS, eo_destructor()); } @@ -3802,71 +3768,36 @@ _elm_map_pan_destructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED) static void _elm_map_pan_class_constructor(Eo_Class *klass) { - const Eo_Op_Func_Description func_desc[] = { - EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _elm_map_pan_destructor), - - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _elm_map_pan_smart_resize), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), _elm_map_pan_smart_move), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALCULATE), _elm_map_pan_smart_calculate), - EO_OP_FUNC(ELM_OBJ_PAN_ID(ELM_OBJ_PAN_SUB_ID_POS_SET), _elm_map_pan_smart_pos_set), - EO_OP_FUNC(ELM_OBJ_PAN_ID(ELM_OBJ_PAN_SUB_ID_POS_GET), _elm_map_pan_smart_pos_get), - EO_OP_FUNC(ELM_OBJ_PAN_ID(ELM_OBJ_PAN_SUB_ID_POS_MAX_GET), _elm_map_pan_smart_pos_max_get), - EO_OP_FUNC(ELM_OBJ_PAN_ID(ELM_OBJ_PAN_SUB_ID_POS_MIN_GET), _elm_map_pan_smart_pos_min_get), - EO_OP_FUNC(ELM_OBJ_PAN_ID(ELM_OBJ_PAN_SUB_ID_CONTENT_SIZE_GET), _elm_map_pan_smart_content_size_get), - EO_OP_FUNC_SENTINEL - }; - eo_class_funcs_set(klass, func_desc); - - evas_smart_legacy_type_register(MY_PAN_CLASS_NAME_LEGACY, klass); + evas_smart_legacy_type_register(MY_PAN_CLASS_NAME_LEGACY, klass); } -static const Eo_Class_Description _elm_map_pan_class_desc = { - EO_VERSION, - MY_PAN_CLASS_NAME, - EO_CLASS_TYPE_REGULAR, - EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0), - NULL, - sizeof(Elm_Map_Pan_Smart_Data), - _elm_map_pan_class_constructor, - NULL -}; +#include "elm_map_pan.eo.c" -EO_DEFINE_CLASS(elm_obj_map_pan_class_get, &_elm_map_pan_class_desc, ELM_OBJ_PAN_CLASS, NULL); - -static void -_elm_map_smart_theme(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static Eina_Bool +_elm_map_elm_widget_theme_apply(Eo *obj, Elm_Map_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 -_elm_map_smart_event(Eo *obj, void *_pd, va_list *list) +EOLIAN static Eina_Bool +_elm_map_elm_widget_event(Eo *obj, Elm_Map_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info) { - Evas_Object *src = va_arg(*list, Evas_Object *); - Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type); - Evas_Event_Key_Down *ev = va_arg(*list, void *); - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Map_Smart_Data *sd = _pd; - - if (ret) *ret = EINA_FALSE; (void) src; + Evas_Event_Key_Down *ev = event_info; Evas_Coord vh; Evas_Coord x, y; Evas_Coord step_x, step_y, page_x, page_y; - if (elm_widget_disabled_get(obj)) return; - if (type != EVAS_CALLBACK_KEY_DOWN) return; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + if (elm_widget_disabled_get(obj)) return EINA_FALSE; + if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE; eo_do(obj, elm_interface_scrollable_content_pos_get(&x, &y), @@ -3913,32 +3844,28 @@ _elm_map_smart_event(Eo *obj, void *_pd, va_list *list) else if (!strcmp(ev->key, "KP_Add")) { _zoom_with_animation(sd, sd->zoom + 1, 10); - if (ret) *ret = EINA_TRUE; - return; + return EINA_TRUE; } else if (!strcmp(ev->key, "KP_Subtract")) { _zoom_with_animation(sd, sd->zoom - 1, 10); - if (ret) *ret = EINA_TRUE; - return; + return EINA_TRUE; } - else return; + else return EINA_FALSE; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; eo_do(obj, elm_interface_scrollable_content_pos_set(x, y, EINA_TRUE)); - if (ret) *ret = EINA_TRUE; + return EINA_TRUE; } -static void -_elm_map_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_map_evas_smart_add(Eo *obj, Elm_Map_Data *priv) { Evas_Coord minw, minh; - Elm_Map_Pan_Smart_Data *pan_data; + Elm_Map_Pan_Data *pan_data; Evas_Object *edje; - Elm_Map_Smart_Data *priv = _pd; - elm_widget_sub_object_parent_add(obj); edje = edje_object_add(evas_object_evas_get(obj)); @@ -4041,8 +3968,8 @@ _elm_map_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) ERR("Ecore must be built with curl support for the map widget!"); } -static void -_elm_map_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_map_evas_smart_del(Eo *obj, Elm_Map_Data *sd) { Elm_Map_Route *r; Elm_Map_Name *na; @@ -4050,8 +3977,6 @@ _elm_map_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) Evas_Object *track; Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - EINA_LIST_FOREACH_SAFE(sd->routes, l, ll, r) elm_map_route_del(r); @@ -4104,36 +4029,25 @@ _elm_map_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) eo_do_super(obj, MY_CLASS, evas_obj_smart_del()); } -static void -_elm_map_smart_move(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_evas_smart_move(Eo *obj, Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y) { - Evas_Coord x = va_arg(*list, Evas_Coord); - Evas_Coord y = va_arg(*list, Evas_Coord); - Elm_Map_Smart_Data *sd = _pd; - eo_do_super(obj, MY_CLASS, evas_obj_smart_move(x, y)); evas_object_move(sd->hit_rect, x, y); } -static void -_elm_map_smart_resize(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_evas_smart_resize(Eo *obj, Elm_Map_Data *sd, Evas_Coord w, Evas_Coord h) { - Evas_Coord w = va_arg(*list, Evas_Coord); - Evas_Coord h = va_arg(*list, Evas_Coord); - Elm_Map_Smart_Data *sd = _pd; - eo_do_super(obj, MY_CLASS, evas_obj_smart_resize(w, h)); evas_object_resize(sd->hit_rect, w, h); } -static void -_elm_map_smart_member_add(Eo *obj, void *_pd, va_list *list) +EOLIAN static void +_elm_map_evas_smart_member_add(Eo *obj, Elm_Map_Data *sd, Evas_Object *member) { - Evas_Object *member = va_arg(*list, Evas_Object *); - Elm_Map_Smart_Data *sd = _pd; - eo_do_super(obj, MY_CLASS, evas_obj_smart_member_add(member)); if (sd->hit_rect) @@ -4149,10 +4063,9 @@ elm_map_add(Evas_Object *parent) return obj; } -static void -_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_map_eo_base_constructor(Eo *obj, Elm_Map_Data *sd) { - Elm_Map_Smart_Data *sd = _pd; sd->obj = obj; eo_do_super(obj, MY_CLASS, eo_constructor()); @@ -4161,20 +4074,10 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL)); } -EAPI void -elm_map_zoom_set(Evas_Object *obj, - int zoom) +EOLIAN static void +_elm_map_zoom_set(Eo *obj, Elm_Map_Data *sd, int zoom) { - eo_do(obj, elm_obj_map_zoom_set(zoom)); -} - -static void -_zoom_set(Eo *obj, void *_pd, va_list *list) -{ - int zoom = va_arg(*list, int); - ELM_MAP_CHECK(obj); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); if (sd->mode != ELM_MAP_ZOOM_MODE_MANUAL) return; @@ -4187,38 +4090,15 @@ _zoom_set(Eo *obj, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); } -EAPI int -elm_map_zoom_get(const Evas_Object *obj) +EOLIAN static int +_elm_map_zoom_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) 0; - int ret = 0; - eo_do((Eo *) obj, elm_obj_map_zoom_get(&ret)); - return ret; + return sd->zoom; } -static void -_zoom_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_zoom_mode_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Zoom_Mode mode) { - int *ret = va_arg(*list, int *); - Elm_Map_Smart_Data *sd = _pd; - - *ret = sd->zoom; -} - -EAPI void -elm_map_zoom_mode_set(Evas_Object *obj, - Elm_Map_Zoom_Mode mode) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_zoom_mode_set(mode)); -} - -static void -_zoom_mode_set_eo(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Zoom_Mode mode = va_arg(*list, Elm_Map_Zoom_Mode); - Elm_Map_Smart_Data *sd = _pd; - if ((mode == ELM_MAP_ZOOM_MODE_MANUAL) && (sd->mode == !!mode)) return; sd->mode = mode; @@ -4228,116 +4108,47 @@ _zoom_mode_set_eo(Eo *obj EINA_UNUSED, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); } -EAPI Elm_Map_Zoom_Mode -elm_map_zoom_mode_get(const Evas_Object *obj) +EOLIAN static Elm_Map_Zoom_Mode +_elm_map_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) ELM_MAP_ZOOM_MODE_MANUAL; - Elm_Map_Zoom_Mode ret = ELM_MAP_ZOOM_MODE_MANUAL; - eo_do((Eo *) obj, elm_obj_map_zoom_mode_get(&ret)); - return ret; + return sd->mode; } -static void -_zoom_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_zoom_max_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, int zoom) { - Elm_Map_Zoom_Mode *ret = va_arg(*list, Elm_Map_Zoom_Mode *); - Elm_Map_Smart_Data *sd = _pd; - - *ret = sd->mode; -} - -EAPI void -elm_map_zoom_max_set(Evas_Object *obj, - int zoom) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_zoom_max_set(zoom)); -} - -static void -_zoom_max_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - int zoom = va_arg(*list, int); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); sd->zoom_max = zoom; } -EAPI int -elm_map_zoom_max_get(const Evas_Object *obj) +EOLIAN static int +_elm_map_zoom_max_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) - 1; - int ret = - 1; - eo_do((Eo *) obj, elm_obj_map_zoom_max_get(&ret)); - return ret; + EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_tile, -1); + + return sd->zoom_max; } -static void -_zoom_max_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_zoom_min_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, int zoom) { - int *ret = va_arg(*list, int *); - *ret = -1; - Elm_Map_Smart_Data *sd = _pd; - EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); - - *ret = sd->zoom_max; -} - -EAPI void -elm_map_zoom_min_set(Evas_Object *obj, - int zoom) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_zoom_min_set(zoom)); -} - -static void -_zoom_min_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - int zoom = va_arg(*list, int); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); sd->zoom_min = zoom; } -EAPI int -elm_map_zoom_min_get(const Evas_Object *obj) +EOLIAN static int +_elm_map_zoom_min_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) - 1; - int ret = - 1; - eo_do((Eo *) obj, elm_obj_map_zoom_min_get(&ret)); - return ret; + EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_tile, -1); + + return sd->zoom_min; } -static void -_zoom_min_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_region_bring_in(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat) { - int *ret = va_arg(*list, int *); - *ret = -1; - Elm_Map_Smart_Data *sd = _pd; - EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); - - *ret = sd->zoom_min; -} - -EAPI void -elm_map_region_bring_in(Evas_Object *obj, - double lon, - double lat) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_region_bring_in(lon, lat)); -} - -static void -_region_bring_in(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - Elm_Map_Smart_Data *sd = _pd; - sd->calc_job.bring_in = EINA_TRUE; sd->calc_job.lon = lon; sd->calc_job.lat = lat; @@ -4346,22 +4157,9 @@ _region_bring_in(Eo *obj EINA_UNUSED, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); } -EAPI void -elm_map_region_show(Evas_Object *obj, - double lon, - double lat) +EOLIAN static void +_elm_map_region_show(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat) { - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_region_show(lon, lat)); -} - -static void -_region_show(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - Elm_Map_Smart_Data *sd = _pd; - sd->calc_job.bring_in = EINA_FALSE; sd->calc_job.lon = lon; sd->calc_job.lat = lat; @@ -4370,25 +4168,12 @@ _region_show(Eo *obj EINA_UNUSED, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); } -EAPI void -elm_map_region_get(const Evas_Object *obj, - double *lon, - double *lat) +EOLIAN static void +_elm_map_region_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double *lon, double *lat) { - ELM_MAP_CHECK(obj); - eo_do((Eo *) obj, elm_obj_map_region_get(lon, lat)); -} - -static void -_region_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double *lon = va_arg(*list, double *); - double *lat = va_arg(*list, double *); double tlon, tlat; Evas_Coord vx, vy, vw, vh; - Elm_Map_Smart_Data *sd = _pd; - _viewport_coord_get(sd, &vx, &vy, &vw, &vh); _coord_to_region_convert (sd, vx + vw / 2, vy + vh / 2, sd->size.w, &tlon, &tlat); @@ -4396,19 +4181,9 @@ _region_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) if (lat) *lat = tlat; } -EAPI void -elm_map_paused_set(Evas_Object *obj, - Eina_Bool paused) +EOLIAN static void +_elm_map_paused_set(Eo *obj, Elm_Map_Data *sd, Eina_Bool paused) { - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_paused_set(paused)); -} - -static void -_paused_set(Eo *obj, void *_pd, va_list *list) -{ - Eina_Bool paused = va_arg(*list, int); - Elm_Map_Smart_Data *sd = _pd; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); if (sd->paused == !!paused) return; @@ -4432,42 +4207,15 @@ _paused_set(Eo *obj, void *_pd, va_list *list) } } -EAPI Eina_Bool -elm_map_paused_get(const Evas_Object *obj) +EOLIAN static Eina_Bool +_elm_map_paused_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - eo_do((Eo *) obj, elm_obj_map_paused_get(&ret)); - return ret; + return sd->paused; } -static void -_paused_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_rotate_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double degree, Evas_Coord cx, Evas_Coord cy) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Map_Smart_Data *sd = _pd; - - *ret = sd->paused; -} - -EAPI void -elm_map_rotate_set(Evas_Object *obj, - double degree, - Evas_Coord cx, - Evas_Coord cy) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_rotate_set(degree, cx, cy)); -} - -static void -_rotate_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double degree = va_arg(*list, double); - Evas_Coord cx = va_arg(*list, Evas_Coord); - Evas_Coord cy = va_arg(*list, Evas_Coord); - Elm_Map_Smart_Data *sd = _pd; - sd->rotate.d = degree; sd->rotate.cx = cx; sd->rotate.cy = cy; @@ -4475,43 +4223,17 @@ _rotate_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); } -EAPI void -elm_map_rotate_get(const Evas_Object *obj, - double *degree, - Evas_Coord *cx, - Evas_Coord *cy) +EOLIAN static void +_elm_map_rotate_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double *degree, Evas_Coord *cx, Evas_Coord *cy) { - ELM_MAP_CHECK(obj); - eo_do((Eo *) obj, elm_obj_map_rotate_get(degree, cx, cy)); -} - -static void -_rotate_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double *degree = va_arg(*list, double *); - Evas_Coord *cx = va_arg(*list, Evas_Coord *); - Evas_Coord *cy = va_arg(*list, Evas_Coord *); - Elm_Map_Smart_Data *sd = _pd; - if (degree) *degree = sd->rotate.d; if (cx) *cx = sd->rotate.cx; if (cy) *cy = sd->rotate.cy; } -EAPI void -elm_map_wheel_disabled_set(Evas_Object *obj, - Eina_Bool disabled) +EOLIAN static void +_elm_map_wheel_disabled_set(Eo *obj, Elm_Map_Data *sd, Eina_Bool disabled) { - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_wheel_disabled_set(disabled)); -} - -static void -_wheel_disabled_set(Eo *obj, void *_pd, va_list *list) -{ - Eina_Bool disabled = va_arg(*list, int); - Elm_Map_Smart_Data *sd = _pd; - if ((!sd->wheel_disabled) && (disabled)) evas_object_event_callback_del_full (obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj); @@ -4521,63 +4243,22 @@ _wheel_disabled_set(Eo *obj, void *_pd, va_list *list) sd->wheel_disabled = !!disabled; } -EAPI Eina_Bool -elm_map_wheel_disabled_get(const Evas_Object *obj) +EOLIAN static Eina_Bool +_elm_map_wheel_disabled_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - eo_do((Eo *) obj, elm_obj_map_wheel_disabled_get(&ret)); - return ret; + return sd->wheel_disabled; } -static void -_wheel_disabled_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_tile_load_status_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, int *try_num, int *finish_num) { - Eina_Bool *ret = va_arg(*list, Eina_Bool *); - Elm_Map_Smart_Data *sd = _pd; - - *ret = sd->wheel_disabled; -} - -EAPI void -elm_map_tile_load_status_get(const Evas_Object *obj, - int *try_num, - int *finish_num) -{ - ELM_MAP_CHECK(obj); - eo_do((Eo *) obj, elm_obj_map_tile_load_status_get(try_num, finish_num)); -} - -static void -_tile_load_status_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - int *try_num = va_arg(*list, int *); - int *finish_num = va_arg(*list, int *); - Elm_Map_Smart_Data *sd = _pd; - if (try_num) *try_num = sd->try_num; if (finish_num) *finish_num = sd->finish_num; } -EAPI void -elm_map_canvas_to_region_convert(const Evas_Object *obj, - Evas_Coord x, - Evas_Coord y, - double *lon, - double *lat) +EOLIAN static void +_elm_map_canvas_to_region_convert(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y, double *lon, double *lat) { - ELM_MAP_CHECK(obj); - eo_do((Eo *) obj, elm_obj_map_canvas_to_region_convert(x, y, lon, lat)); -} - -static void -_canvas_to_region_convert(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Evas_Coord x = va_arg(*list, Evas_Coord); - Evas_Coord y = va_arg(*list, Evas_Coord); - double *lon = va_arg(*list, double *); - double *lat = va_arg(*list, double *); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(lon); EINA_SAFETY_ON_NULL_RETURN(lat); @@ -4585,25 +4266,9 @@ _canvas_to_region_convert(Eo *obj EINA_UNUSED, void *_pd, va_list *list) _coord_to_region_convert(sd, x, y, sd->size.w, lon, lat); } -EAPI void -elm_map_region_to_canvas_convert(const Evas_Object *obj, - double lon, - double lat, - Evas_Coord *x, - Evas_Coord *y) +EOLIAN static void +_elm_map_region_to_canvas_convert(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat, Evas_Coord *x, Evas_Coord *y) { - ELM_MAP_CHECK(obj); - eo_do((Eo *) obj, elm_obj_map_region_to_canvas_convert(lon, lat, x, y)); -} - -static void -_region_to_canvas_convert(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - Evas_Coord *x = va_arg(*list, Evas_Coord *); - Evas_Coord *y = va_arg(*list, Evas_Coord *); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(x); EINA_SAFETY_ON_NULL_RETURN(y); @@ -4611,19 +4276,9 @@ _region_to_canvas_convert(Eo *obj EINA_UNUSED, void *_pd, va_list *list) _coord_to_canvas(sd, *x, *y, x, y); } -EAPI void -elm_map_user_agent_set(Evas_Object *obj, - const char *user_agent) +EOLIAN static void +_elm_map_user_agent_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, const char *user_agent) { - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_user_agent_set(user_agent)); -} - -static void -_user_agent_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - const char *user_agent = va_arg(*list, const char *); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(user_agent); eina_stringshare_replace(&sd->user_agent, user_agent); @@ -4632,39 +4287,15 @@ _user_agent_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) eina_hash_set(sd->ua, "User-Agent", sd->user_agent); } -EAPI const char * -elm_map_user_agent_get(const Evas_Object *obj) +EOLIAN static const char* +_elm_map_user_agent_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) NULL; - const char *ret = NULL; - eo_do((Eo *) obj, elm_obj_map_user_agent_get(&ret)); - return ret; + return sd->user_agent; } -static void -_user_agent_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_source_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Source_Type type, const char *source_name) { - const char **ret = va_arg(*list, const char **); - Elm_Map_Smart_Data *sd = _pd; - - *ret = sd->user_agent; -} - -EAPI void -elm_map_source_set(Evas_Object *obj, - Elm_Map_Source_Type type, - const char *source_name) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_source_set(type, source_name)); -} - -static void -_source_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Source_Type type = va_arg(*list, Elm_Map_Source_Type); - const char *source_name = va_arg(*list, const char *); - Elm_Map_Smart_Data *sd = _pd; EINA_SAFETY_ON_NULL_RETURN(source_name); if (type == ELM_MAP_SOURCE_TYPE_TILE) _source_tile_set(sd, source_name); @@ -4676,99 +4307,49 @@ _source_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) } -EAPI const char * -elm_map_source_get(const Evas_Object *obj, - Elm_Map_Source_Type type) +EOLIAN static const char* +_elm_map_source_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Source_Type type) { - ELM_MAP_CHECK(obj) NULL; - const char *ret = NULL; - eo_do((Eo *) obj, elm_obj_map_source_get(type, &ret)); - return ret; -} + EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_tile, NULL); -static void -_source_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Source_Type type = va_arg(*list, Elm_Map_Source_Type); - const char **ret = va_arg(*list, const char **); - *ret = NULL; - Elm_Map_Smart_Data *sd = _pd; - - EINA_SAFETY_ON_NULL_RETURN(sd->src_tile); - - if (type == ELM_MAP_SOURCE_TYPE_TILE) *ret = sd->src_tile->name; + if (type == ELM_MAP_SOURCE_TYPE_TILE) return sd->src_tile->name; else if (type == ELM_MAP_SOURCE_TYPE_ROUTE) - *ret = sd->src_route->name; + return sd->src_route->name; else if (type == ELM_MAP_SOURCE_TYPE_NAME) - *ret = sd->src_name->name; + return sd->src_name->name; else ERR("Not supported map source type: %d", type); + return NULL; } -EAPI const char ** -elm_map_sources_get(const Evas_Object *obj, - Elm_Map_Source_Type type) +EOLIAN static const char** +_elm_map_sources_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Source_Type type) { - ELM_MAP_CHECK(obj) NULL; - const char **ret = NULL; - eo_do((Eo *) obj, elm_obj_map_sources_get(type, &ret)); - return ret; -} + const char **ret; + ret = NULL; -static void -_sources_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Source_Type type = va_arg(*list, Elm_Map_Source_Type); - const char ***ret = va_arg(*list, const char ***); - *ret = NULL; - Elm_Map_Smart_Data *sd = _pd; - - if (type == ELM_MAP_SOURCE_TYPE_TILE) *ret = sd->src_tile_names; + if (type == ELM_MAP_SOURCE_TYPE_TILE) ret = sd->src_tile_names; else if (type == ELM_MAP_SOURCE_TYPE_ROUTE) - *ret = sd->src_route_names; + ret = sd->src_route_names; else if (type == ELM_MAP_SOURCE_TYPE_NAME) - *ret = sd->src_name_names; + ret = sd->src_name_names; else ERR("Not supported map source type: %d", type); -} -EAPI Elm_Map_Route * -elm_map_route_add(Evas_Object *obj, - Elm_Map_Route_Type type, - Elm_Map_Route_Method method, - double flon, - double flat, - double tlon, - double tlat, - Elm_Map_Route_Cb route_cb, - void *data) -{ - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Route *ret = NULL; - eo_do(obj, elm_obj_map_route_add(type, method, flon, flat, tlon, tlat, route_cb, data, &ret)); return ret; } -static void -_route_add(Eo *obj, void *_pd, va_list *list) +EOLIAN static Elm_Map_Route* +_elm_map_route_add(Eo *obj, Elm_Map_Data *sd, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat, Elm_Map_Route_Cb route_cb, void *data) { - Elm_Map_Route_Type type = va_arg(*list, Elm_Map_Route_Type); - Elm_Map_Route_Method method = va_arg(*list, Elm_Map_Route_Method); - double flon = va_arg(*list, double); - double flat = va_arg(*list, double); - double tlon = va_arg(*list, double); - double tlat = va_arg(*list, double); - Elm_Map_Route_Cb route_cb = va_arg(*list, Elm_Map_Route_Cb); - void *data = va_arg(*list, void *); - Elm_Map_Route **ret = va_arg(*list, Elm_Map_Route **); - *ret = NULL; + Elm_Map_Route *ret; + ret = NULL; char *url; char *type_name; Elm_Map_Route *route; char fname[PATH_MAX], fname2[PATH_MAX]; - Elm_Map_Smart_Data *sd = _pd; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); - EINA_SAFETY_ON_NULL_RETURN(sd->src_route); + EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_route, NULL); { snprintf(fname, sizeof(fname), "%s" CACHE_ROUTE_ROOT, @@ -4789,7 +4370,7 @@ _route_add(Eo *obj, void *_pd, va_list *list) { ERR("Route URL is NULL"); free(type_name); - return; + return ret; } free(type_name); @@ -4812,7 +4393,7 @@ _route_add(Eo *obj, void *_pd, va_list *list) ERR("Can't request Route from %s to %s", url, route->fname); free(route->fname); free(route); - return; + return ret; } INF("Route requested from %s to %s", url, route->fname); free(url); @@ -4822,7 +4403,9 @@ _route_add(Eo *obj, void *_pd, va_list *list) (sd->obj, SIG_ROUTE_LOAD, route); edje_object_signal_emit(wd->resize_obj, "elm,state,busy,start", "elm"); - *ret = route; + ret = route; + + return ret; } EAPI void @@ -4880,34 +4463,14 @@ elm_map_route_waypoint_get(const Elm_Map_Route *route) return route->info.waypoints; } -EAPI Elm_Map_Name * -elm_map_name_add(const Evas_Object *obj, - const char *address, - double lon, - double lat, - Elm_Map_Name_Cb name_cb, - void *data) +EOLIAN static Elm_Map_Name* +_elm_map_name_add(Eo *obj, Elm_Map_Data *_pd EINA_UNUSED, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Name *ret = NULL; - eo_do((Eo *) obj, elm_obj_map_name_add(address, lon, lat, name_cb, data, &ret)); - return ret; -} - -static void -_name_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list) -{ - const char *address = va_arg(*list, const char *); - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - Elm_Map_Name_Cb name_cb = va_arg(*list, Elm_Map_Name_Cb); - void *data = va_arg(*list, void *); - Elm_Map_Name **ret = va_arg(*list, Elm_Map_Name **); if (address) - *ret = _name_request(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0, 0, + return _name_request(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0, 0, name_cb, data); else - *ret = _name_request(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat, + return _name_request(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat, name_cb, data); } @@ -4965,27 +4528,11 @@ elm_map_name_region_get(const Elm_Map_Name *name, if (lat) *lat = name->lat; } -EAPI Elm_Map_Overlay * -elm_map_overlay_add(Evas_Object *obj, - double lon, - double lat) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_add(lon, lat, &ret)); - return ret; -} - -static void -_overlay_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_DEFAULT; @@ -4999,27 +4546,15 @@ _overlay_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } -EAPI Eina_List * -elm_map_overlays_get(Evas_Object *obj) +EOLIAN static Eina_List * +_elm_map_overlays_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) NULL; - Eina_List *ret = NULL; - eo_do(obj, elm_obj_map_overlays_get(&ret)); - return ret; -} - -static void -_overlays_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Eina_List **ret = va_arg(*list, Eina_List **); Eina_List *l; Elm_Map_Overlay *ovl; - Elm_Map_Smart_Data *sd = _pd; - sd->all_overlays = eina_list_free(sd->all_overlays); EINA_LIST_FOREACH(sd->overlays, l, ovl) @@ -5027,7 +4562,7 @@ _overlays_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) EINA_LIST_FOREACH(sd->group_overlays, l, ovl) sd->all_overlays = eina_list_append(sd->all_overlays, ovl); - *ret = sd->all_overlays; + return sd->all_overlays; } EAPI void @@ -5464,23 +4999,11 @@ elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, overlay->del_cb_data = data; } -EAPI Elm_Map_Overlay * -elm_map_overlay_class_add(Evas_Object *obj) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_class_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_class_add(&ret)); - return ret; -} - -static void -_overlay_class_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_CLASS; @@ -5492,7 +5015,7 @@ _overlay_class_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } EAPI void @@ -5608,23 +5131,11 @@ elm_map_overlay_group_members_get(const Elm_Map_Overlay *grp) return ovl->members; } -EAPI Elm_Map_Overlay * -elm_map_overlay_bubble_add(Evas_Object *obj) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_bubble_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_bubble_add(&ret)); - return ret; -} - -static void -_overlay_bubble_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_BUBBLE; @@ -5637,7 +5148,7 @@ _overlay_bubble_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } EAPI void @@ -5692,30 +5203,15 @@ elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble) evas_object_smart_changed(bubble->wsd->pan_obj); } -EAPI Elm_Map_Overlay * -elm_map_overlay_route_add(Evas_Object *obj, - const Elm_Map_Route *route) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_route_add(Eo *obj, Elm_Map_Data *sd, const Elm_Map_Route *route) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_route_add(route, &ret)); - return ret; -} - -static void -_overlay_route_add(Eo *obj, void *_pd, va_list *list) -{ - const Elm_Map_Route *route = va_arg(*list, const Elm_Map_Route *); - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); - *ret = NULL; Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - - EINA_SAFETY_ON_NULL_RETURN(route); - EINA_SAFETY_ON_NULL_RETURN(route->wsd); - EINA_SAFETY_ON_FALSE_RETURN - (obj == (route->wsd)->obj); + EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL); + EINA_SAFETY_ON_NULL_RETURN_VAL(route->wsd, NULL); + EINA_SAFETY_ON_FALSE_RETURN_VAL + (obj == (route->wsd)->obj, NULL); overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; @@ -5729,34 +5225,14 @@ _overlay_route_add(Eo *obj, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } -EAPI Elm_Map_Overlay * -elm_map_overlay_line_add(Evas_Object *obj, - double flon, - double flat, - double tlon, - double tlat) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_line_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double flon, double flat, double tlon, double tlat) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_line_add(flon, flat, tlon, tlat, &ret)); - return ret; -} - -static void -_overlay_line_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double flon = va_arg(*list, double); - double flat = va_arg(*list, double); - double tlon = va_arg(*list, double); - double tlat = va_arg(*list, double); - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_LINE; @@ -5769,26 +5245,14 @@ _overlay_line_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } -EAPI Elm_Map_Overlay * -elm_map_overlay_polygon_add(Evas_Object *obj) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_polygon_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_polygon_add(&ret)); - return ret; -} - -static void -_overlay_polygon_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_POLYGON; @@ -5800,7 +5264,7 @@ _overlay_polygon_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) overlay->grp = _overlay_group_new(sd); sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } EAPI void @@ -5824,29 +5288,11 @@ elm_map_overlay_polygon_region_add(Elm_Map_Overlay *overlay, evas_object_smart_changed(ovl->wsd->pan_obj); } -EAPI Elm_Map_Overlay * -elm_map_overlay_circle_add(Evas_Object *obj, - double lon, - double lat, - double radius) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_circle_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat, double radius) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_circle_add(lon, lat, radius, &ret)); - return ret; -} - -static void -_overlay_circle_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - double lon = va_arg(*list, double); - double lat = va_arg(*list, double); - double radius = va_arg(*list, double); - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_CIRCLE; @@ -5859,30 +5305,14 @@ _overlay_circle_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } -EAPI Elm_Map_Overlay * -elm_map_overlay_scale_add(Evas_Object *obj, - Evas_Coord x, - Evas_Coord y) +EOLIAN static Elm_Map_Overlay* +_elm_map_overlay_scale_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Evas_Coord x, Evas_Coord y) { - ELM_MAP_CHECK(obj) NULL; - Elm_Map_Overlay *ret = NULL; - eo_do(obj, elm_obj_map_overlay_scale_add(x, y, &ret)); - return ret; -} - -static void -_overlay_scale_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) -{ - Evas_Coord x = va_arg(*list, Evas_Coord); - Evas_Coord y = va_arg(*list, Evas_Coord); - Elm_Map_Overlay **ret = va_arg(*list, Elm_Map_Overlay **); Elm_Map_Overlay *overlay; - Elm_Map_Smart_Data *sd = _pd; - overlay = ELM_NEW(Elm_Map_Overlay); overlay->wsd = sd; overlay->type = ELM_MAP_OVERLAY_TYPE_SCALE; @@ -5895,195 +5325,46 @@ _overlay_scale_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sd->overlays = eina_list_append(sd->overlays, overlay); evas_object_smart_changed(sd->pan_obj); - *ret = overlay; + return overlay; } -#ifdef ELM_EMAP -EAPI Evas_Object * -elm_map_track_add(Evas_Object *obj, - void *emap) +EOLIAN static Evas_Object* +_elm_map_track_add(Eo *obj, Elm_Map_Data *sd, void *emap) { - ELM_MAP_CHECK(obj) NULL; - Evas_Object *ret = NULL; - eo_do(obj, elm_obj_map_track_add(emap, &ret)); - return ret; -} - -EAPI void -elm_map_track_remove(Evas_Object *obj, - Evas_Object *route) -{ - ELM_MAP_CHECK(obj); - eo_do(obj, elm_obj_map_track_remove(route)); -} - -#else -EAPI Evas_Object * -elm_map_track_add(Evas_Object *obj EINA_UNUSED, - void *emap EINA_UNUSED) -{ - return NULL; -} - -EAPI void -elm_map_track_remove(Evas_Object *obj EINA_UNUSED, - Evas_Object *route EINA_UNUSED) -{ -} -#endif - -static void -_track_add(Eo *obj, void *_pd, va_list *list) -{ - void *emap = va_arg(*list, void *); - Evas_Object **ret = va_arg(*list, Evas_Object **); - *ret = NULL; #ifdef ELM_EMAP EMap_Route *emapr = emap; Evas_Object *route; - Elm_Map_Smart_Data *sd = _pd; - route = elm_route_add(obj); elm_route_emap_set(route, emapr); sd->track = eina_list_append(sd->track, route); - *ret = route; + return route; #else (void)obj; - (void)_pd; + (void)sd; (void)emap; + return NULL; #endif } -static void -_track_remove(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static void +_elm_map_track_remove(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Evas_Object *route) { - Evas_Object *route = va_arg(*list, Evas_Object *); #ifdef ELM_EMAP - Elm_Map_Smart_Data *sd = _pd; - sd->track = eina_list_remove(sd->track, route); evas_object_del(route); #else (void)obj; - (void)_pd; + (void)sd; (void)route; #endif } static void -_class_constructor(Eo_Class *klass) +_elm_map_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_MEMBER_ADD), _elm_map_smart_member_add), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_map_smart_add), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_map_smart_del), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _elm_map_smart_resize), - EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), _elm_map_smart_move), - - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ON_FOCUS), _elm_map_smart_on_focus), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_map_smart_theme), - EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_map_smart_event), - - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_SET), _zoom_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_GET), _zoom_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET), _zoom_mode_set_eo), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET), _zoom_mode_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET), _zoom_max_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET), _zoom_max_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET), _zoom_min_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET), _zoom_min_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN), _region_bring_in), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_SHOW), _region_show), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_GET), _region_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_SET), _paused_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_GET), _paused_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_SET), _rotate_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_GET), _rotate_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET), _wheel_disabled_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET), _wheel_disabled_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET), _tile_load_status_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT), _canvas_to_region_convert), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT), _region_to_canvas_convert), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET), _user_agent_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET), _user_agent_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_SET), _source_set), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_GET), _source_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCES_GET), _sources_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROUTE_ADD), _route_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_NAME_ADD), _name_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD), _overlay_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET), _overlays_get), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD), _overlay_class_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD), _overlay_bubble_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD), _overlay_route_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD), _overlay_line_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD), _overlay_polygon_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD), _overlay_circle_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD), _overlay_scale_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_ADD), _track_add), - EO_OP_FUNC(ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE), _track_remove), - 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_MAP_SUB_ID_ZOOM_SET, "Set the zoom level of the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_GET, "Get the zoom level of the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET, "Set the zoom mode used by the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET, "Get the zoom mode used by the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET, "Set the maximum zoom of the source."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET, "Get the maximum zoom of the source."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET, "Set the minimum zoom of the source."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET, "Get the minimum zoom of the source."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN, "Animatedly bring in given coordinates to the center of the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_REGION_SHOW, "Show the given coordinates at the center of the map, immediately."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_REGION_GET, "Get the current geographic coordinates of the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_PAUSED_SET, "Pause or unpause the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_PAUSED_GET, "Get a value whether map is paused or not."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ROTATE_SET, "Rotate the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ROTATE_GET, "Get the rotate degree of the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET, "Enable or disable mouse wheel to be used to zoom in / out the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET, "Get a value whether mouse wheel is enabled or not."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET, "Get the information of tile load status."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT, "Convert canvas coordinates into geographic coordinates."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT, "Convert geographic coordinates (longitude, latitude)."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET, "Set the user agent used by the map object to access routing services."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET, "Get the user agent used by the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_SOURCE_SET, "Set the current source of the map for a specific type."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_SOURCE_GET, "Get the name of currently used source for a specific type."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_SOURCES_GET, "Get the names of available sources for a specific type."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_ROUTE_ADD, "Add a new route to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_NAME_ADD, "Request a address or geographic coordinates(longitude, latitude)."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD, "Add a new overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET, "Return all overlays in the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD, "Add a new class overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD, "Add a new bubble overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD, "Add a new route overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD, "Add a new line overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD, "Add a new polygon overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD, "Add a new circle overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD, "Add a new scale overlay to the map object."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_TRACK_ADD, "Add a track on the map."), - EO_OP_DESCRIPTION(ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE, "Remove a track from the map."), - 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_MAP_BASE_ID, op_desc, ELM_OBJ_MAP_SUB_ID_LAST), - NULL, - sizeof(Elm_Map_Smart_Data), - _class_constructor, - NULL -}; - -EO_DEFINE_CLASS(elm_obj_map_class_get, &class_desc, ELM_OBJ_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_CLASS, NULL); +#include "elm_map.eo.c" diff --git a/legacy/elementary/src/lib/elm_map.eo b/legacy/elementary/src/lib/elm_map.eo new file mode 100644 index 0000000000..ca7810bcfb --- /dev/null +++ b/legacy/elementary/src/lib/elm_map.eo @@ -0,0 +1,789 @@ +class Elm_Map (Elm_Widget, Elm_Interface_Scrollable) +{ + eo_prefix: elm_obj_map; + properties { + zoom { + set { + /*@ + Set the zoom level of the map. + + This sets the zoom level. + + It will respect limits defined by elm_map_zoom_min_set() and + elm_map_zoom_max_set(). + + By default these values are 0 (world map) and 18 (maximum zoom). + + This function should be used when zoom mode is set to #ELM_MAP_ZOOM_MODE_MANUAL. + This is the default mode, and can be set with elm_map_zoom_mode_set(). + + @see elm_map_zoom_mode_set() + @see elm_map_zoom_get() + + @ingroup Map */ + } + get { + /*@ + Get the zoom level of the map. + + @return The current zoom level. + + This returns the current zoom level of the map object. + + Note that if you set the fill mode to other than #ELM_MAP_ZOOM_MODE_MANUAL + (which is the default), the zoom level may be changed at any time by the + map object itself to account for map size and map viewport size. + + @see elm_map_zoom_set() for details. + + @ingroup Map */ + } + values { + int zoom; /*@ The zoom level to set. */ + } + } + paused { + set { + /*@ + Pause or unpause the map. + + This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE) + for map. + + The default is off. + + This will stop zooming using animation, changing zoom levels will + change instantly. This will stop any existing animations that are running. + + @see elm_map_paused_get() + + @ingroup Map */ + } + get { + /*@ + Get a value whether map is paused or not. + + @return @c EINA_TRUE means map is pause. @c EINA_FALSE indicates + it is not. + + This gets the current paused state for the map object. + + @see elm_map_paused_set() for details. + + @ingroup Map */ + } + values { + Eina_Bool paused; /*@ Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE + to unpause it. */ + } + } + wheel_disabled { + set { + /*@ + Enable or disable mouse wheel to be used to zoom in / out the map. + + Mouse wheel can be used for the user to zoom in or zoom out the map. + + It's disabled by default. + + @see elm_map_wheel_disabled_get() + + @ingroup Map */ + } + get { + /*@ + Get a value whether mouse wheel is enabled or not. + + @return @c EINA_TRUE means map is disabled. @c EINA_FALSE indicates + it is enabled. + + Mouse wheel can be used for the user to zoom in or zoom out the map. + + @see elm_map_wheel_disabled_set() for details. + + @ingroup Map */ + } + values { + Eina_Bool disabled; /*@ Use @c EINA_TRUE to disable mouse wheel or @c EINA_FALSE + to enable it. */ + } + } + zoom_min { + set { + /*@ + Set the minimum zoom of the source. + + @see elm_map_zoom_min_get() for details. + + @ingroup Map */ + } + get { + /*@ + Get the minimum zoom of the source. + + @return Returns the minimum zoom of the source. + + @see elm_map_zoom_min_set() for details. + + @ingroup Map */ + } + values { + int zoom; /*@ New minimum zoom value to be used. */ + } + } + rotate { + set { + /*@ + Rotate the map. + + @see elm_map_rotate_get() + + @ingroup Map */ + } + get { + /*@ + Get the rotate degree of the map + + @see elm_map_rotate_set() to set map rotation. + + @ingroup Map */ + } + values { + double degree; /*@ Angle from 0.0 to 360.0 to rotate around Z axis. */ + Evas_Coord cx; /*@ Rotation's center horizontal position. */ + Evas_Coord cy; /*@ Rotation's center vertical position. */ + } + } + user_agent { + set { + /*@ + Set the user agent used by the map object to access routing services. + + User agent is a client application implementing a network protocol used + in communications within a client–server distributed computing system + + The @p user_agent identification string will transmitted in a header + field @c User-Agent. + + @see elm_map_user_agent_get() + + @ingroup Map */ + } + get { + /*@ + Get the user agent used by the map object. + + @return The user agent identification string used by the map. + + @see elm_map_user_agent_set() for details. + + @ingroup Map */ + } + values { + const char *user_agent; /*@ The user agent to be used by the map. */ + } + } + zoom_max { + set { + /*@ + Set the maximum zoom of the source. + + @see elm_map_zoom_max_get() for details. + + @ingroup Map */ + } + get { + /*@ + Get the maximum zoom of the source. + + @return Returns the maximum zoom of the source. + + @see elm_map_zoom_max_set() for details. + + @ingroup Map */ + } + values { + int zoom; /*@ New maximum zoom value to be used. */ + } + } + zoom_mode { + set { + /*@ + Set the zoom mode used by the map object. + + This sets the zoom mode to manual or one of the automatic levels. + Manual (#ELM_MAP_ZOOM_MODE_MANUAL) means that zoom is set manually by + elm_map_zoom_set() and will stay at that level until changed by code + or until zoom mode is changed. This is the default mode. + + The Automatic modes will allow the map object to automatically + adjust zoom mode based on properties. #ELM_MAP_ZOOM_MODE_AUTO_FIT will + adjust zoom so the map fits inside the scroll frame with no pixels + outside this area. #ELM_MAP_ZOOM_MODE_AUTO_FILL will be similar but + ensure no pixels within the frame are left unfilled. Do not forget that + the valid sizes are 2^zoom, consequently the map may be smaller than + the scroller view. + + @see elm_map_zoom_set() + + @ingroup Map */ + } + get { + /*@ + Get the zoom mode used by the map object. + + @return The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL + (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL. + + This function returns the current zoom mode used by the map object. + + @see elm_map_zoom_mode_set() for more details. + + @ingroup Map */ + } + values { + Elm_Map_Zoom_Mode mode; /*@ The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL + (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL. */ + } + } + region { + get { + /*@ + Get the current geographic coordinates of the map. + + This gets the current center coordinates of the map object. It can be + set by elm_map_region_bring_in() and elm_map_region_show(). + + @see elm_map_region_bring_in() + @see elm_map_region_show() + + @ingroup Map */ + } + values { + double lon; /*@ Pointer to store longitude. */ + double lat; /*@ Pointer to store latitude. */ + } + } + overlays { + get { + /*@ + Return all overlays in the map object. + + @return The list of all overlays or @c NULL upon failure. + + This list includes group overlays also. + So this can be changed dynamically while zooming and panning. + + @since 1.7 + + @ingroup Map */ + return Eina_List *; + } + } + tile_load_status { + get { + /*@ + Get the information of tile load status. + + This gets the current tile loaded status for the map object. + + @ingroup Map */ + } + values { + int try_num; /*@ Pointer to store number of tiles download requested. */ + int finish_num; /*@ Pointer to store number of tiles successfully downloaded. */ + } + } + } + methods { + source_set { + /*@ + Set the current source of the map for a specific type. + + Map widget retrieves tile images that composes the map from a web service. + This web service can be set with this method + for ELM_MAP_SOURCE_TYPE_TILE type. + A different service can return a different maps with different + information and it can use different zoom values. + + Map widget provides route data based on a external web service. + This web service can be set with this method + for ELM_MAP_SOURCE_TYPE_ROUTE type. + + Map widget also provide geoname data based on a external web service. + This web service can be set with this method + for ELM_MAP_SOURCE_TYPE_NAME type. + + The @p source_name need to match one of the names provided by + elm_map_sources_get(). + + The current source can be get using elm_map_source_get(). + + @see elm_map_sources_get() + @see elm_map_source_get() + + @ingroup Map */ + + params { + @in Elm_Map_Source_Type type; /*@ source type. */ + @in const char *source_name; /*@ The source to be used. */ + } + } + source_get { + /*@ + Get the name of currently used source for a specific type. + + @return Returns the name of the source in use. + + @see elm_map_sources_get() + @see elm_map_source_set() + + @ingroup Map */ + + const; + return const char *; + params { + @in Elm_Map_Source_Type type; /*@ source type. */ + } + } + route_add { + /*@ + Add a new route to the map object. + + @return The created route or @c NULL upon failure. + + A route will be traced by point on coordinates (@p flat, @p flon) + to point on coordinates (@p tlat, @p tlon), using the route service + set with elm_map_source_set(). + + It will take @p type on consideration to define the route, + depending if the user will be walking or driving, the route may vary. + One of #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE, + or #ELM_MAP_ROUTE_TYPE_FOOT need to be used. + + Another parameter is what the route should prioritize, the minor distance + or the less time to be spend on the route. So @p method should be one + of #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST. + + Routes created with this method can be deleted with + elm_map_route_del(), + and distance can be get with elm_map_route_distance_get(). + + @see elm_map_route_del() + @see elm_map_route_distance_get() + @see elm_map_source_set() + + @ingroup Map */ + + return Elm_Map_Route *; + params { + @in Elm_Map_Route_Type type; /*@ The type of transport to be considered when tracing a route. */ + @in Elm_Map_Route_Method method; /*@ The routing method, what should be prioritized. */ + @in double flon; /*@ The start longitude. */ + @in double flat; /*@ The start latitude. */ + @in double tlon; /*@ The destination longitude. */ + @in double tlat; /*@ The destination latitude. */ + @in Elm_Map_Route_Cb route_cb; /*@ The route to be traced. */ + @in void *data; /*@ A pointer of user data. */ + } + } + track_add { + /*@ + Add a track on the map + + @return The route object. This is an elm object of type Route. + + @see elm_route_add() for details. + + @ingroup Map */ + + return Evas_Object *; + params { + @in void *emap; /*@ The emap route object. */ + } + } + region_to_canvas_convert { + /*@ + Convert geographic coordinates (longitude, latitude) + into canvas coordinates. + + This gets canvas x, y coordinates from longitude and latitude. The canvas + coordinates mean x, y coordinate from current viewport. + + see elm_map_canvas_to_region_convert() + + @ingroup Map */ + + const; + params { + @in double lon; /*@ The longitude to convert. */ + @in double lat; /*@ The latitude to convert. */ + @out Evas_Coord x; /*@ A pointer to horizontal coordinate. */ + @out Evas_Coord y; /*@ A pointer to vertical coordinate. */ + } + } + overlay_circle_add { + /*@ + Add a new circle overlay to the map object. + This overlay has a circle type. + + @return The created overlay or @c NULL upon failure. + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_del() + + @ingroup Map */ + + return Elm_Map_Overlay *; + params { + @in double lon; /*@ The center longitude. */ + @in double lat; /*@ The center latitude. */ + @in double radius; /*@ The pixel length of radius. */ + } + } + overlay_class_add { + /*@ + Add a new class overlay to the map object. + This overlay has a class type. + + @return The created overlay or @c NULL upon failure. + + This overlay is not shown before overlay members are appended. + if overlay members in the same class are close, group overlays + are created. If they are far away, group overlays are hidden. + When group overlays are shown, they have default style layouts at first. + + You can change the state (hidden, paused, etc.) or set the content + or icon of the group overlays by chaning the state of the class overlay. + Do not modify the group overlay itself. + + Also these changes have a influence on the overlays in the same class + even if each overlay is alone and is not grouped. + + @see elm_map_overlay_del() + @see elm_map_overlay_add() + @see elm_map_overlay_bubble_add() + + @ingroup Map */ + + return Elm_Map_Overlay *; + } + overlay_bubble_add { + /*@ + Add a new bubble overlay to the map object. + This overlay has a bubble type. + + @return The created overlay or @c NULL upon failure. + + A bubble will not be displayed before geographic coordinates are set or + any other overlays are followed. + + This overlay has a bubble style layout and icon or content can not + be set. + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_del() + @see elm_map_overlay_add() + @see elm_map_overlay_class_add() + @see elm_map_overlay_region_set() + @see elm_map_overlay_bubble_follow() + + @ingroup Map */ + + return Elm_Map_Overlay *; + } + sources_get { + /*@ + Get the names of available sources for a specific type. + + @return The char pointer array of source names. + + It will provide a list with all available sources. + Current source can be set by elm_map_source_set(), or get with + elm_map_source_get(). + + At least available sources of tile type: + @li "Mapnik" + @li "Osmarender" + @li "CycleMap" + @li "Maplint" + + At least available sources of route type: + @li "Yours" + + At least available sources of name type: + @li "Nominatim" + + @see elm_map_source_set() + @see elm_map_source_get() + + @ingroup Map */ + + const; + return const char **; + params { + @in Elm_Map_Source_Type type; /*@ source type. */ + } + } + overlay_polygon_add { + /*@ + Add a new polygon overlay to the map object. + This overlay has a polygon type. + + @return The created overlay or @c NULL upon failure. + + At least 3 regions should be added to show the polygon overlay. + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_polygon_region_add() + @see elm_map_overlay_del() + + @ingroup Map */ + + return Elm_Map_Overlay *; + } + overlay_line_add { + /*@ + Add a new line overlay to the map object. + This overlay has a line type. + + @return The created overlay or @c NULL upon failure. + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_del() + + @ingroup Map */ + + return Elm_Map_Overlay *; + params { + @in double flon; /*@ The start longitude. */ + @in double flat; /*@ The start latitude. */ + @in double tlon; /*@ The destination longitude. */ + @in double tlat; /*@ The destination latitude. */ + } + } + region_show { + /*@ + Show the given coordinates at the center of the map, @b immediately. + + This causes map to @b redraw its viewport's contents to the + region containing the given @p lat and @p lon, that will be moved to the + center of the map. + + @see elm_map_region_bring_in() for a function to move with animation. + @see elm_map_region_get() + + @ingroup Map */ + + params { + @in double lon; /*@ Longitude to center at. */ + @in double lat; /*@ Latitude to center at. */ + } + } + name_add { + /*@ + Request a address or geographic coordinates(longitude, latitude) + from a given address or geographic coordinate(longitude, latitude). + + @return name A #Elm_Map_Name handle for this coordinate. + + If you want to get address from geographic coordinates, set input @p address + as @c NULL and set @p lon, @p lat as you want to convert. + If address is set except NULL, @p lon and @p lat are checked. + + To get the string for this address, elm_map_name_address_get() + should be used after callback or "name,loaded" signal is called. + + To get the longitude and latitude, elm_map_name_region_get() + should be used. + + @ingroup Map */ + + const; + return Elm_Map_Name *; + params { + @in const char *address; /*@ The address. */ + @in double lon; /*@ The longitude. */ + @in double lat; /*@ The latitude. */ + @in Elm_Map_Name_Cb name_cb; /*@ The callback function. */ + @in void *data; /*@ The user callback data. */ + } + } + region_bring_in { + /*@ + Animatedly bring in given coordinates to the center of the map. + + This causes map to jump to the given @p lat and @p lon coordinates + and show it (by scrolling) in the center of the viewport, if it is not + already centered. This will use animation to do so and take a period + of time to complete. + + @see elm_map_region_show() for a function to avoid animation. + @see elm_map_region_get() + + @ingroup Map */ + + params { + @in double lon; /*@ Longitude to center at. */ + @in double lat; /*@ Latitude to center at. */ + } + } + track_remove { + /*@ + Remove a track from the map + + @ingroup Map */ + + params { + @in Evas_Object *route; /*@ The track to remove. */ + } + } + overlay_route_add { + /*@ + Add a new route overlay to the map object. + This overlay has a route type. + + @return The created overlay or @c NULL upon failure. + + This overlay has a route style layout and icon or content can not + be set. + + The color scheme can be changed by elm_map_overlay_content_set(). + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_del() + @see elm_map_overlay_class_add() + @see elm_map_overlay_content_set() + @see elm_map_overlay_content_get() + + @ingroup Map */ + + return Elm_Map_Overlay *; + params { + @in const Elm_Map_Route *route; /*@ The route object to make a overlay. */ + } + } + overlay_scale_add { + /*@ + Add a new scale overlay to the map object. + This overlay has a scale type. + + @return The created overlay or @c NULL upon failure. + + The scale overlay shows the ratio of a distance on the map to the corresponding distance. + + Overlay created with this method can be deleted with elm_map_overlay_del(). + + @see elm_map_overlay_del() + + @ingroup Map */ + + return Elm_Map_Overlay *; + params { + @in Evas_Coord x; /*@ horizontal pixel coordinate. */ + @in Evas_Coord y; /*@ vertical pixel coordinate */ + } + } + overlay_add { + /*@ + Add a new overlay to the map object. This overlay has a default type. + + @return The created overlay or @c NULL upon failure. + + A overlay will be created and shown in a specific point of the map, defined + by @p lon and @p lat. + + The created overlay has a default style layout before content or + icon is set. + If content or icon is set, those are displayed instead of default style + layout. + You can set by using elm_map_overlay_content_set() or + elm_map_overlay_icon_set(). If NULL is set, default style + is shown again. + + Overlay created with this method can be deleted by elm_map_overlay_del(). + + @see elm_map_overlay_del() + @see elm_map_overlay_class_add() + @see elm_map_overlay_bubble_add() + @see elm_map_overlay_content_set() + @see elm_map_overlay_icon_set() + + @ingroup Map */ + + return Elm_Map_Overlay *; + params { + @in double lon; /*@ The longitude of the overlay. */ + @in double lat; /*@ The latitude of the overlay. */ + } + } + canvas_to_region_convert { + /*@ + Convert canvas coordinates into geographic coordinates + (longitude, latitude). + + This gets longitude and latitude from canvas x, y coordinates. The canvas + coordinates mean x, y coordinate from current viewport. + + see elm_map_region_to_canvas_convert() + + @ingroup Map */ + + const; + params { + @in Evas_Coord x; /*@ horizontal coordinate of the point to convert. */ + @in Evas_Coord y; /*@ vertical coordinate of the point to convert. */ + @out double lon; /*@ A pointer to the longitude. */ + @out double lat; /*@ A pointer to the latitude. */ + } + } + } + implements { + class::constructor; + Eo_Base::constructor; + Evas_Smart::move; + Evas_Smart::add; + Evas_Smart::del; + Evas_Smart::member_add; + Evas_Smart::resize; + Elm_Widget::theme_apply; + Elm_Widget::on_focus; + Elm_Widget::event; + } + events { + clicked; + clicked,double; + press; + longpressed; + scroll; + scroll,drag,start; + scroll,drag,stop; + scroll,anim,start; + scroll,anim,stop; + zoom,start; + zoom,stop; + zoom,change; + loaded; + tile,load; + tile,loaded; + tile,loaded,fail; + route,load; + route,loaded; + route,loaded,fail; + name,load; + name,loaded; + name,loaded,fail; + overlay,clicked; + overlay,del; + language,changed; + access,changed; + focused; + unfocused; + } + +} diff --git a/legacy/elementary/src/lib/elm_map_eo.h b/legacy/elementary/src/lib/elm_map_eo.h index f547a91798..ff0fb77435 100644 --- a/legacy/elementary/src/lib/elm_map_eo.h +++ b/legacy/elementary/src/lib/elm_map_eo.h @@ -1,3 +1,7 @@ +#include "elm_map_pan.eo.h" +#include "elm_map.eo.h" + +#if 0 #define ELM_OBJ_MAP_PAN_CLASS elm_obj_map_pan_class_get() const Eo_Class *elm_obj_map_pan_class_get(void) EINA_CONST; @@ -628,3 +632,4 @@ enum * @ingroup Map */ #define elm_obj_map_track_remove(route) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE), EO_TYPECHECK(Evas_Object *, route) +#endif diff --git a/legacy/elementary/src/lib/elm_map_legacy.h b/legacy/elementary/src/lib/elm_map_legacy.h index 89bc94377b..6c74b695cd 100644 --- a/legacy/elementary/src/lib/elm_map_legacy.h +++ b/legacy/elementary/src/lib/elm_map_legacy.h @@ -559,7 +559,7 @@ EAPI Elm_Map_Overlay * elm_map_overlay_add(Evas_Object *obj, double lon, dou * * @ingroup Map */ -EAPI EAPI Eina_List * elm_map_overlays_get(Evas_Object *obj); +EAPI EAPI Eina_List * elm_map_overlays_get(const Evas_Object *obj); /** * Add a new class overlay to the map object. diff --git a/legacy/elementary/src/lib/elm_map_pan.eo b/legacy/elementary/src/lib/elm_map_pan.eo new file mode 100644 index 0000000000..e24b884ce8 --- /dev/null +++ b/legacy/elementary/src/lib/elm_map_pan.eo @@ -0,0 +1,46 @@ +class Elm_Map_Pan (Elm_Pan) +{ + eo_prefix: elm_obj_map_pan; + implements { + class::constructor; + Eo_Base::destructor; + Evas_Smart::calculate; + Evas_Smart::move; + Evas_Smart::resize; + Elm_Pan::content_size::get; + Elm_Pan::pos; + Elm_Pan::pos_min::get; + Elm_Pan::pos_max::get; + } + events { + clicked; + clicked,double; + press; + longpressed; + scroll; + scroll,drag,start; + scroll,drag,stop; + scroll,anim,start; + scroll,anim,stop; + zoom,start; + zoom,stop; + zoom,change; + loaded; + tile,load; + tile,loaded; + tile,loaded,fail; + route,load; + route,loaded; + route,loaded,fail; + name,load; + name,loaded; + name,loaded,fail; + overlay,clicked; + overlay,del; + language,changed; + access,changed; + focused; + unfocused; + } + +} diff --git a/legacy/elementary/src/lib/elm_widget_map.h b/legacy/elementary/src/lib/elm_widget_map.h index 9d9e61b14a..d94db3a7e9 100644 --- a/legacy/elementary/src/lib/elm_widget_map.h +++ b/legacy/elementary/src/lib/elm_widget_map.h @@ -17,7 +17,7 @@ /** * Base widget smart data extended with map instance data. */ -typedef struct _Elm_Map_Smart_Data Elm_Map_Smart_Data; +typedef struct _Elm_Map_Data Elm_Map_Data; typedef struct _Elm_Map_Name_List Elm_Map_Name_List; typedef char *(*Elm_Map_Module_Source_Name_Func)(void); @@ -148,7 +148,7 @@ struct _Color struct _Overlay_Group { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; double lon, lat; Elm_Map_Overlay *overlay; // virtual group type overlay Elm_Map_Overlay *klass; // class overlay for this virtual group @@ -160,7 +160,7 @@ struct _Overlay_Group struct _Overlay_Default { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Coord w, h; double lon, lat; @@ -179,7 +179,7 @@ struct _Overlay_Default struct _Overlay_Class { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Eina_List *members; int zoom_max; Evas_Object *content; @@ -188,7 +188,7 @@ struct _Overlay_Class struct _Overlay_Bubble { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Object *pobj; Evas_Object *obj, *sc, *bx; double lon, lat; @@ -197,7 +197,7 @@ struct _Overlay_Bubble struct _Overlay_Route { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Object *obj; Eina_List *paths; @@ -206,21 +206,21 @@ struct _Overlay_Route struct _Overlay_Line { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; double flon, flat, tlon, tlat; Evas_Object *obj; }; struct _Overlay_Polygon { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Eina_List *regions; // list of Regions Evas_Object *obj; }; struct _Overlay_Circle { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; double lon, lat; double radius; // Intial pixel in intial view double ratio; // initial-radius/map-size @@ -229,7 +229,7 @@ struct _Overlay_Circle struct _Overlay_Scale { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Coord x, y; Evas_Coord w, h; Evas_Object *obj; @@ -237,7 +237,7 @@ struct _Overlay_Scale struct _Elm_Map_Overlay { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Coord zoom_min; Color c; @@ -262,7 +262,7 @@ struct _Elm_Map_Overlay struct _Elm_Map_Route { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; char *fname; Elm_Map_Route_Type type; @@ -289,7 +289,7 @@ struct _Elm_Map_Route struct _Path_Node { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; int idx; struct @@ -301,14 +301,14 @@ struct _Path_Node struct _Path_Waypoint { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; const char *point; }; struct _Elm_Map_Name { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; int method; char *address; @@ -322,7 +322,7 @@ struct _Elm_Map_Name struct _Elm_Map_Name_List { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Eina_List *names; double lon, lat; @@ -354,7 +354,7 @@ struct _Grid_Item { Grid *g; - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; Evas_Object *img; const char *file; const char *url; @@ -367,7 +367,7 @@ struct _Grid_Item struct _Grid { - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; int zoom; /* zoom level tiles want for optimal * display (1, 2, 4, 8) */ int tw, th; // size of grid in tiles @@ -377,18 +377,18 @@ struct _Grid struct _Calc_Job { double zoom; - void (*zoom_mode_set)(Elm_Map_Smart_Data *sd, double zoom); + void (*zoom_mode_set)(Elm_Map_Data *sd, double zoom); Eina_Bool bring_in : 1; double lon, lat; - void (*region_show_bring_in)(Elm_Map_Smart_Data *sd, double lon, + void (*region_show_bring_in)(Elm_Map_Data *sd, double lon, double lat, Eina_Bool bring_in); Eina_List *overlays; - void (*overlays_show)(Elm_Map_Smart_Data *sd, Eina_List *overlays); + void (*overlays_show)(Elm_Map_Data *sd, Eina_List *overlays); }; -struct _Elm_Map_Smart_Data +struct _Elm_Map_Data { Evas_Object *hit_rect; Evas_Object *pan_obj; @@ -477,11 +477,11 @@ struct _Elm_Map_Smart_Data Calc_Job calc_job; }; -typedef struct _Elm_Map_Pan_Smart_Data Elm_Map_Pan_Smart_Data; -struct _Elm_Map_Pan_Smart_Data +typedef struct _Elm_Map_Pan_Data Elm_Map_Pan_Data; +struct _Elm_Map_Pan_Data { Evas_Object *wobj; - Elm_Map_Smart_Data *wsd; + Elm_Map_Data *wsd; }; /** @@ -489,10 +489,10 @@ struct _Elm_Map_Pan_Smart_Data */ #define ELM_MAP_DATA_GET(o, sd) \ - Elm_Map_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAP_CLASS) + Elm_Map_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAP_CLASS) #define ELM_MAP_PAN_DATA_GET(o, sd) \ - Elm_Map_Pan_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAP_PAN_CLASS) + Elm_Map_Pan_Data * sd = eo_data_scope_get(o, ELM_OBJ_MAP_PAN_CLASS) #define ELM_MAP_DATA_GET_OR_RETURN(o, ptr) \ ELM_MAP_DATA_GET(o, ptr); \