diff --git a/src/Makefile_Efl_Mono.am b/src/Makefile_Efl_Mono.am index eb908f8e31..cf8884837b 100644 --- a/src/Makefile_Efl_Mono.am +++ b/src/Makefile_Efl_Mono.am @@ -170,7 +170,7 @@ lib/eo/efl_object_override.eo.cs elementary_eolian_blacklisted_files = \ lib/elementary/elm_web.eo.cs \ -lib/elementary/elm_map.eo.cs \ +lib/elementary/elm_map_eo.cs \ lib/elementary/elm_combobox.eo.cs \ lib/elementary/elm_list_eo.cs \ lib/elementary/elm_genlist_eo.cs \ diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 27e8d8b217..ad60028976 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -186,8 +186,6 @@ elm_private_eolian_files = \ # Legacy classes - not part of public EO API elm_legacy_eolian_files = \ lib/elementary/efl_ui_clock_legacy.eo \ - lib/elementary/elm_map.eo \ - lib/elementary/elm_map_pan.eo \ lib/elementary/elm_menu.eo \ lib/elementary/elm_notify.eo \ lib/elementary/elm_panel.eo \ @@ -367,6 +365,9 @@ lib/elementary/elm_list_item_eo.c \ lib/elementary/elm_list_item_eo.legacy.c \ lib/elementary/elm_mapbuf_eo.c \ lib/elementary/elm_mapbuf_eo.legacy.c \ +lib/elementary/elm_map_eo.c \ +lib/elementary/elm_map_eo.legacy.c \ +lib/elementary/elm_map_pan_eo.c \ $(NULL) elm_legacy_eo_headers = \ @@ -504,6 +505,10 @@ lib/elementary/elm_list_item_eo.h \ lib/elementary/elm_list_item_eo.legacy.h \ lib/elementary/elm_mapbuf_eo.h \ lib/elementary/elm_mapbuf_eo.legacy.h \ +lib/elementary/elm_map_eo.h \ +lib/elementary/elm_map_eo.legacy.h \ +lib/elementary/elm_map_pan_eo.h \ +lib/elementary/elm_map_pan_eo.legacy.h \ $(NULL) diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c index b54f9bac26..364d491614 100644 --- a/src/lib/elementary/elm_map.c +++ b/src/lib/elementary/elm_map.c @@ -10,8 +10,8 @@ #include "elm_priv.h" #include "elm_widget_map.h" #include "elm_interface_scrollable.h" -#include "elm_map_pan.eo.h" -#include "elm_map.eo.h" +#include "elm_map_pan_eo.h" +#include "elm_map_eo.h" #define MY_PAN_CLASS ELM_MAP_PAN_CLASS @@ -3995,7 +3995,7 @@ _elm_map_pan_class_constructor(Efl_Class *klass) evas_smart_legacy_type_register(MY_PAN_CLASS_NAME_LEGACY, klass); } -#include "elm_map_pan.eo.c" +#include "elm_map_pan_eo.c" EOLIAN static Eina_Error _elm_map_efl_ui_widget_theme_apply(Eo *obj, Elm_Map_Data *sd EINA_UNUSED) @@ -5726,4 +5726,4 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_map, Elm_Map_Data) #define ELM_MAP_EXTRA_OPS \ EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_map) -#include "elm_map.eo.c" +#include "elm_map_eo.c" diff --git a/src/lib/elementary/elm_map.eo b/src/lib/elementary/elm_map.eo deleted file mode 100644 index ebf4412b81..0000000000 --- a/src/lib/elementary/elm_map.eo +++ /dev/null @@ -1,532 +0,0 @@ -/* FIXME: Handle properly. */ -type Elm_Map_Route: __undefined_type; [[Elementary map route type]] -type Elm_Map_Route_Cb: __undefined_type; [[Elementary map route callback type]] -type Elm_Map_Overlay: __undefined_type; [[Elementary map overlay type]] -type Elm_Map_Name: __undefined_type; [[Elementary map name type]] -type Elm_Map_Name_Cb: __undefined_type; [[Elementary map name callback type]] -type Elm_Map_Name_List_Cb: __undefined_type; [[Elementary map name list callback type]] -type Evas.Event_Mouse_Down: __undefined_type; - -enum Elm.Map.Source_Type -{ - [[ - Set type of a external source (provider). - - See @Elm.Map.sources_get() - See @Elm.Map.source_get() - See @Elm.Map.source_set() - ]] - tile, [[Map tile provider.]] - route, [[Route service provider.]] - name, [[Name service provider.]] - last [[Sentinel value to indicate last enum field during iteration]] -} - -enum Elm.Map.Route_Type -{ - [[ - Set type of transport used on route. - - See @Elm.Map.route_add() - ]] - motocar, [[Route should consider an automobile will be used.]] - bicycle, [[Route should consider a bicycle will be used by the user.]] - foot, [[Route should consider user will be walking.]] - last [[Sentinel value to indicate last enum field during iteration]] -} - - -enum Elm.Map.Route_Method -{ - [[ - Set the routing method, what should be prioritized, time or distance. - - See @Elm.Map.route_add() - ]] - fastest, [[Route should prioritize time.]] - shortest, [[Route should prioritize distance.]] - last [[Sentinel value to indicate last enum field during iteration]] -} - - -class Elm.Map extends Efl.Ui.Widget implements Elm.Interface_Scrollable, - Efl.Access.Widget.Action, - Efl.Ui.Clickable, Efl.Ui.Legacy, Efl.Ui.Zoom -{ - [[Elementary map class]] - legacy_prefix: elm_map; - eo_prefix: elm_obj_map; - event_prefix: elm_map; - methods { - @property zoom_min { - set { - [[Set the minimum zoom of the source.]] - } - get { - [[Get the minimum zoom of the source.]] - } - values { - zoom: int(-1); [[Minimum zoom value to be used.]] - } - } - @property map_rotate { - set { - [[Rotate the map.]] - legacy: elm_map_rotate_set; - } - get { - [[Get the rotate degree of the map.]] - legacy: elm_map_rotate_get; - } - values { - degree: double; [[Angle from 0.0 to 360.0 to rotate around Z axis.]] - cx: int; [[Rotation's center horizontal position.]] - cy: int; [[Rotation's center vertical position.]] - } - } - @property 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 clientserver - distributed computing system - - The $user_agent identification string will transmitted in - a header field $User-Agent. - ]] - } - get { - [[Get the user agent used by the map object.]] - } - values { - user_agent: string; [[The user agent to be used by the map.]] - } - } - @property zoom_max { - set { - [[Set the maximum zoom of the source.]] - } - get { - [[Get the maximum zoom of the source.]] - } - values { - zoom: int(-1); [[Maximum zoom value to be used.]] - } - } - @property 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 @.map_region_bring_in and @.region_show. - ]] - } - values { - lon: double; [[Pointer to store longitude.]] - lat: double; [[Pointer to store latitude.]] - } - } - @property overlays { - get { - [[Return all overlays in the map object. - - This list includes group overlays also. - So this can be changed dynamically while zooming and panning. - - @since 1.7 - ]] - return: list; [[The list of all overlays or $null upon failure.]] - } - } - @property tile_load_status { - get { - [[Get the information of tile load status. - - This gets the current tile loaded status for the map object. - ]] - } - values { - try_num: int; [[Pointer to store number of tiles download requested.]] - finish_num: int; [[Pointer to store number of tiles successfully downloaded.]] - } - } - 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 $source_name need to match one of the names provided by - @.sources_get. - - The current source can be get using @.source_get. - ]] - params { - @in type: Elm.Map.Source_Type; [[Source type.]] - @in source_name: string; [[The source to be used.]] - } - } - source_get @const { - [[Get the name of currently used source for a specific type.]] - return: string; [[The name of the source in use.]] - params { - @in type: Elm.Map.Source_Type; [[Source type.]] - } - } - route_add { - [[Add a new route to the map object. - - A route will be traced by point on coordinates ($flat, $flon) - to point on coordinates ($tlat, $tlon), using the route service - set with @.source_set. - - It will take $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 $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 - \@ref elm_map_route_del and distance can be get with - \@ref elm_map_route_distance_get. - ]] - return: ptr(Elm_Map_Route); [[The created route or $null upon failure.]] - params { - @in type: Elm.Map.Route_Type; [[The type of transport to be considered when tracing a route.]] - @in method: Elm.Map.Route_Method; [[The routing method, what should be prioritized.]] - @in flon: double; [[The start longitude.]] - @in flat: double; [[The start latitude.]] - @in tlon: double; [[The destination longitude.]] - @in tlat: double; [[The destination latitude.]] - @in route_cb: Elm_Map_Route_Cb @optional; [[The route to be traced.]] - @in data: void_ptr @optional; [[A pointer of user data.]] - } - } - track_add { - [[Add a track on the map.]] - return: Efl.Canvas.Object; [[The route object. This is an elm object of type Route.]] - params { - @in emap: void_ptr; [[The emap route object.]] - } - } - region_to_canvas_convert @const { - [[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. - ]] - params { - @in lon: double; [[The longitude to convert.]] - @in lat: double; [[The latitude to convert.]] - @out x: int; [[A pointer to horizontal coordinate.]] - @out y: int; [[A pointer to vertical coordinate.]] - } - } - overlay_circle_add { - [[Add a new circle overlay to the map object. - This overlay has a circle type. - - Overlay created with this method can be deleted with - \@ref elm_map_overlay_del. - ]] - - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - params { - @in lon: double; [[The center longitude.]] - @in lat: double; [[The center latitude.]] - @in radius: double; [[The pixel length of radius.]] - } - } - overlay_class_add { - [[Add a new class overlay to the map object. - This overlay has a class type. - - 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. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - } - overlay_bubble_add { - [[Add a new bubble overlay to the map object. - This overlay has a bubble type. - - 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 - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - } - sources_get @const { - [[Get the names of available sources for a specific type. - - It will provide a list with all available sources. - Current source can be set by @.source_set, or get with - @.source_get. - - At least available sources of tile type are "Mapnik", "Osmarender", - "CycleMap" and "Maplint". - - At least available sources of route type are "Yours". - - At least available sources of name type are "Nominatim". - ]] - return: legacy(ptr(string)); [[The char pointer array of source names.]] - params { - @in type: Elm.Map.Source_Type; [[Source type.]] - } - } - overlay_polygon_add { - [[Add a new polygon overlay to the map object. - This overlay has a polygon type. - - At least 3 regions should be added to show the polygon overlay. - - Overlay created with this method can be deleted with - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - } - overlay_line_add { - [[Add a new line overlay to the map object. - This overlay has a line type. - - Overlay created with this method can be deleted with - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - params { - @in flon: double; [[The start longitude.]] - @in flat: double; [[The start latitude.]] - @in tlon: double; [[The destination longitude.]] - @in tlat: double; [[The destination latitude.]] - } - } - region_show { - [[Show the given coordinates at the center of the map, immediately. - - This causes map to redraw its viewport's contents to the region - containing the given $lat and $lon, that will be moved to the - center of the map. - - See @.map_region_bring_in for a function to move with animation. - ]] - params { - @in lon: double; [[Longitude to center at.]] - @in lat: double; [[Latitude to center at.]] - } - } - name_add @const { - [[Request a address or geographic coordinates(longitude, latitude) - from a given address or geographic coordinate(longitude, latitude). - - If you want to get address from geographic coordinates, set input - $address as $null and set $lon, $lat as you want to convert. If - address is set except NULL, $lon and $lat are checked. - - To get the string for this address, \@ref elm_map_name_address_get - should be used after callback or "name,loaded" signal is called. - - To get the longitude and latitude, \@ref elm_map_region_get - should be used. - ]] - return: ptr(Elm_Map_Name); [[A #Elm_Map_Name handle for this coordinate.]] - params { - @in address: string @optional; [[The address.]] - @in lon: double; [[The longitude.]] - @in lat: double; [[The latitude.]] - @in name_cb: Elm_Map_Name_Cb @optional; [[The callback function.]] - @in data: void_ptr @optional; [[The user callback data.]] - } - } - name_search @const { - [[Requests a list of addresses corresponding to a given name. - - \@internal - - @since 1.8 - ]] - params { - @in address: string; [[The address.]] - @in name_cb: Elm_Map_Name_List_Cb @optional; [[The callback function.]] - @in data: void_ptr @optional; [[The user callback data.]] - } - } - map_region_bring_in { - [[Animatedly bring in given coordinates to the center of the map. - - This causes map to jump to the given $lat and $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 @.region_show for a function to avoid animation. - ]] - legacy: elm_map_region_bring_in; - params { - @in lon: double; [[Longitude to center at.]] - @in lat: double; [[Latitude to center at.]] - } - } - region_zoom_bring_in { - [[Animatedly set the zoom level of the map and bring in given - coordinates to the center of the map. - - This causes map to zoom into specific zoom level and also move - to the given $lat and $lon coordinates and show it (by scrolling) - in the center of the viewport concurrently. - - See also @.map_region_bring_in. - - @since 1.11 - ]] - params { - @in zoom: int; [[The zoom level to set.]] - @in lon: double; [[Longitude to center at.]] - @in lat: double; [[Latitude to center at.]] - } - } - track_remove { - [[Remove a track from the map.]] - params { - @in route: Efl.Canvas.Object; [[The track to remove.]] - } - } - overlay_route_add { - [[Add a new route overlay to the map object. - This overlay has a route type. - - This overlay has a route style layout and icon or content can - not be set. - - The color scheme can be changed by - \@ref elm_map_overlay_content_set. - - Overlay created with this method can be deleted with - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - params { - @cref route: Elm_Map_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. - - 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 - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - params { - @in x: int; [[horizontal pixel coordinate.]] - @in y: int; [[vertical pixel coordinate.]] - } - } - overlay_add { - [[Add a new overlay to the map object. This overlay has a default - type. - - A overlay will be created and shown in a specific point of the - map, defined by $lon and $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 \@ref elm_map_overlay_content_set or - \@ref elm_map_overlay_icon_set. If $null is set, default style - is shown again. - - Overlay created with this method can be deleted by - \@ref elm_map_overlay_del. - ]] - return: ptr(Elm_Map_Overlay); [[The created overlay or $null upon failure.]] - params { - @in lon: double; [[The longitude of the overlay.]] - @in lat: double; [[The latitude of the overlay.]] - } - } - canvas_to_region_convert @const { - [[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. - ]] - params { - @in x: int; [[Horizontal coordinate of the point to convert.]] - @in y: int; [[Vertical coordinate of the point to convert.]] - @out lon: double; [[A pointer to the longitude.]] - @out lat: double; [[A pointer to the latitude.]] - } - } - } - implements { - class.constructor; - Efl.Object.constructor; - Efl.Object.invalidate; - Efl.Gfx.Entity.position { set; } - Efl.Gfx.Entity.size { set; } - Efl.Canvas.Group.group_member_add; - Efl.Ui.Widget.theme_apply; - Efl.Ui.Focus.Object.on_focus_update; - Efl.Ui.Widget.widget_input_event_handler; - Efl.Access.Widget.Action.elm_actions { get; } - Efl.Ui.Zoom.zoom_level { set; get; } - Efl.Ui.Zoom.zoom_mode { set; get; } - Efl.Ui.Zoom.zoom_animation { get; set; } - Elm.Interface_Scrollable.wheel_disabled { set; } - } - events { - press: Evas.Event_Mouse_Down; [[Called when map was pressed]] - loaded: void; [[Called when map loaded]] - tile,load: void; [[Called when title load started]] - tile,loaded: void; [[Called when title load finished]] - tile,loaded,fail: void; [[Called when title load failed]] - route,load: Elm_Map_Route; [[Called when route load started]] - route,loaded: void; [[Called when route load finished]] - route,loaded,fail: void; [[Called when route load failed]] - /* FIXME: Can be Elm_Map_Name or list */ - name,load: void; [[Called when name load started]] - name,loaded: void; [[Called when name load finished]] - name,loaded,fail: void; [[Called when name load failed]] - overlay,clicked: Elm_Map_Overlay; [[Called when overlay was clicked]] - overlay,del: Elm_Map_Overlay; [[Called when overlay was deleted]] - } -} diff --git a/src/lib/elementary/elm_map_eo.c b/src/lib/elementary/elm_map_eo.c new file mode 100644 index 0000000000..3bc322b303 --- /dev/null +++ b/src/lib/elementary/elm_map_eo.c @@ -0,0 +1,365 @@ +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_PRESS = + EFL_EVENT_DESCRIPTION("press"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_LOADED = + EFL_EVENT_DESCRIPTION("loaded"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOAD = + EFL_EVENT_DESCRIPTION("tile,load"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOADED = + EFL_EVENT_DESCRIPTION("tile,loaded"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOADED_FAIL = + EFL_EVENT_DESCRIPTION("tile,loaded,fail"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOAD = + EFL_EVENT_DESCRIPTION("route,load"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOADED = + EFL_EVENT_DESCRIPTION("route,loaded"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOADED_FAIL = + EFL_EVENT_DESCRIPTION("route,loaded,fail"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOAD = + EFL_EVENT_DESCRIPTION("name,load"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOADED = + EFL_EVENT_DESCRIPTION("name,loaded"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOADED_FAIL = + EFL_EVENT_DESCRIPTION("name,loaded,fail"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_OVERLAY_CLICKED = + EFL_EVENT_DESCRIPTION("overlay,clicked"); +EWAPI const Efl_Event_Description _ELM_MAP_EVENT_OVERLAY_DEL = + EFL_EVENT_DESCRIPTION("overlay,del"); + +void _elm_map_zoom_min_set(Eo *obj, Elm_Map_Data *pd, int zoom); + + +static Eina_Error +__eolian_elm_map_zoom_min_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; int cval; + if (!eina_value_int_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_map_zoom_min_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_zoom_min_set, EFL_FUNC_CALL(zoom), int zoom); + +int _elm_map_zoom_min_get(const Eo *obj, Elm_Map_Data *pd); + + +static Eina_Value +__eolian_elm_map_zoom_min_get_reflect(Eo *obj) +{ + int val = elm_obj_map_zoom_min_get(obj); + return eina_value_int_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_map_zoom_min_get, int, -1 /* +1 */); + +void _elm_map_map_rotate_set(Eo *obj, Elm_Map_Data *pd, double degree, int cx, int cy); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_rotate_set, EFL_FUNC_CALL(degree, cx, cy), double degree, int cx, int cy); + +void _elm_map_map_rotate_get(const Eo *obj, Elm_Map_Data *pd, double *degree, int *cx, int *cy); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_rotate_get, EFL_FUNC_CALL(degree, cx, cy), double *degree, int *cx, int *cy); + +void _elm_map_user_agent_set(Eo *obj, Elm_Map_Data *pd, const char *user_agent); + + +static Eina_Error +__eolian_elm_map_user_agent_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; const char *cval; + if (!eina_value_string_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_map_user_agent_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_user_agent_set, EFL_FUNC_CALL(user_agent), const char *user_agent); + +const char *_elm_map_user_agent_get(const Eo *obj, Elm_Map_Data *pd); + + +static Eina_Value +__eolian_elm_map_user_agent_get_reflect(Eo *obj) +{ + const char *val = elm_obj_map_user_agent_get(obj); + return eina_value_string_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_map_user_agent_get, const char *, NULL); + +void _elm_map_zoom_max_set(Eo *obj, Elm_Map_Data *pd, int zoom); + + +static Eina_Error +__eolian_elm_map_zoom_max_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; int cval; + if (!eina_value_int_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_map_zoom_max_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_zoom_max_set, EFL_FUNC_CALL(zoom), int zoom); + +int _elm_map_zoom_max_get(const Eo *obj, Elm_Map_Data *pd); + + +static Eina_Value +__eolian_elm_map_zoom_max_get_reflect(Eo *obj) +{ + int val = elm_obj_map_zoom_max_get(obj); + return eina_value_int_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_map_zoom_max_get, int, -1 /* +1 */); + +void _elm_map_region_get(const Eo *obj, Elm_Map_Data *pd, double *lon, double *lat); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_region_get, EFL_FUNC_CALL(lon, lat), double *lon, double *lat); + +Eina_List *_elm_map_overlays_get(const Eo *obj, Elm_Map_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_map_overlays_get, Eina_List *, NULL); + +void _elm_map_tile_load_status_get(const Eo *obj, Elm_Map_Data *pd, int *try_num, int *finish_num); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_tile_load_status_get, EFL_FUNC_CALL(try_num, finish_num), int *try_num, int *finish_num); + +void _elm_map_source_set(Eo *obj, Elm_Map_Data *pd, Elm_Map_Source_Type type, const char *source_name); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_source_set, EFL_FUNC_CALL(type, source_name), Elm_Map_Source_Type type, const char *source_name); + +const char *_elm_map_source_get(const Eo *obj, Elm_Map_Data *pd, Elm_Map_Source_Type type); + +EOAPI EFL_FUNC_BODYV_CONST(elm_obj_map_source_get, const char *, NULL, EFL_FUNC_CALL(type), Elm_Map_Source_Type type); + +Elm_Map_Route *_elm_map_route_add(Eo *obj, Elm_Map_Data *pd, 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); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_route_add, Elm_Map_Route *, NULL, EFL_FUNC_CALL(type, method, flon, flat, tlon, tlat, route_cb, data), 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); + +Efl_Canvas_Object *_elm_map_track_add(Eo *obj, Elm_Map_Data *pd, void *emap); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_track_add, Efl_Canvas_Object *, NULL, EFL_FUNC_CALL(emap), void *emap); + +void _elm_map_region_to_canvas_convert(const Eo *obj, Elm_Map_Data *pd, double lon, double lat, int *x, int *y); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_region_to_canvas_convert, EFL_FUNC_CALL(lon, lat, x, y), double lon, double lat, int *x, int *y); + +Elm_Map_Overlay *_elm_map_overlay_circle_add(Eo *obj, Elm_Map_Data *pd, double lon, double lat, double radius); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_overlay_circle_add, Elm_Map_Overlay *, NULL, EFL_FUNC_CALL(lon, lat, radius), double lon, double lat, double radius); + +Elm_Map_Overlay *_elm_map_overlay_class_add(Eo *obj, Elm_Map_Data *pd); + +EOAPI EFL_FUNC_BODY(elm_obj_map_overlay_class_add, Elm_Map_Overlay *, NULL); + +Elm_Map_Overlay *_elm_map_overlay_bubble_add(Eo *obj, Elm_Map_Data *pd); + +EOAPI EFL_FUNC_BODY(elm_obj_map_overlay_bubble_add, Elm_Map_Overlay *, NULL); + +const char **_elm_map_sources_get(const Eo *obj, Elm_Map_Data *pd, Elm_Map_Source_Type type); + +EOAPI EFL_FUNC_BODYV_CONST(elm_obj_map_sources_get, const char **, NULL, EFL_FUNC_CALL(type), Elm_Map_Source_Type type); + +Elm_Map_Overlay *_elm_map_overlay_polygon_add(Eo *obj, Elm_Map_Data *pd); + +EOAPI EFL_FUNC_BODY(elm_obj_map_overlay_polygon_add, Elm_Map_Overlay *, NULL); + +Elm_Map_Overlay *_elm_map_overlay_line_add(Eo *obj, Elm_Map_Data *pd, double flon, double flat, double tlon, double tlat); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_overlay_line_add, Elm_Map_Overlay *, NULL, EFL_FUNC_CALL(flon, flat, tlon, tlat), double flon, double flat, double tlon, double tlat); + +void _elm_map_region_show(Eo *obj, Elm_Map_Data *pd, double lon, double lat); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_region_show, EFL_FUNC_CALL(lon, lat), double lon, double lat); + +Elm_Map_Name *_elm_map_name_add(const Eo *obj, Elm_Map_Data *pd, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data); + +EOAPI EFL_FUNC_BODYV_CONST(elm_obj_map_name_add, Elm_Map_Name *, NULL, EFL_FUNC_CALL(address, lon, lat, name_cb, data), const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data); + +void _elm_map_name_search(const Eo *obj, Elm_Map_Data *pd, const char *address, Elm_Map_Name_List_Cb name_cb, void *data); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_name_search, EFL_FUNC_CALL(address, name_cb, data), const char *address, Elm_Map_Name_List_Cb name_cb, void *data); + +void _elm_map_map_region_bring_in(Eo *obj, Elm_Map_Data *pd, double lon, double lat); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_region_bring_in, EFL_FUNC_CALL(lon, lat), double lon, double lat); + +void _elm_map_region_zoom_bring_in(Eo *obj, Elm_Map_Data *pd, int zoom, double lon, double lat); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_region_zoom_bring_in, EFL_FUNC_CALL(zoom, lon, lat), int zoom, double lon, double lat); + +void _elm_map_track_remove(Eo *obj, Elm_Map_Data *pd, Efl_Canvas_Object *route); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_map_track_remove, EFL_FUNC_CALL(route), Efl_Canvas_Object *route); + +Elm_Map_Overlay *_elm_map_overlay_route_add(Eo *obj, Elm_Map_Data *pd, const Elm_Map_Route *route); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_overlay_route_add, Elm_Map_Overlay *, NULL, EFL_FUNC_CALL(route), const Elm_Map_Route *route); + +Elm_Map_Overlay *_elm_map_overlay_scale_add(Eo *obj, Elm_Map_Data *pd, int x, int y); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_overlay_scale_add, Elm_Map_Overlay *, NULL, EFL_FUNC_CALL(x, y), int x, int y); + +Elm_Map_Overlay *_elm_map_overlay_add(Eo *obj, Elm_Map_Data *pd, double lon, double lat); + +EOAPI EFL_FUNC_BODYV(elm_obj_map_overlay_add, Elm_Map_Overlay *, NULL, EFL_FUNC_CALL(lon, lat), double lon, double lat); + +void _elm_map_canvas_to_region_convert(const Eo *obj, Elm_Map_Data *pd, int x, int y, double *lon, double *lat); + +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_obj_map_canvas_to_region_convert, EFL_FUNC_CALL(x, y, lon, lat), int x, int y, double *lon, double *lat); + +Efl_Object *_elm_map_efl_object_constructor(Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_efl_object_invalidate(Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_efl_gfx_entity_position_set(Eo *obj, Elm_Map_Data *pd, Eina_Position2D pos); + + +void _elm_map_efl_gfx_entity_size_set(Eo *obj, Elm_Map_Data *pd, Eina_Size2D size); + + +void _elm_map_efl_canvas_group_group_member_add(Eo *obj, Elm_Map_Data *pd, Efl_Canvas_Object *sub_obj); + + +Eina_Error _elm_map_efl_ui_widget_theme_apply(Eo *obj, Elm_Map_Data *pd); + + +Eina_Bool _elm_map_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Map_Data *pd); + + +Eina_Bool _elm_map_efl_ui_widget_widget_input_event_handler(Eo *obj, Elm_Map_Data *pd, const Efl_Event *eo_event, Efl_Canvas_Object *source); + + +const Efl_Access_Action_Data *_elm_map_efl_access_widget_action_elm_actions_get(const Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_efl_ui_zoom_zoom_level_set(Eo *obj, Elm_Map_Data *pd, double zoom); + + +double _elm_map_efl_ui_zoom_zoom_level_get(const Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_efl_ui_zoom_zoom_mode_set(Eo *obj, Elm_Map_Data *pd, Efl_Ui_Zoom_Mode mode); + + +Efl_Ui_Zoom_Mode _elm_map_efl_ui_zoom_zoom_mode_get(const Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_efl_ui_zoom_zoom_animation_set(Eo *obj, Elm_Map_Data *pd, Eina_Bool paused); + + +Eina_Bool _elm_map_efl_ui_zoom_zoom_animation_get(const Eo *obj, Elm_Map_Data *pd); + + +void _elm_map_elm_interface_scrollable_wheel_disabled_set(Eo *obj, Elm_Map_Data *pd, Eina_Bool disabled); + + +static Eina_Bool +_elm_map_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_MAP_EXTRA_OPS +#define ELM_MAP_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_obj_map_zoom_min_set, _elm_map_zoom_min_set), + EFL_OBJECT_OP_FUNC(elm_obj_map_zoom_min_get, _elm_map_zoom_min_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_rotate_set, _elm_map_map_rotate_set), + EFL_OBJECT_OP_FUNC(elm_obj_map_rotate_get, _elm_map_map_rotate_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_user_agent_set, _elm_map_user_agent_set), + EFL_OBJECT_OP_FUNC(elm_obj_map_user_agent_get, _elm_map_user_agent_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_zoom_max_set, _elm_map_zoom_max_set), + EFL_OBJECT_OP_FUNC(elm_obj_map_zoom_max_get, _elm_map_zoom_max_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_region_get, _elm_map_region_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlays_get, _elm_map_overlays_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_tile_load_status_get, _elm_map_tile_load_status_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_source_set, _elm_map_source_set), + EFL_OBJECT_OP_FUNC(elm_obj_map_source_get, _elm_map_source_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_route_add, _elm_map_route_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_track_add, _elm_map_track_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_region_to_canvas_convert, _elm_map_region_to_canvas_convert), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_circle_add, _elm_map_overlay_circle_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_class_add, _elm_map_overlay_class_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_bubble_add, _elm_map_overlay_bubble_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_sources_get, _elm_map_sources_get), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_polygon_add, _elm_map_overlay_polygon_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_line_add, _elm_map_overlay_line_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_region_show, _elm_map_region_show), + EFL_OBJECT_OP_FUNC(elm_obj_map_name_add, _elm_map_name_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_name_search, _elm_map_name_search), + EFL_OBJECT_OP_FUNC(elm_obj_map_region_bring_in, _elm_map_map_region_bring_in), + EFL_OBJECT_OP_FUNC(elm_obj_map_region_zoom_bring_in, _elm_map_region_zoom_bring_in), + EFL_OBJECT_OP_FUNC(elm_obj_map_track_remove, _elm_map_track_remove), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_route_add, _elm_map_overlay_route_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_scale_add, _elm_map_overlay_scale_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_overlay_add, _elm_map_overlay_add), + EFL_OBJECT_OP_FUNC(elm_obj_map_canvas_to_region_convert, _elm_map_canvas_to_region_convert), + EFL_OBJECT_OP_FUNC(efl_constructor, _elm_map_efl_object_constructor), + EFL_OBJECT_OP_FUNC(efl_invalidate, _elm_map_efl_object_invalidate), + EFL_OBJECT_OP_FUNC(efl_gfx_entity_position_set, _elm_map_efl_gfx_entity_position_set), + EFL_OBJECT_OP_FUNC(efl_gfx_entity_size_set, _elm_map_efl_gfx_entity_size_set), + EFL_OBJECT_OP_FUNC(efl_canvas_group_member_add, _elm_map_efl_canvas_group_group_member_add), + EFL_OBJECT_OP_FUNC(efl_ui_widget_theme_apply, _elm_map_efl_ui_widget_theme_apply), + EFL_OBJECT_OP_FUNC(efl_ui_focus_object_on_focus_update, _elm_map_efl_ui_focus_object_on_focus_update), + EFL_OBJECT_OP_FUNC(efl_ui_widget_input_event_handler, _elm_map_efl_ui_widget_widget_input_event_handler), + EFL_OBJECT_OP_FUNC(efl_access_widget_action_elm_actions_get, _elm_map_efl_access_widget_action_elm_actions_get), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_level_set, _elm_map_efl_ui_zoom_zoom_level_set), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_level_get, _elm_map_efl_ui_zoom_zoom_level_get), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_mode_set, _elm_map_efl_ui_zoom_zoom_mode_set), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_mode_get, _elm_map_efl_ui_zoom_zoom_mode_get), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_animation_set, _elm_map_efl_ui_zoom_zoom_animation_set), + EFL_OBJECT_OP_FUNC(efl_ui_zoom_animation_get, _elm_map_efl_ui_zoom_zoom_animation_get), + EFL_OBJECT_OP_FUNC(elm_interface_scrollable_wheel_disabled_set, _elm_map_elm_interface_scrollable_wheel_disabled_set), + ELM_MAP_EXTRA_OPS + ); + opsp = &ops; + + static const Efl_Object_Property_Reflection refl_table[] = { + {"zoom_min", __eolian_elm_map_zoom_min_set_reflect, __eolian_elm_map_zoom_min_get_reflect}, + {"user_agent", __eolian_elm_map_user_agent_set_reflect, __eolian_elm_map_user_agent_get_reflect}, + {"zoom_max", __eolian_elm_map_zoom_max_set_reflect, __eolian_elm_map_zoom_max_get_reflect}, + }; + static const Efl_Object_Property_Reflection_Ops rops = { + refl_table, EINA_C_ARRAY_LENGTH(refl_table) + }; + ropsp = &rops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_map_class_desc = { + EO_VERSION, + "Elm.Map", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Map_Data), + _elm_map_class_initializer, + _elm_map_class_constructor, + NULL +}; + +EFL_DEFINE_CLASS(elm_map_class_get, &_elm_map_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, EFL_UI_ZOOM_INTERFACE, NULL); + +#include "elm_map_eo.legacy.c" diff --git a/src/lib/elementary/elm_map_eo.h b/src/lib/elementary/elm_map_eo.h new file mode 100644 index 0000000000..d33e955cc4 --- /dev/null +++ b/src/lib/elementary/elm_map_eo.h @@ -0,0 +1,731 @@ +#ifndef _ELM_MAP_EO_H_ +#define _ELM_MAP_EO_H_ + +#ifndef _ELM_MAP_EO_CLASS_TYPE +#define _ELM_MAP_EO_CLASS_TYPE + +typedef Eo Elm_Map; + +#endif + +#ifndef _ELM_MAP_EO_TYPES +#define _ELM_MAP_EO_TYPES + +/** + * @brief Set type of a external source (provider). + * + * See @ref elm_obj_map_sources_get() See @ref elm_obj_map_source_get() See + * @ref elm_obj_map_source_set() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_SOURCE_TYPE_TILE = 0, /**< Map tile provider. */ + ELM_MAP_SOURCE_TYPE_ROUTE, /**< Route service provider. */ + ELM_MAP_SOURCE_TYPE_NAME, /**< Name service provider. */ + ELM_MAP_SOURCE_TYPE_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Map_Source_Type; + +/** + * @brief Set type of transport used on route. + * + * See @ref elm_obj_map_route_add() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_ROUTE_TYPE_MOTOCAR = 0, /**< Route should consider an automobile will + * be used. */ + ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used + * by the user. */ + ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */ + ELM_MAP_ROUTE_TYPE_LAST /**< Sentinel value to indicate last enum field during + * iteration */ +} Elm_Map_Route_Type; + +/** + * @brief Set the routing method, what should be prioritized, time or distance. + * + * See @ref elm_obj_map_route_add() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_ROUTE_METHOD_FASTEST = 0, /**< Route should prioritize time. */ + ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should prioritize distance. */ + ELM_MAP_ROUTE_METHOD_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Map_Route_Method; + + +#endif +/** Elementary map class + * + * @ingroup Elm_Map + */ +#define ELM_MAP_CLASS elm_map_class_get() + +EWAPI const Efl_Class *elm_map_class_get(void); + +/** + * @brief Set the minimum zoom of the source. + * + * @param[in] obj The object. + * @param[in] zoom Minimum zoom value to be used. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_zoom_min_set(Eo *obj, int zoom); + +/** + * @brief Get the minimum zoom of the source. + * + * @param[in] obj The object. + * + * @return Minimum zoom value to be used. + * + * @ingroup Elm_Map + */ +EOAPI int elm_obj_map_zoom_min_get(const Eo *obj); + +/** + * @brief Rotate the map. + * + * @param[in] obj The object. + * @param[in] degree Angle from 0.0 to 360.0 to rotate around Z axis. + * @param[in] cx Rotation's center horizontal position. + * @param[in] cy Rotation's center vertical position. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_rotate_set(Eo *obj, double degree, int cx, int cy); + +/** + * @brief Get the rotate degree of the map. + * + * @param[in] obj The object. + * @param[out] degree Angle from 0.0 to 360.0 to rotate around Z axis. + * @param[out] cx Rotation's center horizontal position. + * @param[out] cy Rotation's center vertical position. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_rotate_get(const Eo *obj, double *degree, int *cx, int *cy); + +/** + * @brief 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 clientserver distributed computing system + * + * The @c user_agent identification string will transmitted in a header field + * @c User-Agent. + * + * @param[in] obj The object. + * @param[in] user_agent The user agent to be used by the map. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_user_agent_set(Eo *obj, const char *user_agent); + +/** + * @brief Get the user agent used by the map object. + * + * @param[in] obj The object. + * + * @return The user agent to be used by the map. + * + * @ingroup Elm_Map + */ +EOAPI const char *elm_obj_map_user_agent_get(const Eo *obj); + +/** + * @brief Set the maximum zoom of the source. + * + * @param[in] obj The object. + * @param[in] zoom Maximum zoom value to be used. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_zoom_max_set(Eo *obj, int zoom); + +/** + * @brief Get the maximum zoom of the source. + * + * @param[in] obj The object. + * + * @return Maximum zoom value to be used. + * + * @ingroup Elm_Map + */ +EOAPI int elm_obj_map_zoom_max_get(const Eo *obj); + +/** + * @brief Get the current geographic coordinates of the map. + * + * This gets the current center coordinates of the map object. It can be set by + * @ref elm_obj_map_region_bring_in and @ref elm_obj_map_region_show. + * + * @param[in] obj The object. + * @param[out] lon Pointer to store longitude. + * @param[out] lat Pointer to store latitude. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_region_get(const Eo *obj, double *lon, double *lat); + +/** + * @brief Return all overlays in the map object. + * + * This list includes group overlays also. So this can be changed dynamically + * while zooming and panning. + * + * @param[in] obj The object. + * + * @return The list of all overlays or @c null upon failure. + * + * @since 1.7 + * + * @ingroup Elm_Map + */ +EOAPI Eina_List *elm_obj_map_overlays_get(const Eo *obj); + +/** + * @brief Get the information of tile load status. + * + * This gets the current tile loaded status for the map object. + * + * @param[in] obj The object. + * @param[out] try_num Pointer to store number of tiles download requested. + * @param[out] finish_num Pointer to store number of tiles successfully + * downloaded. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_tile_load_status_get(const Eo *obj, int *try_num, int *finish_num); + +/** + * @brief 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 @c source_name need to match one of the names provided by + * @ref elm_obj_map_sources_get. + * + * The current source can be get using @ref elm_obj_map_source_get. + * + * @param[in] obj The object. + * @param[in] type Source type. + * @param[in] source_name The source to be used. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_source_set(Eo *obj, Elm_Map_Source_Type type, const char *source_name); + +/** + * @brief Get the name of currently used source for a specific type. + * + * @param[in] obj The object. + * @param[in] type Source type. + * + * @return The name of the source in use. + * + * @ingroup Elm_Map + */ +EOAPI const char *elm_obj_map_source_get(const Eo *obj, Elm_Map_Source_Type type); + +/** + * @brief Add a new route to the map object. + * + * A route will be traced by point on coordinates ($flat, @c flon) to point on + * coordinates ($tlat, @c tlon), using the route service set with + * @ref elm_obj_map_source_set. + * + * It will take @c 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 @c 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 @ref elm_map_route_del + * and distance can be get with @ref elm_map_route_distance_get. + * + * @param[in] obj The object. + * @param[in] type The type of transport to be considered when tracing a route. + * @param[in] method The routing method, what should be prioritized. + * @param[in] flon The start longitude. + * @param[in] flat The start latitude. + * @param[in] tlon The destination longitude. + * @param[in] tlat The destination latitude. + * @param[in] route_cb The route to be traced. + * @param[in] data A pointer of user data. + * + * @return The created route or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Route *elm_obj_map_route_add(Eo *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); + +/** + * @brief Add a track on the map. + * + * @param[in] obj The object. + * @param[in] emap The emap route object. + * + * @return The route object. This is an elm object of type Route. + * + * @ingroup Elm_Map + */ +EOAPI Efl_Canvas_Object *elm_obj_map_track_add(Eo *obj, void *emap); + +/** + * @brief 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. + * + * @param[in] obj The object. + * @param[in] lon The longitude to convert. + * @param[in] lat The latitude to convert. + * @param[out] x A pointer to horizontal coordinate. + * @param[out] y A pointer to vertical coordinate. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_region_to_canvas_convert(const Eo *obj, double lon, double lat, int *x, int *y); + +/** + * @brief Add a new circle overlay to the map object. This overlay has a circle + * type. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] lon The center longitude. + * @param[in] lat The center latitude. + * @param[in] radius The pixel length of radius. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_circle_add(Eo *obj, double lon, double lat, double radius); + +/** + * @brief Add a new class overlay to the map object. This overlay has a class + * type. + * + * 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. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_class_add(Eo *obj); + +/** + * @brief Add a new bubble overlay to the map object. This overlay has a bubble + * type. + * + * 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 @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_bubble_add(Eo *obj); + +/** + * @brief Get the names of available sources for a specific type. + * + * It will provide a list with all available sources. Current source can be set + * by @ref elm_obj_map_source_set, or get with @ref elm_obj_map_source_get. + * + * At least available sources of tile type are "Mapnik", "Osmarender", + * "CycleMap" and "Maplint". + * + * At least available sources of route type are "Yours". + * + * At least available sources of name type are "Nominatim". + * + * @param[in] obj The object. + * @param[in] type Source type. + * + * @return The char pointer array of source names. + * + * @ingroup Elm_Map + */ +EOAPI const char **elm_obj_map_sources_get(const Eo *obj, Elm_Map_Source_Type type); + +/** + * @brief Add a new polygon overlay to the map object. This overlay has a + * polygon type. + * + * At least 3 regions should be added to show the polygon overlay. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_polygon_add(Eo *obj); + +/** + * @brief Add a new line overlay to the map object. This overlay has a line + * type. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] flon The start longitude. + * @param[in] flat The start latitude. + * @param[in] tlon The destination longitude. + * @param[in] tlat The destination latitude. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_line_add(Eo *obj, double flon, double flat, double tlon, double tlat); + +/** + * @brief Show the given coordinates at the center of the map, immediately. + * + * This causes map to redraw its viewport's contents to the region containing + * the given @c lat and @c lon, that will be moved to the center of the map. + * + * See @ref elm_obj_map_region_bring_in for a function to move with animation. + * + * @param[in] obj The object. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_region_show(Eo *obj, double lon, double lat); + +/** + * @brief Request a address or geographic coordinates(longitude, latitude) from + * a given address or geographic coordinate(longitude, latitude). + * + * If you want to get address from geographic coordinates, set input @c address + * as @c null and set @c lon, @c lat as you want to convert. If address is set + * except NULL, @c lon and @c lat are checked. + * + * To get the string for this address, @ref elm_map_name_address_get should be + * used after callback or "name,loaded" signal is called. + * + * To get the longitude and latitude, @ref elm_map_region_get should be used. + * + * @param[in] obj The object. + * @param[in] address The address. + * @param[in] lon The longitude. + * @param[in] lat The latitude. + * @param[in] name_cb The callback function. + * @param[in] data The user callback data. + * + * @return A #Elm_Map_Name handle for this coordinate. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Name *elm_obj_map_name_add(const Eo *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data); + +/** + * @brief Requests a list of addresses corresponding to a given name. + * + * @internal + * + * @param[in] obj The object. + * @param[in] address The address. + * @param[in] name_cb The callback function. + * @param[in] data The user callback data. + * + * @since 1.8 + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_name_search(const Eo *obj, const char *address, Elm_Map_Name_List_Cb name_cb, void *data); + +/** + * @brief Animatedly bring in given coordinates to the center of the map. + * + * This causes map to jump to the given @c lat and @c 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 @ref elm_obj_map_region_show for a function to avoid animation. + * + * @param[in] obj The object. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_region_bring_in(Eo *obj, double lon, double lat); + +/** + * @brief Animatedly set the zoom level of the map and bring in given + * coordinates to the center of the map. + * + * This causes map to zoom into specific zoom level and also move to the given + * @c lat and @c lon coordinates and show it (by scrolling) in the center of + * the viewport concurrently. + * + * See also @ref elm_obj_map_region_bring_in. + * + * @param[in] obj The object. + * @param[in] zoom The zoom level to set. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @since 1.11 + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_region_zoom_bring_in(Eo *obj, int zoom, double lon, double lat); + +/** + * @brief Remove a track from the map. + * + * @param[in] obj The object. + * @param[in] route The track to remove. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_track_remove(Eo *obj, Efl_Canvas_Object *route); + +/** + * @brief Add a new route overlay to the map object. This overlay has a route + * type. + * + * This overlay has a route style layout and icon or content can not be set. + * + * The color scheme can be changed by @ref elm_map_overlay_content_set. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] route The route object to make a overlay. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_route_add(Eo *obj, const Elm_Map_Route *route); + +/** + * @brief Add a new scale overlay to the map object. This overlay has a scale + * type. + * + * 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 @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] x horizontal pixel coordinate. + * @param[in] y vertical pixel coordinate. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_scale_add(Eo *obj, int x, int y); + +/** + * @brief Add a new overlay to the map object. This overlay has a default type. + * + * A overlay will be created and shown in a specific point of the map, defined + * by @c lon and @c 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 @ref elm_map_overlay_content_set or @ref + * elm_map_overlay_icon_set. If @c null is set, default style is shown again. + * + * Overlay created with this method can be deleted by @ref elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] lon The longitude of the overlay. + * @param[in] lat The latitude of the overlay. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map + */ +EOAPI Elm_Map_Overlay *elm_obj_map_overlay_add(Eo *obj, double lon, double lat); + +/** + * @brief 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. + * + * @param[in] obj The object. + * @param[in] x Horizontal coordinate of the point to convert. + * @param[in] y Vertical coordinate of the point to convert. + * @param[out] lon A pointer to the longitude. + * @param[out] lat A pointer to the latitude. + * + * @ingroup Elm_Map + */ +EOAPI void elm_obj_map_canvas_to_region_convert(const Eo *obj, int x, int y, double *lon, double *lat); + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_PRESS; + +/** Called when map was pressed + * @return Evas_Event_Mouse_Down + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_PRESS (&(_ELM_MAP_EVENT_PRESS)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_LOADED; + +/** Called when map loaded + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_LOADED (&(_ELM_MAP_EVENT_LOADED)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOAD; + +/** Called when title load started + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_TILE_LOAD (&(_ELM_MAP_EVENT_TILE_LOAD)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOADED; + +/** Called when title load finished + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_TILE_LOADED (&(_ELM_MAP_EVENT_TILE_LOADED)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_TILE_LOADED_FAIL; + +/** Called when title load failed + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_TILE_LOADED_FAIL (&(_ELM_MAP_EVENT_TILE_LOADED_FAIL)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOAD; + +/** Called when route load started + * @return Elm_Map_Route + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_ROUTE_LOAD (&(_ELM_MAP_EVENT_ROUTE_LOAD)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOADED; + +/** Called when route load finished + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_ROUTE_LOADED (&(_ELM_MAP_EVENT_ROUTE_LOADED)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_ROUTE_LOADED_FAIL; + +/** Called when route load failed + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_ROUTE_LOADED_FAIL (&(_ELM_MAP_EVENT_ROUTE_LOADED_FAIL)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOAD; + +/** Called when name load started + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_NAME_LOAD (&(_ELM_MAP_EVENT_NAME_LOAD)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOADED; + +/** Called when name load finished + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_NAME_LOADED (&(_ELM_MAP_EVENT_NAME_LOADED)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_NAME_LOADED_FAIL; + +/** Called when name load failed + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_NAME_LOADED_FAIL (&(_ELM_MAP_EVENT_NAME_LOADED_FAIL)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_OVERLAY_CLICKED; + +/** Called when overlay was clicked + * @return Elm_Map_Overlay + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_OVERLAY_CLICKED (&(_ELM_MAP_EVENT_OVERLAY_CLICKED)) + +EWAPI extern const Efl_Event_Description _ELM_MAP_EVENT_OVERLAY_DEL; + +/** Called when overlay was deleted + * @return Elm_Map_Overlay + * + * @ingroup Elm_Map + */ +#define ELM_MAP_EVENT_OVERLAY_DEL (&(_ELM_MAP_EVENT_OVERLAY_DEL)) + +#endif diff --git a/src/lib/elementary/elm_map_eo.legacy.c b/src/lib/elementary/elm_map_eo.legacy.c new file mode 100644 index 0000000000..a89ce86cd4 --- /dev/null +++ b/src/lib/elementary/elm_map_eo.legacy.c @@ -0,0 +1,192 @@ + +EAPI void +elm_map_zoom_min_set(Elm_Map *obj, int zoom) +{ + elm_obj_map_zoom_min_set(obj, zoom); +} + +EAPI int +elm_map_zoom_min_get(const Elm_Map *obj) +{ + return elm_obj_map_zoom_min_get(obj); +} + +EAPI void +elm_map_rotate_set(Elm_Map *obj, double degree, int cx, int cy) +{ + elm_obj_map_rotate_set(obj, degree, cx, cy); +} + +EAPI void +elm_map_rotate_get(const Elm_Map *obj, double *degree, int *cx, int *cy) +{ + elm_obj_map_rotate_get(obj, degree, cx, cy); +} + +EAPI void +elm_map_user_agent_set(Elm_Map *obj, const char *user_agent) +{ + elm_obj_map_user_agent_set(obj, user_agent); +} + +EAPI const char * +elm_map_user_agent_get(const Elm_Map *obj) +{ + return elm_obj_map_user_agent_get(obj); +} + +EAPI void +elm_map_zoom_max_set(Elm_Map *obj, int zoom) +{ + elm_obj_map_zoom_max_set(obj, zoom); +} + +EAPI int +elm_map_zoom_max_get(const Elm_Map *obj) +{ + return elm_obj_map_zoom_max_get(obj); +} + +EAPI void +elm_map_region_get(const Elm_Map *obj, double *lon, double *lat) +{ + elm_obj_map_region_get(obj, lon, lat); +} + +EAPI Eina_List * +elm_map_overlays_get(const Elm_Map *obj) +{ + return elm_obj_map_overlays_get(obj); +} + +EAPI void +elm_map_tile_load_status_get(const Elm_Map *obj, int *try_num, int *finish_num) +{ + elm_obj_map_tile_load_status_get(obj, try_num, finish_num); +} + +EAPI void +elm_map_source_set(Elm_Map *obj, Elm_Map_Source_Type type, const char *source_name) +{ + elm_obj_map_source_set(obj, type, source_name); +} + +EAPI const char * +elm_map_source_get(const Elm_Map *obj, Elm_Map_Source_Type type) +{ + return elm_obj_map_source_get(obj, type); +} + +EAPI Elm_Map_Route * +elm_map_route_add(Elm_Map *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) +{ + return elm_obj_map_route_add(obj, type, method, flon, flat, tlon, tlat, route_cb, data); +} + +EAPI Efl_Canvas_Object * +elm_map_track_add(Elm_Map *obj, void *emap) +{ + return elm_obj_map_track_add(obj, emap); +} + +EAPI void +elm_map_region_to_canvas_convert(const Elm_Map *obj, double lon, double lat, int *x, int *y) +{ + elm_obj_map_region_to_canvas_convert(obj, lon, lat, x, y); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_circle_add(Elm_Map *obj, double lon, double lat, double radius) +{ + return elm_obj_map_overlay_circle_add(obj, lon, lat, radius); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_class_add(Elm_Map *obj) +{ + return elm_obj_map_overlay_class_add(obj); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_bubble_add(Elm_Map *obj) +{ + return elm_obj_map_overlay_bubble_add(obj); +} + +EAPI const char ** +elm_map_sources_get(const Elm_Map *obj, Elm_Map_Source_Type type) +{ + return elm_obj_map_sources_get(obj, type); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_polygon_add(Elm_Map *obj) +{ + return elm_obj_map_overlay_polygon_add(obj); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_line_add(Elm_Map *obj, double flon, double flat, double tlon, double tlat) +{ + return elm_obj_map_overlay_line_add(obj, flon, flat, tlon, tlat); +} + +EAPI void +elm_map_region_show(Elm_Map *obj, double lon, double lat) +{ + elm_obj_map_region_show(obj, lon, lat); +} + +EAPI Elm_Map_Name * +elm_map_name_add(const Elm_Map *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data) +{ + return elm_obj_map_name_add(obj, address, lon, lat, name_cb, data); +} + +EAPI void +elm_map_name_search(const Elm_Map *obj, const char *address, Elm_Map_Name_List_Cb name_cb, void *data) +{ + elm_obj_map_name_search(obj, address, name_cb, data); +} + +EAPI void +elm_map_region_bring_in(Elm_Map *obj, double lon, double lat) +{ + elm_obj_map_region_bring_in(obj, lon, lat); +} + +EAPI void +elm_map_region_zoom_bring_in(Elm_Map *obj, int zoom, double lon, double lat) +{ + elm_obj_map_region_zoom_bring_in(obj, zoom, lon, lat); +} + +EAPI void +elm_map_track_remove(Elm_Map *obj, Efl_Canvas_Object *route) +{ + elm_obj_map_track_remove(obj, route); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_route_add(Elm_Map *obj, const Elm_Map_Route *route) +{ + return elm_obj_map_overlay_route_add(obj, route); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_scale_add(Elm_Map *obj, int x, int y) +{ + return elm_obj_map_overlay_scale_add(obj, x, y); +} + +EAPI Elm_Map_Overlay * +elm_map_overlay_add(Elm_Map *obj, double lon, double lat) +{ + return elm_obj_map_overlay_add(obj, lon, lat); +} + +EAPI void +elm_map_canvas_to_region_convert(const Elm_Map *obj, int x, int y, double *lon, double *lat) +{ + elm_obj_map_canvas_to_region_convert(obj, x, y, lon, lat); +} diff --git a/src/lib/elementary/elm_map_eo.legacy.h b/src/lib/elementary/elm_map_eo.legacy.h new file mode 100644 index 0000000000..cd51009b02 --- /dev/null +++ b/src/lib/elementary/elm_map_eo.legacy.h @@ -0,0 +1,616 @@ +#ifndef _ELM_MAP_EO_LEGACY_H_ +#define _ELM_MAP_EO_LEGACY_H_ + +#ifndef _ELM_MAP_EO_CLASS_TYPE +#define _ELM_MAP_EO_CLASS_TYPE + +typedef Eo Elm_Map; + +#endif + +#ifndef _ELM_MAP_EO_TYPES +#define _ELM_MAP_EO_TYPES + +/** + * @brief Set type of a external source (provider). + * + * See @ref elm_map_sources_get() See @ref elm_map_source_get() See + * @ref elm_map_source_set() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_SOURCE_TYPE_TILE = 0, /**< Map tile provider. */ + ELM_MAP_SOURCE_TYPE_ROUTE, /**< Route service provider. */ + ELM_MAP_SOURCE_TYPE_NAME, /**< Name service provider. */ + ELM_MAP_SOURCE_TYPE_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Map_Source_Type; + +/** + * @brief Set type of transport used on route. + * + * See @ref elm_map_route_add() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_ROUTE_TYPE_MOTOCAR = 0, /**< Route should consider an automobile will + * be used. */ + ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used + * by the user. */ + ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */ + ELM_MAP_ROUTE_TYPE_LAST /**< Sentinel value to indicate last enum field during + * iteration */ +} Elm_Map_Route_Type; + +/** + * @brief Set the routing method, what should be prioritized, time or distance. + * + * See @ref elm_map_route_add() + * + * @ingroup Elm_Map + */ +typedef enum +{ + ELM_MAP_ROUTE_METHOD_FASTEST = 0, /**< Route should prioritize time. */ + ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should prioritize distance. */ + ELM_MAP_ROUTE_METHOD_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Map_Route_Method; + + +#endif + +/** + * @brief Set the minimum zoom of the source. + * + * @param[in] obj The object. + * @param[in] zoom Minimum zoom value to be used. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_zoom_min_set(Elm_Map *obj, int zoom); + +/** + * @brief Get the minimum zoom of the source. + * + * @param[in] obj The object. + * + * @return Minimum zoom value to be used. + * + * @ingroup Elm_Map_Group + */ +EAPI int elm_map_zoom_min_get(const Elm_Map *obj); + +/** + * @brief Rotate the map. + * + * @param[in] obj The object. + * @param[in] degree Angle from 0.0 to 360.0 to rotate around Z axis. + * @param[in] cx Rotation's center horizontal position. + * @param[in] cy Rotation's center vertical position. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_rotate_set(Elm_Map *obj, double degree, int cx, int cy); + +/** + * @brief Get the rotate degree of the map. + * + * @param[in] obj The object. + * @param[out] degree Angle from 0.0 to 360.0 to rotate around Z axis. + * @param[out] cx Rotation's center horizontal position. + * @param[out] cy Rotation's center vertical position. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_rotate_get(const Elm_Map *obj, double *degree, int *cx, int *cy); + +/** + * @brief 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 clientserver distributed computing system + * + * The @c user_agent identification string will transmitted in a header field + * @c User-Agent. + * + * @param[in] obj The object. + * @param[in] user_agent The user agent to be used by the map. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_user_agent_set(Elm_Map *obj, const char *user_agent); + +/** + * @brief Get the user agent used by the map object. + * + * @param[in] obj The object. + * + * @return The user agent to be used by the map. + * + * @ingroup Elm_Map_Group + */ +EAPI const char *elm_map_user_agent_get(const Elm_Map *obj); + +/** + * @brief Set the maximum zoom of the source. + * + * @param[in] obj The object. + * @param[in] zoom Maximum zoom value to be used. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_zoom_max_set(Elm_Map *obj, int zoom); + +/** + * @brief Get the maximum zoom of the source. + * + * @param[in] obj The object. + * + * @return Maximum zoom value to be used. + * + * @ingroup Elm_Map_Group + */ +EAPI int elm_map_zoom_max_get(const Elm_Map *obj); + +/** + * @brief Get the current geographic coordinates of the map. + * + * This gets the current center coordinates of the map object. It can be set by + * @ref elm_map_region_bring_in and @ref elm_map_region_show. + * + * @param[in] obj The object. + * @param[out] lon Pointer to store longitude. + * @param[out] lat Pointer to store latitude. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_region_get(const Elm_Map *obj, double *lon, double *lat); + +/** + * @brief Return all overlays in the map object. + * + * This list includes group overlays also. So this can be changed dynamically + * while zooming and panning. + * + * @param[in] obj The object. + * + * @return The list of all overlays or @c null upon failure. + * + * @since 1.7 + * + * @ingroup Elm_Map_Group + */ +EAPI Eina_List *elm_map_overlays_get(const Elm_Map *obj); + +/** + * @brief Get the information of tile load status. + * + * This gets the current tile loaded status for the map object. + * + * @param[in] obj The object. + * @param[out] try_num Pointer to store number of tiles download requested. + * @param[out] finish_num Pointer to store number of tiles successfully + * downloaded. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_tile_load_status_get(const Elm_Map *obj, int *try_num, int *finish_num); + +/** + * @brief 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 @c source_name need to match one of the names provided by + * @ref elm_map_sources_get. + * + * The current source can be get using @ref elm_map_source_get. + * + * @param[in] obj The object. + * @param[in] type Source type. + * @param[in] source_name The source to be used. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_source_set(Elm_Map *obj, Elm_Map_Source_Type type, const char *source_name); + +/** + * @brief Get the name of currently used source for a specific type. + * + * @param[in] obj The object. + * @param[in] type Source type. + * + * @return The name of the source in use. + * + * @ingroup Elm_Map_Group + */ +EAPI const char *elm_map_source_get(const Elm_Map *obj, Elm_Map_Source_Type type); + +/** + * @brief Add a new route to the map object. + * + * A route will be traced by point on coordinates ($flat, @c flon) to point on + * coordinates ($tlat, @c tlon), using the route service set with + * @ref elm_map_source_set. + * + * It will take @c 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 @c 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 @ref elm_map_route_del + * and distance can be get with @ref elm_map_route_distance_get. + * + * @param[in] obj The object. + * @param[in] type The type of transport to be considered when tracing a route. + * @param[in] method The routing method, what should be prioritized. + * @param[in] flon The start longitude. + * @param[in] flat The start latitude. + * @param[in] tlon The destination longitude. + * @param[in] tlat The destination latitude. + * @param[in] route_cb The route to be traced. + * @param[in] data A pointer of user data. + * + * @return The created route or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Route *elm_map_route_add(Elm_Map *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); + +/** + * @brief Add a track on the map. + * + * @param[in] obj The object. + * @param[in] emap The emap route object. + * + * @return The route object. This is an elm object of type Route. + * + * @ingroup Elm_Map_Group + */ +EAPI Efl_Canvas_Object *elm_map_track_add(Elm_Map *obj, void *emap); + +/** + * @brief 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. + * + * @param[in] obj The object. + * @param[in] lon The longitude to convert. + * @param[in] lat The latitude to convert. + * @param[out] x A pointer to horizontal coordinate. + * @param[out] y A pointer to vertical coordinate. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_region_to_canvas_convert(const Elm_Map *obj, double lon, double lat, int *x, int *y); + +/** + * @brief Add a new circle overlay to the map object. This overlay has a circle + * type. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] lon The center longitude. + * @param[in] lat The center latitude. + * @param[in] radius The pixel length of radius. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_circle_add(Elm_Map *obj, double lon, double lat, double radius); + +/** + * @brief Add a new class overlay to the map object. This overlay has a class + * type. + * + * 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. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_class_add(Elm_Map *obj); + +/** + * @brief Add a new bubble overlay to the map object. This overlay has a bubble + * type. + * + * 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 @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_bubble_add(Elm_Map *obj); + +/** + * @brief Get the names of available sources for a specific type. + * + * It will provide a list with all available sources. Current source can be set + * by @ref elm_map_source_set, or get with @ref elm_map_source_get. + * + * At least available sources of tile type are "Mapnik", "Osmarender", + * "CycleMap" and "Maplint". + * + * At least available sources of route type are "Yours". + * + * At least available sources of name type are "Nominatim". + * + * @param[in] obj The object. + * @param[in] type Source type. + * + * @return The char pointer array of source names. + * + * @ingroup Elm_Map_Group + */ +EAPI const char **elm_map_sources_get(const Elm_Map *obj, Elm_Map_Source_Type type); + +/** + * @brief Add a new polygon overlay to the map object. This overlay has a + * polygon type. + * + * At least 3 regions should be added to show the polygon overlay. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_polygon_add(Elm_Map *obj); + +/** + * @brief Add a new line overlay to the map object. This overlay has a line + * type. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] flon The start longitude. + * @param[in] flat The start latitude. + * @param[in] tlon The destination longitude. + * @param[in] tlat The destination latitude. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_line_add(Elm_Map *obj, double flon, double flat, double tlon, double tlat); + +/** + * @brief Show the given coordinates at the center of the map, immediately. + * + * This causes map to redraw its viewport's contents to the region containing + * the given @c lat and @c lon, that will be moved to the center of the map. + * + * See @ref elm_map_region_bring_in for a function to move with animation. + * + * @param[in] obj The object. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_region_show(Elm_Map *obj, double lon, double lat); + +/** + * @brief Request a address or geographic coordinates(longitude, latitude) from + * a given address or geographic coordinate(longitude, latitude). + * + * If you want to get address from geographic coordinates, set input @c address + * as @c null and set @c lon, @c lat as you want to convert. If address is set + * except NULL, @c lon and @c lat are checked. + * + * To get the string for this address, @ref elm_map_name_address_get should be + * used after callback or "name,loaded" signal is called. + * + * To get the longitude and latitude, @ref elm_map_region_get should be used. + * + * @param[in] obj The object. + * @param[in] address The address. + * @param[in] lon The longitude. + * @param[in] lat The latitude. + * @param[in] name_cb The callback function. + * @param[in] data The user callback data. + * + * @return A #Elm_Map_Name handle for this coordinate. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Name *elm_map_name_add(const Elm_Map *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data); + +/** + * @brief Requests a list of addresses corresponding to a given name. + * + * @internal + * + * @param[in] obj The object. + * @param[in] address The address. + * @param[in] name_cb The callback function. + * @param[in] data The user callback data. + * + * @since 1.8 + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_name_search(const Elm_Map *obj, const char *address, Elm_Map_Name_List_Cb name_cb, void *data); + +/** + * @brief Animatedly bring in given coordinates to the center of the map. + * + * This causes map to jump to the given @c lat and @c 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 @ref elm_map_region_show for a function to avoid animation. + * + * @param[in] obj The object. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_region_bring_in(Elm_Map *obj, double lon, double lat); + +/** + * @brief Animatedly set the zoom level of the map and bring in given + * coordinates to the center of the map. + * + * This causes map to zoom into specific zoom level and also move to the given + * @c lat and @c lon coordinates and show it (by scrolling) in the center of + * the viewport concurrently. + * + * See also @ref elm_map_region_bring_in. + * + * @param[in] obj The object. + * @param[in] zoom The zoom level to set. + * @param[in] lon Longitude to center at. + * @param[in] lat Latitude to center at. + * + * @since 1.11 + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_region_zoom_bring_in(Elm_Map *obj, int zoom, double lon, double lat); + +/** + * @brief Remove a track from the map. + * + * @param[in] obj The object. + * @param[in] route The track to remove. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_track_remove(Elm_Map *obj, Efl_Canvas_Object *route); + +/** + * @brief Add a new route overlay to the map object. This overlay has a route + * type. + * + * This overlay has a route style layout and icon or content can not be set. + * + * The color scheme can be changed by @ref elm_map_overlay_content_set. + * + * Overlay created with this method can be deleted with @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] route The route object to make a overlay. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_route_add(Elm_Map *obj, const Elm_Map_Route *route); + +/** + * @brief Add a new scale overlay to the map object. This overlay has a scale + * type. + * + * 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 @ref + * elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] x horizontal pixel coordinate. + * @param[in] y vertical pixel coordinate. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_scale_add(Elm_Map *obj, int x, int y); + +/** + * @brief Add a new overlay to the map object. This overlay has a default type. + * + * A overlay will be created and shown in a specific point of the map, defined + * by @c lon and @c 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 @ref elm_map_overlay_content_set or @ref + * elm_map_overlay_icon_set. If @c null is set, default style is shown again. + * + * Overlay created with this method can be deleted by @ref elm_map_overlay_del. + * + * @param[in] obj The object. + * @param[in] lon The longitude of the overlay. + * @param[in] lat The latitude of the overlay. + * + * @return The created overlay or @c null upon failure. + * + * @ingroup Elm_Map_Group + */ +EAPI Elm_Map_Overlay *elm_map_overlay_add(Elm_Map *obj, double lon, double lat); + +/** + * @brief 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. + * + * @param[in] obj The object. + * @param[in] x Horizontal coordinate of the point to convert. + * @param[in] y Vertical coordinate of the point to convert. + * @param[out] lon A pointer to the longitude. + * @param[out] lat A pointer to the latitude. + * + * @ingroup Elm_Map_Group + */ +EAPI void elm_map_canvas_to_region_convert(const Elm_Map *obj, int x, int y, double *lon, double *lat); + +#endif diff --git a/src/lib/elementary/elm_map_legacy.h b/src/lib/elementary/elm_map_legacy.h index 758d66114b..37fffcb737 100644 --- a/src/lib/elementary/elm_map_legacy.h +++ b/src/lib/elementary/elm_map_legacy.h @@ -172,4 +172,4 @@ EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused); */ EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj); -#include "elm_map.eo.legacy.h" +#include "elm_map_eo.legacy.h" diff --git a/src/lib/elementary/elm_map_pan.eo b/src/lib/elementary/elm_map_pan.eo deleted file mode 100644 index 61684b6ecb..0000000000 --- a/src/lib/elementary/elm_map_pan.eo +++ /dev/null @@ -1,34 +0,0 @@ -class Elm.Map.Pan extends Elm.Pan -{ - [[Elementary map pan class]] - legacy_prefix: elm_map_pan; - eo_prefix: elm_obj_map_pan; - event_prefix: elm_map_pan; - implements { - class.constructor; - Efl.Object.destructor; - Efl.Gfx.Entity.position { set; } - Efl.Gfx.Entity.size { set; } - Efl.Canvas.Group.group_calculate; - Elm.Pan.content_size { get; } - Elm.Pan.pos { get; set; } - Elm.Pan.pos_min { get; } - Elm.Pan.pos_max { get; } - } - events { - /* FIXME: Nobody is emitting these - loaded; [[Called when map loaded]] - tile,load; [[Called when map tile loading started]] - tile,loaded; [[Called when map tile loading finished]] - tile,loaded,fail; [[Called when map tile loading failed]] - route,load; [[Called when route loiding started]] - route,loaded; [[Called when route loading finsihed]] - route,loaded,fail; [[Called when route loading failed]] - name,load; [[Called when name loading started]] - name,loaded; [[Called when name loading finished]] - name,loaded,fail; [[Called when name loading failed]] - overlay,clicked; [[Called when overlay was clicked]] - overlay,del; [[Called when overlay was deleted]] - */ - } -} diff --git a/src/lib/elementary/elm_map_pan_eo.c b/src/lib/elementary/elm_map_pan_eo.c new file mode 100644 index 0000000000..6b249ccaf8 --- /dev/null +++ b/src/lib/elementary/elm_map_pan_eo.c @@ -0,0 +1,67 @@ + +void _elm_map_pan_efl_object_destructor(Eo *obj, Elm_Map_Pan_Data *pd); + + +void _elm_map_pan_efl_gfx_entity_position_set(Eo *obj, Elm_Map_Pan_Data *pd, Eina_Position2D pos); + + +void _elm_map_pan_efl_gfx_entity_size_set(Eo *obj, Elm_Map_Pan_Data *pd, Eina_Size2D size); + + +void _elm_map_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Map_Pan_Data *pd); + + +void _elm_map_pan_elm_pan_content_size_get(const Eo *obj, Elm_Map_Pan_Data *pd, int *w, int *h); + + +void _elm_map_pan_elm_pan_pos_set(Eo *obj, Elm_Map_Pan_Data *pd, int x, int y); + + +void _elm_map_pan_elm_pan_pos_get(const Eo *obj, Elm_Map_Pan_Data *pd, int *x, int *y); + + +void _elm_map_pan_elm_pan_pos_min_get(const Eo *obj, Elm_Map_Pan_Data *pd, int *x, int *y); + + +void _elm_map_pan_elm_pan_pos_max_get(const Eo *obj, Elm_Map_Pan_Data *pd, int *x, int *y); + + +static Eina_Bool +_elm_map_pan_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_MAP_PAN_EXTRA_OPS +#define ELM_MAP_PAN_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(efl_destructor, _elm_map_pan_efl_object_destructor), + EFL_OBJECT_OP_FUNC(efl_gfx_entity_position_set, _elm_map_pan_efl_gfx_entity_position_set), + EFL_OBJECT_OP_FUNC(efl_gfx_entity_size_set, _elm_map_pan_efl_gfx_entity_size_set), + EFL_OBJECT_OP_FUNC(efl_canvas_group_calculate, _elm_map_pan_efl_canvas_group_group_calculate), + EFL_OBJECT_OP_FUNC(elm_obj_pan_content_size_get, _elm_map_pan_elm_pan_content_size_get), + EFL_OBJECT_OP_FUNC(elm_obj_pan_pos_set, _elm_map_pan_elm_pan_pos_set), + EFL_OBJECT_OP_FUNC(elm_obj_pan_pos_get, _elm_map_pan_elm_pan_pos_get), + EFL_OBJECT_OP_FUNC(elm_obj_pan_pos_min_get, _elm_map_pan_elm_pan_pos_min_get), + EFL_OBJECT_OP_FUNC(elm_obj_pan_pos_max_get, _elm_map_pan_elm_pan_pos_max_get), + ELM_MAP_PAN_EXTRA_OPS + ); + opsp = &ops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_map_pan_class_desc = { + EO_VERSION, + "Elm.Map.Pan", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Map_Pan_Data), + _elm_map_pan_class_initializer, + _elm_map_pan_class_constructor, + NULL +}; + +EFL_DEFINE_CLASS(elm_map_pan_class_get, &_elm_map_pan_class_desc, ELM_PAN_CLASS, NULL); diff --git a/src/lib/elementary/elm_map_pan_eo.h b/src/lib/elementary/elm_map_pan_eo.h new file mode 100644 index 0000000000..be8be64595 --- /dev/null +++ b/src/lib/elementary/elm_map_pan_eo.h @@ -0,0 +1,24 @@ +#ifndef _ELM_MAP_PAN_EO_H_ +#define _ELM_MAP_PAN_EO_H_ + +#ifndef _ELM_MAP_PAN_EO_CLASS_TYPE +#define _ELM_MAP_PAN_EO_CLASS_TYPE + +typedef Eo Elm_Map_Pan; + +#endif + +#ifndef _ELM_MAP_PAN_EO_TYPES +#define _ELM_MAP_PAN_EO_TYPES + + +#endif +/** Elementary map pan class + * + * @ingroup Elm_Map_Pan + */ +#define ELM_MAP_PAN_CLASS elm_map_pan_class_get() + +EWAPI const Efl_Class *elm_map_pan_class_get(void); + +#endif diff --git a/src/lib/elementary/elm_map_pan_eo.legacy.h b/src/lib/elementary/elm_map_pan_eo.legacy.h new file mode 100644 index 0000000000..d78a3571e9 --- /dev/null +++ b/src/lib/elementary/elm_map_pan_eo.legacy.h @@ -0,0 +1,17 @@ +#ifndef _ELM_MAP_PAN_EO_LEGACY_H_ +#define _ELM_MAP_PAN_EO_LEGACY_H_ + +#ifndef _ELM_MAP_PAN_EO_CLASS_TYPE +#define _ELM_MAP_PAN_EO_CLASS_TYPE + +typedef Eo Elm_Map_Pan; + +#endif + +#ifndef _ELM_MAP_PAN_EO_TYPES +#define _ELM_MAP_PAN_EO_TYPES + + +#endif + +#endif diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index d16831a629..e2d72b7830 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -1,7 +1,5 @@ pub_legacy_eo_files = [ 'efl_ui_clock_legacy.eo', - 'elm_map.eo', - 'elm_map_pan.eo', 'elm_menu.eo', 'elm_notify.eo', 'elm_panel.eo', @@ -769,6 +767,10 @@ elementary_pub_headers = [ 'elm_list_item_eo.legacy.h', 'elm_mapbuf_eo.h', 'elm_mapbuf_eo.legacy.h', + 'elm_map_eo.h', + 'elm_map_eo.legacy.h', + 'elm_map_pan_eo.h', + 'elm_map_pan_eo.legacy.h', ] elementary_header_src = [