Example #1
0
gboolean
osm_gps_map_osd_get_state(OsmGpsMap *map) {
    osm_gps_map_osd_t *osd = osm_gps_map_osd_get(map);
    g_return_val_if_fail (osd, FALSE);
    osd_priv_t *priv = (osd_priv_t *)(osd->priv);
    g_return_val_if_fail (priv, FALSE);

    return priv->select_toggle.state;
}
Example #2
0
static gboolean
on_map_button_release_event(GtkWidget *widget,
			    GdkEventButton *event, area_context_t *context) {

  OsmGpsMap *map = OSM_GPS_MAP(widget);
  osm_gps_map_osd_t *osd = osm_gps_map_osd_get(map);

  if(!std::isnan(context->map.start.rlon) &&
     !std::isnan(context->map.start.rlat)) {

    OsmGpsMapPoint start = context->map.start;
    OsmGpsMapPoint end = osm_gps_map_convert_screen_to_geographic(map, event->x, event->y);

    GSList *box = pos_append_rad(nullptr, start.rlat, start.rlon);
    box = pos_append_rad(box, end.rlat,   start.rlon);
    box = pos_append_rad(box, end.rlat,   end.rlon);
    box = pos_append_rad(box, start.rlat, end.rlon);
    box = pos_append_rad(box, start.rlat, start.rlon);

    osm_gps_map_add_track(map, box);

    if(start.rlat < end.rlat) {
      context->bounds.min.lat = RAD2DEG(start.rlat);
      context->bounds.max.lat = RAD2DEG(end.rlat);
    } else {
      context->bounds.min.lat = RAD2DEG(end.rlat);
      context->bounds.max.lat = RAD2DEG(start.rlat);
    }

    if(start.rlon < end.rlon) {
      context->bounds.min.lon = RAD2DEG(start.rlon);
      context->bounds.max.lon = RAD2DEG(end.rlon);
    } else {
      context->bounds.min.lon = RAD2DEG(end.rlon);
      context->bounds.max.lon = RAD2DEG(start.rlon);
    }

    area_main_update(context);
    direct_update(context);
    extent_update(context);

    context->map.start.rlon = context->map.start.rlat = NAN;
  }

  /* osm-gps-map needs this event to handle the OSD */
  if(osd->check(osd, TRUE, event->x, event->y) != OSD_NONE)
    return FALSE;

  /* returning true here disables dragging in osm-gps-map */
  return osm_gps_map_osd_get_state(map) == TRUE ? FALSE : TRUE;
}
Example #3
0
static gboolean
on_map_button_press_event(GtkWidget *widget,
			  GdkEventButton *event, area_context_t *context) {
  OsmGpsMap *map = OSM_GPS_MAP(widget);
  osm_gps_map_osd_t *osd = osm_gps_map_osd_get(map);

  /* osm-gps-map needs this event to handle the OSD */
  if(osd->check(osd, TRUE, event->x, event->y) != OSD_NONE)
    return FALSE;

  if(osm_gps_map_osd_get_state(map) == TRUE)
    return FALSE;

  /* remove existing marker */
  osm_gps_map_track_remove_all(map);

  /* and remember this location as the start */
  context->map.start = osm_gps_map_convert_screen_to_geographic(map, event->x, event->y);

  return TRUE;
}