2 * MapWidget: Display a map
3 * Copyright (C) 2008 Kaj-Michael Lang
4 * Original non-widget map Copyright (C) 2006-2007 John Costigan.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the Free
18 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 #include "map-tile-repo.h"
29 CENTER_WAS_LATLON = -2,
37 MAP_MARKER_TYPE_POI=0,
38 MAP_MARKER_TYPE_POSITION,
39 MAP_MARKER_TYPE_BOOKMARK,
40 MAP_MARKER_TYPE_CACHE,
51 MAP_MARKER_CACHE_X, /* Private, screen x,y cache */
54 } GtkMapMarkerStoreID;
56 #define TRACKS_MASK 0x00000001
57 #define ROUTES_MASK 0x00000002
58 #define FRIENDS_MASK 0x00000004
60 #define GTK_MAP_TYPE (gtk_map_get_type ())
61 #define GTK_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_MAP_TYPE, GtkMap))
62 #define GTK_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_MAP_TYPE, GtkMapClass))
63 #define GTK_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_MAP_TYPE))
65 typedef struct _GtkMap GtkMap;
66 typedef struct _GtkMapClass GtkMapClass;
76 GtkDrawingAreaClass parent_class;
77 void (* zoom_changed) (GtkWidget *widget, int zoom);
78 void (* location_changed) (GtkWidget *widget, int zoom);
79 void (* center_mode_changed) (GtkWidget *widget, int zoom);
84 void latlon2unit(gdouble lat, gdouble lon, guint *unitx, guint *unity);
85 void unit2latlon(guint unitx, guint unity, gdouble *lat, gdouble *lon);
87 GType gtk_map_get_type(void);
88 GtkWidget* gtk_map_new(void);
90 void gtk_map_refresh(GtkWidget *map);
92 /* Map repository handling */
93 void gtk_map_set_tile_repository(GtkWidget *map, RepoData *rd);
96 gboolean gtk_map_markers_add(GtkWidget *map, GtkMapMarkerType type, GtkListStore *store);
97 gboolean gtk_map_markers_remove(GtkWidget *map, GtkMapMarkerType type, GtkListStore *store);
100 gboolean gtk_map_add_path(GtkWidget *map, Path *path);
101 gboolean gtk_map_remove_path(GtkWidget *map, Path *path);
102 gboolean gtk_map_remove_path_by_id(GtkWidget *map, gint path_id);
103 void gtk_map_set_path_display(GtkWidget *widget, gint path_mask);
105 /* Get copy of map back buffer */
106 GdkPixmap *gtk_map_pixmap_get(GtkWidget *map);
108 /* Tile cache config */
109 void gtk_map_set_cache_size(GtkWidget *widget, guint cache_size);
111 /* Location functions */
112 void gtk_map_set_center(GtkWidget *map, guint unitx, guint unity);
113 void gtk_map_get_center(GtkWidget *map, guint *unitx, guint *unity);
115 void gtk_map_set_center_latlon(GtkWidget *map, gdouble lat, gdouble lon);
116 void gtk_map_get_center_latlon(GtkWidget *map, gdouble *lat, gdouble *lon);
118 gboolean gtk_map_set_center_mode(GtkWidget *widget, GtkMapCenterMode mode);
120 void gtk_map_pan(GtkWidget *map, gint delta_unitx, gint delta_unity);
123 gboolean gtk_map_rotate(GtkWidget *map, gfloat angle);
126 gint gtk_map_get_zoom(GtkWidget *map);
127 gint gtk_map_set_zoom(GtkWidget *map, gint zoom);
128 gint gtk_map_zoom(GtkWidget *map, gint zdir);
129 gboolean gtk_map_zoom_out(GtkWidget *map);
130 gboolean gtk_map_zoom_in(GtkWidget *map);
131 gboolean gtk_map_set_autozoom(GtkWidget *map, gboolean az);
133 /* Menu and mouse related */
134 void gtk_map_set_context_menu(GtkWidget *widget, GtkMenu *menu);
135 void gtk_map_clear_context_menu(GtkWidget *widget);
136 void gtk_map_get_menu_latlon(GtkWidget *map, gdouble *lat, gdouble *lon);
140 #endif /* __GTK_MAP_H__ */