summaryrefslogtreecommitdiffstats
path: root/friendfinder/draw_user.c
diff options
context:
space:
mode:
Diffstat (limited to 'friendfinder/draw_user.c')
-rw-r--r--friendfinder/draw_user.c69
1 files changed, 65 insertions, 4 deletions
diff --git a/friendfinder/draw_user.c b/friendfinder/draw_user.c
index d9c493a..1594ecf 100644
--- a/friendfinder/draw_user.c
+++ b/friendfinder/draw_user.c
@@ -1,11 +1,18 @@
+#include "math.h"
+
#include "Evas.h"
#include "Elementary.h"
#include "receiver.h"
#include "gui.h"
+#include "util/projection.h"
+#include "map/smart_map_priv.h"
int _h= 600;
int _w = 450;
+int _distance = 250;
+int active_map = 0;
+double own_lat, own_lon;
Evas_Object *win, *map;
@@ -15,12 +22,66 @@ void init_draw_user(Evas_Object *_win, Evas_Object *_map)
map = _map;
}
+void enable_map_bubbles()
+{
+ active_map = 1;
+}
+
+void disable_map_bubbles()
+{
+ active_map = 0;
+}
+
+void set_dist(int distance)
+{
+ _distance = distance;
+}
+
void draw_user(struct position *pos)
{
- double lat, lon;
- lat = atof(pos->lat);
- lon = atof(pos->lon);
+ int *e = NULL, *n = NULL, *own_e = NULL, *own_n = NULL;
+
+ double old_lat, old_lon, sender_lat, sender_lon;
+ sender_lat = atof(pos->lat);
+ sender_lon = atof(pos->lon);
- e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, lat, lon, 0xffffffff);
+ if (active_map == 1 && test_distance(sender_lat, sender_lon, e, n, own_lat, own_lon, own_e, own_n) == 1)
+ {
+ old_lat = sender_lat;
+ old_lon = sender_lon;
+
+ if (old_lat != sender_lat || old_lon != sender_lon)
+ {
+ e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, sender_lon, sender_lat, 0xffffffff);
+ }
+ }
+
}
+int test_distance(double lat, double lon, int e, int n, double own_lat, double own_lon, int own_e, int own_n)
+{
+ project_latlon(lat, lon, &e, &n, PROJECTION_UTM);
+ project_latlon(own_lat, own_lon, &own_e, &own_n, PROJECTION_UTM);
+
+// printf("sender lat: %f || sender lon: %f || sender easting: %i || sender northing: %i \n", lat, lon, e, n);
+// printf("own lat: %f || own lon: %f || own easting: %i || own northing: %i \n", own_lat, own_lon, own_e, own_n);
+
+ if (e != NULL && n !=NULL && own_n != NULL && own_e != NULL)
+ {
+ double x = sqrt(((e - own_e)*(e - own_e) + (n - own_n)*(n - own_n)));
+
+ printf("x: %f distance: %i \n", x, _distance);
+
+ if (x <= _distance)
+ {
+ return 1;
+ }
+ else return 0;
+ }
+}
+
+void get_own_position(double lat, double lon)
+{
+ own_lat = lat;
+ own_lon = lon;
+}