--- trunk/src/osm-gps-map.h 2009/08/19 14:21:14 65 +++ trunk/src/osm-gps-map.h 2009/09/01 11:16:30 89 @@ -25,6 +25,8 @@ #ifndef _OSM_GPS_MAP_H_ #define _OSM_GPS_MAP_H_ +#include "config.h" + #include #include #include @@ -63,23 +65,59 @@ OSM_GPS_MAP_SOURCE_NULL, OSM_GPS_MAP_SOURCE_OPENSTREETMAP, OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER, - OSM_GPS_MAP_SOURCE_OPENAERIALMAP, + OSM_GPS_MAP_SOURCE_OPENCYCLEMAP, OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE, OSM_GPS_MAP_SOURCE_GOOGLE_STREET, OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE, - OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID, OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET, OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE, OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID, - OSM_GPS_MAP_SOURCE_YAHOO_STREET, - OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE, - OSM_GPS_MAP_SOURCE_YAHOO_HYBRID + + /* entries below are currently unusable */ + OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID, /* disabled by google */ + OSM_GPS_MAP_SOURCE_YAHOO_STREET, /* no implemented yet */ + OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE, /* no implemented yet */ + OSM_GPS_MAP_SOURCE_YAHOO_HYBRID /* no implemented yet */ } OsmGpsMapSource_t; +#define OSM_GPS_MAP_SOURCE_LAST (OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID) + typedef struct { gint x, y, w, h; } OsmGpsMapRect_t; +typedef enum { + OSD_NONE = 0, + OSD_BG, + OSD_UP, + OSD_DOWN, + OSD_LEFT, + OSD_RIGHT, + OSD_IN, + OSD_OUT, + OSD_CUSTOM // first custom buttom +} osd_button_t; + +typedef void (*OsmGpsMapOsdCallback)(osd_button_t but, gpointer data); +#define OSM_GPS_MAP_OSD_CALLBACK(f) ((OsmGpsMapOsdCallback) (f)) + +/* the osd structure mainly contains various callbacks */ +/* required to draw and update the OSD */ +typedef struct osm_gps_map_osd_s { + GtkWidget *widget; // the main map widget (to get its stlye info) + + void(*render)(struct osm_gps_map_osd_s *); + void(*draw)(struct osm_gps_map_osd_s *, GdkDrawable *); + osd_button_t(*check)(struct osm_gps_map_osd_s *,gint, gint); /* check if x/y lies within OSD */ + gboolean(*busy)(struct osm_gps_map_osd_s *); + void(*free)(struct osm_gps_map_osd_s *); + + OsmGpsMapOsdCallback cb; + gpointer data; + + gpointer priv; +} osm_gps_map_osd_t; + typedef void (*OsmGpsMapBalloonCallback)(cairo_t *, OsmGpsMapRect_t *rect, gpointer data); #define OSM_GPS_MAP_BALLOON_CALLBACK(f) ((OsmGpsMapBalloonCallback) (f)) @@ -102,7 +140,6 @@ void osm_gps_map_add_image (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image); gboolean osm_gps_map_remove_image (OsmGpsMap *map, GdkPixbuf *image); void osm_gps_map_clear_images (OsmGpsMap *map); -void osm_gps_map_osd_speed (OsmGpsMap *map, float speed); void osm_gps_map_draw_gps (OsmGpsMap *map, float latitude, float longitude, float heading); void osm_gps_map_clear_gps (OsmGpsMap *map); coord_t osm_gps_map_get_co_ordinates (OsmGpsMap *map, int pixel_x, int pixel_y); @@ -119,6 +156,13 @@ void osm_gps_map_draw_balloon (OsmGpsMap *map, float latitude, float longitude, OsmGpsMapBalloonCallback cb, gpointer data); void osm_gps_map_clear_balloon (OsmGpsMap *map); #endif +#ifdef ENABLE_OSD +void osm_gps_map_register_osd(OsmGpsMap *map, osm_gps_map_osd_t *osd); +void osm_gps_map_redraw (OsmGpsMap *map); +osm_gps_map_osd_t *osm_gps_map_osd_get(OsmGpsMap *map); +void osm_gps_map_repaint (OsmGpsMap *map); +#endif + G_END_DECLS