1 #ifndef ELM_WIDGET_ROUTE_H
2 #define ELM_WIDGET_ROUTE_H
4 /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
5 * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
6 * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
15 * @section elm-route-class The Elementary Route Class
17 * Elementary, besides having the @ref Route widget, exposes its
18 * foundation -- the Elementary Route Class -- in order to create other
19 * widgets which are a route with some more logic on top.
23 * Base widget smart data extended with route instance data.
25 typedef struct _Elm_Route_Data Elm_Route_Data;
26 typedef struct Segment Segment;
28 struct _Elm_Route_Data
34 double lon_min, lon_max;
35 double lat_min, lat_max;
37 Eina_List *segments; //list of *Segment
39 Eina_Bool must_calc_segments : 1;
47 EMap_Route_Node *node_start;
48 EMap_Route_Node *node_end;
51 double start_x, start_y;
54 Eina_Bool must_calc : 1;
60 #define ELM_ROUTE_DATA_GET(o, sd) \
61 Elm_Route_Data * sd = eo_data_scope_get(o, ELM_ROUTE_CLASS)
63 #define ELM_ROUTE_DATA_GET_OR_RETURN(o, ptr) \
64 ELM_ROUTE_DATA_GET(o, ptr); \
65 if (EINA_UNLIKELY(!ptr)) \
67 CRI("No widget data for object %p (%s)", \
68 o, evas_object_type_get(o)); \
72 #define ELM_ROUTE_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
73 ELM_ROUTE_DATA_GET(o, ptr); \
74 if (EINA_UNLIKELY(!ptr)) \
76 CRI("No widget data for object %p (%s)", \
77 o, evas_object_type_get(o)); \
81 #define ELM_ROUTE_CHECK(obj) \
82 if (EINA_UNLIKELY(!eo_isa((obj), ELM_ROUTE_CLASS))) \