From 3b2ad2bc99cae7264c5f90d60468ddffd032f295 Mon Sep 17 00:00:00 2001 From: sangho park Date: Fri, 29 Apr 2011 10:24:05 +0900 Subject: [PATCH] [upstream merge] Elementary map: change evas_object_line (route) to evas_object_polygon Change-Id: I9e5f99cf3a0ff2fda934818d2f04dc7f34c68dfd --- src/lib/elm_map.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c index 08461d6..42bf3b6 100644 --- a/src/lib/elm_map.c +++ b/src/lib/elm_map.c @@ -757,6 +757,7 @@ route_place(Evas_Object *obj, Grid *g __UNUSED__, Evas_Coord px, Evas_Coord py, Elm_Map_Route *r; int nodes; int x, y, rx, ry; + double a; if (!wd) return; Evas_Coord size = pow(2.0, wd->zoom)*wd->tsize; @@ -765,7 +766,7 @@ route_place(Evas_Object *obj, Grid *g __UNUSED__, Evas_Coord px, Evas_Coord py, { EINA_LIST_FOREACH(r->path, lp, p) { - evas_object_hide(p); + evas_object_polygon_points_clear(p); } evas_object_geometry_get(wd->rect, &rx, &ry, NULL, NULL); @@ -785,7 +786,22 @@ route_place(Evas_Object *obj, Grid *g __UNUSED__, Evas_Coord px, Evas_Coord py, y = y - py + ry; p = eina_list_nth(r->path, n->idx); - evas_object_line_xy_set(p, r->x, r->y, x, y); + a = (double)(y - r->y) / (double)(x - r->x); + if ((abs(a) >= 1) || (r->x == x)) + { + evas_object_polygon_point_add(p, r->x - 3, r->y); + evas_object_polygon_point_add(p, r->x + 3, r->y); + evas_object_polygon_point_add(p, x + 3, y); + evas_object_polygon_point_add(p, x - 3, y); + } + else + { + evas_object_polygon_point_add(p, r->x, r->y - 3); + evas_object_polygon_point_add(p, r->x, r->y + 3); + evas_object_polygon_point_add(p, x, y + 3); + evas_object_polygon_point_add(p, x, y - 3); + } + evas_object_color_set(p, r->color.r, r->color.g, r->color.b, r->color.a); evas_object_raise(p); obj_rotate_zoom(obj, p); @@ -1482,14 +1498,14 @@ zoom_do(Evas_Object *obj) if (wd->center_on.enabled) { - elm_map_utils_convert_geo_into_coord(obj, wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy); - xx -= ow / 2; - yy -= oh / 2; + elm_map_utils_convert_geo_into_coord(obj, wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy); + xx -= ow / 2; + yy -= oh / 2; } else { - xx = (wd->size.spos.x * wd->size.w) - (ow / 2); - yy = (wd->size.spos.y * wd->size.h) - (oh / 2); + xx = (wd->size.spos.x * wd->size.w) - (ow / 2); + yy = (wd->size.spos.y * wd->size.h) - (oh / 2); } @@ -1748,7 +1764,6 @@ _mouse_multi_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__ if (!wd->rotate.a) wd->rotate.a = a; else { - a_diff = wd->rotate.a - a; if (a_diff > 0) wd->rotate.d -= 1.0; else if (a_diff < 0) wd->rotate.d += 1.0; @@ -1775,7 +1790,7 @@ _mouse_multi_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, Event *ev0; Event *ev; Eina_Bool tp; - double t; + double t = 0.0; wd->multi_count--; if (wd->calc_job) ecore_job_del(wd->calc_job); @@ -2812,7 +2827,7 @@ _parse_kml(void *data) n->pos.address = NULL; r->nodes = eina_list_append(r->nodes, n); - path = evas_object_line_add(evas_object_evas_get(r->wd->obj)); + path = evas_object_polygon_add(evas_object_evas_get(r->wd->obj)); evas_object_smart_member_add(path, r->wd->pan_smart); r->path = eina_list_append(r->path, path); } @@ -3164,7 +3179,7 @@ elm_map_zoom_set(Evas_Object *obj, int zoom) { EINA_LIST_FOREACH(r->path, l, p) { - evas_object_hide(p); + evas_object_polygon_points_clear(p); } } } @@ -3273,13 +3288,13 @@ done: wd->t_end = wd->t_start + _elm_config->zoom_friction; if ((wd->size.w > 0) && (wd->size.h > 0)) { - wd->size.spos.x = (double)(rx + (rw / 2)) / (double)wd->size.ow; - wd->size.spos.y = (double)(ry + (rh / 2)) / (double)wd->size.oh; + wd->size.spos.x = (double)(rx + (rw / 2)) / (double)wd->size.ow; + wd->size.spos.y = (double)(ry + (rh / 2)) / (double)wd->size.oh; } else { - wd->size.spos.x = 0.5; - wd->size.spos.y = 0.5; + wd->size.spos.x = 0.5; + wd->size.spos.y = 0.5; } if (rw > wd->size.ow) wd->size.spos.x = 0.5; if (rh > wd->size.oh) wd->size.spos.y = 0.5; @@ -5028,7 +5043,7 @@ elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) evas_object_event_callback_del_full(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj); else if ((wd->wheel_disabled) && (!disabled)) evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj); - wd->wheel_disabled = disabled; + wd->wheel_disabled = !!disabled; } /** -- 2.7.4