void show_window6() { GtkWidget *dialog; GtkWidget *entry14, *entry15, *combobox2; double lat, lon, lat_deg, lon_deg; char buf[64]; printf("*** %s(): \n",__PRETTY_FUNCTION__); dialog = create_window6(); gtk_widget_show(dialog); new_dialog = TRUE; lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); lat_deg = rad2deg(lat); lon_deg = rad2deg(lon); entry14 = lookup_widget(dialog, "entry14"); entry15 = lookup_widget(dialog, "entry15"); g_sprintf(buf, "%f", lat_deg); gtk_entry_set_text(GTK_ENTRY(entry14), buf); g_sprintf(buf, "%f", lon_deg); gtk_entry_set_text(GTK_ENTRY(entry15), buf); combobox2 = lookup_widget(dialog, "combobox2"); gtk_combo_box_set_active(GTK_COMBO_BOX(combobox2), 0); }
void mercator_offset(int zoom, int pixel_x, int pixel_y, int* mercator_x, int* mercator_y) { //--------------Yandex repository offset ------------------------ { float lat=rad2deg(pixel2lat((float)zoom,pixel_y)); float lon=rad2deg(pixel2lon((float)zoom,pixel_x)); //----Shmuma autor--- float tmp = tan (M_PI_4 + deg2rad (lat) / 2.0); float pow_tmp = pow (tan (M_PI_4 + asin (YANDEX_E * sin (deg2rad (lat))) / 2.0), YANDEX_E); *mercator_x = (int)((YANDEX_Rn * deg2rad (lon) + YANDEX_A) * YANDEX_F)>>(23-zoom); *mercator_y = (int)((YANDEX_A - (YANDEX_Rn * log (tmp / pow_tmp))) * YANDEX_F)>>(23-zoom); } //--------------Yandex repository offset ------------------------ }
void show_window6() { GladeXML *gladexml; GtkWidget *dialog; GtkWidget *entry14, *entry15, *combobox2; double lat, lon, lat_deg, lon_deg; char buf[64]; gladexml = glade_xml_new (gladefile, "window6", GETTEXT_PACKAGE); glade_xml_signal_autoconnect (gladexml); dialog = glade_xml_get_widget (gladexml, "window6"); g_signal_connect_swapped (dialog, "destroy", G_CALLBACK (g_object_unref), gladexml); gtk_widget_show(dialog); new_dialog = TRUE; lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); lat_deg = rad2deg(lat); lon_deg = rad2deg(lon); entry14 = lookup_widget(dialog, "entry14"); entry15 = lookup_widget(dialog, "entry15"); g_sprintf(buf, "%f", lat_deg); gtk_entry_set_text(GTK_ENTRY(entry14), buf); g_sprintf(buf, "%f", lon_deg); gtk_entry_set_text(GTK_ENTRY(entry15), buf); combobox2 = lookup_widget(dialog, "combobox2"); gtk_combo_box_set_active(GTK_COMBO_BOX(combobox2), 0); }
void show_poi_detail() { GtkWidget *window, *widget; GtkWidget *label; GSList *list; gchar *buffer = NULL, *buffer2 = NULL; gboolean poi_found = FALSE; float lat, lon; float distance=0; waypoint_t *wp = g_new0(waypoint_t, 1); poi_t *p, *this_poi = NULL; GladeXML *gladexml = glade_xml_new (gladefile, "window5", GETTEXT_PACKAGE); glade_xml_signal_autoconnect (gladexml); window = glade_xml_get_widget (gladexml, "window5"); g_signal_connect_swapped (window, "destroy", G_CALLBACK (g_object_unref), gladexml); lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); if(gpsdata !=NULL && !global_myposition.lat && !global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(gpsdata->fix.latitude)) * sin(lat) + cos(deg2rad(gpsdata->fix.latitude)) * cos(lat) * cos(lon - deg2rad(gpsdata->fix.longitude)) ); } else if(global_myposition.lat && global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(global_myposition.lat)) * sin(lat) + cos(deg2rad(global_myposition.lat)) * cos(lat) * cos(lon - deg2rad(global_myposition.lon)) ); } label = lookup_widget(window,"label110"); for(list = poi_list; list != NULL; list = list->next) { p = list->data; if(abs(p->screen_x - mouse_x) < 12 && abs(p->screen_y - mouse_y) < 12 ) { buffer = g_strdup_printf( "<b>%s</b> ", my_strescape_back(p->keywords,NULL)); buffer2 = g_strdup_printf (_("%s\n\nDistance: %.3fkm"), my_strescape_back(p->desc,NULL), distance); poi_found = TRUE; wp->lat = deg2rad(p->lat_deg); wp->lon = deg2rad(p->lon_deg); this_poi = list->data; } } if(!poi_found) buffer = g_strdup (_("<b>No POI found</b>\n")); gtk_label_set_label(GTK_LABEL(label),buffer); label = lookup_widget(window,"label111"); gtk_label_set_label(GTK_LABEL(label), buffer2); widget = lookup_widget(window, "button27"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button27_clicked), (gpointer) wp); if (this_poi != NULL) { this_poi->widget = window; widget = lookup_widget(window, "button33"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button33_clicked), (gpointer) this_poi); widget = lookup_widget(window, "button34"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button34_clicked), (gpointer) this_poi); } gtk_widget_show(window); }
void show_poi_detail() { GtkWidget *window, *widget; GtkWidget *label; GSList *list; gchar *buffer = NULL, *buffer2 = NULL; gboolean poi_found = FALSE; float lat, lon,lat_deg,lon_deg; float distance=0; waypoint_t *wp = g_new0(waypoint_t, 1); poi_t *p, *this_poi = NULL; window = create_window5(); printf("screen x,y: %d %d \n",mouse_x, mouse_y); lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); lat_deg = rad2deg(lat); lon_deg = rad2deg(lon); printf ("##### Lonitude: %f %f - %f %f \n", lat, lon, lat_deg, lon_deg); if(gpsdata !=NULL && !global_myposition.lat && !global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(gpsdata->fix.latitude)) * sin(lat) + cos(deg2rad(gpsdata->fix.latitude)) * cos(lat) * cos(lon - deg2rad(gpsdata->fix.longitude)) ); } else if(global_myposition.lat && global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(global_myposition.lat)) * sin(lat) + cos(deg2rad(global_myposition.lat)) * cos(lat) * cos(lon - deg2rad(global_myposition.lon)) ); } printf("*** %s(): \n",__PRETTY_FUNCTION__); label = lookup_widget(window,"label110"); for(list = poi_list; list != NULL; list = list->next) { p = list->data; printf("\n\nPIXEL POI: %d %d \n\n",p->screen_x,p->screen_y); if(abs(p->screen_x - mouse_x) < 12 && abs(p->screen_y - mouse_y) < 12 ) { printf("FOUND POI X: %d %d %s\n",p->screen_x, mouse_x, my_strescape_back(p->keywords,NULL)); buffer = g_strdup_printf( "<b>%s</b> ", my_strescape_back(p->keywords,NULL)); buffer2 = g_strdup_printf("%s \n\nDistance: %.3fkm ", my_strescape_back(p->desc,NULL), distance); printf("%s %s \n",buffer, buffer2); poi_found = TRUE; wp->lat = deg2rad(p->lat_deg); wp->lon = deg2rad(p->lon_deg); this_poi = list->data; } } if(!poi_found) g_sprintf(buffer, "<b>No POI found</b>\n"); gtk_label_set_label(GTK_LABEL(label),buffer); label = lookup_widget(window,"label111"); gtk_label_set_label(GTK_LABEL(label), buffer2); widget = lookup_widget(window, "button27"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button27_clicked), (gpointer) wp); if (this_poi != NULL) { this_poi->widget = window; widget = lookup_widget(window, "button33"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button33_clicked), (gpointer) this_poi); widget = lookup_widget(window, "button34"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button34_clicked), (gpointer) this_poi); } gtk_widget_show(window); }
void * update_position_thread(void *ptr) { int i=1; GtkEntry *nick, *pass, *msg; GtkLabel *label_msg; const gchar *n, *p, *m; gchar *ff_mode; static gchar lat[64], lon[64], mode[64]; static gchar alt[16] = "0", speed[16] = "0", head[16]="0"; gchar **user_data_sets; long int response_code; CURL *curl_handle; struct curl_httppost *formdata=NULL; struct curl_httppost *lastptr=NULL; struct mem_struct chunk; chunk.memory=NULL; chunk.size = 0; gdk_threads_enter(); label_msg = (GtkLabel *)lookup_widget(window1, "label51"); nick = (GtkEntry *)lookup_widget(window1, "entry7"); pass = (GtkEntry *)lookup_widget(window1, "entry8"); msg = (GtkEntry *)lookup_widget(window1, "entry29"); switch (global_ff_mode) { case PRIVATE_MODE: ff_mode = g_strdup("private"); break; case FRIEND_MODE: ff_mode = g_strdup("friends"); break; case FUN_MODE: ff_mode = g_strdup("fun"); break; default: ff_mode = g_strdup(""); } n = gtk_entry_get_text(nick); p = gtk_entry_get_text(pass); m = gtk_entry_get_text(msg); gdk_threads_leave(); if (global_myposition.lat && global_myposition.lon) { g_sprintf(lat, "%f", global_myposition.lat); g_sprintf(lon, "%f", global_myposition.lon); g_sprintf(mode, "%s|%dx%d", "man", global_drawingarea_width, global_drawingarea_height); } else if (gpsdata && gpsdata->fix.latitude !=0) { g_sprintf(lat, "%f", gpsdata->fix.latitude); g_sprintf(lon, "%f", gpsdata->fix.longitude); g_sprintf(mode, "%s|%dx%d", "gps", global_drawingarea_width, global_drawingarea_height); } else { float tmplat, tmplon; tmplat = rad2deg( pixel2lat(global_zoom, global_y+global_drawingarea_height/2) ); tmplon = rad2deg( pixel2lon(global_zoom, global_x+global_drawingarea_width/2) ); g_sprintf(lat, "%f", tmplat); g_sprintf(lon, "%f", tmplon); g_sprintf(mode, "%s|%dx%d", "atm", global_drawingarea_width, global_drawingarea_height); } if(gpsdata) { g_snprintf(alt, 16, "%.1f", gpsdata->fix.altitude); g_snprintf(head, 16, "%.1f", gpsdata->fix.heading); g_snprintf(speed, 16, "%.1f", gpsdata->fix.speed); } curl_global_init(CURL_GLOBAL_ALL); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "lat", CURLFORM_COPYCONTENTS, lat, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "lon", CURLFORM_COPYCONTENTS, lon, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "alt", CURLFORM_COPYCONTENTS, alt, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "head", CURLFORM_COPYCONTENTS, head, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "speed", CURLFORM_COPYCONTENTS, speed, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "mode", CURLFORM_COPYCONTENTS, mode, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "ff_mode", CURLFORM_COPYCONTENTS, ff_mode, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "nick", CURLFORM_COPYCONTENTS, n, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "pass", CURLFORM_COPYCONTENTS, p, CURLFORM_END); curl_formadd(&formdata, &lastptr, CURLFORM_COPYNAME, "msg", CURLFORM_COPYCONTENTS, m, CURLFORM_END); curl_handle = curl_easy_init(); curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.tangogps.org/friends/update_pos.php"); curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata); curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb_write_to_mem); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, VERSION ); curl_easy_perform(curl_handle); curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &response_code); curl_easy_cleanup(curl_handle); if (response_code == 200) { user_data_sets = g_strsplit_set (chunk.memory, "|", -1); gdk_threads_enter(); g_slist_free(friends_list); friends_list = NULL; gtk_label_set_label(label_msg, user_data_sets[0]); gdk_threads_leave(); while (user_data_sets[i] && !g_str_equal(user_data_sets[i],"EOD") ) { gchar **array; int len=0; friend_t *friend = g_new0(friend_t,1); array = g_strsplit(user_data_sets[i],"#",-1); while (array[len]) len++; if(len>=7) { friend->type = atoi(g_strdup(array[0])); friend->nick = g_strdup(array[1]); friend->lat = atof(g_strdup(array[2])); friend->lon = atof(g_strdup(array[3])); friend->head = atoi(g_strdup(array[4])); friend->lastseen = g_strdup(array[5]); friend->away_msg = g_strdup(array[6]); friends_list = g_slist_append(friends_list, friend); } i++; } }