2 * Copyright (C) 2006, 2007 John Costigan.
4 * POI and GPS-Info code originally written by Cezary Jackiewicz.
6 * Default map data provided by http://www.openstreetmap.org/
8 * This file is part of Maemo Mapper.
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.
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.
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/>.
24 #ifndef MAEMO_MAPPER_TYPES_H
25 #define MAEMO_MAPPER_TYPES_H
30 #include <libgnomevfs/gnome-vfs.h>
32 #define _(String) gettext(String)
34 /* #define MAPDB_SQLITE */
40 /** This enumerated type defines the possible connection states. */
43 /** The receiver is "off", meaning that either the bluetooth radio is
44 * off or the user has requested not to connect to the GPS receiver.
45 * No gtk_banner is visible. */
48 /** The connection with the receiver is down. A gtk_banner is visible with
49 * the text, "Connecting to GPS receiver". */
52 /** The connection with the receiver is up, but a GPS fix is not available.
53 * A gtk_banner is visible with the text, "(Re-)Establishing GPS fix". */
56 /** The connection with the receiver is up and a GPS fix IS available.
57 * No gtk_banner is visible. */
61 /** This enumerated type defines the supported types of repositories. */
64 REPOTYPE_NONE, /* No URL set. */
65 REPOTYPE_XYZ, /* x=%d, y=%d, and zoom=%d */
66 REPOTYPE_XYZ_INV, /* zoom=%0d, x=%d, y=%d */
67 REPOTYPE_QUAD_QRST, /* t=%s (%s = {qrst}*) */
68 REPOTYPE_QUAD_ZERO, /* t=%0s (%0s = {0123}*) */
69 REPOTYPE_WMS /* "service=wms" */
72 /** Possible center modes. The "WAS" modes imply no current center mode;
73 * they only hint at what the last center mode was, so that it can be
77 CENTER_WAS_LATLON = -2,
83 /** This enum defines the states of the SAX parsing state machine. */
94 INSIDE_PATH_POINT_ELE,
95 INSIDE_PATH_POINT_TIME,
96 INSIDE_PATH_POINT_DESC,
102 /** POI dialog action **/
109 /** Category list **/
137 /** This enum defines the possible units we can use. */
156 /** This enum defines the possible font sizes. */
169 /** This enum defines the possible font sizes. */
176 ROTATE_DIR_ENUM_COUNT
179 /** This enum defines all of the key-customizable actions. */
182 CUSTOM_ACTION_PAN_NORTH,
183 CUSTOM_ACTION_PAN_WEST,
184 CUSTOM_ACTION_PAN_SOUTH,
185 CUSTOM_ACTION_PAN_EAST,
186 CUSTOM_ACTION_PAN_UP,
187 CUSTOM_ACTION_PAN_DOWN,
188 CUSTOM_ACTION_PAN_LEFT,
189 CUSTOM_ACTION_PAN_RIGHT,
190 CUSTOM_ACTION_RESET_VIEW_ANGLE,
191 CUSTOM_ACTION_ROTATE_CLOCKWISE,
192 CUSTOM_ACTION_ROTATE_COUNTERCLOCKWISE,
193 CUSTOM_ACTION_TOGGLE_AUTOCENTER,
194 CUSTOM_ACTION_TOGGLE_AUTOROTATE,
195 CUSTOM_ACTION_ZOOM_IN,
196 CUSTOM_ACTION_ZOOM_OUT,
197 CUSTOM_ACTION_TOGGLE_FULLSCREEN,
198 CUSTOM_ACTION_TOGGLE_TRACKS,
199 CUSTOM_ACTION_TOGGLE_SCALE,
200 CUSTOM_ACTION_TOGGLE_POI,
201 CUSTOM_ACTION_CHANGE_REPO,
202 CUSTOM_ACTION_ROUTE_DISTNEXT,
203 CUSTOM_ACTION_ROUTE_DISTLAST,
204 CUSTOM_ACTION_TRACK_BREAK,
205 CUSTOM_ACTION_TRACK_CLEAR,
206 CUSTOM_ACTION_TRACK_DISTLAST,
207 CUSTOM_ACTION_TRACK_DISTFIRST,
208 CUSTOM_ACTION_TOGGLE_GPS,
209 CUSTOM_ACTION_TOGGLE_GPSINFO,
210 CUSTOM_ACTION_TOGGLE_SPEEDLIMIT,
211 CUSTOM_ACTION_RESET_BLUETOOTH,
212 CUSTOM_ACTION_ENUM_COUNT
215 /** This enum defines all of the customizable keys. */
225 CUSTOM_KEY_FULLSCREEN,
227 CUSTOM_KEY_ENUM_COUNT
230 /** This enum defines all of the colorable objects. */
234 COLORABLE_MARK_VELOCITY,
237 COLORABLE_TRACK_MARK,
238 COLORABLE_TRACK_BREAK,
241 COLORABLE_ROUTE_BREAK,
257 DEG_FORMAT_ENUM_COUNT
262 SPEED_LOCATION_BOTTOM_LEFT,
263 SPEED_LOCATION_BOTTOM_RIGHT,
264 SPEED_LOCATION_TOP_RIGHT,
265 SPEED_LOCATION_TOP_LEFT,
266 SPEED_LOCATION_ENUM_COUNT
272 MAP_UPDATE_OVERWRITE,
275 MAP_UPDATE_ENUM_COUNT
286 /** A general definition of a point in the Maemo Mapper unit system. */
287 typedef struct _Point Point;
295 /** A WayPoint, which is a Point with a description. */
296 typedef struct _WayPoint WayPoint;
302 /** A Path is a set of PathPoints and WayPoints. */
303 typedef struct _Path Path;
305 Point *head; /* points to first element in array; NULL if empty. */
306 Point *tail; /* points to last element in array. */
307 Point *cap; /* points after last slot in array. */
308 WayPoint *whead; /* points to first element in array; NULL if empty. */
309 WayPoint *wtail; /* points to last element in array. */
310 WayPoint *wcap; /* points after last slot in array. */
313 /** Data used during the SAX parsing operation. */
314 typedef struct _SaxData SaxData;
319 gboolean at_least_one_trkpt;
323 typedef struct _PathSaxData PathSaxData;
324 struct _PathSaxData {
329 /** Data to describe a POI. */
330 typedef struct _PoiInfo PoiInfo;
341 typedef struct _PoiSaxData PoiSaxData;
348 /** Data regarding a map repository. */
349 typedef struct _RepoData RepoData;
356 gint view_zoom_steps;
357 gboolean double_size;
364 sqlite3_stmt *stmt_map_select;
365 sqlite3_stmt *stmt_map_exists;
366 sqlite3_stmt *stmt_map_update;
367 sqlite3_stmt *stmt_map_insert;
368 sqlite3_stmt *stmt_map_delete;
369 sqlite3_stmt *stmt_dup_select;
370 sqlite3_stmt *stmt_dup_exists;
371 sqlite3_stmt *stmt_dup_insert;
372 sqlite3_stmt *stmt_dup_increm;
373 sqlite3_stmt *stmt_dup_decrem;
374 sqlite3_stmt *stmt_dup_delete;
375 sqlite3_stmt *stmt_trans_begin;
376 sqlite3_stmt *stmt_trans_commit;
377 sqlite3_stmt *stmt_trans_rollback;
381 GtkWidget *menu_item;
384 /** GPS Data and Satellite **/
385 typedef struct _GpsData GpsData;
391 gfloat speed; /* in knots */
392 gfloat maxspeed; /* in knots */
402 typedef struct _GpsSatelliteData GpsSatelliteData;
403 struct _GpsSatelliteData {
410 /** Data used for rendering the entire screen. */
411 typedef struct _MapRenderTask MapRenderTask;
412 struct _MapRenderTask
418 gint screen_width_pixels;
419 gint screen_height_pixels;
426 /** Data used for rendering the entire screen. */
427 typedef struct _MapOffsetArgs MapOffsetArgs;
428 struct _MapOffsetArgs
430 gfloat old_center_offset_devx;
431 gfloat old_center_offset_devy;
432 gfloat new_center_offset_devx;
433 gfloat new_center_offset_devy;
435 gfloat percent_complete;
438 typedef struct _ThreadLatch ThreadLatch;
442 gboolean is_done_adding_tasks;
449 /** Data used during the asynchronous progress update phase of automatic map
451 typedef struct _MapUpdateTask MapUpdateTask;
452 struct _MapUpdateTask
457 ThreadLatch *refresh_latch;
466 /** Data used during the asynchronous automatic route downloading operation. */
467 typedef struct _AutoRouteDownloadData AutoRouteDownloadData;
468 struct _AutoRouteDownloadData {
470 gboolean in_progress;
473 gboolean avoid_highways;
476 /** Data to describe the GPS connection. */
477 typedef struct _GpsRcvrInfo GpsRcvrInfo;
478 struct _GpsRcvrInfo {
486 typedef struct _BrowseInfo BrowseInfo;
492 #endif /* ifndef MAEMO_MAPPER_TYPES_H */