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

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

revision 65 by harbaum, Wed Aug 19 14:21:14 2009 UTC revision 280 by harbaum, Fri May 21 19:28:16 2010 UTC
# Line 4  Line 4 
4   * osm-gps-map.h   * osm-gps-map.h
5   * Copyright (C) Marcus Bauer 2008 <marcus.bauer@gmail.com>   * Copyright (C) Marcus Bauer 2008 <marcus.bauer@gmail.com>
6   * Copyright (C) John Stowers 2009 <john.stowers@gmail.com>   * Copyright (C) John Stowers 2009 <john.stowers@gmail.com>
7     * Copyright (C) Till Harbaum 2009 <till@harbaum.org>
8   *   *
9   * Contributions by   * Contributions by
10   * Everaldo Canuto 2009 <everaldo.canuto@gmail.com>   * Everaldo Canuto 2009 <everaldo.canuto@gmail.com>
11   *   *
12   * osm-gps-map.c is free software: you can redistribute it and/or modify it   * This is free software: you can redistribute it and/or modify it
13   * under the terms of the GNU General Public License as published by the   * under the terms of the GNU General Public License
14   * Free Software Foundation, either version 3 of the License, or   * as published by the Free Software Foundation; version 2.
  * (at your option) any later version.  
15   *   *
16   * osm-gps-map.c is distributed in the hope that it will be useful, but   * This program is distributed in the hope that it will be useful,
17   * WITHOUT ANY WARRANTY; without even the implied warranty of   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * See the GNU General Public License for more details.   * GNU General Public License for more details.
20   *   *
21   * You should have received a copy of the GNU General Public License along   * You should have received a copy of the GNU General Public License
22   * with this program.  If not, see <http://www.gnu.org/licenses/>.   * along with this program; if not, see <http://www.gnu.org/licenses/>.
23   */   */
24    
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 65  typedef enum { Line 67  typedef enum {
67      OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER,      OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER,
68      OSM_GPS_MAP_SOURCE_OPENAERIALMAP,      OSM_GPS_MAP_SOURCE_OPENAERIALMAP,
69      OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE,      OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE,
70        OSM_GPS_MAP_SOURCE_OPENCYCLEMAP,
71        OSM_GPS_MAP_SOURCE_OSM_PUBLIC_TRANSPORT,
72      OSM_GPS_MAP_SOURCE_GOOGLE_STREET,      OSM_GPS_MAP_SOURCE_GOOGLE_STREET,
73      OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE,      OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE,
74      OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID,      OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID,
# Line 73  typedef enum { Line 77  typedef enum {
77      OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID,      OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID,
78      OSM_GPS_MAP_SOURCE_YAHOO_STREET,      OSM_GPS_MAP_SOURCE_YAHOO_STREET,
79      OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE,      OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE,
80      OSM_GPS_MAP_SOURCE_YAHOO_HYBRID      OSM_GPS_MAP_SOURCE_YAHOO_HYBRID,
81        OSM_GPS_MAP_SOURCE_OSMC_TRAILS,
82    
83        OSM_GPS_MAP_SOURCE_LAST
84  } OsmGpsMapSource_t;  } OsmGpsMapSource_t;
85    
86    typedef enum {
87        OSM_GPS_MAP_KEY_FULLSCREEN,
88        OSM_GPS_MAP_KEY_ZOOMIN,
89        OSM_GPS_MAP_KEY_ZOOMOUT,
90        OSM_GPS_MAP_KEY_UP,
91        OSM_GPS_MAP_KEY_DOWN,
92        OSM_GPS_MAP_KEY_LEFT,
93        OSM_GPS_MAP_KEY_RIGHT,
94        OSM_GPS_MAP_KEY_MAX
95    } OsmGpsMapKey_t;
96    
97    #define OSM_GPS_MAP_INVALID         (0.0/0.0)
98    #define OSM_GPS_MAP_CACHE_DISABLED  "none://"
99    #define OSM_GPS_MAP_CACHE_AUTO      "auto://"
100    #define OSM_GPS_MAP_CACHE_FRIENDLY  "friendly://"
101    
102  typedef struct {  typedef struct {
103      gint x, y, w, h;      gint x, y, w, h;
104  } OsmGpsMapRect_t;  } OsmGpsMapRect_t;
105    
106  typedef void (*OsmGpsMapBalloonCallback)(cairo_t *, OsmGpsMapRect_t *rect,  typedef enum {
107                                           gpointer data);      OSD_NONE = 0,
108        OSD_BG,
109        OSD_UP,
110        OSD_DOWN,
111        OSD_LEFT,
112        OSD_RIGHT,
113        OSD_IN,
114        OSD_OUT,
115        OSD_CUSTOM   // first custom buttom
116    } osd_button_t;
117    
118    typedef void (*OsmGpsMapOsdCallback)(osd_button_t but, gpointer data);
119    #define OSM_GPS_MAP_OSD_CALLBACK(f) ((OsmGpsMapOsdCallback) (f))
120    
121    /* the osd structure mainly contains various callbacks */
122    /* required to draw and update the OSD */
123    typedef struct osm_gps_map_osd_s {
124        GtkWidget *widget;   // the main map widget (to get its stlye info)
125    
126        void(*render)(struct osm_gps_map_osd_s *);
127        void(*draw)(struct osm_gps_map_osd_s *, GdkDrawable *);
128        osd_button_t(*check)(struct osm_gps_map_osd_s *,gboolean,gint, gint);       /* check if x/y lies within OSD */
129        gboolean(*busy)(struct osm_gps_map_osd_s *);
130        void(*free)(struct osm_gps_map_osd_s *);
131    
132        OsmGpsMapOsdCallback cb;
133        gpointer data;
134    
135        gpointer priv;
136    } osm_gps_map_osd_t;
137    
138    typedef enum {
139        OSM_GPS_MAP_BALLOON_EVENT_TYPE_DRAW,
140        OSM_GPS_MAP_BALLOON_EVENT_TYPE_CLICK,
141        OSM_GPS_MAP_BALLOON_EVENT_TYPE_REMOVED,
142        OSM_GPS_MAP_BALLOON_EVENT_TYPE_SIZE_REQUEST,
143    } osm_gps_map_balloon_event_type_t;
144    
145    typedef struct {
146        osm_gps_map_balloon_event_type_t type;
147        union {
148            struct {
149                OsmGpsMapRect_t *rect;
150                cairo_t *cr;
151            } draw;
152    
153            struct {
154                int x, y;
155                gboolean down;
156            } click;
157        } data;
158    } osm_gps_map_balloon_event_t;
159    
160    typedef void (*OsmGpsMapBalloonCallback)(osm_gps_map_balloon_event_t *event, gpointer data);
161  #define OSM_GPS_MAP_BALLOON_CALLBACK(f) ((OsmGpsMapBalloonCallback) (f))  #define OSM_GPS_MAP_BALLOON_CALLBACK(f) ((OsmGpsMapBalloonCallback) (f))
162    
163  GType osm_gps_map_get_type (void) G_GNUC_CONST;  GType       osm_gps_map_get_type                    (void) G_GNUC_CONST;
164    
165  const char* osm_gps_map_source_get_friendly_name(OsmGpsMapSource_t source);  GtkWidget*  osm_gps_map_new                         (void);
166  const char* osm_gps_map_source_get_repo_uri(OsmGpsMapSource_t source);  
167  const char *osm_gps_map_source_get_image_format(OsmGpsMapSource_t source);  char*       osm_gps_map_get_default_cache_directory (void);
168  int osm_gps_map_source_get_min_zoom(OsmGpsMapSource_t source);  
169  int osm_gps_map_source_get_max_zoom(OsmGpsMapSource_t source);  const char* osm_gps_map_source_get_friendly_name    (OsmGpsMapSource_t source);
170    const char* osm_gps_map_source_get_repo_uri         (OsmGpsMapSource_t source);
171  void osm_gps_map_download_maps (OsmGpsMap *map, coord_t *pt1, coord_t *pt2, int zoom_start, int zoom_end);  const char* osm_gps_map_source_get_image_format     (OsmGpsMapSource_t source);
172  void osm_gps_map_get_bbox (OsmGpsMap *map, coord_t *pt1, coord_t *pt2);  int         osm_gps_map_source_get_min_zoom         (OsmGpsMapSource_t source);
173  void osm_gps_map_set_mapcenter (OsmGpsMap *map, float latitude, float longitude, int zoom);  int         osm_gps_map_source_get_max_zoom         (OsmGpsMapSource_t source);
174  void osm_gps_map_set_center (OsmGpsMap *map, float latitude, float longitude);  gboolean    osm_gps_map_source_is_valid             (OsmGpsMapSource_t source);
175  int osm_gps_map_set_zoom (OsmGpsMap *map, int zoom);  
176  void osm_gps_map_add_track (OsmGpsMap *map, GSList *track);  void        osm_gps_map_download_maps               (OsmGpsMap *map, coord_t *pt1, coord_t *pt2, int zoom_start, int zoom_end);
177  void osm_gps_map_clear_tracks (OsmGpsMap *map);  void        osm_gps_map_get_bbox                    (OsmGpsMap *map, coord_t *pt1, coord_t *pt2);
178  void osm_gps_map_add_image (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image);  void        osm_gps_map_set_mapcenter               (OsmGpsMap *map, float latitude, float longitude, int zoom);
179  gboolean osm_gps_map_remove_image (OsmGpsMap *map, GdkPixbuf *image);  void        osm_gps_map_set_center                  (OsmGpsMap *map, float latitude, float longitude);
180  void osm_gps_map_clear_images (OsmGpsMap *map);  int         osm_gps_map_set_zoom                    (OsmGpsMap *map, int zoom);
181  void osm_gps_map_osd_speed (OsmGpsMap *map, float speed);  int         osm_gps_map_zoom_in                     (OsmGpsMap *map);
182  void osm_gps_map_draw_gps (OsmGpsMap *map, float latitude, float longitude, float heading);  int         osm_gps_map_zoom_out                    (OsmGpsMap *map);
183  void osm_gps_map_clear_gps (OsmGpsMap *map);  void        osm_gps_map_add_track                   (OsmGpsMap *map, GSList *track);
184  coord_t osm_gps_map_get_co_ordinates (OsmGpsMap *map, int pixel_x, int pixel_y);  void        osm_gps_map_replace_track               (OsmGpsMap *map, GSList *old_track, GSList *new_track);
185  GtkWidget * osm_gps_map_new(void);  void        osm_gps_map_clear_tracks                (OsmGpsMap *map);
186  void osm_gps_map_screen_to_geographic (OsmGpsMap *map,  void        osm_gps_map_add_image                   (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image);
187                                         gint pixel_x, gint pixel_y,  void        osm_gps_map_add_image_with_alignment    (OsmGpsMap *map, float latitude, float longitude, GdkPixbuf *image, float xalign, float yalign);
188                                         gfloat *latitude, gfloat *longitude);  gboolean    osm_gps_map_remove_image                (OsmGpsMap *map, GdkPixbuf *image);
189  void osm_gps_map_geographic_to_screen (OsmGpsMap *map,  void        osm_gps_map_clear_images                (OsmGpsMap *map);
190                                         gfloat latitude, gfloat longitude,  void        osm_gps_map_draw_gps                    (OsmGpsMap *map, float latitude, float longitude, float heading);
191                                         gint *pixel_x, gint *pixel_y);  void        osm_gps_map_clear_gps                   (OsmGpsMap *map);
192  void osm_gps_map_scroll (OsmGpsMap *map, gint dx, gint dy);  coord_t     osm_gps_map_get_co_ordinates            (OsmGpsMap *map, int pixel_x, int pixel_y);
193  float osm_gps_map_get_scale(OsmGpsMap *map);  void        osm_gps_map_screen_to_geographic        (OsmGpsMap *map, gint pixel_x, gint pixel_y, gfloat *latitude, gfloat *longitude);
194  #ifdef ENABLE_BALLOON  void        osm_gps_map_geographic_to_screen        (OsmGpsMap *map, gfloat latitude, gfloat longitude, gint *pixel_x, gint *pixel_y);
195  void osm_gps_map_draw_balloon (OsmGpsMap *map, float latitude, float longitude, OsmGpsMapBalloonCallback cb, gpointer data);  void        osm_gps_map_scroll                      (OsmGpsMap *map, gint dx, gint dy);
196  void osm_gps_map_clear_balloon (OsmGpsMap *map);  float       osm_gps_map_get_scale                   (OsmGpsMap *map);
197    void        osm_gps_map_set_keyboard_shortcut       (OsmGpsMap *map, OsmGpsMapKey_t key, guint keyval);
198    
199    #ifdef ENABLE_OSD
200    void osm_gps_map_register_osd(OsmGpsMap *map, osm_gps_map_osd_t *osd);
201    void osm_gps_map_redraw (OsmGpsMap *map);
202    osm_gps_map_osd_t *osm_gps_map_osd_get(OsmGpsMap *map);
203    void osm_gps_map_repaint (OsmGpsMap *map);
204    coord_t *osm_gps_map_get_gps (OsmGpsMap *map);
205  #endif  #endif
206    
207    
208  G_END_DECLS  G_END_DECLS
209    
210  #endif /* _OSM_GPS_MAP_H_ */  #endif /* _OSM_GPS_MAP_H_ */

Legend:
Removed from v.65  
changed lines
  Added in v.280