]> git.itanic.dy.fi Git - maemo-mapper/blob - src/data.h
92ffbcf4b378e6f1bd0f7501e920b033a1a2b3c8
[maemo-mapper] / src / data.h
1 /*
2  * Copyright (C) 2006, 2007 John Costigan.
3  *
4  * POI and GPS-Info code originally written by Cezary Jackiewicz.
5  *
6  * Default map data provided by http://www.openstreetmap.org/
7  *
8  * This file is part of Maemo Mapper.
9  *
10  * Maemo Mapper is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * Maemo Mapper is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Maemo Mapper.  If not, see <http://www.gnu.org/licenses/>.
22  */
23
24 #ifndef MAEMO_MAPPER_DATA_H
25 #define MAEMO_MAPPER_DATA_H
26
27 #include <libosso.h>
28
29 /* Constants regarding enums and defaults. */
30 extern gchar *UNITS_ENUM_TEXT[UNITS_ENUM_COUNT];
31 extern gdouble UNITS_CONVERT[UNITS_ENUM_COUNT];
32 extern gchar *UNBLANK_ENUM_TEXT[UNBLANK_ENUM_COUNT];
33 extern gchar *INFO_FONT_ENUM_TEXT[INFO_FONT_ENUM_COUNT];
34 extern gchar *ROTATE_DIR_ENUM_TEXT[ROTATE_DIR_ENUM_COUNT];
35 extern gint ROTATE_DIR_ENUM_DEGREES[ROTATE_DIR_ENUM_COUNT];
36 extern gchar *CUSTOM_ACTION_ENUM_TEXT[CUSTOM_ACTION_ENUM_COUNT];
37 extern gchar *CUSTOM_KEY_GCONF[CUSTOM_KEY_ENUM_COUNT];
38 extern gchar *CUSTOM_KEY_ICON[CUSTOM_KEY_ENUM_COUNT];
39 extern CustomAction CUSTOM_KEY_DEFAULT[CUSTOM_KEY_ENUM_COUNT];
40 extern gchar *COLORABLE_GCONF[COLORABLE_ENUM_COUNT];
41 extern GdkColor COLORABLE_DEFAULT[COLORABLE_ENUM_COUNT];
42 extern gchar *DEG_FORMAT_ENUM_TEXT[DEG_FORMAT_ENUM_COUNT];
43 extern gchar *SPEED_LOCATION_ENUM_TEXT[SPEED_LOCATION_ENUM_COUNT];
44 extern gchar *GPS_RCVR_ENUM_TEXT[GPS_RCVR_ENUM_COUNT];
45
46 /** The main GtkContainer of the application. */
47 extern GtkWidget *_window;
48
49 /** The main OSSO context of the application. */
50 extern osso_context_t *_osso;
51
52 /** The widget that provides the visual display of the map. */
53 extern GtkWidget *_map_widget;
54
55 /** The backing pixmap of _map_widget. */
56 extern GdkPixmap *_map_pixmap;
57
58 /** The backing pixmap of _map_widget. */
59 extern GdkPixbuf *_map_pixbuf;
60
61 extern gint _map_offset_devx;
62 extern gint _map_offset_devy;
63
64 extern gint _map_rotate_angle;
65 extern gfloat _map_rotate_matrix[4];
66 extern gfloat _map_reverse_matrix[4];
67
68 extern GtkWidget *_gps_widget;
69 extern GtkWidget *_text_lat;
70 extern GtkWidget *_text_lon;
71 extern GtkWidget *_text_speed;
72 extern GtkWidget *_text_alt;
73 extern GtkWidget *_sat_panel;
74 extern GtkWidget *_text_time;
75 extern GtkWidget *_heading_panel;
76
77 /** GPS data. */
78 extern Point _pos;
79 extern const Point _point_null;
80
81 extern GpsData _gps;
82 extern GpsSatelliteData _gps_sat[12];
83 extern gboolean _satdetails_on;
84
85 extern gboolean _is_first_time;
86
87
88 /** VARIABLES FOR MAINTAINING STATE OF THE CURRENT VIEW. */
89
90 /** The "zoom" level defines the resolution of a pixel, from 0 to MAX_ZOOM.
91  * Each pixel in the current view is exactly (1 << _zoom) "units" wide. */
92 extern gint _zoom; /* zoom level, from 0 to MAX_ZOOM. */
93 extern Point _center; /* current center location, X. */
94
95 extern gint _next_zoom;
96 extern Point _next_center;
97 extern gint _next_map_rotate_angle;
98 extern GdkPixbuf *_redraw_wait_icon;
99 extern GdkRectangle _redraw_wait_bounds;
100
101
102 /** CACHED SCREEN INFORMATION THAT IS DEPENDENT ON THE CURRENT VIEW. */
103 extern gint _view_width_pixels;
104 extern gint _view_height_pixels;
105 extern gint _view_halfwidth_pixels;
106 extern gint _view_halfheight_pixels;
107
108
109 /** The current track and route. */
110 extern Path _track;
111 extern Path _route;
112 extern gint _track_index_last_saved;
113
114 /** THE GdkGC OBJECTS USED FOR DRAWING. */
115 extern GdkGC *_gc[COLORABLE_ENUM_COUNT];
116 extern GdkColor _color[COLORABLE_ENUM_COUNT];
117
118 /** BANNERS. */
119 extern GtkWidget *_connect_banner;
120 extern GtkWidget *_fix_banner;
121 extern GtkWidget *_waypoint_banner;
122 extern GtkWidget *_download_banner;
123
124 /** DOWNLOAD PROGRESS. */
125 extern gboolean _conic_is_connected;
126 extern GMutex *_mapdb_mutex;
127 extern GMutex *_mouse_mutex;
128 extern volatile gint _num_downloads;
129 extern gint _curr_download;
130 extern GHashTable *_mut_exists_table;
131 extern GTree *_mut_priority_tree;
132 extern GMutex *_mut_priority_mutex;
133 extern GThreadPool *_mut_thread_pool;
134 extern GThreadPool *_mrt_thread_pool;
135
136 /** CONFIGURATION INFORMATION. */
137 extern GpsRcvrInfo _gri;
138 extern ConnState _gps_state;
139 extern gchar *_route_dir_uri;
140 extern gchar *_track_file_uri;
141 extern CenterMode _center_mode;
142 extern gboolean _center_rotate;
143 extern gboolean _fullscreen;
144 extern gboolean _enable_gps;
145 extern gboolean _gps_info;
146 extern gchar *_route_dl_url;
147 extern gint _route_dl_radius;
148 extern gchar *_poi_dl_url;
149 extern gint _show_paths;
150 extern gboolean _show_zoomlevel;
151 extern gboolean _show_scale;
152 extern gboolean _show_comprose;
153 extern gboolean _show_velvec;
154 extern gboolean _show_poi;
155 extern gboolean _auto_download;
156 extern gint _auto_download_precache;
157 extern gint _lead_ratio;
158 extern gboolean _lead_is_fixed;
159 extern gint _center_ratio;
160 extern gint _draw_width;
161 extern gint _rotate_sens;
162 extern gint _ac_min_speed;
163 extern RotateDir _rotate_dir;
164 extern gint _announce_notice_ratio;
165 extern gboolean _enable_voice;
166 extern GSList *_loc_list;
167 extern GtkListStore *_loc_model;
168 extern UnitType _units;
169 extern CustomAction _action[CUSTOM_KEY_ENUM_COUNT];
170 extern gint _degformat;
171 extern gboolean _speed_limit_on;
172 extern gint _speed_limit;
173 extern gboolean _speed_excess;
174 extern SpeedLocation _speed_location;
175 extern UnblankOption _unblank_option;
176 extern InfoFontSize _info_font_size;
177
178 extern GList *_repo_list;
179 extern RepoData *_curr_repo;
180
181 /** POI */
182 extern gchar *_poi_db_filename;
183 extern gchar *_poi_db_dirname;
184 extern gint _poi_zoom;
185 extern gboolean _poi_enabled;
186
187 /** The singleton auto-route-download data. */
188 extern AutoRouteDownloadData _autoroute_data;
189
190
191 /*********************
192  * BELOW: MENU ITEMS *
193  *********************/
194
195 /* Menu items for the "Route" submenu. */
196 extern GtkWidget *_menu_route_open_item;
197 extern GtkWidget *_menu_route_download_item;
198 extern GtkWidget *_menu_route_save_item;
199 extern GtkWidget *_menu_route_distnext_item;
200 extern GtkWidget *_menu_route_distlast_item;
201 extern GtkWidget *_menu_route_reset_item;
202 extern GtkWidget *_menu_route_clear_item;
203
204 /* Menu items for the "Track" submenu. */
205 extern GtkWidget *_menu_track_open_item;
206 extern GtkWidget *_menu_track_save_item;
207 extern GtkWidget *_menu_track_insert_break_item;
208 extern GtkWidget *_menu_track_insert_mark_item;
209 extern GtkWidget *_menu_track_distlast_item;
210 extern GtkWidget *_menu_track_distfirst_item;
211 extern GtkWidget *_menu_track_clear_item;
212
213 /* Menu items for the "POI" submenu. */
214 extern GtkWidget *_menu_poi_item;
215 extern GtkWidget *_menu_poi_import_item;
216 extern GtkWidget *_menu_poi_download_item;
217 extern GtkWidget *_menu_poi_browse_item;
218 extern GtkWidget *_menu_poi_categories_item;
219
220 /* Menu items for the "Maps" submenu. */
221 extern GtkWidget *_menu_maps_submenu;
222 extern GtkWidget *_menu_maps_mapman_item;
223 extern GtkWidget *_menu_maps_repoman_item;
224 extern GtkWidget *_menu_maps_auto_download_item;
225
226 /* Menu items for the "View" submenu. */
227 extern GtkWidget *_menu_view_zoom_in_item;
228 extern GtkWidget *_menu_view_zoom_out_item;
229
230 extern GtkWidget *_menu_view_rotate_clock_item;
231 extern GtkWidget *_menu_view_rotate_counter_item;
232 extern GtkWidget *_menu_view_rotate_reset_item;
233 extern GtkWidget *_menu_view_rotate_auto_item;
234
235 extern GtkWidget *_menu_view_pan_up_item;
236 extern GtkWidget *_menu_view_pan_down_item;
237 extern GtkWidget *_menu_view_pan_left_item;
238 extern GtkWidget *_menu_view_pan_right_item;
239 extern GtkWidget *_menu_view_pan_north_item;
240 extern GtkWidget *_menu_view_pan_south_item;
241 extern GtkWidget *_menu_view_pan_west_item;
242 extern GtkWidget *_menu_view_pan_east_item;
243
244 extern GtkWidget *_menu_view_fullscreen_item;
245
246 extern GtkWidget *_menu_view_show_zoomlevel_item;
247 extern GtkWidget *_menu_view_show_scale_item;
248 extern GtkWidget *_menu_view_show_comprose_item;
249 extern GtkWidget *_menu_view_show_routes_item;
250 extern GtkWidget *_menu_view_show_tracks_item;
251 extern GtkWidget *_menu_view_show_velvec_item;
252 extern GtkWidget *_menu_view_show_poi_item;
253
254 extern GtkWidget *_menu_view_ac_latlon_item;
255 extern GtkWidget *_menu_view_ac_lead_item;
256 extern GtkWidget *_menu_view_ac_none_item;
257
258 extern GtkWidget *_menu_view_goto_latlon_item;
259 extern GtkWidget *_menu_view_goto_address_item;
260 extern GtkWidget *_menu_view_goto_gps_item;
261 extern GtkWidget *_menu_view_goto_nextway_item;
262 extern GtkWidget *_menu_view_goto_nearpoi_item;
263
264 /* Menu items for the "GPS" submenu. */
265 extern GtkWidget *_menu_enable_gps_item;
266 extern GtkWidget *_menu_gps_show_info_item;
267 extern GtkWidget *_menu_gps_details_item;
268 extern GtkWidget *_menu_gps_reset_item;
269
270 /* Menu items for the other menu items. */
271 extern GtkWidget *_menu_settings_item;
272 extern GtkWidget *_menu_help_item;
273 extern GtkWidget *_menu_about_item;
274 extern GtkWidget *_menu_close_item;
275
276 /*********************
277  * ABOVE: MENU ITEMS *
278  *********************/
279
280
281 /*****************************
282  * BELOW: CONTEXT MENU ITEMS *
283  *****************************/
284
285 extern gboolean _mouse_is_dragging;
286 extern gboolean _mouse_is_down;
287 extern gint _cmenu_position_x;
288 extern gint _cmenu_position_y;
289
290 /* Menu items for the "Location" context menu. */
291 extern GtkWidget *_cmenu_loc_show_latlon_item;
292 extern GtkWidget *_cmenu_loc_route_to_item;
293 extern GtkWidget *_cmenu_loc_distance_to_item;
294 extern GtkWidget *_cmenu_loc_download_poi_item;
295 extern GtkWidget *_cmenu_loc_browse_poi_item;
296 extern GtkWidget *_cmenu_loc_add_route_item;
297 extern GtkWidget *_cmenu_loc_add_way_item;
298 extern GtkWidget *_cmenu_loc_add_poi_item;
299 extern GtkWidget *_cmenu_loc_set_gps_item;
300
301 /* Menu items for the "Waypoint" context menu. */
302 extern GtkWidget *_cmenu_way_show_latlon_item;
303 extern GtkWidget *_cmenu_way_show_desc_item;
304 extern GtkWidget *_cmenu_way_clip_latlon_item;
305 extern GtkWidget *_cmenu_way_clip_desc_item;
306 extern GtkWidget *_cmenu_way_route_to_item;
307 extern GtkWidget *_cmenu_way_distance_to_item;
308 extern GtkWidget *_cmenu_way_delete_item;
309 extern GtkWidget *_cmenu_way_add_poi_item;
310 extern GtkWidget *_cmenu_way_goto_nextway_item;
311
312 /* Menu items for the "POI" context menu. */
313 extern GtkWidget *_cmenu_poi_submenu;
314 extern GtkWidget *_cmenu_poi_edit_poi_item;
315 extern GtkWidget *_cmenu_poi_route_to_item;
316 extern GtkWidget *_cmenu_poi_distance_to_item;
317 extern GtkWidget *_cmenu_poi_add_route_item;
318 extern GtkWidget *_cmenu_poi_add_way_item;
319 extern GtkWidget *_cmenu_poi_goto_nearpoi_item;
320
321 /*****************************
322  * ABOVE: CONTEXT MENU ITEMS *
323  *****************************/
324
325 #endif /* ifndef MAEMO_MAPPER_DATA_H */
326