Eolian: Integration of Map and Map_Pan
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Sun, 23 Mar 2014 14:45:00 +0000 (16:45 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 24 Mar 2014 06:50:04 +0000 (08:50 +0200)
src/lib/Makefile.am
src/lib/elm_map.c
src/lib/elm_map.eo [new file with mode: 0644]
src/lib/elm_map_eo.h
src/lib/elm_map_legacy.h
src/lib/elm_map_pan.eo [new file with mode: 0644]
src/lib/elm_widget_map.h

index 923f1fcf653cddd43ef00b4e23e77a15f01c14a6..310ca43523cc4b636770e10d34c6ed34a86e5d1b 100644 (file)
@@ -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
 
index 65061312e7d3da680bdd4d10447b7b97d2d99de5..dd8d908caddde5446b4d5432852c8f02a90589d0 100644 (file)
@@ -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);
-}
-
-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
-};
+   evas_smart_legacy_type_register(MY_PAN_CLASS_NAME_LEGACY, klass);
+}
 
-EO_DEFINE_CLASS(elm_obj_map_pan_class_get, &_elm_map_pan_class_desc, ELM_OBJ_PAN_CLASS, NULL);
+#include "elm_map_pan.eo.c"
 
-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)
-{
-   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)
+EOLIAN static void
+_elm_map_zoom_mode_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Zoom_Mode mode)
 {
-   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)
-{
-   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;
-}
-
-static void
-_zoom_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   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)
+EOLIAN static Elm_Map_Zoom_Mode
+_elm_map_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   ELM_MAP_CHECK(obj);
-   eo_do(obj, elm_obj_map_zoom_max_set(zoom));
+   return sd->mode;
 }
 
-static void
-_zoom_max_set(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)
 {
-   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)
-{
-   ELM_MAP_CHECK(obj) - 1;
-   int ret = - 1;
-   eo_do((Eo *) obj, elm_obj_map_zoom_max_get(&ret));
-   return ret;
-}
-
-static void
-_zoom_max_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static int
+_elm_map_zoom_max_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   int *ret = va_arg(*list, int *);
-   *ret = -1;
-   Elm_Map_Smart_Data *sd = _pd;
-   EINA_SAFETY_ON_NULL_RETURN(sd->src_tile);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_tile, -1);
 
-   *ret = sd->zoom_max;
+   return 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)
+EOLIAN static void
+_elm_map_zoom_min_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, int zoom)
 {
-   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);
 
-static void
-_zoom_min_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   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));
+   return sd->zoom_min;
 }
 
-static void
-_region_bring_in(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)
 {
-   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)
-{
-   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)
+EOLIAN static void
+_elm_map_region_show(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat)
 {
-   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)
-{
-   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)
+EOLIAN static void
+_elm_map_region_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double *lon, double *lat)
 {
-   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)
-{
-   ELM_MAP_CHECK(obj);
-   eo_do(obj, elm_obj_map_paused_set(paused));
-}
-
-static void
-_paused_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_map_paused_set(Eo *obj, Elm_Map_Data *sd, Eina_Bool paused)
 {
-   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)
-{
-   ELM_MAP_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret = EINA_FALSE;
-   eo_do((Eo *) obj, elm_obj_map_paused_get(&ret));
-   return ret;
-}
-
-static void
-_paused_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   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)
+EOLIAN static Eina_Bool
+_elm_map_paused_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   ELM_MAP_CHECK(obj);
-   eo_do(obj, elm_obj_map_rotate_set(degree, cx, cy));
+   return sd->paused;
 }
 
-static void
-_rotate_set(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)
 {
-   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)
-{
-   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)
+EOLIAN static void
+_elm_map_rotate_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double *degree, Evas_Coord *cx, Evas_Coord *cy)
 {
-   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)
-{
-   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)
+EOLIAN static void
+_elm_map_wheel_disabled_set(Eo *obj, Elm_Map_Data *sd, Eina_Bool disabled)
 {
-   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)
-{
-   ELM_MAP_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret = EINA_FALSE;
-   eo_do((Eo *) obj, elm_obj_map_wheel_disabled_get(&ret));
-   return ret;
-}
-
-static void
-_wheel_disabled_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_map_wheel_disabled_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Map_Smart_Data *sd = _pd;
-
-   *ret = sd->wheel_disabled;
+   return sd->wheel_disabled;
 }
 
-EAPI void
-elm_map_tile_load_status_get(const Evas_Object *obj,
-                             int *try_num,
-                             int *finish_num)
+EOLIAN static void
+_elm_map_tile_load_status_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, 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)
-{
-   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)
+EOLIAN static void
+_elm_map_user_agent_set(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, const char *user_agent)
 {
-   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;
-}
-
-static void
-_user_agent_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   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));
+   return sd->user_agent;
 }
 
-static void
-_source_set(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)
 {
-   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)
-{
-   ELM_MAP_CHECK(obj) NULL;
-   const char *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_map_source_get(type, &ret));
-   return ret;
-}
-
-static void
-_source_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static const char*
+_elm_map_source_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Source_Type type)
 {
-   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);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(sd->src_tile, NULL);
 
-   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)
-{
-   ELM_MAP_CHECK(obj) NULL;
-   const char **ret = NULL;
-   eo_do((Eo *) obj, elm_obj_map_sources_get(type, &ret));
-   return ret;
-}
-
-static void
-_sources_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static const char**
+_elm_map_sources_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, Elm_Map_Source_Type type)
 {
-   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;
+   const char **ret;
+   ret = NULL;
 
-   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)
-{
-   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;
+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 *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)
-{
-   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)
+EOLIAN static Elm_Map_Overlay*
+_elm_map_overlay_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat)
 {
-   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;
-}
-
-EAPI Eina_List *
-elm_map_overlays_get(Evas_Object *obj)
-{
-   ELM_MAP_CHECK(obj) NULL;
-   Eina_List *ret = NULL;
-   eo_do(obj, elm_obj_map_overlays_get(&ret));
-   return ret;
+   return overlay;
 }
 
-static void
-_overlays_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Eina_List *
+_elm_map_overlays_get(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   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)
-{
-   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)
+EOLIAN static Elm_Map_Overlay*
+_elm_map_overlay_class_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   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;
-}
-
-EAPI Elm_Map_Overlay *
-elm_map_overlay_polygon_add(Evas_Object *obj)
-{
-   ELM_MAP_CHECK(obj) NULL;
-   Elm_Map_Overlay *ret = NULL;
-   eo_do(obj, elm_obj_map_overlay_polygon_add(&ret));
-   return ret;
+   return overlay;
 }
 
-static void
-_overlay_polygon_add(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Map_Overlay*
+_elm_map_overlay_polygon_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd)
 {
-   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)
-{
-   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)
+EOLIAN static Elm_Map_Overlay*
+_elm_map_overlay_circle_add(Eo *obj EINA_UNUSED, Elm_Map_Data *sd, double lon, double lat, double radius)
 {
-   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;
-}
-
-#ifdef ELM_EMAP
-EAPI Evas_Object *
-elm_map_track_add(Evas_Object *obj,
-                  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)
-{
+   return overlay;
 }
-#endif
 
-static void
-_track_add(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Evas_Object*
+_elm_map_track_add(Eo *obj, Elm_Map_Data *sd, void *emap)
 {
-   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)
-{
-   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);
-
+_elm_map_class_constructor(Eo_Class *klass)
+{
    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/src/lib/elm_map.eo b/src/lib/elm_map.eo
new file mode 100644 (file)
index 0000000..ca7810b
--- /dev/null
@@ -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;
+   }
+
+}
index f547a917983218445efac85f9ad73138504c513e..ff0fb77435a7912dc723b79bda387b46e070ba37 100644 (file)
@@ -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
index 89bc94377b3a9595b9a20a2f9ba2674d11b1cf2f..6c74b695cd8169e49355cb586570154913045f0f 100644 (file)
@@ -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/src/lib/elm_map_pan.eo b/src/lib/elm_map_pan.eo
new file mode 100644 (file)
index 0000000..e24b884
--- /dev/null
@@ -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;
+   }
+
+}
index 9d9e61b14afea61d711efe7fa997131e7b425d92..d94db3a7e928c1c1bf127ae390dd6c6655c979b3 100644 (file)
@@ -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);                     \