int main (int argc, char *argv[]) { OsmGpsMap *map; OsmGpsMapPolygon* poly; GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Window"); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); map = g_object_new (OSM_TYPE_GPS_MAP, NULL); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(map)); poly = osm_gps_map_polygon_new(); OsmGpsMapTrack* polytrack = osm_gps_map_track_new(); OsmGpsMapPoint* p1, *p2, *p3; p1 = osm_gps_map_point_new_radians(1.25663706, -0.488692191); p2 = osm_gps_map_point_new_radians(1.06465084, -0.750491578); p3 = osm_gps_map_point_new_radians(1.064650849, -0.191986218); osm_gps_map_track_add_point(polytrack, p1); osm_gps_map_track_add_point(polytrack, p2); osm_gps_map_track_add_point(polytrack, p3); g_object_set(poly, "track", polytrack, NULL); g_object_set(poly, "editable", TRUE, NULL); osm_gps_map_polygon_add(map, poly); gtk_widget_show (GTK_WIDGET(map)); gtk_widget_show (window); gtk_main (); return 0; }
void enter(dt_view_t *self) { dt_map_t *lib = (dt_map_t *)self->data; lib->map = g_object_new (OSM_TYPE_GPS_MAP, "map-source", OSM_GPS_MAP_SOURCE_OPENSTREETMAP, "proxy-uri",g_getenv("http_proxy"), NULL); if(dt_conf_get_bool("plugins/map/show_map_osd")) { OsmGpsMapLayer *osd = g_object_new (OSM_TYPE_GPS_MAP_OSD, "show-scale",TRUE, "show-coordinates",TRUE, "show-dpad",TRUE, "show-zoom",TRUE, NULL); osm_gps_map_layer_add(OSM_GPS_MAP(lib->map), osd); g_object_unref(G_OBJECT(osd)); } /* replace center widget */ GtkWidget *parent = gtk_widget_get_parent(dt_ui_center(darktable.gui->ui)); gtk_widget_hide(dt_ui_center(darktable.gui->ui)); gtk_box_pack_start(GTK_BOX(parent), GTK_WIDGET(lib->map) ,TRUE, TRUE, 0); gtk_box_reorder_child(GTK_BOX(parent), GTK_WIDGET(lib->map), 2); gtk_widget_show_all(GTK_WIDGET(lib->map)); /* setup proxy functions */ darktable.view_manager->proxy.map.view = self; darktable.view_manager->proxy.map.center_on_location = _view_map_center_on_location; /* setup collection listener and initialize main_query statement */ dt_control_signal_connect(darktable.signals, DT_SIGNAL_COLLECTION_CHANGED, G_CALLBACK(_view_map_collection_changed), (gpointer) self); osm_gps_map_set_post_expose_callback(lib->map, _view_map_post_expose, lib); /* restore last zoom,location in map */ OsmGpsMapPoint *pt; float lon, lat; const float rlon = dt_conf_get_float("plugins/map/longitude"); const float rlat = dt_conf_get_float("plugins/map/latitude"); const int zoom = dt_conf_get_int("plugins/map/zoom"); pt = osm_gps_map_point_new_radians(rlat,rlon); osm_gps_map_point_get_degrees (pt, &lat, &lon); osm_gps_map_set_center_and_zoom(lib->map, lat, lon, zoom); osm_gps_map_point_free(pt); _view_map_collection_changed(NULL, self); /* connect signal for filmstrip image activate */ dt_control_signal_connect(darktable.signals, DT_SIGNAL_VIEWMANAGER_FILMSTRIP_ACTIVATE, G_CALLBACK(_view_map_filmstrip_activate_callback), self); /* allow drag&drop of images from filmstrip */ gtk_drag_dest_set(GTK_WIDGET(lib->map), GTK_DEST_DEFAULT_ALL, target_list, n_targets, GDK_ACTION_COPY); g_signal_connect(GTK_WIDGET(lib->map), "drag-data-received", G_CALLBACK(drag_and_drop_received), self); }