Diff of /trunk/src/osm-gps-map.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 32 by harbaum, Tue Jul 28 13:21:22 2009 UTC revision 87 by harbaum, Mon Aug 31 12:01:28 2009 UTC
# Line 25  Line 25 
25  #ifndef _OSM_GPS_MAP_H_  #ifndef _OSM_GPS_MAP_H_
26  #define _OSM_GPS_MAP_H_  #define _OSM_GPS_MAP_H_
27    
28    #include "config.h"
29    
30  #include <glib.h>  #include <glib.h>
31  #include <glib-object.h>  #include <glib-object.h>
32  #include <gtk/gtk.h>  #include <gtk/gtk.h>
# Line 59  typedef struct { Line 61  typedef struct {
61      float rlon;      float rlon;
62  } coord_t;  } coord_t;
63    
64  //http://www.internettablettalk.com/forums/showthread.php?t=5209  typedef enum {
65  //https://garage.maemo.org/plugins/scmsvn/viewcvs.php/trunk/src/maps.c      OSM_GPS_MAP_SOURCE_NULL,
66  //http://www.ponies.me.uk/maps/GoogleTileUtils.java      OSM_GPS_MAP_SOURCE_OPENSTREETMAP,
67  //http://www.mgmaps.com/cache/MapTileCacher.perl      OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER,
68  #define MAP_SOURCE_OPENSTREETMAP            "http://tile.openstreetmap.org/#Z/#X/#Y.png"      OSM_GPS_MAP_SOURCE_OPENCYCLEMAP,
69  #define MAP_SOURCE_OPENSTREETMAP_RENDERER   "http://tah.openstreetmap.org/Tiles/tile/#Z/#X/#Y.png"      OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE,
70  #define MAP_SOURCE_OPENAERIALMAP            "http://tile.openaerialmap.org/tiles/1.0.0/openaerialmap-900913/#Z/#X/#Y.jpg"      OSM_GPS_MAP_SOURCE_GOOGLE_STREET,
71  #define MAP_SOURCE_GOOGLE_MAPS              "http://mt#R.google.com/mt?x=#X&y=#Y&zoom=#S"      OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE,
72  //No longer working      OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID,
73  //#define MAP_SOURCE_GOOGLE_HYBRID          "http://mt#R.google.com/mt?n=404&v=w2t.99&x=#X&y=#Y&zoom=#S"      OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET,
74  #define MAP_SOURCE_GOOGLE_HYBRID            "http://mt#R.google.com/mt?x=#X&y=#Y&zoom=#S"      OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE,
75  #define MAP_SOURCE_GOOGLE_SATTELITE         "http://khm#R.google.com/kh?n=404&v=32&x=#X&y=#Y&z=#Z"      OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID,
76  #define MAP_SOURCE_GOOGLE_SATTELITE_QUAD    "http://khm#R.google.com/kh?n=404&v=3&t=#Q"      OSM_GPS_MAP_SOURCE_YAHOO_STREET,
77  #define MAP_SOURCE_MAPS_FOR_FREE            "http://maps-for-free.com/layer/relief/z#Z/row#Y/#Z_#X-#Y.jpg"      OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE,
78  #define MAP_SOURCE_VIRTUAL_EARTH_SATTELITE  "http://a#R.ortho.tiles.virtualearth.net/tiles/a#W.jpeg?g=50"      OSM_GPS_MAP_SOURCE_YAHOO_HYBRID
79    } OsmGpsMapSource_t;
80    
81    #define OSM_GPS_MAP_SOURCE_LAST  (OSM_GPS_MAP_SOURCE_YAHOO_HYBRID)
82    
83    typedef struct {
84        gint x, y, w, h;
85    } OsmGpsMapRect_t;
86    
87    typedef enum {
88        OSD_NONE = 0,
89        OSD_BG,
90        OSD_UP,
91        OSD_DOWN,
92        OSD_LEFT,
93        OSD_RIGHT,
94        OSD_IN,
95        OSD_OUT,
96        OSD_CUSTOM   // first custom buttom
97    } osd_button_t;
98    
99    typedef void (*OsmGpsMapOsdCallback)(osd_button_t but, gpointer data);
100    #define OSM_GPS_MAP_OSD_CALLBACK(f) ((OsmGpsMapOsdCallback) (f))
101    
102    /* the osd structure mainly contains various callbacks */
103    /* required to draw and update the OSD */
104    typedef struct osm_gps_map_osd_s {
105        GtkWidget *widget;   // the main map widget (to get its stlye info)
106    
107        void(*render)(struct osm_gps_map_osd_s *);
108        void(*draw)(struct osm_gps_map_osd_s *, GdkDrawable *);
109        osd_button_t(*check)(struct osm_gps_map_osd_s *,gint, gint);       /* check if x/y lies within OSD */
110        gboolean(*busy)(struct osm_gps_map_osd_s *);
111        void(*free)(struct osm_gps_map_osd_s *);
112    
113        OsmGpsMapOsdCallback cb;
114        gpointer data;
115    
116        gpointer priv;
117    } osm_gps_map_osd_t;
118    
119    typedef void (*OsmGpsMapBalloonCallback)(cairo_t *, OsmGpsMapRect_t *rect,
120                                             gpointer data);
121    #define OSM_GPS_MAP_BALLOON_CALLBACK(f) ((OsmGpsMapBalloonCallback) (f))
122    
123  GType osm_gps_map_get_type (void) G_GNUC_CONST;  GType osm_gps_map_get_type (void) G_GNUC_CONST;
124    
125    const char* osm_gps_map_source_get_friendly_name(OsmGpsMapSource_t source);
126    const char* osm_gps_map_source_get_repo_uri(OsmGpsMapSource_t source);
127    const char *osm_gps_map_source_get_image_format(OsmGpsMapSource_t source);
128    int osm_gps_map_source_get_min_zoom(OsmGpsMapSource_t source);
129    int osm_gps_map_source_get_max_zoom(OsmGpsMapSource_t source);
130    
131  void osm_gps_map_download_maps (OsmGpsMap *map, coord_t *pt1, coord_t *pt2, int zoom_start, int zoom_end);  void osm_gps_map_download_maps (OsmGpsMap *map, coord_t *pt1, coord_t *pt2, int zoom_start, int zoom_end);
132  void osm_gps_map_get_bbox (OsmGpsMap *map, coord_t *pt1, coord_t *pt2);  void osm_gps_map_get_bbox (OsmGpsMap *map, coord_t *pt1, coord_t *pt2);
133  void osm_gps_map_set_mapcenter (OsmGpsMap *map, float latitude, float longitude, int zoom);  void osm_gps_map_set_mapcenter (OsmGpsMap *map, float latitude, float longitude, int zoom);
# Line 84  int osm_gps_map_set_zoom (OsmGpsMap *map Line 136  int osm_gps_map_set_zoom (OsmGpsMap *map
136  void osm_gps_map_add_track (OsmGpsMap *map, GSList *track);  void osm_gps_map_add_track (OsmGpsMap *map, GSList *track);
137  void osm_gps_map_clear_tracks (OsmGpsMap *map);  void osm_gps_map_clear_tracks (OsmGpsMap *map);
138  void osm_gps_map_add_image (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image);  void osm_gps_map_add_image (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image);
139    gboolean osm_gps_map_remove_image (OsmGpsMap *map, GdkPixbuf *image);
140  void osm_gps_map_clear_images (OsmGpsMap *map);  void osm_gps_map_clear_images (OsmGpsMap *map);
 void osm_gps_map_osd_speed (OsmGpsMap *map, float speed);  
141  void osm_gps_map_draw_gps (OsmGpsMap *map, float latitude, float longitude, float heading);  void osm_gps_map_draw_gps (OsmGpsMap *map, float latitude, float longitude, float heading);
142  void osm_gps_map_clear_gps (OsmGpsMap *map);  void osm_gps_map_clear_gps (OsmGpsMap *map);
143  coord_t osm_gps_map_get_co_ordinates (OsmGpsMap *map, int pixel_x, int pixel_y);  coord_t osm_gps_map_get_co_ordinates (OsmGpsMap *map, int pixel_x, int pixel_y);
# Line 97  void osm_gps_map_geographic_to_screen (O Line 149  void osm_gps_map_geographic_to_screen (O
149                                         gfloat latitude, gfloat longitude,                                         gfloat latitude, gfloat longitude,
150                                         gint *pixel_x, gint *pixel_y);                                         gint *pixel_x, gint *pixel_y);
151  void osm_gps_map_scroll (OsmGpsMap *map, gint dx, gint dy);  void osm_gps_map_scroll (OsmGpsMap *map, gint dx, gint dy);
152    float osm_gps_map_get_scale(OsmGpsMap *map);
153    #ifdef ENABLE_BALLOON
154    void osm_gps_map_draw_balloon (OsmGpsMap *map, float latitude, float longitude, OsmGpsMapBalloonCallback cb, gpointer data);
155    void osm_gps_map_clear_balloon (OsmGpsMap *map);
156    #endif
157    #ifdef ENABLE_OSD
158    void osm_gps_map_register_osd(OsmGpsMap *map, osm_gps_map_osd_t *osd);
159    void osm_gps_map_redraw (OsmGpsMap *map);
160    osm_gps_map_osd_t *osm_gps_map_osd_get(OsmGpsMap *map);
161    void osm_gps_map_repaint (OsmGpsMap *map);
162    #endif
163    
164    
165  G_END_DECLS  G_END_DECLS
166    

Legend:
Removed from v.32  
changed lines
  Added in v.87